肯请指导 循环读取串口数据问题
时间:10-02
整理:3721RD
点击:
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.新人肯指大侠指导。十分感谢。
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.新人肯指大侠指导。十分感谢。
你是一个循环读取这么多个数据吗?如果是的话,那么可以做一个判断,截取从80100开始后的数据,当检测到82C5,则截取前面的数据,则可以将中间的有效数据给截取出来,从你需要的数据上来看,实质你只需要3002后面与校验位前的24个字节...
是一次要这么多数据,但是要保证数据的完整性啊,我只会循环读取每一位然后连接字符串,可是什么开始读,什么时候停止都不会啊,没有一点头绪啊,谢谢帮助,依然不明白啊
是一次要这么多数据,但是无论几次,我要保证得到12组数据就好了,谢谢您!
用状态机判断,这个很好处理的,只要你的有用数据长度在RAM中不会溢出,1:等待80,是状态加1;2:等于10?是加一,不是状态清零;3:不判断,不管什么数字都加1;4:以此类推
知道状态机,但是还是看不懂啊,还是我自己太笨了,得到数据后知道如何处理,就是接收的时候处理不好啊,哎!
你的“一维字段符串数组”长是否一致,如果不一致最好在数据包中加个数据长度标识位!判到起始位后,收完一个包又开始下一包的判断!
长度一致的,12个元素啊
你的数据应该不是一次来这么多的,是你发一条命令然后来一条,不然也不可能每条后面都有校验,条件结构每次发不同的命令,然后接受,截取有用字符串即可,放到FOR中最后自动索引出一个数组就ok了
你可以用这个查查“串口数据采集器”,它是调串口数据的专用工具,能够使你了解到串口跑的数据与期望的是否一致,还有时序关系是不是正确。在淘宝上可以查到这个工具.