BC7215 红外波形转换API V3.0

本API提供红外波形数据的转换功能,用户可以通过HTTP POST方法向特地服务地址上传红外波形数据,服务会将这些数据转换为可供BC7215芯片直接使用格式信息和发射指令,将返回的结果直接串口发送给BC7215芯片,即可使BC7215复制出与原波形相同的红外信号。

API V3.0支持批量转换,支持一些BC7215/BC7215A芯片无法直接解码的红外遥控器调制格式的转换(此类格式发射须使用BC7215A芯片)。

服务地址

https://conv.bitcode.com.cn/17215

数据格式

输入数据格式

输入的数据格式与Google的ConsumerIR的数据格式兼容,在ConsumerIrManager类的transmit()方法中,

transmit(int carrierFrequency, int[] pattern);

其中pattern部分,即是需要输入到本服务的数据。

为便于不熟悉ConsumerIR协议的用户理解,下面详细解释如下:

假如,波形前两个完整脉冲为低电平-9000us,高电平-4500us,低电平-560us,高电平-1680us,

Wave form

则输入数据前4个数据应为9000,4500,560,1680, 对应十六进制表示为 0x00002328, 0x00001194, 0x00000230, 0x00000690, 最终字节排列顺序为:

0x28 0x23 0x00 0x00 0x94 0x11 0x00 0x00 0x30 0x02 0x00 0x00 0x90 0x06 0x00 0x00

V2.0版本允许批量转换,即允许多个红外波形数据一次发送,数据块之间,用-1 (0xFFFFFFFF)间隔。批量转换的数据,必须是同一编码格式的数据(通常即同一遥控器的数据),如果不同数据块间的编码格式不同,转换结果将无法预知。

对于输入数据,长度要求在 8 字节 - 256K 字节之间,如果长度超过这个范围,服务将返回 400 代码,“非法数据长度”错误。

输出数据格式

“其余字节”前35个字节为BC7215“加载格式信息”指令,以0xF6 0x01开头;后面紧接着是“红外发射”指令,以0xF5 0x02开头,红外发射指令长度依据红外波形数据不同而有长短变化。

除第一个字节外,所有数据均已经过字节填充编码处理(字节填充编码可能造成数据长度增加,如加载格式信息指令部分长度可能>35字节,详情参见BC7215数据手册),所以收到结果后可不经其它处理直接发送给BC7215芯片。如果使用批量转换,不可将间隔符0x7A发送至BC7215,因为0x7A是复位指令,将导致红外发射被终止而失败。

发送给BC7215时,如果数据长度(F5 02 后面部分)超过16字节,主机侧必须根据BC7215的BUSY信号做流控制,否则会因BC7215内部缓存溢出造成发射错误。

产生的格式数据默认设置为使用“37.5kHz载波”,如果需要其他载波设置,请自行参考BC7215数据手册对格式信息部分数据进行设置。

转换测试

这里提供一个在线的转换测试,默认的输入数据是一个标准的NEC码遥控器的输出波形,用户也可自行输入需要转换的波形做测试。

如果要将转换输出用于BC7215的演示程序(Android版和Windows版), 必须经反字节填充编码处理,因为演示程序接受的是原始数据,使用已经字节填充编码的数据,将会造成数据被重复编码。

输入数据

转换结果