串列埠通訊筆記

2021-04-12 17:37:10 字數 1778 閱讀 8526

串列埠通訊主要用到下面幾個函式:

createfile

開啟通訊埠

closehandle

關閉通訊埠

getcommstate

取得埠的引數

setcommstate

設定埠引數

writefile

埠傳送資料

readfile

埠讀取資料

clearcommerror

清除埠錯誤,並取得資訊

purgecomm

清除資料緩衝區

setcommmask

設定觸發事件

waitcommevent

等待事件觸發

escapecommfunction

控制埠的硬體狀態

getcommmodemstate

取得埠硬體線路狀態

(1)串列埠同步通訊

handle hcomm=createfile("com1",generic_read | generic_write,0,null,open_existing,0,0); //開啟com1埠

if(hcomm==invalid_handle_value)

//開啟埠失敗

else

else

//埠設定成功

讀資料char inbuff[1024];

dword nbytesread,dwevent,dwerror;

comstat cs;

//取得狀態

clearcommerror(hcomm,&dwerror,&cs);

if(cs.cbinque>sizeof(inbuff))//資料是否大於緩衝區

purgecomm(hcomm,purge_rxclear);

return;

readfile(hcomm,inbuff,cs.cbinque,&nbytesread,null);

傳送資料

writefile(hcomm,senddata,sizeof(senddata),&nbytessend,null);

(2)串列埠非同步通訊

使用同步通訊時,讀資料時若埠沒有資料,程式將一直停在readfile處,程式當掉.解決的辦法是使用非同步通訊.

handle hcomm=createfile("com1",generic_read | generic_write,0,null,open_existing,

0); //開啟com1埠

if(hcomm==invalid_handle_value)

//開啟埠失敗

else

else

//埠設定成功

long evwait;

evwait=ev_err + ev_break + ev_rxchar;

if(!setcommmask(hcomm,evwait))

//設定失敗

收資料tevent *wevent;

twaitresult ee;

unsigned long evwait;

wevent=new tevent(null,true,false,"");

overlap.hevent=wevent->handle;

if(waitcommevent(hcomm,&evwait,&overlap))

ee!=wrsignaled)return;//未觸發

wevent->resetevent();

if(evwait & ev_rxchar)

readfile(..);

C 中串列埠通訊筆記

1 設定相應的控制項,並命名 2 開啟串列埠按鈕事件 其中全域性變數private serialport comdevice new serialport 注 serialport需要使用using system.io.ports private void usbopenbutton click o...

Socket通訊筆記

當socket通訊的3次握手和四次揮手的問題了解了之後,下一步來到實際的程式開發階段了。首先,乙個簡單的應和答。當client第一次發出資訊之前大致有以下過程 如下 client public static void main string args server public static voi...

C Socket SSL通訊筆記

一 x.509證書 1.製作證書 先進入到vs2005的命令列狀態,即 開始 程式 microsoft visual studio 2005 visual studio tools visual studio 2005 命令提示 鍵入 makecert r pe n cn myserver ss m...