一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
查看: 2611|回复: 14
收起左侧

[其他综合] 对于很多乱七八糟的串口指令怎么处理

[复制链接]
发表于 2016-5-7 10:22 | 显示全部楼层 |阅读模式
本帖最后由 8055 于 2016-5-7 10:58 编辑

如题,以往,对于串口来的控制指令,我一般就是收一个判断一个丢一个,直到合符条件,指令少的时候,这么干似乎没有什么麻烦的,但要是指令多又没有什么规律,指令里还要夹杂数据,感觉就不好办了,各位,你们一般对于这种串口来的指令怎么处理呢?
 楼主| 发表于 2016-5-7 10:26 | 显示全部楼层
我的想法是,先建立一些所有要用到的指令的数组,串口收到指令后,一个个去比对,看看和哪些数组符合。但是这样也有一个问题,如果数据长度不确定且又是连续发送多条指令,我怎么办?
发表于 2016-5-7 10:32 | 显示全部楼层
让发指令的机器,用<回车><换行>结束一条命令,
 楼主| 发表于 2016-5-7 10:38 | 显示全部楼层
aa7812 发表于 2016-5-7 10:32
让发指令的机器,用结束一条命令,

这样当然好了,发送命令的机机我改不了
发表于 2016-5-7 10:43 | 显示全部楼层
你如何知道一条指令的头和尾?  给出一串命令串(含多条指令)的例子,让大家看看。

发表于 2016-5-7 10:44 | 显示全部楼层
设计指令时候,如果没有考虑起始符(最好有校验,结束符,握手流程,容错处理等等),那是相当麻烦,估计只能降低发送密度(间隔频率)了
 楼主| 发表于 2016-5-7 10:53 | 显示全部楼层
aa7812 发表于 2016-5-7 10:43
你如何知道一条指令的头和尾?  给出一串命令串(含多条指令)的例子,让大家看看。

没法知道哇,现在想到的笨办法就是,收到一串足够长的命令串(收不够就超时处理),从中挨着找符合先建立的命令数组中的连续字符串。但这样肯定会丢命令且还麻烦。
 楼主| 发表于 2016-5-7 10:55 | 显示全部楼层
uart 发表于 2016-5-7 10:44
设计指令时候,如果没有考虑起始符(最好有校验,结束符,握手流程,容错处理等等),那是相当麻烦,估计只 ...

是的,很麻烦,不过,这仅仅是想法,如果真的面对这样的项目,我估计就得放弃
发表于 2016-5-7 11:00 | 显示全部楼层
8055 发表于 2016-5-7 10:55
是的,很麻烦,不过,这仅仅是想法,如果真的面对这样的项目,我估计就得放弃

也不用放弃,上面忘记说,如果发送方不可变更,可以增加串口接收数据缓存队列,用更高速度处理芯片对接收队列进行指令比对。
串口最高速度(非标)我也是用1Mbps而已,弄个高速单片机,在几个字节缓存间就足够完成数百字节数据比对了。
发表于 2016-5-7 11:46 | 显示全部楼层
你总得找到发指令的规律吧,不然怎么整不是最好的办法啊

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-20 06:21 , Processed in 0.061064 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表