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