版主大大,快帮忙看看。。
void CmdSendMcuP0(uint8_t *buf){
uint8_t tmp_cmd_buf;
if(buf == NULL) return ;
memcpy(&m_w2m_controlMcu, buf, sizeof(w2m_controlMcu));
m_w2m_controlMcu.status_w.motor_speed = exchangeBytes(m_w2m_controlMcu.status_w.motor_speed);
//上报状态
if(m_w2m_controlMcu.sub_cmd == SUB_CMD_REQUIRE_STATUS) ReportStatus(REQUEST_STATUS);
//控制命令,操作字段顺序依次是: R_on/off, multi Color, R, G, B, motor
if(m_w2m_controlMcu.sub_cmd == SUB_CMD_CONTROL_MCU){
//先回复确认,表示收到合法的控制命令了?
SendCommonCmd(CMD_SEND_MCU_P0_ACK, m_w2m_controlMcu.head_part.sn);
//控制命令标志按照协议表明哪个操作字段有效(对应的位为1)want to control LED R
if((m_w2m_controlMcu.cmd_tag & 0x01) == 0x01)
{
//0 bit, 1: R on, 0: R off;
if((m_w2m_controlMcu.status_w.cmd_byte & 0x01) == 0x01)
{
LED_RGB_Control(254, 0, 0);
m_m2w_mcuStatus.status_w.cmd_byte = (m_m2w_mcuStatus.status_w.cmd_byte | 0x01);
}
else
{
LED_RGB_Control(0, 0, 0);
m_m2w_mcuStatus.status_w.cmd_byte = (m_m2w_mcuStatus.status_w.cmd_byte & 0xFE);
}
}
这是gokit一代宠物屋中的一段代码,如上代码中if((m_w2m_controlMcu.status_w.cmd_byte & 0x01) == 0x01)
m_m2w_mcuStatus.status_w.cmd_byte = (m_m2w_mcuStatus.status_w.cmd_byte | 0x01);
这些是什么意思啊,能不能帮忙解释一下
这是协议里面的一个判断。建议对于协议可以不用死抠。会用就行,因为就算要写协议不是看懂别人写得协议就能写了很好的协议了(还有看懂别人的协议比自己写一套协议花的时间还长得多得多)。只要会写基础的协议慢慢的练习,牛逼的协议你就会写了{:3_48:} never 发表于 2016-3-17 13:17
这是协议里面的一个判断。建议对于协议可以不用死抠。会用就行,因为就算要写协议不是看懂别人写得协议就能 ...
不是,,我要添加一个继电器进去,然后后面每个字段就变了,不是要更改么,感觉这样好麻烦,后面的版本是不是不用这样了? 协议应该是不用改的,只需要你改定义的那个数组。和解析数据包。我当时时间不够就没怎么管,直接定义成数值型。你可以把它定义成数值型的,这样简单一点。也好弄一点
页:
[1]