下面的示例代码基于51单片机,用于快速二次开发实现基于串口字符串通信控制程序(比如要实现电脑控制单片机的开灯和关灯),示例很言简意赅,并附上了详尽的注释,
本示例代码经过了更新,新版本代码更加友好了,
尊重作者的劳动,转载请记得注明来源:http://www.cnblogs.com/weifeng727/p/5617924.html
1 #include<reg52.h>
2 3//------------------串口通信的数据包协议-----------------//
4/* 5 此程序的串口字符串通信使用到下面的一个自定义协议,每次通信都是发送或接收一个数据包,数据包格式解释如下(长度恒为15):
6 例如:A01_fmq_01Off___#
7 A--------数据包的开始标记(可以为A到Z,意味着数据包可以有26种)
8 01-----设备代号
9 fmq_01Off___--------指令(长度恒为10),指令的前4个人字符是指令头部,指令的后6个字符是指令尾部
10 #---------数据包的结束标记
11 12 例如:A02_SenT010250#
13 A--------数据包的开始标记(可以为A到Z,意味着数据包可以有26种)
14 02-----设备代号
15 SenT010250--------指令(长度恒为10),指令的前4个人字符是指令头部,指令的后6个字符是指令尾部
16 #---------数据包的结束标记
17*/ 18char RecvString_buf[16]; //定义数据包长度为15个字符 19#define deviceID_1Bit '0' //用于串口通信时,定义本地设备ID的第1位 20#define deviceID_2Bit '2' //用于串口通信时,定义本地设备ID的第2位 21#define datapackage_headflag 'A' //用于串口通信时,定义数据包头部的验证标记 22 23char DataPackage_DS18B20[16]={datapackage_headflag,deviceID_1Bit,deviceID_2Bit,'_','S','e','n','T','X','X','X','X','X','X','#'}; //这个是曾经用来控制温度传感模块(DS18B20)的数据包 24char HeartBeat[16]={datapackage_headflag,deviceID_1Bit,deviceID_2Bit,'_','B','e','a','t','X','X','X','X','X','X','#'}; //我随便定义了一个数据包用来做"心跳包",比如单片机系统向电脑每2秒发送一次该数据包,如果电脑没有按时接收到,就认为单片机死掉了
25//----------------------------------------------//
26/**********