C#问题解决
自己写的串口通信和下载的串口精灵,程序这边发送,串口精灵那边接收的都是00,这是什么原因?如何改?还有串口精灵发送过来的数据,我这边接收的时候有点不稳定,就是有时候接收的...
自己写的串口通信和下载的串口精灵,程序这边发送,串口精灵那边接收的都是00,这是什么原因?如何改?还有串口精灵发送过来的数据,我这边接收的时候有点不稳定,就是有时候接收的正常,有时候总是少一位数据,为什么?怎么改?
我发现串口精灵发送奇数个数据时,这边接收就会丢失,偶数就不会,是奇校验这边有问题吗? 展开
我发现串口精灵发送奇数个数据时,这边接收就会丢失,偶数就不会,是奇校验这边有问题吗? 展开
1个回答
展开全部
刚开始“玩”串口差不多都这样,不要着急。
1、要相信串口精灵是正确的,只要不是硬件(端口或连线)有问题就不会错。
2、逐项比对串口设置。包括但不限于 波特率、起始位、停止位、校验 等。
3、使用自环头(2、3线直连)来测试基本通讯。
4、接收数据通常有两种模式:定时(或不定时)检查接收缓冲区;事件驱动。
相信我,无论是哪种情况,一定是事件驱动型的更好一些!
5、MSDN中提供的例子,简单有效。可以考虑在它上面逐步扩展来实现你的目标。
先说这些,等你进步一些再去研究缓冲池之类的东西吧。
1、要相信串口精灵是正确的,只要不是硬件(端口或连线)有问题就不会错。
2、逐项比对串口设置。包括但不限于 波特率、起始位、停止位、校验 等。
3、使用自环头(2、3线直连)来测试基本通讯。
4、接收数据通常有两种模式:定时(或不定时)检查接收缓冲区;事件驱动。
相信我,无论是哪种情况,一定是事件驱动型的更好一些!
5、MSDN中提供的例子,简单有效。可以考虑在它上面逐步扩展来实现你的目标。
先说这些,等你进步一些再去研究缓冲池之类的东西吧。
追问
嗯嗯,谢谢!现在就是不知道接收的时候有时可以全部接收,有时就丢失一个数据
追答
我猜你可能是采用了循环检查接收缓冲区的方法来收取数据吧?
建议改为使用 SerialPort.DataReceived 事件来接收数据。
请参考微软MSDN:https://msdn.microsoft.com/zh-cn/library/system.io.ports.serialport.datareceived.aspx
在默认状态下(SerialPort.ReceivedBytesThreshold默认为1)一般不会遗漏数据的。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询