串列埠操作類

2021-06-03 18:52:07 字數 2529 閱讀 3200

public int handle

}public commport(string comstr)

//////設定dcb標誌位

//////

//////

internal void setdcbflag(int whichflag, int setting, dcb dcb)

else if (whichflag == 15)

else

dcb.flags &= ~(num << whichflag);

dcb.flags |= (uint)setting;

}///

///建立與串列埠的連線

///public int open()

// 設定通訊超時時間

getcommtimeouts(hcomm, ref ctocommport);

ctocommport.readtotaltimeoutconstant = readtimeout;

ctocommport.readtotaltimeoutmultiplier = 0;

ctocommport.writetotaltimeoutmultiplier = 0;

ctocommport.writetotaltimeoutconstant = 0;

setcommtimeouts(hcomm, ref ctocommport);

//設定串列埠引數

getcommstate(hcomm, ref dcb);

dcb.dcblength = marshal.sizeof(dcb);

dcb.baudrate = baudrate;

dcb.flags = 0;

dcb.bytesize = (byte)bytesize;

dcb.stopbits = stopbits;

dcb.parity = (byte)parity;

//------------------------------

setdcbflag(0, 1, dcb);            //二進位制方式

setdcbflag(1, (parity == 0) ? 0 : 1, dcb);

setdcbflag(2, 0, dcb);            //不用cts檢測傳送流控制

setdcbflag(3, 0, dcb);            //不用dsr檢測傳送流控制

setdcbflag(4, 0, dcb);            //禁止dtr流量控制

setdcbflag(6, 0, dcb);            //對dtr訊號線不敏感

setdcbflag(9, 1, dcb);            //檢測接收緩衝區

setdcbflag(8, 0, dcb);            //不做傳送字元控制

setdcbflag(10, 0, dcb);           //是否用指定字元替換校驗錯的字元

setdcbflag(11, 0, dcb);           //保留null字元

setdcbflag(12, 0, dcb);           //允許rts流量控制

setdcbflag(14, 0, dcb);           //傳送錯誤後,繼續進行下面的讀寫操作

//--------------------------------

dcb.wreserved = 0;                       //沒有使用,必須為0      

dcb.xonlim = 0;                          //指定在xoff字元傳送之前接收到緩衝區中可允許的最小位元組數

dcb.xofflim = 0;                         //指定在xoff字元傳送之前緩衝區中可允許的最小可用位元組數

dcb.xonchar = 0;                         //傳送和接收的xon字元

dcb.xoffchar = 0;                        //傳送和接收的xoff字元

dcb.errorchar = 0;                       //代替接收到奇偶校驗錯誤的字元

dcb.eofchar = 0;                         //用來表示資料的結束     

dcb.evtchar = 0;                         //事件字元,接收到此字元時,會產生乙個事件       

dcb.wreserved1 = 0;                      //沒有使用

if (!setcommstate(hcomm, ref dcb))

opened = true;

return 0;

}///

///關閉串列埠,結束通訊

///public void close()

}///

///讀取串列埠返回的資料

//////資料長度

public void write(byte writebytes)}}

串列埠操作類

using system using system.collections.generic using system.linq using system.text using system.io.ports namespace communicationcomm region 傳送接收資料 publ...

C 串列埠操作類

最近由於工作需要,在研究串列埠通訊的問題,下面分享一下關於串列埠的乙個操作類,有不足之處,希望大家一起提出改善。using system using system.collections.generic using system.text using system.io.ports public c...

C 串列埠操作實用類

做工業通訊有很長時間了,特別是串列埠 232 485 有vb vc c各種版本的串列埠操作 這些 也經過了多年的現場考驗,應該說是比較健壯的 但是目前卻沒有c 相對成熟的串列埠操作 最近用moxa的裝置開發基於wince5.0的串列埠操作 所以就擴充完善了一下串列埠操作,特別是sendcommand...