android byte数组 解析

haozi110 2013-03-21 11:33:34
android 读串口
串口不断的有byte数组得到,我这里获得数组以后,要对其解析打包,解析规则

命令(4byte)+总长度(2byte)+用户地址(4byte)+电文长度(2byte)+电文(Nbyte)+校验码(1byte)
例如命令:$TXX (每条命令都是以$开始+三条英文字符=4byte)
总长度:14 4+2+4+2+1+1=14个byte(加入电文内容为1byte)
用户地址:1211
电文长度:1
电文:我
校验码:异或此位之前的byte算出来的。

有效的数据应为:{0x24 ,0x54,0x58,0x58,0x31,0x32,0x31,0x31·········}

串口得到的byte,可能只有1byte 也可能有上百个byte,可能包含一条完整的数据,也可能包含好几条,也可能一条也不完整,可

能丢包,也可能有其他信息。怎么去一条完整的数据出来,求思路,求算法;
有人指点做一个环形数组,独到了就去写入环形数组,用两个int去追踪写的位置和读的位置,利用%符号去判断一条完整语句的开

始,然后根据总长度去读取长度,用校验位去判断是否有效。
但是实现起来很麻烦啊。
也有说用两个进程去处理,一个进程处理收到的byte数组,放入静态数组中。一个进程处理去读取和判断。
求代码啊······
...全文
918 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
haozi110 2013-03-22
  • 打赏
  • 举报
回复
引用 3 楼 yh_1108 的回复:
每个包有包头和校验,收到包解析后再发个回包回去,来来回回不就可以确定包的正确性?
大哥 你没有注意看问题啊; 串口通信是使用的阵脚连接,本来就容易丢数据,而且手机串口一次传入的数据本来就不稳定,你还要来回传输。 我需要的是这种情况下的算法,不要用串口来回通信去校验,校验算法已经给了,就是一包完整的数据异或校验,不对就把数据丢掉或者再回传通知等,但是你要接受的数据是一段一段返回来的。而且传过来的数据长度是不定的,从这些数据中取出来异或校验通过的数据
天涯洪七公 2013-03-22
  • 打赏
  • 举报
回复
每个包有包头和校验,收到包解析后再发个回包回去,来来回回不就可以确定包的正确性?
haozi110 2013-03-22
  • 打赏
  • 举报
回复
引用 1 楼 angel501 的回复:
貌似很有意思,不过在这方面的水平太低了,楼主为什么要读串口数据呢?手机或移动android设备没有能接收串口数据的东西吧。。。
自己的模块开发 需要用android读串口数据开发的。问题不在我为什么要读从串口,而在于算法。
angel501 2013-03-21
  • 打赏
  • 举报
回复
貌似很有意思,不过在这方面的水平太低了,楼主为什么要读串口数据呢?手机或移动android设备没有能接收串口数据的东西吧。。。

110,538

社区成员

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

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

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