热度 16
2012-7-31 22:37
3450 次阅读|
3 个评论
本文章用于学习研究之用,请勿用于商业用途。 JR(JAPAN REMOTE)是模型界一家知名企业,其生产的遥控器具有相当的市场占有率,DX4E是它的产品线中低端的一款产品,其内部是由模拟板和数字高频头两部分组成的。为了用自己的控玩一些仅支持JR遥控器的玩具(见本人其他博文),我对高频头和模拟板之间的通讯协议进行了分析,在这里做一个小小的分享,希望能帮到大家。 一、 总体来说 ,通讯协议的物理层,就是 常见的UART (串行通讯协议,具体我就不解释了),不过 波特率很特别,是12500bps ;通讯也是按数据包的方式发送的,数据包的频率是50Hz( 一秒钟50个数据包 ); 每个数据包的长度是14字节 。 二、数据包分为3种 ,一是普通数据包,二是对码数据包,三是遥控器识别数据包。其中,第三类数据包仅仅是针对MCPX这类模型而言的,不具有通用性,我也懒得说了。 三、数据包的格式 :数据包的14个字节,按2字节一组,分别是 导引头 +6个 通道值 (2*1+2*6=14) 四、“通道值”的格式:两个字节构成一个 16bit数值,高字节在前,高6位是通道号,低10位是通道的值 ; 通道号为0~5,通道值为0~1023 。比如下文举例的普通数据包的副翼通道0x05 0xff,就是0x05ff= 0000 01 01 1111 1111 ,拆分为1 和511,就是代表1通道为511(511为0~1023的中立点)。 五、在遵守上述规则的前提下,对码数据包如下,我猜想除了导引头,其他数据字节都是不重要的。 uchar McpBindData ={ 0x18,0x00,//普通数据包的导引头 0x00,0x8a, //油门:最低 0x05,0xff, //副翼:中点 0x09,0xff, //升降:中点 0x0d,0xff, //方向:中点 0x13,0x54, //3D开关:关 0x14,0xaa //油门锁:释放 (螺距) }; 七、对码时,先发送1秒钟左右的对码数据包,接着就发送普通数据包,直至接收机对码成功为止。 分享到此,如有错误还望海涵。