肯请指导 循环读取串口数据问题

2019-07-18 09:57发布

82C5 3030B430303030B203C3C5
82C5 B130B430303030B23030303003B8C6
82C5 B130B43030B430B2C6C6C6C603C542
82C5 B130B430303630B2C6C6C6C603C544
82C5 B130B43030B830B2C6C6C6C603C5C6626C696E6B

80100 1 3002 7F2C0E43330840290976280B 15
80100 2 3002 7F5E0E7A170D7C47137F250A 51
80100 3 3002 7F5A147F190E7B4E197F1D0B 61
80100 4 3002 7F6A13601B0F3230107F220B 6A
80100 5 3002 7F67107F1B157F5C197F1A0B 04
80100 6 3002 7F5F107F21157F401B7F2512 7B
80100 7 3002 7977177F1A0F7F421A7F1A0F 7B
80100 8 3002 7F580D7F200F593B107F300E 3D
80100 9 3002 7F7516771A167F54157F2412 19
80100 A 3002 7F6F0D781E0E532D0E7F2A0E 30
80100 B 3002 7F54136714137F56267F1B0E 64
80100 C 3002 7F5D116916107F451C7F1F0C 54

82C5 B130B43030B230B230B130300339B2
82C5 3030B430303030B203C3C5
82C5 3030B430303030B203C3C5

肯请指导串口循环接收数据处理问题

1.上面的数据是串口接收到的,全部无空格也无换行,加空格换行分开只是为了方便说明。
2.80100与3002是固定的,后面的1.2.3到C为编号,后面15,51,61等为校验位,接下来的24字符为有用数据。
3.想要的结果为一个一维字段符串数组:
1.7F2C0E43330840290976280B
2.7F5E0E7A170D7C47137F250A
.
.
.
12.7F5D116916107F451C7F1F0C

3.问题:请问前后的干扰字符如何排除,也就是说如何判断缓冲区有80010时我才开始接收(我只会判断缓冲区有n个字符时),而收到82C5是就停止接收(82C5对我是无用数据),大家是怎么处理的呢,肯请指导。
4.新人肯指大侠指导。十分感谢。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
9条回答
xjlin2
1楼-- · 2019-07-18 11:08
你是一个循环读取这么多个数据吗?如果是的话,那么可以做一个判断,截取从80100开始后的数据,当检测到82C5,则截取前面的数据,则可以将中间的有效数据给截取出来,从你需要的数据上来看,实质你只需要3002后面与校验位前的24个字节...
touch_xu
2楼-- · 2019-07-18 16:08
xjlin2 发表于 2012-9-17 15:24  你是一个循环读取这么多个数据吗?如果是的话,那么可以做一个判断,截取从80100开始后的数据,当检测到82C ...

是一次要这么多数据,但是要保证数据的完整性啊,我只会循环读取每一位然后连接字符串,可是什么开始读,什么时候停止都不会啊,没有一点头绪啊,谢谢帮助,依然不明白啊
touch_xu
3楼-- · 2019-07-18 21:51
本帖最后由 touch_xu 于 2012-9-17 15:58 编辑
xjlin2 发表于 2012-9-17 15:24 你是一个循环读取这么多个数据吗?如果是的话,那么可以做一个判断,截取从80100开始后的数据,当检测到82C ...
是一次要这么多数据,但是无论几次,我要保证得到12组数据就好了,谢谢您!
草根白骨精
4楼-- · 2019-07-19 01:07
用状态机判断,这个很好处理的,只要你的有用数据长度在RAM中不会溢出,1:等待80,是状态加1;2:等于10?是加一,不是状态清零;3:不判断,不管什么数字都加1;4:以此类推
touch_xu
5楼-- · 2019-07-19 01:59
 精彩回答 2  元偷偷看……
lstcspring
6楼-- · 2019-07-19 06:50
你的“一维字段符串数组”长是否一致,如果不一致最好在数据包中加个数据长度标识位!判到起始位后,收完一个包又开始下一包的判断!

一周热门 更多>