關於MSCOMM控件的一些闡明第1/2頁。本站提示廣大學習愛好者:(關於MSCOMM控件的一些闡明第1/2頁)文章只能為提供參考,不一定能成為您想要的結果。以下是關於MSCOMM控件的一些闡明第1/2頁正文
關於MSCOMM控件的一些闡明
VB5.0/6.的MSComm通訊控件提供了一系列規范通訊命令的接口,它允許樹立串口銜接,可以銜接到其他通訊設備(如Modem).
還可以發送命令、停止數據交流以及監視和呼應在通訊進程中能夠發作的各種錯誤和事情,從而可以用它創立全雙工 、事情驅
動的、高效適用的通訊順序。但在實踐通訊軟件設計進程中,MSComm控件並非像想像中那樣完滿和容易控制.特別是在中文Wln
95/98下通訊時更會呈現問題。上面就從根底開端引見,然後逐漸討淪MSComm控件在編程中呈現的問題以及編程技巧。
一、用MSComm控件通訊
1.串口通訊根底知識
普通悅來,計算機都有一個或多個串行端口,它們順次為com1、Com2、…,這些串口還提供了內部設備與pC停止數據傳輸和
皿信的通道。這些串口在CPU和外設之間充任解釋器的角色。當字符數據從CPU發送給外設時,這些字符數據將被轉換成串行比特
流數據;當接納數據時,比特流數據被轉換為字符數據傳遞給CPU,再進一步說,在操作零碎方面,Windows用通訊驅動順序
(COMM.DRV)調用API函數發送和接納數據,當用通訊控件或聲明調用API函數時,它門由COMM. DRV解釋並傳遞給設備驅動順序,
作為一個vB順序員,要編寫通訊順序.只需知道通訊控件提供應Windows通訊AP1函數的接口即可.換句話說,只需設定和監視通
信控件的屬性和事情即可。
2.運用Mscomm控件
在開端運用MSComm控件之前。需求先理解其屬性、事情或錯誤
屬性 描繪
CommPort 設置或前往通訊端口號
Settings 以字符串的方式設置或前往波特率、奇偶校驗、數據位和中止位
PortOpen 設置或前往通訊端口的形態。也可以翻開和封閉端口
Input 前往和刪除接納緩沖區中的字符
Output 將字符串寫入發送緩沖區
CommEvent屬性為通訊事情或錯誤前往下列值之一。在該控件的對象庫中也可以找到這些常量。
常量 值 描繪
ComEventBreak 1001 收到了斷開信號
ComEventCTSTO 1002 Clear To Send Timeout。在發送字符時,在零碎指定的事1件內,CTS(Clear To Send)線是低電平
ComEventDSRTO 1003 Data Set Ready Timeout。在發送字符時,在零碎指定的事情內,DSR(Data Set Ready)線是低電平
ComEventFrame 1004 數據幀錯誤。硬件檢測到一個數據幀錯誤
ComEventOverrun 1006 端口溢出。硬件中的字符尚未讀,下一個字符又抵達,並且喪失
ComEventCDTO 1007 Carrier Detect Time。在發送字符時,在零碎指定的事情內,CD(Carrier Detect)線是低電平。CD
也稱為RLSD(Receive Line Singal Detect,接納線信號檢測)
ComEventRxOver 1008 接納緩沖區溢出。在接納緩沖區中沒有空間
ComEventRxParity 1009 奇偶校驗錯。硬件檢測到奇偶校驗錯誤7
ComEventTxFull 1010 發送緩沖區滿。在對發送字符排隊時,發送緩沖區滿
ComEventDCB1011 檢取端口DCB(Device Control Blick)時發作了沒有意料到的錯誤
通訊事情包括了上面的設置:
常量 值 描繪
ComEvSend 1 發送緩沖區中的字符數比Sthreshold值低
ComEvReceive 2 接納到了Rthreshold個字符。繼續發生該事情,直到運用了Input屬性刪除了接納緩沖區中的數據
ComEvCTS 3 CTS(Clear To Send)線改動
ComEvDSR 4 DSR(Data Set Ready)線改動。當DSR從1到0改動時,該事情發作
ComEvCD 5 CD(Carrier Detect)線改動ComEvRing6檢測到響鈴信號。一些URAT(Universal AsynchronousReciver-
-Transmitters,通用異步收發器)不支持該事情
ComEvEOF 7 收到了EOF字符(ASCII字符26)
Error音訊(MSComm控件)下表列出了MSComm控件可捕捉的錯誤音訊:
常量 值 描繪
ComInvalidPropertyValue 380 有效的屬性值
ComSetNotSupported 383 屬性只讀
ComGetNotSupported 394 屬性只讀
ComPortOpen8000 端口翻開時該存在有效
8001 超時設置必需比0值大
ComPortInvalid 8002 有效的端口號
8003 屬性只在運轉時無效
8004 屬性在運轉時是只讀的
ComPortAleadyOpen 8005 端口曾經翻開
8006 設備標識符有效或不支持
8007 不支持設備的波特率
8008 指定的字節大小有效
8009 缺省參數錯誤
8010 硬件不可用(被其他設備鎖住)
8011 函數不能分配隊列
ComNoOpen 8012 設備沒有翻開
8013 設備曾經翻開
8014 不能運用通訊告訴
ComSetCommStateFailed8015 不能設置通訊形態
8016 不能設置通訊事情屏蔽
ComPortNotOpen 8018 該存在只在端口翻開是無效
8019 設備忙
ComReadError 8020 通訊設備讀錯誤
ComDCBError8021 檢取端口設備控制塊時呈現外部錯誤
搞清楚以上根本屬性後,就可以開端編寫通訊許順序了。在VB5.0/6.0中新建一個工程文件。添加Microsoft Comm Control 5.0組
件,在簡體Form1中參加Command命令按鈕並取名為CmdTest,MSComm控件取名為MSComm1,參加如下順序代碼。
Private Sub cmdTestClick ( ) '翻開串口
MSComml.CommPort =2 '設定Com2
If MSComml.PortOpen = False Then
MSComm1.Settings = "9600,n,8,1" '9600波特率,無校驗,8位數據位,1位中止位
MSComm1.PortOpen = True '翻開串口
End if
MSComm1.OutBufferCount = 0 '清空發送緩沖區
MSComm1.InBufferCount = 0'滑空接納緩沖區
'發送字符數據時留意必需用回車符(vbcr)完畢
MSComm1.Output="This is a qood book ! " &vbCr
'潑打電話號碼或發送AT命令
MSComm1.Output = "ATDT 05778191898 , & vbCr
'發送字符數組數據時留意ByteArray必需事前定義賦值
Dim ByteArray as byte( )
'定義靜態數組
ReDim ByteArray(1)
'重定義數組大小
ByteArray ( 0 ) =0
ByteArray ( 1 ) = 1
MSComm1.Output = ByteArray
End Sub
private Sub MScommEvent( )
Select Case MSComm1.CommEvent
Case comEvReceive
Dim Buffer As Variant
MSComm1.InputLen = 0
'接納二進制數據
MSComm1.InputMode= ComInputModeBinary
Buffer=MSComm1.Input
'接納字符數據
MSComm1.InputMode=comInputModeText
Buffer = MSComml.Input
Case else
End Select
End sub
( 順序1)
12下一頁閱讀全文