青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

極品垃圾

初學VC ,就是把每天所看到的整理到博客,慢慢消化這些內容。見證我的學習之路吧。很多都是轉載。

公告

初學VC ,就是把每天所看到的整理到博客,慢慢消化這些內容。見證我的學習之路吧。很多都是轉載。
<2025年11月>
2627282930311
2345678
9101112131415
16171819202122
23242526272829
30123456

統計

  • 隨筆 - 0
  • 文章 - 61
  • 評論 - 1
  • 引用 - 0

常用鏈接

留言簿(2)

隨筆分類

文章分類(55)

文章檔案(61)

搜索

  •  

最新評論

MSComm控件使用詳解(龔建偉)
摘要:本文詳細介紹了MSComm控件在串口編程中使用。

         目  次
MSComm控件兩種處理通訊的方式
CommPort屬性
RThreshold 屬性
CTSHolding 屬性
SThreshold 屬性
CDHolding 屬性
DSRHolding 屬性
Settings 屬性
InputLen 屬性
EOFEnable 屬性

Handshake 常數
OnComm 常數
InputMode 常數
錯誤消息


     MSComm 控件通過串行端口傳輸和接收數據,為應用程序提供串行通訊功能。MSComm控件在串口編程時非常方便,程序員不必去花時間去了解較為復雜的API函數,而且在VC、VB、Delphi等語言中均可使用。 Microsoft Communications Control(以下簡稱MSComm)是Microsoft公司提供的簡化Windows下串行通信編程的ActiveX控件,它為應用程序提供了通過串行接口收發數據的簡便方法。具體的來說,它提供了兩種處理通信問題的方法:一是事件驅動(Event-driven)方法,一是查詢法。

1.MSComm控件兩種處理通訊的方式

MSComm控件提供下列兩種處理通訊的方式:事件驅動方式和查詢方式。 
1.1 事件驅動方式

事件驅動通訊是處理串行端口交互作用的一種非常有效的方法。在許多情況下,在事件發生時需要得到通知,例如,在串口接收緩沖區中有字符,或者 Carrier Detect (CD) 或 Request To Send (RTS) 線上一個字符到達或一個變化發生時。在這些情況下,可以利用 MSComm 控件的 OnComm 事件捕獲并處理這些通訊事件。OnComm 事件還可以檢查和處理通訊錯誤。所有通訊事件和通訊錯誤的列表,參閱 CommEvent 屬性。在編程過程中,就可以在OnComm事件處理函數中加入自己的處理代碼。這種方法的優點是程序響應及時,可靠性高。每個MSComm 控件對應著一個串行端口。如果應用程序需要訪問多個串行端口,必須使用多個 MSComm 控件。

1.2 查詢方式 

查詢方式實質上還是事件驅動,但在有些情況下,這種方式顯得更為便捷。在程序的每個關鍵功能之后,可以通過檢查 CommEvent 屬性的值來查詢事件和錯誤。如果應用程序較小,并且是自保持的,這種方法可能是更可取的。例如,如果寫一個簡單的電話撥號程序,則沒有必要對每接收一個字符都產生事件,因為唯一等待接收的字符是調制解調器的“確定”響應。 

2.MSComm 控件的常用屬性
MSComm 控件有很多重要的屬性,但首先必須熟悉幾個屬性。
CommPort 設置并返回通訊端口號。 
Settings 以字符串的形式設置并返回波特率、奇偶校驗、數據位、停止位。 
PortOpen 設置并返回通訊端口的狀態。也可以打開和關閉端口。 
Input 從接收緩沖區返回和刪除字符。 
Output 向傳輸緩沖區寫一個字符串。

下面分別描述: 

CommPort屬性 設置并返回通訊端口號。
語法 object.CommPort[value ] (value 一整型值,說明端口號。) 
說明 在設計時,value 可以設置成從 1 到 16 的任何數(缺省值為 1)。但是如果用 PortOpen 屬性打開一個并不存在的端口時,MSComm 控件會產生錯誤 68(設備無效)。
注意:必須在打開端口之前設置 CommPort 屬性。

RThreshold 屬性:在 MSComm 控件設置 CommEvent 屬性為 comEvReceive 并產生 OnComm 之前,設置并返回的要接收的字符數。
語法 object.Rthreshold [ = value ](value 整型表達式,說明在產生 OnComm 事件之前要接收的字符數。 )
說明 當接收字符后,若 Rthreshold 屬性設置為 0(缺省值)則不產生 OnComm 事件。例如,設置 Rthreshold 為 1,接收緩沖區收到每一個字符都會使 MSComm 控件產生 OnComm 事件。

CTSHolding 屬性:確定是否可通過查詢 Clear To Send (CTS) 線的狀態發送數據。Clear To Send 是調制解調器發送到相聯計算機的信號,指示傳輸可以進行。該屬性在設計時無效,在運行時為只讀。
語法: object.CTSHolding(Boolean)

Mscomm 控件的 CTSHolding 屬性設置值:
True Clear To Send 線為高電平。 
False Clear To Send 線為低電平。 

說明:如果 Clear To Send 線為低電平 (CTSHolding = False) 并且超時時,MSComm 控件設置 CommEvent 屬性為 comEventCTSTO (Clear To Send Timeout) 并產生 OnComm 事件。

Clear To Send 線用于 RTS/CTS (Request To Send/Clear To Send) 硬件握手。如果需要確定 Clear To Send 線的狀態,CTSHolding 屬性給出一種手工查詢的方法。

詳細信息 有關握手協議,請參閱 Handshaking 屬性。

SThreshold 屬性: MSComm 控件設置 CommEvent 屬性為 comEvSend 并產生 OnComm 事件之前,設置并返回傳輸緩沖區中允許的最小字符數。

語法 object.SThreshold [ = value ]
value 整形表達式,代表在 OnComm 事件產生之前在傳輸緩沖區中的最小字符數。 

說明:若設置 Sthreshold 屬性為 0(缺省值),數據傳輸事件不會產生 OnComm 事件。若設置 Sthreshold 屬性為 1,當傳輸緩沖區完全空時,MSComm 控件產生 OnComm 事件。如果在傳輸緩沖區中的字符數小于 value,CommEvent 屬性設置為 comEvSend,并產生 OnComm 事件。comEvSend 事件僅當字符數與 Sthreshold 交叉時被激活一次。例如,如果 Sthreshold 等于 5,僅當在輸出隊列中字符數從 5 降到 4 時,comEvSend 才發生。如果在輸出隊列中從沒有比 Sthreshold 多的字符,comEvSend 事件將絕不會發生。


Handshake 常數

常數 值 描述 
comNone 0 無握手。 
comXonXoff 1 XOn/Xoff 握手。 
comRTS 2 Request-to-send/clear-to-send 握手。 
comRTSXOnXOff 3 Request-to-send 和 clear-to-send 握手皆可。 


OnComm 常數

常數 值 描述 
comEvSend 1 發送事件。 
comEvReceive 2 接收事件。 
comEvCTS 3 clear-to-send 線變化。 
comEvDSR 4 data-set ready 線變化。 
comEvCD 5 carrier detect 線變化。 
comEvRing 6 振鈴檢測。 
comEvEOF 7 文件結束。 


Error 常數

常數 值 描述 
comEventBreak 1001 接收到中斷信號 
comEventCTSTO 1002 Clear-to-send 超時 
comEventDSRTO 1003 Data-set ready 超時 
comEventFrame 1004 幀錯誤 
comEventOverrun 1006 端口超速 
comEventCDTO 1007 Carrier detect 超時 
comEventRxOver 1008 接收緩沖區溢出 
comEventRxParity 1009 Parity 錯誤 
comEventTxFull 1010 傳輸緩沖區滿 
comEventDCB 1011 檢索端口 設備控制塊 (DCB) 時的意外錯誤 

InputMode 常數
常數 值 描述 
comInputModeText 0 (缺省)通過 Input 屬性以文本方式取回數據。 
comInputModeBinary 1 通過 Input 屬性以二進制方式檢取回數據。 





CDHolding 屬性:通過查詢 Carrier Detect (CD) 線的狀態確定當前是否有傳輸。Carrier Detect 是從調制解調器發送到相聯計算機的一個信號,指示調制解調器正在聯機。該屬性在設計時無效,在運行時為只讀。

語法 object.CDHolding
設置值:CDHolding 屬性的設置值為: 
設置 描述 
True Carrier Detect 線為高電平 
False Carrier Detect 線為低電平 
說明:注意當 Carrier Detect 線為高電平 (CDHolding = True) 且超時時,MSComm 控件設置CommEvent 屬性為 comEventCDTO(Carrier Detect 超時錯誤),并產生 OnComm 事件。
注意 在主機應用程序中捕獲一個丟失的傳輸是特別重要的,例如一個公告板,因為呼叫者可以隨時掛起(放棄傳輸)。
Carrier Detect 也被稱為 Receive Line Signal Detect (RLSD)。
數據類型 Boolean

DSRHolding 屬性:確定 Data Set Ready (DSR) 線的狀態。Data Set Ready 信號由調制解調器發送到相連計算機,指示作好操作準備。該屬性在設計時無效,在運行時為只讀。
語法:object.DSRHolding
object 所在處表示對象表達式,其值是“應用于”列表中的對象。
DSRHolding 屬性返回以下值:
值 描述 
True Data Set Ready 線高 
False Data Set Ready 線低 
說明:當 Data Set Ready 線為高電平 (DSRHolding = True) 且超時時,MSComm 控件設置 CommEvent 屬性為 comEventDSRTO(數據準備超時)并產生 OnComm 事件。
當為 Data Terminal Equipment (DTE) 機器寫 Data Set Ready/Data Terminal Ready 握手例程時該屬性是十分有用的。
數據類型:Boolean


Settings 屬性: 設置并返回波特率、奇偶校驗、數據位、停止位參數。

語法: object.Settings[ = value]
說明:當端口打開時,如果 value 非法,則 MSComm 控件產生錯誤 380(非法屬性值)。
Value 由四個設置值組成,有如下的格式:
"BBBB,P,D,S"
BBBB 為波特率,P 為奇偶校驗,D 為數據位數,S 為停止位數。value 的缺省值是:
"9600,N,8,1"


InputLen 屬性:設置并返回 Input 屬性從接收緩沖區讀取的字符數。

語法 object.InputLen [ = value]
InputLen 屬性語法包括下列部分:
value 整型表達式,說明 Input 屬性從接收緩沖區中讀取的字符數。 
說明:InputLen 屬性的缺省值是 0。設置 InputLen 為 0 時,使用 Input 將使 MSComm 控件讀取接收緩沖區中全部的內容。

若接收緩沖區中 InputLen 字符無效,Input 屬性返回一個零長度字符串 ("")。在使用 Input 前,用戶可以選擇檢查 InBufferCount 屬性來確定緩沖區中是否已有需要數目的字符。該屬性在從輸出格式為定長數據的機器讀取數據時非常有用。


EOFEnable 屬性:確定在輸入過程中 MSComm 控件是否尋找文件結尾 (EOF) 字符。如果找到 EOF 字符,將停止輸入并激活 OnComm 事件,此時 CommEvent 屬性設置為 comEvEOF,
語法:object.EOFEnable [ = value ]
EOFEnable 屬性語法包括下列部分:
value 布爾表達式,確定當找到 EOF 字符時,OnComm 事件是否被激活,如“設置值”中所描述。 
value 的設置值:
True 當 EOF 字符找到時 OnComm 事件被激活。 
False (缺省)當 EOF 字符找到時 OnComm 事件不被激活。 
說明:當 EOFEnable 屬性設置為 False,OnComm 控件將不在輸入流中尋找 EOF 字符。


錯誤消息(MS Comm 控件)


下表列出 MSComm 控件可以捕獲的錯誤:

值 描述 
380 無效屬性值 comInvalidPropertyValue
383 屬性為只讀 comSetNotSupported
394 屬性為只讀 comGetNotSupported 
8000 端口打開時操作不合法 comPortOpen
8001 超時值必須大于 0 
8002 無效端口號 comPortInvalid
8003 屬性只在運行時有效 
8004 屬性在運行時為只讀 
8005 端口已經打開 comPortAlreadyOpen
8006 設備標識符無效或不支持該標識符 
8007 不支持設備的波特率 
8008 指定的字節大小無效 
8009 缺省參數錯誤 
8010 硬件不可用(被其它設備鎖定) 
8011 函數不能分配隊列 
8012 設備沒有打開 comNoOpen 
8013 設備已經打開 
8014 不能使用 comm 通知 
8015 不能設置 comm 狀態 comSetCommStateFailed
8016 不能設置 comm 事件屏蔽 
8018 僅當端口打開時操作才有效 comPortNotOpen 
8019 設備忙 
8020 讀 comm 設備錯誤 comReadError
8021 為該端口檢索設備控制塊時的內部錯誤 comDCBError 

 

posted on 2009-05-20 17:03 極品垃圾 閱讀(843) 評論(0)  編輯 收藏 引用 所屬分類: 單片機

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            欧美日韩一区二区三区免费| 国产亚洲欧美日韩在线一区| 亚洲伦理一区| 久久天天躁狠狠躁夜夜爽蜜月| 亚洲欧洲日产国产网站| 在线日韩视频| 亚洲欧洲日本mm| 一本一道久久综合狠狠老精东影业 | 欧美日韩视频在线一区二区 | 国产欧美欧美| 伊人激情综合| 99视频精品| 欧美一二区视频| 久久久久久网站| 欧美1区2区3区| 日韩午夜高潮| 欧美一区二区精品久久911| 欧美制服丝袜| 美女黄网久久| 欧美涩涩网站| 亚洲大片精品永久免费| 一区二区三区高清在线| 欧美中文字幕视频在线观看| 欧美成人午夜| 亚洲欧美在线免费观看| 免费成人高清| 国语自产精品视频在线看| 亚洲精品一二三| 久久久女女女女999久久| 亚洲日本中文字幕区| 亚洲第一区在线观看| 亚洲欧美日韩在线综合| 欧美国产日韩一二三区| 国内精品国产成人| 亚洲午夜激情网站| 欧美岛国在线观看| 欧美一区国产在线| 国产精品电影观看| 一区二区三区高清| 亚洲欧洲精品一区二区| 国产日韩欧美高清| 夜久久久久久| 久久久精品性| 国产精品试看| 亚洲图片欧洲图片日韩av| 久久亚洲国产精品日日av夜夜| 亚洲精品免费一区二区三区| 久久久精品日韩| 国产精品免费aⅴ片在线观看| 亚洲人成毛片在线播放女女| 久久一区免费| 欧美中文在线观看国产| 国产精品日韩专区| 亚洲一区二区精品在线观看| 亚洲国产精品久久久久秋霞蜜臀 | 欧美xxx在线观看| 亚洲欧美日韩视频二区| 国产精品久久久久一区| 一区二区三区精品视频在线观看| 欧美1级日本1级| 久久综合导航| 亚洲黄色一区二区三区| 欧美高清在线观看| 欧美成人精品激情在线观看| 亚洲电影成人| 欧美激情一区二区三区高清视频| 欧美中文字幕不卡| 狠狠噜噜久久| 亚洲国产成人在线| 欧美国产视频在线| 日韩亚洲欧美一区| 亚洲精品人人| 国产精品黄色| 久久婷婷综合激情| 欧美成人午夜激情在线| 一区二区电影免费观看| 亚洲国产影院| 欧美18av| 亚洲一区二区欧美| 性高湖久久久久久久久| 狠狠色综合色区| 亚洲福利在线视频| 欧美日韩亚洲视频一区| 香蕉久久夜色精品| 久久精品国产96久久久香蕉| 国产香蕉97碰碰久久人人| 蜜臀91精品一区二区三区| 欧美激情在线免费观看| 午夜性色一区二区三区免费视频| 久久国产精品99国产精| 99国产精品久久| 亚洲男女自偷自拍图片另类| 一区二区亚洲欧洲国产日韩| 亚洲欧洲一区| 国产一区视频网站| 亚洲风情亚aⅴ在线发布| 亚洲欧洲日夜超级视频| 亚洲动漫精品| 欧美日韩在线高清| 久久精品欧美日韩精品| 牛牛国产精品| 亚洲欧美在线aaa| 久久亚洲色图| 午夜精品在线视频| 久久婷婷蜜乳一本欲蜜臀| 亚洲午夜精品久久| 久久人人爽人人| 一区二区三区视频在线播放| 午夜精品在线观看| 99视频在线观看一区三区| 久久成人资源| 午夜视频在线观看一区| 免费中文字幕日韩欧美| 欧美一区二区三区视频在线| 欧美精品一区在线发布| 欧美成人精品在线播放| 国产午夜精品麻豆| 一区二区三区日韩精品| 亚洲精品国产品国语在线app | 亚洲黄色在线看| 欧美一区二区三区视频| 亚洲男人的天堂在线| 欧美日韩a区| 欧美激情综合| 亚洲国产1区| 久久天堂精品| 欧美a级理论片| 亚洲第一色中文字幕| 久久精品91久久久久久再现| 亚洲欧美激情四射在线日 | 欧美诱惑福利视频| 欧美日韩综合| 亚洲精品美女91| 日韩视频永久免费| 麻豆精品在线视频| 欧美成人综合网站| 亚洲国产欧洲综合997久久| 久久久夜精品| 欧美sm重口味系列视频在线观看| 国产一区二区毛片| 性xx色xx综合久久久xx| 久久久人成影片一区二区三区| 国产精品免费在线| 亚洲免费婷婷| 午夜一区在线| 狠狠色丁香久久婷婷综合_中| 欧美一区二区三区免费在线看| 久久久精品2019中文字幕神马| 国产伦精品一区二区三区免费| 亚洲影院色在线观看免费| 欧美一区二区三区视频在线观看 | 亚洲在线视频免费观看| 欧美日韩视频在线一区二区观看视频 | 老色鬼精品视频在线观看播放| 欧美视频在线免费| 夜夜嗨av一区二区三区免费区| 亚洲图片在线观看| 国产欧美1区2区3区| 欧美在线关看| 欧美fxxxxxx另类| 亚洲精一区二区三区| 欧美日韩大陆在线| 亚洲欧美变态国产另类| 美女精品在线观看| 亚洲人成在线播放网站岛国| 欧美视频在线观看 亚洲欧| 亚洲欧美一区二区三区久久| 欧美va天堂va视频va在线| 一区二区三区高清视频在线观看 | 国产精品九九久久久久久久| 午夜精品久久久久99热蜜桃导演| 久久综合网络一区二区| 亚洲麻豆av| 国产一区二区三区高清播放| 欧美国产日韩一区二区| 香港成人在线视频| 欧美激情女人20p| 篠田优中文在线播放第一区| 在线观看精品视频| 国产精品99一区二区| 久久精品国产99国产精品| 亚洲精品一区在线观看香蕉| 久久久久久久久久久一区| 99精品欧美一区二区三区| 国产亚洲精品资源在线26u| 欧美激情精品久久久久久黑人 | 国产综合自拍| 欧美日韩麻豆| 久久亚洲私人国产精品va| 亚洲综合日韩在线| 亚洲国产91色在线| 久久久精品视频成人| 国产精品99久久久久久有的能看| 激情成人在线视频| 国产精品美女久久| 欧美日韩精品一区| 欧美88av| 美女脱光内衣内裤视频久久影院| 亚洲综合社区| 99re热这里只有精品视频|