


下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
深入Windows通信編程
二、Windows通信疑難探討現(xiàn)將筆者在實際編程中遇到的疑難和解決辦法描述如下,希望對遇到類似問題的朋友有所啟發(fā)。1.怎樣用Windows未提供的波特率通信?Windows提供了由110bps至256000bps共十三種波特率,一般情況下已足夠使用。但在某種特定情況下,例如通信對方使用150bps、又無法要求對方改變波特率時,Windows通信就比較困難了。首先想到的解決方法是直接調(diào)用BIOS中斷14H來設(shè)置波特率(DOS提供了150bps的波特率)。結(jié)果是Windows屏蔽了該中斷,嘗試失敗。最后的是采用"蒙混過關(guān)"的辦法解決問題的:首先,以任一Windows支持的波特率(例如300bps)構(gòu)造通信參數(shù)字符串,調(diào)用BuildCommDCB產(chǎn)生DCB數(shù)據(jù)結(jié)構(gòu);然后調(diào)用SetCommState設(shè)置通信參數(shù);最后再調(diào)用自編函數(shù)直接修改串口通信寄存器的值。經(jīng)實驗,設(shè)置成功,且對Windows程序運行無任何不良影響。2.接收數(shù)據(jù)為何"丟失"?通過設(shè)置EnableCommNotification函數(shù)中的cbWriteNotify參數(shù)(在發(fā)送WM_COMMNOTIFY消息之前,通信設(shè)備驅(qū)動程序必須向應(yīng)用程序出入隊列中寫入的字節(jié)數(shù)),可以使系統(tǒng)每收到固定個字符發(fā)出一WM_COMMNOTIFY消息,這對于固定長度消息型的通信是很方便的。但實際應(yīng)用時有時會發(fā)生接收數(shù)據(jù)"丟失"現(xiàn)象,即收到WM_COMMNOTIFY消息后從接收隊列讀出cbNotify個數(shù)據(jù)時,發(fā)現(xiàn)只有前面部分數(shù)據(jù)正確。經(jīng)檢查,"丟失"現(xiàn)象是由于接收數(shù)據(jù)超時引起的,當(dāng)通信對方時鐘頻率較低時,規(guī)定時間內(nèi)收不到cbWriteNotify指定的數(shù)據(jù)量,即所謂"超時",Windows照樣向應(yīng)用程序發(fā)送帶CN_RECEIVE標志的WM_COMMNOTIFY消息。然后,在應(yīng)用程序輸入隊列數(shù)據(jù)讀出之前,Windows不再發(fā)送該類消息。解決的方法是減小cbWriteNotify的設(shè)定值直到不再發(fā)生"超時"現(xiàn)象。發(fā)送數(shù)據(jù)時同樣應(yīng)正確設(shè)定cbOutQue值,以免產(chǎn)生"超時"現(xiàn)象。如果將cbWriteNotify或cbOutQue設(shè)為-1,則Windows不傳送帶CN_RECEIVE或CN_TRANSMIT標志的WM_COMMNOTIFY消息。3.怎樣合理使用FlushComm與GetCommError函數(shù)?FlushComm函數(shù)的功能是清除指定設(shè)備接收或發(fā)送隊列。GetCommError函數(shù)的功能是返回指定設(shè)備最近錯誤碼和當(dāng)前狀態(tài),更重要的是"解鎖"功能:當(dāng)出現(xiàn)通信錯誤時,Windows會鎖死通信端口直到調(diào)用GetCommError。調(diào)用FlushComm的時機很重要,如果通信端口發(fā)生錯誤,不調(diào)用該函數(shù)就有可能會使接收隊列包含不期望的數(shù)據(jù);若隨便調(diào)用該函數(shù),也有可能造成尚未讀入或發(fā)出的數(shù)據(jù)丟失。總之,調(diào)用該函數(shù)要做到"心中有數(shù)"。為了合理調(diào)用FlushComm和GetCommError函數(shù),建議在事件掩碼中包含EV_ERR與EV_BREAK。4.Windows多串口通信Windows最多可支持四個串口的通信,但對于ISA總線的PC,由于其COM1與COM3、COM2與COM4分別共用IRQ3和IRQ4,所以只能同時使用兩個串口。MCA、EISA總線系統(tǒng)沒有此限制。如果需要使用的端口不止四個,可以在PC護展槽中加插多用戶卡,如美國的Comtrol、臺灣的Moxa(摩莎)等,就可以支持幾個到幾十個串口,加上隨卡提供的Windows驅(qū)動程序,就可以進行多串口通信。具體用法請參閱擴展卡說明書。三、Windows通信實例實例的通信環(huán)境為:本方COMPAQ4/50微機,安裝中文Windows3.2;對方為8031單片機。通信參數(shù)設(shè)置:波特率150b
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 船舶電子電氣技術(shù)專業(yè)教學(xué)標準(高等職業(yè)教育??疲?025修訂
- 2025年中國堅果禮盒行業(yè)市場全景分析及前景機遇研判報告
- 2025-2030年中國PLUS模塊行業(yè)深度研究分析報告
- 中國剪切板行業(yè)市場調(diào)查研究及投資潛力預(yù)測報告
- 家具工藝培訓(xùn)課件
- 2024年全球及中國食品和飲料軟管行業(yè)頭部企業(yè)市場占有率及排名調(diào)研報告
- 2025年 化工自動化控制儀表操作證考試練習(xí)題附答案
- 2025年 國科大附屬學(xué)校招聘教師考試試題附答案
- 2024年中國功能性涂布膠膜行業(yè)調(diào)查報告
- 2025年中國塑合行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 手術(shù)體位擺放原則及注意事項
- 零售藥店計算機管理系統(tǒng)操作規(guī)程
- 潔凈室施工培訓(xùn)
- 新生兒糖尿病喂養(yǎng)指導(dǎo)
- 山西省太原市(2024年-2025年小學(xué)五年級語文)統(tǒng)編版期末考試(下學(xué)期)試卷及答案
- 住院患者跌倒、墜床、壓力性損傷的風(fēng)險評估及管理
- 2023風(fēng)光互補路燈設(shè)計方案
- 2023年山東省夏季普通高中學(xué)業(yè)水平合格考試會考生物試題及參考答案
- 2024年山東省青島市中考英語試卷附答案
- 材料力學(xué)(山東聯(lián)盟-中國石油大學(xué)(華東))智慧樹知到期末考試答案章節(jié)答案2024年中國石油大學(xué)(華東)
- 江西省南昌二中心遠教育集團九灣學(xué)校2023-2024學(xué)年八年級下學(xué)期期末考試物理試題
評論
0/150
提交評論