魚骨頭的雲端圖書館's Archiver

mhfo 發表於 2012-12-28 12:07

VB 控制項通信原理文檔

[font=SimSun][size=11.0pt]一.
[/size][/font][font="][size=11.0pt]串列通訊[/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/com/][font="]組件[/font][/url][/size][/font][font="][size=11.0pt](MSComm [/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/com/][font="]控制項[/font][/url][/size][/font][font="][size=11.0pt])[/size][/font][font="][size=11.0pt]包含在專業版及企業版中[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]MSComm [/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/com/][font="]組件[/font][/url][/size][/font][font="][size=11.0pt]並不是主動出現在[/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/tool/][font="]工具[/font][/url][/size][/font][font="][size=11.0pt]箱的[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]當我們需要用到它時[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]做如下步驟[/size][/font][font="][size=11.0pt]:[/size][/font]
[font="][size=11.0pt]1.[/size][/font][font="][size=11.0pt]在[/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/tool/][font="]工具[/font][/url][/size][/font][font="][size=11.0pt]箱上按右鍵[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]在彈出的對話方塊中選擇[/size][/font][font="][size=11.0pt] "[/size][/font][font="][size=11.0pt]部件[/size][/font][font="][size=11.0pt]..."[/size][/font][font="][size=11.0pt]選項[/size][/font]
[font="][size=11.0pt]2.[/size][/font][font="][size=11.0pt]在[/size][/font][font="][size=11.0pt]"[/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/com/][font="]控制項[/font][/url][/size][/font][font="][size=11.0pt]"[/size][/font][font="][size=11.0pt]標籤中[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]找到[/size][/font][font="][size=11.0pt]"Microsoft Comm Control6.0"[/size][/font][font="][size=11.0pt]選項[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]並勾選它[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]然後按[/size][/font][font="][size=11.0pt]"[/size][/font][font="][size=11.0pt]確定[/size][/font][font="][size=11.0pt]"[/size][/font]
[font="][size=11.0pt]3.[/size][/font][font="][size=11.0pt]這時[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/tool/][font="]工具[/font][/url][/size][/font][font="][size=11.0pt]箱中會出現一個[/size][/font][font="][size=11.0pt]"[/size][/font][font="][size=11.0pt]電話機[/size][/font][font="][size=11.0pt]"[/size][/font][font="][size=11.0pt]的圖示[/size][/font][font="][size=11.0pt].[/size][/font][font="][size=11.0pt]已經[/size][/font][font="][size=11.0pt]OK[/size][/font][font="][size=11.0pt]啦[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]([/size][/font][font="][size=11.0pt]我用的是簡體中文版的[/size][/font][font="][size=11.0pt].)[/size][/font]
[font="][size=11.0pt]二[/size][/font][font="][size=11.0pt].[/size][/font][font="][size=11.0pt]屬性[/size][/font]
[font="][size=11.0pt]常用屬性[/size][/font]
[font="][size=11.0pt]:[/size][/font]
[font="][size=11.0pt]說明[/size][/font]
[font="][size=11.0pt]CommPort[/size][/font][font="][size=11.0pt]:[/size][/font]
[font="][size=11.0pt]設置通訊埠號[/size][/font][font="][size=11.0pt] (1-16).[/size][/font][font="][size=11.0pt]例[/size][/font][font="][size=11.0pt]:MSComm1.CommPort=1 '[/size][/font][font="][size=11.0pt]指定使用[/size][/font][font="][size=11.0pt]COM1[/size][/font][font="][size=11.0pt]作通訊傳輸[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]Settings[/size][/font][font="][size=11.0pt]:以字串的形式設置並返回串列傳輸速率、同位元、資料位元、停止位元[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]格式為[/size][/font][font="][size=11.0pt]"BBBB,P,D,S".[/size][/font][font="][size=11.0pt]預設值為[/size][/font][font="][size=11.0pt]"9600,N,8,1"[/size][/font]
[font="][size=11.0pt]BBBB[/size][/font][font="][size=11.0pt]為連線速度[/size][/font][font="][size=11.0pt],[/size][/font]
[font="][size=11.0pt]P[/size][/font][font="][size=11.0pt]為同位元檢查方式[/size][/font][font="][size=11.0pt],None[/size][/font][font="][size=11.0pt]無[/size][/font][font="][size=11.0pt]([/size][/font][font="][size=11.0pt]預設值[/size][/font][font="][size=11.0pt]),Even[/size][/font][font="][size=11.0pt]偶數[/size][/font][font="][size=11.0pt],Mark[/size][/font][font="][size=11.0pt]記號[/size][/font][font="][size=11.0pt],Odd[/size][/font][font="][size=11.0pt]奇數[/size][/font][font="][size=11.0pt],Space[/size][/font][font="][size=11.0pt]空白[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]D[/size][/font][font="][size=11.0pt]為數據位元數[/size][/font][font="][size=11.0pt],4-8.[/size][/font]
[font="][size=11.0pt]S[/size][/font][font="][size=11.0pt]為停止位[/size][/font][font="][size=11.0pt],1,1.5,3.[/size][/font]
[font="][size=11.0pt]"9600,N,8,1"[/size][/font][font="][size=11.0pt]的意思是[/size][/font][font="][size=11.0pt]"[/size][/font][font="][size=11.0pt]所使用的通訊埠是以每秒[/size][/font][font="][size=11.0pt]9600 Bit[/size][/font][font="][size=11.0pt]的速度作傳輸[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]不作同位的檢查[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]每個元是[/size][/font][font="][size=11.0pt]8[/size][/font][font="][size=11.0pt]個[/size][/font][font="][size=11.0pt]Bit,[/size][/font][font="][size=11.0pt]而停止位是[/size][/font][font="][size=11.0pt]1[/size][/font][font="][size=11.0pt]個[/size][/font][font="][size=11.0pt]Bit"[/size][/font]
[font="][size=11.0pt]注[/size][/font][font="][size=11.0pt]:[/size][/font][font="][size=11.0pt]四項的順序是不可前後對調的[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]其中的字母[/size][/font][font="][size=11.0pt]N[/size][/font][font="][size=11.0pt]可以是大寫[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]也可以是小寫[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]HandShaking[/size][/font][font="][size=11.0pt]:設置通訊雙方的交握協定[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]即流量控制[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]0-comNone:([/size][/font][font="][size=11.0pt]預設值[/size][/font][font="][size=11.0pt])[/size][/font][font="][size=11.0pt]沒有交握協議[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]1-comXOnXOff:(Xon/Xoff)[/size][/font][font="][size=11.0pt]交握協議[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]2-comRTS:RTS/CTS(RequestTo Send/CLear To Send)[/size][/font][font="][size=11.0pt]交握協議[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]3-comRTSXonXoff:RequestTo Send[/size][/font][font="][size=11.0pt]和[/size][/font][font="][size=11.0pt]Xon/Xoff[/size][/font][font="][size=11.0pt]交握協議[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]Output: [/size][/font][font="][size=11.0pt]將一個字串寫入傳輸緩衝區[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]例[/size][/font][font="][size=11.0pt]:MSComm1.Output="ABCDE",[/size][/font][font="][size=11.0pt]此即將[/size][/font][font="][size=11.0pt]ABCDE 5[/size][/font][font="][size=11.0pt]個字元通過[/size][/font][font="][size=11.0pt]RS232[/size][/font][font="][size=11.0pt]傳送出去[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]Input: [/size][/font][font="][size=11.0pt]從對方所傳至輸入緩衝區的字元讀進[/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/doc/][font="]程式[/font][/url][/size][/font][font="][size=11.0pt]中[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]並清除緩衝區中已被讀取的字元[/size][/font][font="][size=11.0pt].[/size][/font][font="][size=11.0pt]這是一種[/size][/font][font="][size=11.0pt]FIFO(firstin first out)[/size][/font][font="][size=11.0pt]的機制[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]例[/size][/font][font="][size=11.0pt]:Buffer$=MSComm1.Input.[/size][/font][font="][size=11.0pt]將輸入緩衝區的字元讀入[/size][/font][font="][size=11.0pt]Buffer[/size][/font][font="][size=11.0pt]字串變數中[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]InputLen: [/size][/font][font="][size=11.0pt]指定由序列埠讀入的字串長度[/size][/font][font="][size=11.0pt].([/size][/font][font="][size=11.0pt]每次讀取[/size][/font][font="][size=11.0pt]input[/size][/font][font="][size=11.0pt]時,讀取多少位元組[/size][/font][font="][size=11.0pt])[/size][/font]
[font="][size=11.0pt]MSComm1.InputLen=10'[/size][/font][font="][size=11.0pt]當[/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/doc/][font="]程式[/font][/url][/size][/font][font="][size=11.0pt]執行[/size][/font][font="][size=11.0pt]Input[/size][/font][font="][size=11.0pt]指令時[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]只會讀取[/size][/font][font="][size=11.0pt]10[/size][/font][font="][size=11.0pt]個字元[/size][/font][font="][size=11.0pt].[/size][/font][font="][size=11.0pt]假設在輸入緩衝區中有[/size][/font]
[font="][size=11.0pt]55[/size][/font][font="][size=11.0pt]個位元組[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]則每次[/size][/font][font="][size=11.0pt]Input[/size][/font][font="][size=11.0pt]指令會讀取[/size][/font][font="][size=11.0pt]10[/size][/font][font="][size=11.0pt]個位元組進來[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]因此要全部讀完所有的資料需要執行[/size][/font][font="][size=11.0pt]6[/size][/font][font="][size=11.0pt]次[/size][/font][font="][size=11.0pt]Input[/size][/font][font="][size=11.0pt]指令[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]RThreshold:[/size][/font][font="][size=11.0pt]接受的字元數[/size][/font][font="][size=11.0pt].RTHreshold=1----[/size][/font][font="][size=11.0pt]表示當有一個位元組到達接收緩衝區時,回應[/size][/font][font="][size=11.0pt]OnComm[/size][/font][font="][size=11.0pt]事件。[/size][/font][font="][size=11.0pt]RTHreshold=10----[/size][/font][font="][size=11.0pt]表示[/size][/font][font="][size=11.0pt]10[/size][/font][font="][size=11.0pt]個位元組到達時才回應[/size][/font][font="][size=11.0pt]OnComm[/size][/font][font="][size=11.0pt]事件。[/size][/font]

[font="][size=11.0pt]SThreshold:[/size][/font][font="][size=11.0pt]傳輸中所能允許的最小字元數[/size][/font][font="][size=11.0pt]. [/size][/font][font="][size=11.0pt]設置[/size][/font][font="][size=11.0pt] Sthreshold [/size][/font][font="][size=11.0pt]屬性為[/size][/font][font="][size=11.0pt] 0[/size][/font][font="][size=11.0pt](缺省值),資料傳輸事件不會產生[/size][/font][font="][size=11.0pt] OnComm [/size][/font][font="][size=11.0pt]事件。若設置[/size][/font][font="][size=11.0pt] Sthreshold [/size][/font][font="][size=11.0pt]屬性為[/size][/font][font="][size=11.0pt] 1[/size][/font][font="][size=11.0pt],當傳輸緩衝區完全空時,[/size][/font][font="][size=11.0pt]MSComm [/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/com/][font="]控制項[/font][/url][/size][/font][font="][size=11.0pt]產生[/size][/font][font="][size=11.0pt] OnComm [/size][/font][font="][size=11.0pt]事件。如果在傳輸緩衝區中的字元數小於[/size][/font][font="][size=11.0pt] value[/size][/font][font="][size=11.0pt],[/size][/font][font="][size=11.0pt]CommEvent [/size][/font][font="][size=11.0pt]屬性設置為[/size][/font][font="][size=11.0pt] comEvSend[/size][/font][font="][size=11.0pt],並產生[/size][/font][font="][size=11.0pt] OnComm [/size][/font][font="][size=11.0pt]事件。[/size][/font][font="][size=11.0pt]comEvSend [/size][/font][font="][size=11.0pt]事件僅當字元數與[/size][/font][font="][size=11.0pt] Sthreshold [/size][/font][font="][size=11.0pt]交叉時被啟動一次。例如,如果[/size][/font][font="][size=11.0pt] Sthreshold [/size][/font][font="][size=11.0pt]等於[/size][/font][font="][size=11.0pt] 5[/size][/font][font="][size=11.0pt],僅當在輸出佇列中字元數從[/size][/font][font="][size=11.0pt] 5 [/size][/font][font="][size=11.0pt]降到[/size][/font][font="][size=11.0pt] 4 [/size][/font][font="][size=11.0pt]時,[/size][/font][font="][size=11.0pt]comEvSend [/size][/font][font="][size=11.0pt]才發生。如果在輸出佇列中從沒有比[/size][/font][font="][size=11.0pt] Sthreshold [/size][/font][font="][size=11.0pt]多的字元,[/size][/font][font="][size=11.0pt]comEvSend [/size][/font][font="][size=11.0pt]事件將絕不會發生。[/size][/font]
[font="][size=11.0pt]DTREnable:[/size][/font][font="][size=11.0pt]決定是否使[/size][/font][font="][size=11.0pt]Request To Send(RTS)[/size][/font][font="][size=11.0pt]行有效[/size][/font][font="][size=11.0pt].[/size][/font]
[font="][size=11.0pt]PortOpen[/size][/font][font="][size=11.0pt]:設置通訊埠的狀態[/size][/font][font="][size=11.0pt].True([/size][/font][font="][size=11.0pt]打開[/size][/font][font="][size=11.0pt])/False([/size][/font][font="][size=11.0pt]關閉[/size][/font][font="][size=11.0pt]).[/size][/font]
[font="][size=11.0pt]三[/size][/font][font="][size=11.0pt].[/size][/font][font="][size=11.0pt]錯誤消息[/size][/font]

[font="][size=11.0pt]下面列出了[/size][/font][font="][size=11.0pt] MSComm [/size][/font][font="][size=11.0pt][url=http://www.programbbs.com/com/][font="]控制項[/font][/url][/size][/font][font="][size=11.0pt]可以捕獲的錯誤:[/size][/font]
[font="][size=11.0pt]錯誤號[/size][/font][font="][size=11.0pt]: [/size][/font][font="][size=11.0pt]描述[/size][/font]

[font="][size=11.0pt]380         [/size][/font][font="][size=11.0pt]無效屬性值[/size][/font][font="][size=11.0pt] comInvalidPropertyValue [/size][/font]
[font="][size=11.0pt]383 [/size][/font][font="][size=11.0pt]  屬性為唯讀[/size][/font][font="][size=11.0pt] comSetNotSupported [/size][/font]
[font="][size=11.0pt]394[/size][/font]       [font="][size=11.0pt]屬性為唯讀[/size][/font][font="][size=11.0pt]comGetNotSupported [/size][/font]
[font="][size=11.0pt]8000 [/size][/font][font="][size=11.0pt]   埠打開時操作不合法[/size][/font][font="][size=11.0pt] comPortOpen[/size][/font]
[font="][size=11.0pt]8001 [/size][/font][font="][size=11.0pt]   超時值必須大於[/size][/font][font="][size=11.0pt] 0 [/size][/font]
[font="][size=11.0pt]8002[/size][/font]     [font="][size=11.0pt]無效埠號[/size][/font][font="][size=11.0pt] comPortInvalid [/size][/font]
[font="][size=11.0pt]8003      [/size][/font][font="][size=11.0pt]屬性只在運行時有效[/size][/font]
[font="][size=11.0pt]8004 [/size][/font][font="][size=11.0pt]  屬性在運行時為唯讀[/size][/font]
[font="][size=11.0pt]8005      [/size][/font][font="][size=11.0pt]埠已經打開[/size][/font][font="][size=11.0pt] comPortAlreadyOpen [/size][/font]
[font="][size=11.0pt]8006 [/size][/font][font="][size=11.0pt]  設備識別字無效或不支援該識別字[/size][/font]
[font="][size=11.0pt]8007  [/size][/font][font="][size=11.0pt] 不支援設備的串列傳輸速率[/size][/font]
[font="][size=11.0pt]8008  [/size][/font][font="][size=11.0pt] 指定的位元組大小無效[/size][/font]
[font="][size=11.0pt]8009[/size][/font]     [font="][size=11.0pt]缺省參數錯誤[/size][/font]
[font="][size=11.0pt]8010      [/size][/font][font="][size=11.0pt]硬體不可用(被其它設備鎖定)[/size][/font]
[font="][size=11.0pt]8011      [/size][/font][font="][size=11.0pt]函數不能分配佇列[/size][/font]
[font="][size=11.0pt]8012  [/size][/font][font="][size=11.0pt] 設備沒有打開[/size][/font][font="][size=11.0pt] comNoOpen [/size][/font]
[font="][size=11.0pt]8013  [/size][/font][font="][size=11.0pt] 設備已經打開[/size][/font]
[font="][size=11.0pt]8014  [/size][/font][font="][size=11.0pt] 不能使用[/size][/font][font="][size=11.0pt] comm [/size][/font][font="][size=11.0pt]通知[/size][/font]
[font="][size=11.0pt]8015      [/size][/font][font="][size=11.0pt]不能設置[/size][/font][font="][size=11.0pt] comm [/size][/font][font="][size=11.0pt]狀態[/size][/font][font="][size=11.0pt] comSetCommStateFailed [/size][/font]
[font="][size=11.0pt]8016 [/size][/font][font="][size=11.0pt]  不能設置[/size][/font][font="][size=11.0pt] comm [/size][/font][font="][size=11.0pt]事件遮罩[/size][/font]
[font="][size=11.0pt]8018  [/size][/font][font="][size=11.0pt] 僅當埠打開時操作才有效[/size][/font][font="][size=11.0pt] comPortNotOpen [/size][/font]
[font="][size=11.0pt]8019  [/size][/font][font="][size=11.0pt] 設備忙[/size][/font]
[font="][size=11.0pt]8020  [/size][/font][font="][size=11.0pt] 讀[/size][/font][font="][size=11.0pt] comm [/size][/font][font="][size=11.0pt]設備錯誤[/size][/font][font="][size=11.0pt] comReadError [/size][/font]
[font="][size=11.0pt]8021  [/size][/font][font="][size=11.0pt] 為該埠檢索設備控制塊時的內部錯誤[/size][/font][font="][size=11.0pt] comDCBError[/size][/font]

[size=4][font="][/font][/size]

頁: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.