110,539
社区成员
发帖
与我相关
我的任务
分享
SerialPort sp = new SerialPort();
sp.PortName = "COM2";
sp.BaudRate = 2400;
sp.StopBits = StopBits.One;
sp.Parity = Parity.Even;
sp.DataBits = 8;
sp.WriteTimeout = 1000;
// 使用的是Modbus协议通信 1 4 是固定的 0 0 是高位 低位 歧视地址 0 2 是高位 低位 请求数量 113 203 是校验码
byte[] request = { 1, 4, 0, 0, 0, 2, 113, 203 };
sp.Open();
sp.Write(request, 0, request.Length);
System.Threading.Thread.Sleep(1000);
byte[] buffer = new byte[sp.BytesToRead];
int len = sp.Read(buffer, 0, sp.BytesToRead);
// 使用串口调试助手 接收到的数据 是正确的 01 04 04 00 4F 00 4E 4A 67 01 04 分别对应 1 4 04是请求数量*2 转换成16进制 00 4F 00 4E 是请求数量返回的具体值 4A 67 返回的校验码