红外编码数据打包成红外外码发送指令
  不管是红外内码学习,还是红外外码学习,返回之后的数据称之为<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>