用串口类SerialPort
1、打开串口
public bool ComOpen(int OutTime, string ComNum, int BaudRate)
{
try
{
com.PortName = ComNum
com.BaudRate = 9600
com.DataBits = 8
//com.Parity = Parity.Even
com.WriteTimeout = OutTime
com.ReadTimeout = OutTime
com.Open()
}
catch
{
return false
//MessageBox.Show("打开串口失败!", "系统提示")
}
return true
}
2、先把你的协议转换为byte数据,具体的你自己拼写,下面的是把你的字符串转换为为ascII码,你的十六进制的其实是ascII码形式
ASCIIEncoding MyInfo = new ASCIIEncoding()
byte[] MySend = MyInfo.GetBytes(AlarmCode)
在数组中,起始位一般是0x02还是0x03啊,忘了,你自己看着拼一下
3、串口发送或者接受命令,把你的数组发送出去或者取出来,都一样
public byte[] ComSend(byte[] sendbyte,int SleepTime)
{
//byte[] refbyte = new byte[500]
int reallength
//try
//{
com.Write(sendbyte, 0, sendbyte.Length)
//return sendbyte
//}
//catch
//{
////MessageBox.Show("发送数据失败!")
//return null
//}
try
{
reallength = com.BytesToRead
byte[] refbyte = new byte[reallength]
reallength = com.Read(refbyte, 0, com.BytesToRead)
return refbyte
}
catch
{
return null
// MessageBox.Show("接收数据失败!")
}
}
通过虚拟串口软件(TCP2COM)中转即可,此软件使用时会虚拟出串口对,并且打开串口对一端,同时监听4G DTU F2X16连接端口,可实现与4G DTU F2X16之间通讯,并实现相关4G DTU F2X16以太网数据与对应串口之间的转换,客户软件只需打开和 *** 作相应串口对另一端即可。RS485总线通信,上位机通过主机轮询的方式采集下位机信号! 也就是说下位机不能够主动发送信号,而是上未机通过地址依次读取这四路的报文并打印显示出来;每次通信都是有上位机发起的握手信号,下位机接收到信息后判断是不是自己信息,如果是则发送数据欢迎分享,转载请注明来源:内存溢出
评论列表(0条)