C 串列埠操作實用類

2021-09-05 01:42:18 字數 1537 閱讀 4304

做工業通訊有很長時間了,特別是串列埠(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,int offset,int count)  

}  //傳送命令

public

int sendcommand(byte senddata, ref

byte receivedata,int overtime)  

if (port.bytestoread >= receivedata.length)   

ret = port.read(receivedata, 0, receivedata.length);  

receiveeventflag = false;       //開啟事件

return ret;  

}  return -1;  

}  public

void errorevent(object sender, serialerrorreceivedeventargs e)  

//資料接收

public

void datareceived(object sender, serialdatareceivedeventargs e)  

public

bool isopen()  

}  public

delegate

void portdatareceivedeventhandle(object sender, portdatareciveeventargs e);  

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...