C#问题解决

自己写的串口通信和下载的串口精灵,程序这边发送,串口精灵那边接收的都是00,这是什么原因?如何改?还有串口精灵发送过来的数据,我这边接收的时候有点不稳定,就是有时候接收的... 自己写的串口通信和下载的串口精灵,程序这边发送,串口精灵那边接收的都是00,这是什么原因?如何改?还有串口精灵发送过来的数据,我这边接收的时候有点不稳定,就是有时候接收的正常,有时候总是少一位数据,为什么?怎么改?
我发现串口精灵发送奇数个数据时,这边接收就会丢失,偶数就不会,是奇校验这边有问题吗?
展开
 我来答
money0_04c351c2
2016-06-12 · TA获得超过4142个赞
知道大有可为答主
回答量:5505
采纳率:49%
帮助的人:1613万
展开全部
刚开始“玩”串口差不多都这样,不要着急。
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)一般不会遗漏数据的。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式