打印

有关串口通讯的头疼问题

[复制链接]
1837|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xugang4876|  楼主 | 2008-10-6 10:19 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
大家好 现在在写一个单片机串口485通讯的程序,写到现在我有点蒙了 请了解的朋友帮我解释下好吗 /
问题就是通讯的数据到底是什么数据啊 16进制 还是BCD码呢 比如说要读取保存的 脉冲数 这个是 应该是个16进制数吧  直接把读到数发送就可以了吗 不需要其他处理吗   如 0x55 ,是发 0x55 还是 0x85(55的十进制85)? 

相关帖子

沙发
computer00| | 2008-10-6 10:25 | 只看该作者

随便你自己了,方便通信就行了,自己定一个协议。

如果速度要求高,那就只好直接发送数据。

如果速度要求不高,我更喜欢转换成字符串发送,这样可以方便的增加帧头和帧位等信息。

使用特权

评论回复
板凳
xugang4876|  楼主 | 2008-10-6 10:35 | 只看该作者

发送的数据是什么格式呢

现在也是字符串发送的 现在考虑的不是速度 是想知道发送的每一个字符 是什么格式  还是我发什么都可以啊 我是按645规约做的

使用特权

评论回复
地板
2shift| | 2008-10-6 10:53 | 只看该作者

什么格式都可以,但肯定的是发送的数据都是二进制

至于发送16进制数据和asc码,这个刚开始确实比较模糊。我更喜欢发送asc码,就像computer00说的那样,可以定义帧头和帧尾等信息,便于解码,而且
用asc发送数据,数据只能是十进制的48--57之间的数,帧头和帧尾定义成48--57之外的其他数据,解码很方便。采用16进制的发送方式,如果协议指定的不严格或者软件有漏洞,有可能出错,所以最好要加一个数据字节数的约定进去。

使用特权

评论回复
5
xugang4876|  楼主 | 2008-10-6 11:10 | 只看该作者

谢谢各位朋友

谢谢大家 虽然我还是很模糊   我在理解下 

使用特权

评论回复
6
chongying| | 2008-10-27 14:26 | 只看该作者

请教computer00或者2shift,

我现在用vb mscomm控件给单片机发送数据,数据格式
$ 命令 (数据)*
$ 起始字符
* 结束字符
数据:可有可无

通讯已经成功了,不过我现在是模糊阶段,就是数据格式的问题,我想让单片机解码比较容易,负担轻一点。比如说我发asc码,发送5和发送45就是不一样的,单片机收到还是需要解码的,5:0x35,  45:0x34 0x35,这种情况比较好的解决方案是什么呢?单片机可不可以不用解码程序呢,让计算机来做呢?非要解码的话运行怎么处理比较好呢?

使用特权

评论回复
7
computer00| | 2008-10-27 14:31 | 只看该作者

这个解码还不容易吗?

使用特权

评论回复
8
chongying| | 2008-10-27 14:43 | 只看该作者

传输一串数据

比如说4 45 56 43 等是不是定协议是要加上分隔符呢?那我的单片机中断嵌套又加深了一层

使用特权

评论回复
9
菜老大| | 2008-10-27 15:18 | 只看该作者

..

协议规定的,你发之前处理,或者接收方处理都可以的啦!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

18

主题

42

帖子

0

粉丝