国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Visual Basic > 正文

關于MSCOMM控件的一些說明第1/2頁

2020-01-31 16:31:40
字體:
來源:轉載
供稿:網友
關于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    發送緩沖區滿。在對發送字符排隊時,發送緩沖區滿
ComEventDCB     1011    檢取端口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   屬性只讀
ComPortOpen               8000   端口打開時該存在無效
                          8001   超時設置必須比0值大
ComPortInvalid            8002   無效的端口號
                          8003   屬性只在運行時有效
                          8004   屬性在運行時是只讀的
ComPortAleadyOpen         8005   端口已經打開
                          8006   設備標識符無效或不支持
                          8007   不支持設備的波特率
                          8008   指定的字節大小無效
                          8009   缺省參數錯誤
                          8010   硬件不可用(被其他設備鎖住)
                          8011   函數不能分配隊列
ComNoOpen                 8012   設備沒有打開
                          8013   設備已經打開
                          8014   不能使用通信通知
ComSetCommStateFailed     8015   不能設置通信狀態
                          8016   不能設置通信事件屏蔽
ComPortNotOpen            8018   該存在只在端口打開是有效
                          8019   設備忙
ComReadError              8020   通信設備讀錯誤
ComDCBError               8021   檢取端口設備控制塊時出現內部錯誤

搞清楚以上基本屬性后,就可以開始編寫通信許程序了。在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)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 遂溪县| 怀安县| 秦皇岛市| 阜新| 洞口县| 陇川县| 定襄县| 青海省| 松原市| 平南县| 淮安市| 长沙县| 齐河县| 闵行区| 政和县| 贵南县| 日喀则市| 城步| 百色市| 昔阳县| 康马县| 玉环县| 民乐县| 平顶山市| 靖江市| 汕头市| 克拉玛依市| 黔江区| 三河市| 庆云县| 海阳市| 南丹县| 正宁县| 合江县| 内乡县| 宝丰县| 镇安县| 新巴尔虎右旗| 沙洋县| 腾冲县| 桃江县|