读书人

C# serialport类串口通信有关问题

发布时间: 2013-01-11 11:57:35 作者: rapoo

C# serialport类串口通信问题
最近买了一个设备,是USB接口的,插到电脑上为虚拟串口com3。利用serialport类编写了串口读写功能,但程序始终无法进入DataReceive事件。利用portmon软件监测,当设备自带软件发送特定指令时,会收到数据。为什么我编的软件就是读取不到数据,跪求大家指导!谢谢,在线等~~~
[解决办法]
port1_DataReceived 的问题,你要看你接收的是字符串还是16进制的数据,加一个选项设置一下,比如起名叫协议,当为字符串时用ReadExisting(),然后做处理,

否则为16进制的数据,用Read(readBuffer, 0, readBuffer.Length),然后处理

最后用BeginInvoke去显示结果


[解决办法]
void sp_DataReceived(object sender, SerialDataReceivedEventArgs e)
{
if (e.EventType != SerialData.Chars)
return;
if (sp.BytesToRead <= 0) return;
byte[] ReadBuf = new byte[sp.BytesToRead];
sp.Read(ReadBuf, 0, ReadBuf.Length);
//接收数据
lock(queMsgs) queMsgs.Enqueue(ReadBuf);
PostMessage(this.handler, MsgId, 0, 0);
}

读书人网 >C#

热点推荐