C 串列埠操作實用類

2021-08-22 07:40:50 字數 1699 閱讀 5931

做工業通訊有很長時間了,特別是串列埠(232/485),有vb/vc/c各種版本的串列埠操作**,這些**也經過了多年的現場考驗,應該說是比較健壯的**,但是目前卻沒有c#相對成熟的串列埠操作**,最近用moxa的裝置開發基於wince5.0的串列埠操作**,所以就擴充完善了一下串列埠操作,特別是sendcommand函式,這是我比較常用的主從通訊**,不喜歡用事件或執行緒接資料,在規定的超時時間內直接迴圈判斷要接收的資料。

下面是具體的**:

public

class

portdata

~portdata()

public

void

open()

}public

void

close()}//

資料傳送

public

void

senddata(

byte

data)

}public

void

senddata(

byte

data,

intoffset,

intcount)}//

傳送命令

public

intsendcommand(

byte

senddata,

refbyte

receivedata,

intovertime)

if(port.bytestoread

>=

receivedata.length)

ret=

port.read(receivedata,

0,receivedata.length);

receiveeventflag

=false;//

開啟事件

return

ret;

}return-1

;}public

void

errorevent(

object

sender,serialerrorreceivedeventargse)

//資料接收

public

void

datareceived(

object

sender,serialdatareceivedeventargse)

public

bool

isopen()

}public

delegate

void

portdatareceivedeventhandle(

object

sender,portdatareciveeventargse);

public

class

portdatareciveeventargs:eventargs

public

portdatareciveeventargs(

byte

data)

private

byte

data;

public

byte

data

set}}

【附註】1~9 串列埠的名稱是 "comx:",>9的以前用.//comx:比較好使,但是在moxa 661裝置上卻不行,要用如下格式"$device//com" + portno.tostring() + "/0",也許這是moxa修改了相應的串列埠驅動。

C 串列埠操作實用類

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

C 串列埠操作實用類

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

C 串列埠操作實用類

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