在 Wi ndows,MSComm控件在中文Wi的ndows下的通信问题与处理方法.doc
MSComm控件在中文Wi的ndows下的通信問題與處理方法
MSComm控件在中文Windows下的通信問題與處理方法
摘 要VB 5.0/6.0的MSComm通信控件提供了一系列標準通信命令的接口,它允許建立串口連接,但在實際通信軟件設計過程中,MSComm控件并非像想像中那樣完美和容易控制,特別是在中文Windows下通信時更會出現 問題 。本文就MSComm控件在實際 應用 中可能出現的問題以及編程技巧進行探討。關鍵詞 MsComm控件 串口通信 處理1.MSComm控件的基礎 理論 一般說來, 計算 機都有一個或多個串行端口,它們依次為Com1、Com2、...。這些串口還提供了外部設備與PC進行數據傳輸和通信的通道,這些串口在CPU和外設之間充當解釋器的角色。當字符數據從CPU發送給外設時,這些字符數據將被轉換成串行比特流數據;當接收數據時,比特流數據被轉換為字符數據傳遞給CPU。再進一步說,在操作系統方面,Windows用通信驅動程序(COMM.DRV)調用API函數發送和接收數據。當用通信控件或聲明調用API函數時,它們由COMM.DRV解釋并傳遞給設備驅動程序。作為一個VB程序員,要編寫通信程序,只需知道通信控件提供給Windows通信API函數的接口即可,換句話說,只需設定和監視通信控件的屬性和事件即可。2.利用MSComm控件進行數據的接收和發送搞清楚以上基本屬性和事件后就可以開始編寫通信程序了:在VB 5.0/6.0中新建一個工程文件,添加Microsoft Comm control 5.0組件,在窗體Form1中加入Command命令按鈕并取名為cmdTest,MSComm控件取名為MSComm1,寫入以下代碼:Private Sub cmdTest_Click() MSComm1.CommPort = 1 #39;設定Com1口 If MSComm1.PortOpen = False The n MSComm1.Settings = “9600,N,8,1” #39;9600波特率,無校驗,8位數據位,1位停止位 MSComm1.PortOpen = True #39;打開串口 End If MSComm1.OutBufferCount = 0 #39;清空發送緩沖區 MSComm1.InBufferCount = 0 #39;清空接收緩沖區 #39;發送字符數據,注意必須用回車符(vbCr)結束 MSComm1.Output=“This is a good book!” & vbCr #39;撥打電話號碼或發送AT命令 MSComm1.Output=“ATDT 0294563622” & vbCr #39;發送字符數組數據,注意ByteArray必須事先定義賦值 Dim ByteArray as byte() #39;定義動態數組 ReDim ByteArray(1) #39;重定義數組大小 ByteArray(0)=0 ByteArray(1)=1 MSComm1.Output = ByteArray #39;發送字符數組數據 End Sub Private Sub MSComm1_OnComm() Select Case MSComm1.CommEvent Case comEvReceive #39;接收字符數據 Dim Buffer As Variant MSComm1.InputLen = 0 #39;當InputMode 屬性值為0(文本模式)時,變量中含String型數據。#39;當InputMode屬性值為1(二進制模式)時,變量中含Byte型數組數據。 MSComm1.InputMode=comInputModeBinary Buffer=MSComm1.Input #39;接收二進制數據 MSComm1.InputMode=comInputModeText Buffer = MSComm1.Input Case else End Select End Sub 3.中文Windows下的通信問題與解決 方法 3.1 接收的數據少于發送的數據 如果通過MSComm控件一次性傳送較多的二進制數據,那么,很可能收到的數據不足。例如在設置為2400bps傳輸率的情況下,一次性可以傳輸2048個字符數據,那么在大多數情況下一次只能收到1200個字符左右,這是因為新版的MSComm32.OCX中存在一個 影響 傳輸二進制數據的Bug。 32位Windows API函數使用了幾個用COMMTIMEOUTS結構表示的限時變量,WriteTotalTimeOutConstant即是其中的一個,它被Windows內部設定為5000(即5秒),這個常量決定了在通信驅動程序停止傳輸之前花費在
總結
以上是生活随笔為你收集整理的在 Wi ndows,MSComm控件在中文Wi的ndows下的通信问题与处理方法.doc的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新动态!苹果“先买后付”服务将评估客户过
- 下一篇: c语言猜拳游戏思考,这是一个猜拳游戏的程