用serialPort串口通讯,返回数据有问题! RT,返回的字节数据正确有几项,错误都显示为63,不知道是什么原因?我是写完串口数据之后,延时了大于一秒再去读返回数据的!请高手指点一二!谢谢,在线等! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 我用串口监视程序检测了一下,结果如下:串口调试工具COM1【CREATE:1476】COM1【DEVICE_CONTROL:SET_BAUD_RATE】80 25 00 00 COM1【DEVICE_CONTROL:SET_LINE_CONTROL】00 03 08 COM1【DEVICE_CONTROL:SET_CHARS】00 00 00 00 11 13 COM1【DEVICE_CONTROL:SET_HANDFLOW】00 00 00 00 00 00 00 00 00 04 00 00 00 04 00 00 COM1【DEVICE_CONTROL:SET_QUEUE_SIZE】00 20 00 00 00 10 00 00 COM1【DEVICE_CONTROL:SET_TIMEOUTS】FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 COM1【DEVICE_CONTROL:SET_WAIT_MASK】39 01 00 00 COM1【DEVICE_CONTROL:PURGE】05 00 00 00 COM1【WRITE:0】FF 00 03 08 65 04 73 COM1【READ:0】04 00 03 08 65 00 74 COM1【CLOSE:4】自己写的程序:COM1【CREATE:2852】COM1【DEVICE_CONTROL:SET_BAUD_RATE】80 25 00 00 COM1【DEVICE_CONTROL:SET_LINE_CONTROL】00 03 08 COM1【DEVICE_CONTROL:SET_CHARS】1A 3F 3F 1A 11 13 COM1【DEVICE_CONTROL:SET_HANDFLOW】00 00 00 00 04 00 00 00 00 04 00 00 00 04 00 00 COM1【DEVICE_CONTROL:SET_BAUD_RATE】80 25 00 00 COM1【DEVICE_CONTROL:SET_LINE_CONTROL】00 03 08 COM1【DEVICE_CONTROL:SET_CHARS】1A 3F 3F 1A 11 13 COM1【DEVICE_CONTROL:SET_HANDFLOW】00 00 00 00 04 00 00 00 00 04 00 00 00 04 00 00 COM1【DEVICE_CONTROL:SET_TIMEOUTS】FF FF FF FF FF FF FF FF FE FF FF FF 00 00 00 00 00 00 00 00 COM1【DEVICE_CONTROL:SET_WAIT_MASK】FB 01 00 00 COM1【DEVICE_CONTROL:SET_QUEUE_SIZE】00 10 00 00 00 08 00 00 COM1【WRITE:0】FF 00 03 08 65 04 73 COM1【READ:0】04 3F 03 3F 65 3F 74 COM1【DEVICE_CONTROL:SET_WAIT_MASK】00 00 00 00 COM1【DEVICE_CONTROL:PURGE】0A 00 00 00 05 00 00 00 COM1【CLOSE:2852】二者对比很明显是后者读取的数据有问题!有哪位好心的大侠帮我看看是什么原因呀? DEVICE_CONTROL:SET_CHARS ,两个程序的结果不一样,我怀疑是缓冲区大小,字节长度等问题,用的是什么方法?代码如何?我用的如下: private void myPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { // 多线程 if (threadCallHandler == null) { threadCallHandler = new SerialDataReceivedEventHandler(myPort_DataReceived); } if (this.InvokeRequired) { this.Invoke(threadCallHandler, new object[] { sender, e }); return; } // 俘获异常 try { string data = (sender as SerialPort).ReadExisting(); txtReceive.Text = txtReceive.Text + data; txtReceive.SelectionStart = txtReceive.TextLength; txtReceive.ScrollToCaret(); } catch (Exception ex) { myPort.Close(); MessageBox.Show(ex.Message); } }最好先查看数据位,校验位,停止位等等初始化的设置是否和另外一个程序一致 myPort.PortName = Convert.ToString(cboPort.SelectedItem); // 串口 myPort.BaudRate = Convert.ToInt16(cboRate.Text); // 波特率 myPort.DataBits = 8; // 数据位 myPort.Parity = Parity.None; ; // 校验位 无校验 myPort.StopBits = StopBits.One; ;// 停止位1位希望对你有帮助 winform 如何打印自已绘制的曲线图 如何把一个汉字变成2个字节? Update 无法找到 TableMapping['sonproject'] 或 DataTable“sonproject”。 请教.net2.0如何判断文本框是否获得焦点问题。 C#线程 我错在哪啊? 教我把装好的.net环境移到另一个盘中,不要再安装! 解答后马上给分!!! 求助 Revit二开 winform中的按钮实现载入族命令 ADO.NET asp.net如何获取客户端网卡mac地址?
串口调试工具
COM1【CREATE:1476】
COM1【DEVICE_CONTROL:SET_BAUD_RATE】80 25 00 00
COM1【DEVICE_CONTROL:SET_LINE_CONTROL】00 03 08
COM1【DEVICE_CONTROL:SET_CHARS】00 00 00 00 11 13
COM1【DEVICE_CONTROL:SET_HANDFLOW】00 00 00 00 00 00 00 00 00 04 00 00 00 04 00 00
COM1【DEVICE_CONTROL:SET_QUEUE_SIZE】00 20 00 00 00 10 00 00
COM1【DEVICE_CONTROL:SET_TIMEOUTS】FF FF FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
COM1【DEVICE_CONTROL:SET_WAIT_MASK】39 01 00 00
COM1【DEVICE_CONTROL:PURGE】05 00 00 00
COM1【WRITE:0】FF 00 03 08 65 04 73
COM1【READ:0】04 00 03 08 65 00 74
COM1【CLOSE:4】自己写的程序:
COM1【CREATE:2852】
COM1【DEVICE_CONTROL:SET_BAUD_RATE】80 25 00 00
COM1【DEVICE_CONTROL:SET_LINE_CONTROL】00 03 08
COM1【DEVICE_CONTROL:SET_CHARS】1A 3F 3F 1A 11 13
COM1【DEVICE_CONTROL:SET_HANDFLOW】00 00 00 00 04 00 00 00 00 04 00 00 00 04 00 00
COM1【DEVICE_CONTROL:SET_BAUD_RATE】80 25 00 00
COM1【DEVICE_CONTROL:SET_LINE_CONTROL】00 03 08
COM1【DEVICE_CONTROL:SET_CHARS】1A 3F 3F 1A 11 13
COM1【DEVICE_CONTROL:SET_HANDFLOW】00 00 00 00 04 00 00 00 00 04 00 00 00 04 00 00
COM1【DEVICE_CONTROL:SET_TIMEOUTS】FF FF FF FF FF FF FF FF FE FF FF FF 00 00 00 00 00 00 00 00
COM1【DEVICE_CONTROL:SET_WAIT_MASK】FB 01 00 00
COM1【DEVICE_CONTROL:SET_QUEUE_SIZE】00 10 00 00 00 08 00 00
COM1【WRITE:0】FF 00 03 08 65 04 73
COM1【READ:0】04 3F 03 3F 65 3F 74
COM1【DEVICE_CONTROL:SET_WAIT_MASK】00 00 00 00
COM1【DEVICE_CONTROL:PURGE】0A 00 00 00 05 00 00 00
COM1【CLOSE:2852】二者对比很明显是后者读取的数据有问题!有哪位好心的大侠帮我看看是什么原因呀?
用的是什么方法?代码如何?我用的如下:
private void myPort_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
// 多线程
if (threadCallHandler == null)
{
threadCallHandler = new SerialDataReceivedEventHandler(myPort_DataReceived);
} if (this.InvokeRequired)
{
this.Invoke(threadCallHandler, new object[] { sender, e });
return;
} // 俘获异常
try
{
string data = (sender as SerialPort).ReadExisting();
txtReceive.Text = txtReceive.Text + data; txtReceive.SelectionStart = txtReceive.TextLength;
txtReceive.ScrollToCaret();
}
catch (Exception ex)
{
myPort.Close();
MessageBox.Show(ex.Message);
}
}最好先查看数据位,校验位,停止位等等初始化的设置是否和另外一个程序一致
myPort.PortName = Convert.ToString(cboPort.SelectedItem); // 串口
myPort.BaudRate = Convert.ToInt16(cboRate.Text); // 波特率
myPort.DataBits = 8; // 数据位
myPort.Parity = Parity.None; ; // 校验位 无校验
myPort.StopBits = StopBits.One; ;// 停止位1位
希望对你有帮助