根据手册,通过串口发送指令包,进行功能实现。通过应答包进行交互。

代码

// 在AutoIdentify中使用
uint8_t AutoIdentify(void)
{
	
    Serial2_Printf("AutoIdentify Start\r\n");
    
    ZW101_SendPacket(AutoIdentify_Code, 17);
    uint8_t flag=0;
    uint32_t timeout = 0;
    uint8_t result = 0; //0 初始 1 成功 2 错误
    
    while(timeout < 3000)
    {
        if(Serial_GetRxFlag())
        {
            DebugPrintPacket(Serial_RxPacket, 17);  // 使用调试函数
            uint8_t byte9 = Serial_RxPacket[9];
          	uint8_t byte10 = Serial_RxPacket[10];
            if(byte9 == 0x00 && byte10 == 0x00 && flag==0)
            {
								flag=1;
								Serial2_Printf("Key Bytes - 9:%02X 10:%02X\r\n", byte9, byte10);
                Serial2_Printf("Status Packet1\r\n");
            }
            else if(byte9 == 0x00 && byte10 == 0x01 && flag==1)
            {
								flag=2;
								Serial2_Printf("Key Bytes - 9:%02X 10:%02X\r\n", byte9, byte10);
                Serial2_Printf("Status Packet2\r\n");
            }
						 else if(byte9 == 0x00 && byte10 == 0x05 && flag==2)
            {
								Serial2_Printf("Key Bytes - 9:%02X 10:%02X\r\n", byte9, byte10);
                Serial2_Printf("Status Packet3\r\n");
								result = 1; 
								break;
            }
						else if(byte9 == 0x09 && byte10 == 0x05  && flag==2)
						{
								Serial2_Printf("Kedy Bytes - 9:%02X 10:%02X\r\n", byte9, byte10);
                Serial2_Printf("Status Packet3\r\n");
								result = 2;
								break;
						}
						else
						{
							//flag = 0;
							Serial2_Printf("Unexpected Packet for flag=%d\r\n", flag);
							result = 2;
							break;
						}
        }
        timeout++;
        Delay_ms(1);
    }
		if(timeout >= 3000)
    {
        Serial2_Printf("AutoIdentify Timeout\r\n");
        result =2;  // 超时错误码
    }
    GPIO_ResetBits(GPIOB, GPIO_Pin_3);	
    return result;
}

Logo

智能硬件社区聚焦AI智能硬件技术生态,汇聚嵌入式AI、物联网硬件开发者,打造交流分享平台,同步全国赛事资讯、开展 OPC 核心人才招募,助力技术落地与开发者成长。

更多推荐