每个串口数据都是一样的...用的MOXA的串口服务器在主机上虚拟了多个串口,轮询方式没问题了.5秒中轮询一个,那10个设备就要等50秒,时间太长了....我想用多个串口同时发送数据,每个串口独立工作,间隔10秒发慢点也行
解决方案 »
- sql server数据库嵌入exe文件问题
- treepanel节点刷新
- PictrueBox设置透明不好使?求解。。
- 有用过alternatiff插件的朋友进来帮忙解决下啊!!小弟着急
- 请问有谁在用InstallShield Express10打包时遇到ISEXP : error -3204: Cannot extract icon with index 0 from file ***.exe(我的一个需打包的执行文件)这样的问题?
- 散100点征求局域网QQ原码
- why????叫人不解的事
- C#中窗体排列
- .net 与 sybase的存储过程
- 一个字符串处理的问题?
- 帮忙看一下这个compress压缩方法,压缩后的文件的后缀名丢失?
- 如何查看内置函数的源代码,而不只是定义
判断两个字节,如果是 xx yy,xx是地址,yy是功能码,然后开始校验。
读出一条完整的数据,存储,然后把缓冲区的删除。
接着判断,如果是 xx zz,zz是别的类型的数据,校验,取出完整的一条数据。
。如果是多个串口,每个串口接受的数据都是同一类型的,那能分开写DataReceived
如果换数据了,“-=”。+=别新的事件
处理每条数据,比如我接受的都是9个字节的。
然后校验,如果数据正确,则取出 数据位,转换为十进制显示。
mb.CRC16(binary_crc)是crc校验后的两个字节的校验码 void comm1_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
try
{
int n = comm.BytesToRead;
byte[] buf = new byte[n];
comm.Read(buf, 0, n);
buffer.AddRange(buf);
if (buffer.Count==9)
{
byte[] binary_data_1 = new byte[9];
byte[] binary_crc=new byte [7];
buffer.CopyTo(0, binary_data_1, 0, 9);
buffer.CopyTo(0, binary_crc, 0, 7);
buffer.Clear();
modbus mb = new modbus();
if (mb.CRC16(binary_crc)[0] == binary_data_1[8] && mb.CRC16(binary_crc)[1] == binary_data_1[7])
{
string data = binary_data_1[3].ToString("X2") + binary_data_1[4].ToString("X2") + binary_data_1[5].ToString("X2") + binary_data_1[6].ToString("X2");
int hex = Convert.ToInt32(data, 16);
this.Invoke((EventHandler)(delegate { this.textBox2.Text = hex.ToString(); }));
}
}
}
finally
{
//多串口,要注意细节。延时啊什么的要调节好。
}
}