軟件送音實驗_第1頁
軟件送音實驗_第2頁
軟件送音實驗_第3頁
軟件送音實驗_第4頁
軟件送音實驗_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、實驗四  軟件送音實驗1、實驗要求  通過編寫軟件送音程序在交換仿真實驗平臺上運行,觀察實驗結果,進一步了解位間隔的工作原理。2、實驗目的 軟件送音實驗用來考查學生對各種信號音發(fā)送情況的掌握情況。 3.實驗設備  PC機,交換仿真實驗平臺   4、實驗原理 交換機需要向用戶發(fā)送各種信號音,如撥號音、忙音和回鈴音等,也需要向其他交換機發(fā)送和接收各種局間信令,如多頻信號。這些信號都是音頻模擬信號,而信號設備是接在數(shù)字交換網(wǎng)絡上的,它通過數(shù)字交換網(wǎng)絡所提供的路由來傳送。因此這些模擬

2、信號必須是“數(shù)字化了的”,信號音的產(chǎn)生不外乎單頻音和雙頻音兩種。對于單頻信號音的產(chǎn)生,是按照一定的時間間隔抽樣、量化和編碼運算,得到各抽樣點的pcm信號,然后保存在ROM中,在需要發(fā)送時按序發(fā)送。對于雙頻信號音的產(chǎn)生,是取得兩種信號音周期的最小公倍數(shù),作為pcm的抽樣周期,然后保存在ROM中,在需要時按序取出發(fā)送。 由于用軟件來模擬信號音的產(chǎn)生比較困難,所以在我們的實驗中,我們發(fā)送的信號音都是預先準備好的信號音文件,并且伴隨有界面的送音顯示。那么如何考查學生對軟件送音的理解呢?我的設計是提供給一些需要送音的情況,編程確定該送音的類型,該送音的情況和送音的類別都是在主程序中預先安排好的

3、,只需在送音情況和送音類型間“牽線搭橋”。 5、實驗方法及數(shù)據(jù)結構 所需完成的函數(shù):int decide(Userstate state);其中Userstate為在bconstant.h中定義的一個枚舉類型,表示用戶現(xiàn)在的狀態(tài)。有前綴caller的表示只有主叫才有的狀態(tài),called的表示被叫,其他為兩者共同的它的值有:caller_ehandup:主叫摘機; caller_calledbusy :被叫忙; theother_firstehandon, :通話中另一方先掛機; sometimer_tim

4、eout    :某個定時器超時;  busytoneout    :忙音超時; caller_callednull :被叫為空號; called_onecallin : 有呼叫進入; caller_callconnected :呼叫被接通等等在頭文件中。返回值要求返回對該用戶的送音類型: 0:撥號音;1:振鈴音;2:回鈴音;3:空號音;  4:忙音;5:空鳴音;6、實驗過程:在主界面的編輯視圖內

5、完成源代碼部分的編寫工作,代碼如下:(1) 頭文件(bconstant.h):#ifndef BCONSTANT_H#defineBCONSTANT_Husing namespace std;#define LINEMAX 200/*int linestate200LINEMAX,linestateLINEMAX;/線路從0開始編號;狀態(tài):1:有電流,0無電流; enum UporOnehandup,ehandon;/:為摘掛機區(qū)別符:ehandup表示摘機,ehandon表示掛機*/enum Userstate caller_ehandup,/主叫摘機 caller_calledb

6、usy,/被叫忙 theother_firstehandon,/通話中對方先掛機 dial_timer_timeout,/撥號音超時 recvnum_timer_timeout,/收號定時器超時 connect_timer_timeout,/連接定時器超時 nulltone_timer_timeout,/空號音超時 ringback_timer_timeout,/回鈴音定時器超時 busytone_timer_timeout,/忙音超時 caller_callednull,/被叫空號 called_onecallin,/(被叫)呼叫進入 caller_callconnected/(主叫)被叫接

7、通;/*struct UpOnnode/摘掛機隊列節(jié)點結構     UporOn phonestate;      /摘掛機區(qū)別符;int linenum;            /線路號(從0開始); struct UpOnnode* next;  /指向下一節(jié)點的指針; */#endif(2)源文件:#include <iost

8、ream>#include <cmath>#include<ctime>#include<cstdlib>#include"bconstant.h"using namespace std;extern "C"_declspec(dllexport)int decide_ringtype(Userstate state) switch(state) case caller_ehandup: return 1;break; case caller_calledbusy: return 4;break; case th

9、eother_firstehandon: return 4;break; case dial_timer_timeout: return 4;break; case recvnum_timer_timeout: return 4;break; case connect_timer_timeout: return 4;break; case nulltone_timer_timeout: return 4;break; case ringback_timer_timeout: return 4;break; case busytone_timer_timeout: return 5;break;

10、 case caller_callednull: return 3;break; case called_onecallin: return 4;break; case caller_callconnected: return 2;break; default:/其他情況 return 0;break; int main() int resultLINEMAX; int inputLINEMAX; srand(time(0); for(int i=0; i<LINEMAX; i+) inputi = (int)rand()%12; Userstate state; state = Use

11、rstate(inputi); int tmp = decide_ringtype(state); resulti = tmp; cout << resulti<<endl; 點擊“編譯”菜單命令或者“編譯”工具按鈕編譯源代碼,如果在結果視圖中看到形成對象文件的提示(即產(chǎn)生*.obj),表示編譯成功。點擊“運行”菜單命令或者“運行”工具按鈕,進入演示運行界面,進行相應的控制操作,檢驗完成的目標模塊的邏輯正確性。如果正確的話,點擊“編輯源文件”下的“保存”子菜單項保存該源文件。7、 實驗總結  這次實驗組要是在仿真平臺上編寫程序進行仿真,要求程序具有軟件送音功能。這個功能主要通過一個S w t i ch選擇語句實現(xiàn),根據(jù)不同的判斷條件返回不同的值,判斷條件為輸入的狀態(tài)類型,類型有主叫摘機,被叫忙通話中,對方先掛機等,返回的值為int類型的數(shù)值,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論