hagx 发表于 2012-1-14 11:03:57

大家做多机通讯一般是用hex还是ascii通讯

如果使用前后台系统,发完命令直接等回答处理,用hex和ASCII都没有问题.
现在用了uCOS,接收数据是在中断里进行,如果用hex就不好判断起始位,不知道大家有没有什么建议?

cc224 发表于 2012-1-14 13:33:38

我比较喜欢hex,因为数据量可以小一些,控制可以灵活一些
问题仅仅是调试时不够直观

hagx 发表于 2012-1-14 14:26:12

回复【1楼】cc224
我比较喜欢hex,因为数据量可以小一些,控制可以灵活一些
问题仅仅是调试时不够直观
-----------------------------------------------------------------------

hex的优点是显而易见的,但是对于一个使用中断接收的多命令格式的系统来说,如果数据帧中不能排除起始位标志的话,那么数据识别将是很麻烦的事情.

Excellence 发表于 2012-1-14 14:26:27

如果用hex就不好判断起始位??????????????


WHY?

hagx 发表于 2012-1-14 14:36:14

回复【3楼】Excellence 精益求精
如果用hex就不好判断起始位??????????????
why?
-----------------------------------------------------------------------

如果数据帧中也包含起始位就比较麻烦,有没有好方法?介绍下,先谢谢了!

appleboy 发表于 2012-1-14 14:56:06

数据占用低7位,甚至低4位

dragon_hn 发表于 2012-1-14 15:12:35

HEX跟ASCII有什么不同?
BIN跟ASCII有什么不同?

schwarz 发表于 2012-1-14 16:21:05

如果涉及跟pc通讯,我倾向于ascii。
如果是单片机之间通讯,我倾向于hex。
ascii可以用特殊字符确定帧头帧尾,比如用:表示一帧的开始,0xd、0xa表示结束。
hex通讯一般用时间来界定帧头帧尾,比如1ms无数据就表示新的一帧的开始,hex通讯的时候用ucos实在是太方便了,不知道楼主为什么会得到相反的结论。

huayuliang 发表于 2012-1-14 17:34:12

如果协议制定的好,hex一样方便。

但就像7楼说的,“如果涉及跟pc通讯,我倾向于ascii。如果是单片机之间通讯,我倾向于hex。”,俺也倾向于这种方式,但还要看具体需求。

OurWay 发表于 2012-1-14 22:58:26

看下有一个协议,MODBUS,有两种方式,起始帧和结束以时间开始

gongxd 发表于 2012-1-15 22:18:41

参照 以太网帧 这个是目前世界上经过大量考验的

inso 发表于 2012-3-2 11:54:44

回复【7楼】schwarz
如果涉及跟pc通讯,我倾向于ascii。
如果是单片机之间通讯,我倾向于hex。
ascii可以用特殊字符确定帧头帧尾,比如用:表示一帧的开始,0xd、0xa表示结束。
hex通讯一般用时间来界定帧头帧尾,比如1ms无数据就表示新的一帧的开始,hex通讯的时候用ucos实在是太方便了,不知道楼主为什么会得到相反的结论。
-----------------------------------------------------------------------

我赞同前两句话。后面两句话,主要是看通讯协议

xinfa190 发表于 2012-3-2 13:10:55

喜欢用ascii码,原因同上,判断帧头帧尾的问题;这个比较专业的叫法好像叫数据透明性的问题

orzorzorzorz 发表于 2012-3-10 15:55:57

ascii和hex有啥区别
ascii最终还是2进制!
只要有帧头帧尾,无论是神马协议,都一样搞定,都不用超时
当然用modbus这种超时协议也可以
看看以太网协议
超时协议是历史遗留问题
页: [1]
查看完整版本: 大家做多机通讯一般是用hex还是ascii通讯