简单的串口通信协议的实现
已有 2568 次阅读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,协议的实现大体就是这样
有空再来说说 如何在程序中去实现这种协议