红外编码数据打包成红外外码发送指令

&emsp;&emsp;不管是红外内码学习,还是红外外码学习,返回之后的数据称之为<span style="color:red">红外编码数据</span>,是一串16进制数据流,可以通过以下代码,打包成外码发送协议,用单片机串口发送给红外学习模块。 ```java //红外学习模块学码返回的数据,拷贝之后每个字节前面需要加0x uint8_t arr[] = {0x12, 0x34, 0x56, 0x78}; //求校验和 uint8_t GetSum(uint8_t *data, uint16_t len) { uint8_t sum = 0; uint16_t i; for (i = 0; i < len; i++) { sum += data[i]; } return sum; } //外码发送数据 uint16_t ExterStudyPack(uint8_t *buf, uint8_t *data, uint16_t dataLen) { uint8_t cs = 0, *p = buf; uint16_t i, len = 7 + dataLen; *p++ = 0x68; *p++ = (uint8_t)len; *p++ = (uint8_t)(len >> 8); *p++ = 0xff; *p++ = 0x22; for (i = 0; i < dataLen ;i++) { *p++ = data[i]; } cs += GetSum(&buf[3], p - buf - 3); *p++ = cs; *p++ = 0x16; return p - buf; } int main(void) { uint8_t buf[128]; uint16_t bufLen = Pack(buf, arr, sizeof(arr) / sizeof(uint8_t)); //用单片机串口串口把buf(长度为bufLen)发送出去 while (1) { } } ``` 打包之后的数据为:<span style="color:blue">68 0b 00 ff 22 12 34 56 78 35 16</span>