zusen的小軒,电子的天空,技术的楼阁 https://bbs.21ic.com/?178488 [收藏] [复制] [RSS] 电子是我从小的爱好,嵌入式是我的方向,朋友们,谈谈我们的理想吧~~

日志

简单的串口通信协议的实现

已有 2522 次阅读2007-12-14 21:53 |个人分类:8位单片机|系统分类:单片机

关于协议,如果产品支持级联控制,那么协议是少不了的,说说协议吧

协议可以用国际商业常用的,比如 TCP/IP 、IIS,等等

但自己也可以开发一个小型、适合自身产品的简单协议

比如: AB 20 ID 18 02 XX XX BA
说明一下吧
第一个字节: AB 是协议开始字节,作为开始标记

第二个字节: 20 命令一,告诉从机要操作那个功能模块

第三个字节: ID 设备ID或设备设置通道,就是从机的身份证,只有ID和自己的ID相同,才会根据命令操作,否则掉弃

第四个字节:18 命令二,功能模块要操作的功能,比如,这个18 代表 要控制外设的开关,如果是 20 ,就是向串口返馈数据

第五个字节: 02 数据长度,表示后面跟着有多少个 数据

第六第七字节: XX XX 数据,根据数据作操作,比如结合 第四个字节 18,数据是  01 01 的话,那么 就是 第一通道 开(第一个01 表示第一通道 ,第二个01 表示状态 为开 00表示为关)。

第八字节:BA 校验和、结速字节,如果是BA 那么不去检验校验和,只是标示命令结速,其如是其他,那么这个字节作为校验,前面所有 字节相加 ,然后保留前8位,再加上 这个 校验字节,如果是 FF ,那么就是说,这命令接收到是正确的,如果不是FF,就是说明 这命发送途中可能受到干扰,这时 可向主机后馈一个 数据接收错误的信息,让主机重发。

OK,协议的实现大体就是这样

有空再来说说 如何在程序中去实现这种协议

路过

鸡蛋

鲜花

握手

雷人

发表评论 评论 (1 个评论)

dddfasdfas 2009-2-23 13:26
这只是串口通信的数据格式这一部分协议吧,通信协议有好多内容,这只是其中一个,是通过软件实现的。还有比如数据传输速率,差错控制等部分由硬件实现的,对于编程用户是透明的