爱好者_小邱 发表于 2016-3-17 11:55:42

版主大大,快帮忙看看。。

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);



这些是什么意思啊,能不能帮忙解释一下

never 发表于 2016-3-17 13:17:28

这是协议里面的一个判断。建议对于协议可以不用死抠。会用就行,因为就算要写协议不是看懂别人写得协议就能写了很好的协议了(还有看懂别人的协议比自己写一套协议花的时间还长得多得多)。只要会写基础的协议慢慢的练习,牛逼的协议你就会写了{:3_48:}

爱好者_小邱 发表于 2016-3-17 15:45:11

never 发表于 2016-3-17 13:17
这是协议里面的一个判断。建议对于协议可以不用死抠。会用就行,因为就算要写协议不是看懂别人写得协议就能 ...

不是,,我要添加一个继电器进去,然后后面每个字段就变了,不是要更改么,感觉这样好麻烦,后面的版本是不是不用这样了?

never 发表于 2016-3-18 10:05:21

协议应该是不用改的,只需要你改定义的那个数组。和解析数据包。我当时时间不够就没怎么管,直接定义成数值型。你可以把它定义成数值型的,这样简单一点。也好弄一点
页: [1]
查看完整版本: 版主大大,快帮忙看看。。