在学习了TLV协议之后,所写的代码
#包含 “ tlv_pack.h ”
#包括 < stdio.h中>
#包括 < string.h中>
#包括 “ temp_client_main.h ”
#定义 HEAD 0xFD //定义一个报文头
#限定 TLV_FIXED_SIZE 5 //固定TLV字节流大小,不包含值的值
#限定 TLV_MINI_SIZE (TLV_FIXED_SIZE + 1) // TLV字节流的最小值,值的最小值为12
#定义 BUFSIZE 256
枚举 //使用枚举标签的值会自加
{
TAG_SN = 0x01,//树莓派上的ID
TAG_TEMP = 0x02,//温度
TAG_TIME = 0x03,//时间
};
/ *树莓派的编号ID = RPI0001报文
* * HTL值CRC1 CRC2
* * 0xFD 0x01 0x01 0x07 0x12 0x34
* /
int pack_sn(char * buf,int size)//声明 id封装函数
{
无符号 短 crc16 = 0 ;
char * id = “ RPI0001 ”;
int ofset = 0 ;
int pack_len = 0 ;
int data_len = 0 ;
如果(!buf ||大小<TLV_MINI_SIZE)
{
printf(“无效的输入参数\ n ”);
返回 0 ;
}
buf [ofset