高手们,这样的通讯协议有问题吗?

[复制链接]
3147|7
 楼主| 电子尘埃 发表于 2007-2-3 19:15 | 显示全部楼层 |阅读模式
A&nbsp;B机通讯协议<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;通讯线空闲时,A机处于接受准备状态,当B机处于通讯空闲状态时,向通讯线上发送空闲码0x55,读取返回的数据是否为0xaa,如否,则不断循环的发送、接收、区别直至接收到的为0xaa为止。<br />A机接收到空闲码0x55,立即将接收确认码0xaa发送至通讯线上(此时A机与B机已经同步上了),随后发送两个字节的CRC16码与三个字节的报警数据。<br />之后A机接收B机返回的无误准认码0xaa,如果接收到无误准认码不是0xaa,将不断循环重发上述数据串与验证从B机返回的无误准认码0xaa步骤,直至返回无误准认码为0xaa后,A机才进行新一轮数据处理。B机是根据CRC16码区别传输错误,如有错误,将返回误码0x5a(码值不重要只要不是0xaa既可)至通讯线让A机接收,以重新接收新一串CRC码与报警数据,如没有传输错误将生成无误准认码0xaa并返回至通讯线上,并进入新一轮数据处理。<br />
 楼主| 电子尘埃 发表于 2007-2-3 19:18 | 显示全部楼层

A与B机通讯均用软件模拟

  
 楼主| 电子尘埃 发表于 2007-2-3 19:42 | 显示全部楼层

能同步上吗?最想知道的问题

  
 楼主| 电子尘埃 发表于 2007-2-3 19:45 | 显示全部楼层

同步不上,还得加起始位

  
 楼主| 电子尘埃 发表于 2007-2-3 19:49 | 显示全部楼层

同步应该能同上,但同步时间会很随机,对吗?

应该是,哈哈哈...............<br />没人理我。
chunyang 发表于 2007-2-4 10:25 | 显示全部楼层

呵呵,周6的晚餐时间不要指望太多

能否同步,取决于A能否及时知道存在回复,故A每次发送完空闲指令后要立刻转入接收态,定时无正确接收才继续发送下一轮空闲码。
mohanwei 发表于 2007-2-4 14:19 | 显示全部楼层

太复杂了。应该让B机作为主机,A作为从机。

B机发送查询码,没有回应就继续发;<br />A机收到查询码,直接发数据和校验码就可以了。<br />B机对数据进行校验以取舍。<br />(正常的话通信到此结束了)<br /><br />如果B机发觉数据错误,重复上述过程。<br /><br />其实这种通信出现异常的概率是很小的。协议要尽量简单一点,像上面的简单协议里,一切都由B机掌控,这样异常的种类就只有几种了,很容易处理。
 楼主| 电子尘埃 发表于 2007-2-4 16:45 | 显示全部楼层

是噢,楼上两位一理,感觉就清楚了,

其实蛮简单的,最近不知道怎么回事,老是把简单的事想的非常复杂.谢谢两位.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

51

主题

442

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部