MC 通信协议@2015/06/02

来源:互联网 发布:淘宝全屏导航不固定 编辑:程序博客网 时间:2024/06/09 18:39

// JSon通信协议


// 0X55 0X16   0X01   0X04   0X00   0X00   0X00   0X11   0XAA
// 0X55 0X0106 0X0001 0X0005 0X0000 0X0000 0X0000 0X0101 0XAA




struct  MSG
{   //0x55
unsigned char schksum;; // 校验 (除了本身外累加和)
unsigned char id; // 项目号
unsigned char len;// payload 的长度
unsigned char payload[1]; // 有效数据包
//0xAA
};


static u8_t WriteComStr(u8_t *msg,u8_t len)
{
u8_t i;
WriteCom(0x55);
for (i = 0;i<len;i++)
{
WriteCom((msg[i]>>4)); // 先发送高位
WriteCom((msg[i]&0x0f));
}
WriteCom(0xaa);
}
void Serial() interrupt 4 using 2
{
if (RI)
{
RI = 0;
recv_delay = 10;


if (IsPacketReceived())return;
if (IS_PACKET_HEAD())
{
if (SBUF>0x0F)
{
if (SBUF == 0xAA)
{//                3
if ((rx_len<HEADLEN)||(rx_len < HEADLEN + rx_buffer[2]))
{
CLR_PACKET_HEAD();    //
}
else
{
SET_PACKET_READY();  //
}
}
}
else
{
if (IS_DCD_MSB())
{
rx_buffer[rx_len] |= (SBUF);//低4位
rx_len++;
CLR_DCD_MSB();
}
else
{//先接高位
rx_buffer[rx_len] = (SBUF<<4);//高4位
SET_DCD_MSB();
}
}
}
else if (SBUF == 0x55)
{
SET_PACKET_HEAD();
CLR_DCD_MSB();
}


}
}

0 0