程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> 關於MSCOMM控件的一些闡明第1/2頁

關於MSCOMM控件的一些闡明第1/2頁

編輯:VB綜合教程

關於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下一頁閱讀全文
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved