为什么我的串口接收数据使有时候会分两次触发接收

叫我啊达 2017-05-22 02:54:30

本人想用C#写一个实时监测温度的上位机,我用一个串口助手来调试
我发送10.5时候我写的上位机有时候是分开收到1和0.5或者是10和.5
不懂为什么啊 想了很久

以下是串口接收到数据时触发的函数的代码
byte[] readBuffer = new byte[sp.ReadBufferSize];
sp.Read(readBuffer, 0, readBuffer.Length);
sp.DiscardInBuffer();
//赋值
rs = readBuffer;//
string str;
str= Encoding.GetEncoding("ASCII").GetString(rs);

string str2 = "12";
if (str!=str2) { MessageBox.Show(str); }
data.Add(str);
MyValue = 0;
...全文
2812 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
寄阳盼蕊 2021-04-26
  • 打赏
  • 举报
回复
因为你是被动接受数据,串口传输数据太慢他可能分两次传,你把接到的数据处理一下就行了
  • 打赏
  • 举报
回复
应为忽略了最重要的“数据完整性校验”步骤。
星空蔚蓝 2017-05-22
  • 打赏
  • 举报
回复
你发送的串中有没有开始和结束符,然后读取的时候要获得一个完整的串,包含一个开始 一个结束,中间的有效位才是你要读取的值,不知道这么说有没有帮到你
by_封爱 版主 2017-05-22
  • 打赏
  • 举报
回复
没有为什么 本来就是这样. 所以才需要"协议"啊...比如枕头枕尾校验和 根据协议才能组装成一个完整的"包" 否则这些东西存在是干嘛的? 当然了.如果你采用"主动读取模式" 那种sleep后read 就不会有这样的问题了..

111,120

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧