串列埠通訊主要用到下面幾個函式:
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...