freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于電話線路的數(shù)據(jù)通信程序的設計與實現(xiàn)畢業(yè)設計(參考版)

2025-05-17 12:41本頁面
  

【正文】 [5] 李建華等 .RS232 和調(diào)制解調(diào)器高級通信編程 [M].北京:人民郵電出版社, 2020。 [3] [M].北京:中國水利水電出版社, 2020。 Audre Terriase[美 ].WINDOWS95通信編程 [M].北京:清華大學出版社, 1997。本文通過對 MODEM 遠程數(shù)據(jù)通信和 TAPI 通信編程的研究,編程實現(xiàn)了一個計算機遠程通信程序。而 TAPI 編程接口除了支持簡單的 MODEM 撥號和呼叫應答外,還可以支持不同種類的傳輸線路,例如 PSTN 電話網(wǎng)、 ISDN 和 ATM 線路等。經(jīng)過測試此軟件基本能符合要 求,也能實現(xiàn)各功能。 由于經(jīng)驗欠缺或其它某些原因,本次 完成的軟件不 可能 是完美無缺的。然后根據(jù)功能需求說明書對整個程序的進行功能測試,包括程序的打開,撥號,撥號未完成和撥號完成后掛斷電話,什么時候可以取得 MODEN 的句柄,取得句柄后應該能否進行數(shù)據(jù)傳輸,數(shù)據(jù)傳輸?shù)恼_率進行測試。首先測試 GUI 界面上控件的布局是否合理美觀,是否方便操作。 }。 break。ov,amp。ov)。 nRet=WriteFile(m_hSerialHandle,szBuff,strlen(szBuff),amp。 } void CMyTapiDlg::OnBtnWrite() //發(fā)送數(shù)據(jù) { …………………… //要使用到的變量的定義 OVERLAPPED ov。dwReadLen,FALSE)。//讀數(shù)據(jù) …………………………… //錯誤處理 switch(WaitForSingleObject(,INFINITE)) { case WAIT_OBJECT_0: GetOverlappedResult(pcDlgm_hSerialHandle,amp。dwReadLen,amp。!pcDlgm_bStopReadThread。 DWORD WINAPI CMyTapiDlg::ReadThread(LPVOID lpVoid)//接收數(shù)據(jù) { OVERLAPPED ov。//設置響鈴次數(shù) lRet = lineAnswer(m_hCall, NULL, 0)。 return (lRet=0)?0:lRet。 int CTapiLine::MakeOutgoingCall(const char *szAddress)//呼出 {//呼叫前對呼叫選項的設 置 ……………………………………………………… .. lRet = lineMakeCall(m_hLine, amp。 ………………………………… . //釋放前面階段使用到的一些緩存以及對一些信號型變量進行復位 } 呼叫的發(fā)起和應答的實現(xiàn) 呼叫的建立和應答使用類成員函數(shù) MakeOutgoingCall、 GetIningCall 來實現(xiàn)。 ……………………………………………… .. } int CTapiLine::Close() {………………………………………… . lineDrop(m_hCall, NULL, 0)。 //沒有可用的設備 // 打開一條線路 lRet = lineOpen(m_hLineApp, m_nDevID, amp。 } free(lpDevCaps)。 m_nDevID = i。 if(lpDevCapsdwMediaModes amp。 lpDevCaps=(LINEDEVCAPS*)malloc(sizeof(LINEDEVCAPS)+1024)。stExtID)。i++) { lRet=lineNegotiateAPIVersion(m_hLineApp, i, dwTAPIVer, dwTAPIVer, amp。 //通過循環(huán)取得可以傳送數(shù)據(jù)的設備號 for(int i=0。 m_hLineEvent = 。dwTAPIVer, amp。m_hLineApp, NULL, NULL, CallAnswer, amp。 線路操作的實現(xiàn) 線路的操作定義為 Open 和 Close 兩個類成員函數(shù),里面封裝了 TAPI 的lineInitializeEx( TAPI 初始化)、 lineNegotiateAPIVersion(版本協(xié)調(diào))、lineOpen(打開一條線路)、 lineDrop(掛斷呼叫)、 lineClose(關閉一條線路)四個類成員函數(shù)進行線路操作,同時 封裝了在線路操作時需要用到的設備性能的取得函數(shù) lineGetDevCaps(取得設備性能)。 類里面定義了整個程序運行所需要用到的變量。 virtual ~CTapiLine()。 int Open(int nMode = 0)。 int GetIningCall()。szErrText)。 int PickupIningCall()。 long m_lEventThreadResult。 // TAPI 事件監(jiān)聽線程 bool m_bStopLineEventThread。//是否連接 HANDLE m_hEventFromThread。 // 線路改變事件 DWORD m_dwLineMsg。//呼叫的句柄 int m_nDevID。 //TPAIDLL 的句柄 HLINE m_hLine。 4 編碼實現(xiàn) 程序主類的的定義 為了使程序的結(jié)構(gòu)更為清晰和易于維護和升級,我把程序所要使用的數(shù)據(jù)結(jié)構(gòu)封裝成一個類。 關閉連接階段 當我們數(shù)據(jù)傳送完成后需要退出程序的時候。此時 第 10 頁 共 17頁 我們就可以進行數(shù)據(jù)傳輸了,不過在傳送數(shù)據(jù)之前我們要得到 MODEN 的句柄,此時調(diào)用 TAPI 的類成員函數(shù) lineGetID,此函數(shù)會把 MODEN 的名稱和句柄保存到一個 VARSTRING 類型的變量里面。 非等待模式下函數(shù)會馬上返回, OVERLAPPED 變量在初始化的時候會調(diào) CreateEvent 函數(shù)產(chǎn)生一個事件,當函數(shù)返回后我們調(diào)用 WaiForSingObject(Event)函數(shù)讓線程阻塞,當數(shù)據(jù)傳送完以后操作系統(tǒng)會給應用程序發(fā)出一消息,當應用程序得到此消息以后程序繼續(xù)往下運行。 等待模式下 必須完成了 所有 讀寫操作函數(shù)才會返回,最后一個參數(shù)必須為 NULL。傳送數(shù)據(jù)的時候要用到 MODEM 的句柄,此時調(diào)用 TAPI 的類成員函數(shù) lineGetID 得到 MODEN 的句柄后就可以通過ReadFile 和 WriteFile 函數(shù)來進行數(shù)據(jù)傳輸。 數(shù)據(jù)傳送階段 TAPI 并不提供數(shù)據(jù)傳輸?shù)暮瘮?shù)。 TAPI 類成員函數(shù) MakeCall 被用于發(fā)起呼叫,產(chǎn)生呼叫后依次進入圖 4 狀態(tài): 第 9 頁 共 17頁 圖 4 狀態(tài)流程圖 新生成的呼叫處于 IDLE 狀態(tài),隨后依次進入 PROCEDING, OFFERING, CONNECTED 和 DISCONNECTED 最后 回到 IDLE 狀態(tài)。 (3)LINECALLSTATE_BUSY 線路忙或設備忙,此時應斷接,釋放掉占用的資源。 TAPI的連接階段 TPAI 在連接階段 MODEN 會產(chǎn)生很多消息,消息的處理 TAPI 由回調(diào)函數(shù)進行消息處理,回調(diào)函數(shù)在初始化 TAPI 時創(chuàng)建,消息的處理在 TAPI 的使用過程中是至關重要的。然后使用 TAPI 的類成員函數(shù) lineNegotiateAPIVersion 與 Windows 協(xié)商 TAPI 版本。 根據(jù) TAPI 的開發(fā)基本思路整個程序的設計思路流程如圖 3 圖 3 程序流程圖 第 8 頁 共 17頁 各功能模塊的設計 TAPI的配置階段 TAPI 的置階段配置階段包括對線路的配置和對 MODEM 的配置,只有正確地配置并打開線路設備之后,才能對 MODEM 進行配置。 (8) 關閉線路設備:應用程序調(diào)用 lineClose ( ) 函數(shù)來關閉被 lineOpen ( )函數(shù)打開的線路設備,如果一條線路被應用程序打開后始終沒有被關閉,那么其它的應用程序?qū)o法訪問該線路。 (7) 掛斷呼叫:在呼叫完成后, lineDrop ( )函數(shù)將用來掛斷呼叫,但是在上一步中得到的擁有者的呼叫句柄并不會因此釋放,因為在呼叫被掛斷以后, 第 7 頁 共 17頁 呼叫的句柄還有可能被用在一些后 續(xù)的操作中。 (6) 開始呼叫或是應答:應用程序調(diào)用 lin
點擊復制文檔內(nèi)容
畢業(yè)設計相關推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號-1