怎么样正确读取串口发过来的数据,并转成数据

pimlee 2012-02-28 02:39:07
目前做称重管理系统:
现在环境是:一个传感器连接称重显示器,然后连接电脑。
目前称重显示器显示值为:0.000
用串口调试如图:

传输协议

也就是说:
[02]是开始位
+ 符号位
000000 称重数量
3 小数点位数
1和8是异或校验位
[03]是结束位


有一个问题是:串口上不断的发来ascii码(二进制数),而我去接收的时候 却不一定是从第一位开始接收的,所以可能出现从中间某一位开始接收, 这样,由于01排列的循序不同了,导致不能显示正确的ascii码,就产生了乱码。


问题就是:怎么正确的取到[02]+000000318[03]。然后转化成0.000显示出来

...全文
1505 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
oneqhw 2012-11-19
  • 打赏
  • 举报
回复
这个问题解决了木有,我现在也遇到这样的问题,望楼主赐教啊
地上的一坨泥 2012-02-28
  • 打赏
  • 举报
回复
不知道是怎么回事啊
pimlee 2012-02-28
  • 打赏
  • 举报
回复
byte[] buf = new byte[n];
comm.Read(buf, 0, n);
buffer.AddRange(buf);
while (buffer.Count >= 4)
{
这里怎么查找以[02]开头的数据啊
{
}
}


每次buffer村的数据都不一样
浪子-无悔 2012-02-28
  • 打赏
  • 举报
回复
按照协议来验证数据的完整性和将接受的数据转化为我们识别的十进制数据就是了.
pimlee 2012-02-28
  • 打赏
  • 举报
回复
开头老是乱码
bdmh 2012-02-28
  • 打赏
  • 举报
回复
协议中写的不是很清楚吗,接受的是流,根据协议规定逐个按照长度读取啊,是什么类型就转成什么类型

110,571

社区成员

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

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

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