协议的编写 (sprintf的用法)
有时候编写协议的时候,需要进行一定格式的数据返回.
比如把十进制数据按返回十六进制放到指令中, 4096对应的十六进制就是0x10 0x00.
即4096变换成十六进制0x1000,然后拆分成两个字节:0x10和0x00.

上面这种情况就可以用sprintf函数.
怎么把一个速度(4096),转换成十六进制的 0x10 ,0x00 进行返回呢?
步骤1:
int rate=4096;
然后进行移位:
unsigned int part1=0;
unsigned int part2=0;
part1=((unsigned int)rate)<<8;
part2=((unsigned int)rate);
然后调用sprintf进行数据格式的转换,并填充到缓存中.
char DataBuf[50]={0};
sprintf(DataBuf,"$DATA,%2x,%2x*",
(uint32_t)part1,
(uint32_t)part2
);
这样rate就会被分成两部分,放入到DataBuf[]中了,并且是十六进制的.

如果想要在里面添加东西.比如包尾校验.
DataCheckSum = DataCheck(DataBuf);
sprintf(BufOut,"%s%02X\r\n",DataBuf,DataCheckSum);
这样就可以把数据保存到BufOut[]中了.