大家做多机通讯一般是用hex还是ascii通讯
如果使用前后台系统,发完命令直接等回答处理,用hex和ASCII都没有问题.现在用了uCOS,接收数据是在中断里进行,如果用hex就不好判断起始位,不知道大家有没有什么建议? 我比较喜欢hex,因为数据量可以小一些,控制可以灵活一些
问题仅仅是调试时不够直观 回复【1楼】cc224
我比较喜欢hex,因为数据量可以小一些,控制可以灵活一些
问题仅仅是调试时不够直观
-----------------------------------------------------------------------
hex的优点是显而易见的,但是对于一个使用中断接收的多命令格式的系统来说,如果数据帧中不能排除起始位标志的话,那么数据识别将是很麻烦的事情. 如果用hex就不好判断起始位??????????????
WHY? 回复【3楼】Excellence 精益求精
如果用hex就不好判断起始位??????????????
why?
-----------------------------------------------------------------------
如果数据帧中也包含起始位就比较麻烦,有没有好方法?介绍下,先谢谢了! 数据占用低7位,甚至低4位 HEX跟ASCII有什么不同?
BIN跟ASCII有什么不同? 如果涉及跟pc通讯,我倾向于ascii。
如果是单片机之间通讯,我倾向于hex。
ascii可以用特殊字符确定帧头帧尾,比如用:表示一帧的开始,0xd、0xa表示结束。
hex通讯一般用时间来界定帧头帧尾,比如1ms无数据就表示新的一帧的开始,hex通讯的时候用ucos实在是太方便了,不知道楼主为什么会得到相反的结论。 如果协议制定的好,hex一样方便。
但就像7楼说的,“如果涉及跟pc通讯,我倾向于ascii。如果是单片机之间通讯,我倾向于hex。”,俺也倾向于这种方式,但还要看具体需求。 看下有一个协议,MODBUS,有两种方式,起始帧和结束以时间开始 参照 以太网帧 这个是目前世界上经过大量考验的 回复【7楼】schwarz
如果涉及跟pc通讯,我倾向于ascii。
如果是单片机之间通讯,我倾向于hex。
ascii可以用特殊字符确定帧头帧尾,比如用:表示一帧的开始,0xd、0xa表示结束。
hex通讯一般用时间来界定帧头帧尾,比如1ms无数据就表示新的一帧的开始,hex通讯的时候用ucos实在是太方便了,不知道楼主为什么会得到相反的结论。
-----------------------------------------------------------------------
我赞同前两句话。后面两句话,主要是看通讯协议 喜欢用ascii码,原因同上,判断帧头帧尾的问题;这个比较专业的叫法好像叫数据透明性的问题 ascii和hex有啥区别
ascii最终还是2进制!
只要有帧头帧尾,无论是神马协议,都一样搞定,都不用超时
当然用modbus这种超时协议也可以
看看以太网协议
超时协议是历史遗留问题
页:
[1]