打印
[程序源码]

关于无线通讯协议,吐槽一下,NE5532大师请进。

[复制链接]
2295|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
罗菜鸟|  楼主 | 2013-7-25 10:35 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我发现很多人做无线通讯,都不在乎通讯协议的设计。或者说,通讯协议的移植性很差。
我上一家公司做过一个项目,无线通讯场合是在CNG加气站。但是同样的设备,拿到氧气瓶充装站,后台软件收到了乱码。
后来经过调查,是无线通讯协议的问题。当时一查,原来是设备没有地址编码。当时用的芯片是CC1100,如果不在程序里设置一个地址编码,任何数据都能收。而做通讯协议的那个小伙子是个还没毕业的家伙,他直接给我说,有地址编码编程很麻烦(哪里麻烦了?),所以取消掉了。
然后更奇葩的是,他的设计里居然也有应答机制。但是应答机制也很蛋疼。当时的项目是一个手持POS机向一个接收器发射数据包。那个小伙子做的是:手持机向接收器发送一包数据,然后再等待应答。这时候,如果接收器主动向手持机发送一包控制命令,那么手持机就会把这包命令给忽略掉。
但是后来就有好戏看了。当老板需要再加一台接收器的时候,他就辞职了,然后把项目交给另一个实习生。到现在,另一个实习生都没能解决这个问题。

一个好的无线通讯协议,是有很好的容错能力的,能适应复杂的通讯环境。首先信道复用是必须有的。对于数据收发来说,少收,多收,收错,都会导致致命的后果。比如你遥控一个电机转一圈,但是无线协议发了一包数据,电机接收到,转了一圈。但是电机返回的应答包,被干扰掉,然后遥控器又发一包重发,电机又转一圈……然后,就是几条人命没了。这样的事情在菜鸟身上层出不穷,甚至很多单片机老鸟(没做过无线通讯那种)。
很多没做过无线通讯的人,包括老鸟,都会把无线通讯当作有线通讯来做,那样是非常可怕的。应为无线通讯面对的环境随机因素远比有线复杂。

所以,一个很好的无线通讯协议是很有必要的,但是很多人都不重视。我一个朋友,他们基于433MHz的无线模块,距离很远。他们做测试,从成都的龙泉山到成都的三圣乡,都能点对点通讯。当然就是传一个LED闪烁指示。不过他们没有把精力用在无线协议上。我问他如果在三圣乡发一个“Hello World”,什么地方能收到,他就不敢保证了。

我用过的无线芯片,感觉最好的就是AT86RF212。主要是这款芯片的“自动化”程度非常高。硬件自动应答,硬件自动重发,硬件自动信道侦听。当然很多射频芯片都能实现这些功能,但是我见到很多做无线通讯的人,都不会去做这三项,

相关帖子

沙发
罗菜鸟|  楼主 | 2013-7-26 22:57 | 只看该作者
干嘛没有人回答?

使用特权

评论回复
板凳
aihe| | 2013-7-26 23:27 | 只看该作者
你说的不错,但是任何应用都是分环境的



再说了,你指定大神进来,别人不敢瞎参与
我就一小虾米瞎说而已

使用特权

评论回复
地板
NE5532| | 2013-7-27 08:30 | 只看该作者
召唤偶,偶就进来啦。没有任何一种无线技术是通吃的,不信自己列举。

使用特权

评论回复
5
fanxing789| | 2013-7-27 15:16 | 只看该作者
哈哈。属于高级应用啦。回复的就少吗。不错。对于其他野非常有参考价值

使用特权

评论回复
6
罗菜鸟|  楼主 | 2013-7-29 00:00 | 只看该作者
NE5532 发表于 2013-7-27 08:30
召唤偶,偶就进来啦。没有任何一种无线技术是通吃的,不信自己列举。

不是通吃不通吃的,而是很多人连无线通讯是什么都不知道。
就像当年西科大的战车争霸,大家都用同一个频段,然后就是功率放大,放大放大再放大,然后就把别人干扰掉……
高速公路上怎么开车最安全?开一辆二手的T-34坦克出来,想怎么开就怎么开。

使用特权

评论回复
7
NE5532| | 2013-7-29 09:14 | 只看该作者
罗菜鸟 发表于 2013-7-29 00:00
不是通吃不通吃的,而是很多人连无线通讯是什么都不知道。
就像当年西科大的战车争霸,大家都用同一个频 ...

呵呵,同一频段就不能存在多组通讯了?

使用特权

评论回复
8
罗菜鸟|  楼主 | 2013-7-29 14:48 | 只看该作者
NE5532 发表于 2013-7-29 09:14
呵呵,同一频段就不能存在多组通讯了?

人品决定问题,好比没有经过驾校训练的人,一说开车就会选择泥头车,悍马,甚至T-34,公路上乱碾压。
通讯协议就好比交通规则,你的数据怎么能够避开别人的数据,安全到达目的地。
但是很多没有无线设计概念的菜鸟,却不管这么多。总是喜欢把干扰别人作为乐趣。

使用特权

评论回复
9
liuyuqiong1| | 2014-7-10 16:39 | 只看该作者
想请教你这个AT86RF212的接受发送模块的软件是自己写吗?我最近在用,看了半天手册也不大明白怎么操作的,谢谢,急,想请问下怎么写,给个流程图或者源代码,谢谢

使用特权

评论回复
10
zhoujinming| | 2014-7-27 21:42 | 只看该作者
罗菜鸟 发表于 2013-7-26 22:57
干嘛没有人回答?

大神 我最近在弄CC1020  能指点下吗

使用特权

评论回复
11
coody| | 2014-7-28 10:24 | 只看该作者
我常用的方式:
4字节ID,1字节上行/下行标识,1字节功能描述,1字节长度,数据域,CRC16校验

使用特权

评论回复
12
ctsdswk| | 2014-7-30 12:04 | 只看该作者
同意楼主。无线通讯协议算是有点难度的,比有线的麻烦许多。特别是楼主所说433M。
也正因为难度,所以433M一直没有开源、通用、可移植的协议。

使用特权

评论回复
13
sdwys| | 2014-7-30 17:41 | 只看该作者
没做过无线通讯,很感兴趣,能否举例说明。

使用特权

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

本版积分规则

132

主题

522

帖子

8

粉丝