diff --git a/main.c b/main.c index 78c39ac..578b5b4 100644 --- a/main.c +++ b/main.c @@ -71,11 +71,36 @@ char *getDevRegisterStatusUrl="https://gaea-zt-express.com/device/modifyRegister //char *logUploadUrl="http://pda.pupumall.net:1180/open/api/device/log/upload"; char *getDevRawPasswordUrl="https://gaea.zt-express.com/device/modifyRegisterInfo"; char *hostDomain="tx-mqtt.zt-express.com"; -char lightsn1[9]={0}; -char lightsn2[9]={0}; -char lightsn3[9]={0}; -char lightsn4[9]={0}; -char lightsn5[9]={0}; +char lightsn1[32]={0}; +char lightsn2[32]={0}; +char lightsn3[32]={0}; +char lightsn4[32]={0}; +char lightsn5[32]={0}; +char lightsn6[32]={0}; +char lightsn7[32]={0}; +char lightsn8[32]={0}; +char lightsn9[32]={0}; +char lightsn10[32]={0}; +char lightsn11[32]={0}; +char lightsn12[32]={0}; +char lightsn13[32]={0}; +char lightsn14[32]={0}; +char lightsn15[32]={0}; +char lightsn16[32]={0}; +char lightsn17[32]={0}; +char lightsn18[32]={0}; +char lightsn19[32]={0}; +char lightsn20[32]={0}; +char lightsn21[32]={0}; +char lightsn22[32]={0}; +char lightsn23[32]={0}; +char lightsn24[32]={0}; +char lightsn25[32]={0}; +char lightsn26[32]={0}; +char lightsn27[32]={0}; +char lightsn28[32]={0}; +char lightsn29[32]={0}; +char lightsn30[32]={0}; int searchTimeOut=0; int searchTimeOld=0; int searchTimeNew=0; @@ -1293,6 +1318,31 @@ void *thread_uart_recv_ack(void *arg){ uint32_t tag3=strtol(lightsn3,NULL,16); uint32_t tag4=strtol(lightsn4,NULL,16); uint32_t tag5=strtol(lightsn5,NULL,16); + uint32_t tag6=strtol(lightsn6,NULL,16); + uint32_t tag7=strtol(lightsn7,NULL,16); + uint32_t tag8=strtol(lightsn8,NULL,16); + uint32_t tag9=strtol(lightsn9,NULL,16); + uint32_t tag10=strtol(lightsn10,NULL,16); + uint32_t tag11=strtol(lightsn11,NULL,16); + uint32_t tag12=strtol(lightsn12,NULL,16); + uint32_t tag13=strtol(lightsn13,NULL,16); + uint32_t tag14=strtol(lightsn14,NULL,16); + uint32_t tag15=strtol(lightsn15,NULL,16); + uint32_t tag16=strtol(lightsn16,NULL,16); + uint32_t tag17=strtol(lightsn17,NULL,16); + uint32_t tag18=strtol(lightsn18,NULL,16); + uint32_t tag19=strtol(lightsn19,NULL,16); + uint32_t tag20=strtol(lightsn20,NULL,16); + uint32_t tag21=strtol(lightsn21,NULL,16); + uint32_t tag22=strtol(lightsn22,NULL,16); + uint32_t tag23=strtol(lightsn23,NULL,16); + uint32_t tag24=strtol(lightsn24,NULL,16); + uint32_t tag25=strtol(lightsn25,NULL,16); + uint32_t tag26=strtol(lightsn26,NULL,16); + uint32_t tag27=strtol(lightsn27,NULL,16); + uint32_t tag28=strtol(lightsn28,NULL,16); + uint32_t tag29=strtol(lightsn29,NULL,16); + uint32_t tag30=strtol(lightsn30,NULL,16); uint8_t changecolor=0; //8灭 1红 2黄 3蓝 4绿 5青 6白 7紫 xitu //0灭 1蓝 2绿 3青 4红 5紫 6黄 7白 yitaile @@ -1319,7 +1369,15 @@ void *thread_uart_recv_ack(void *arg){ .s.sound=atoi(mqtt_parm.msg_sound), .s.flash=atoi(mqtt_parm.msg_flash), }; - uart_data_send_lighton(&uartSend,led_ctrl.ch,atoi(flash),atoi(light),tag1,tag2,tag3,tag4,tag5,lightsnNum); + //uart_data_send_head_lighton(&uartSend, 5, lightsnNum); + uart_data_send_lighton(&uartSend, led_ctrl.ch, atoi(flash), atoi(light), + tag1, tag2, tag3, tag4, tag5, + tag6, tag7, tag8, tag9, tag10, + tag11, tag12, tag13, tag14, tag15, + tag16, tag17, tag18, tag19, tag20, + tag21, tag22, tag23, tag24, tag25, + tag26, tag27, tag28, tag29, tag30, + lightsnNum); isLightOn=false; } #if 0 @@ -1786,20 +1844,95 @@ void *thread_mqtt_recv(void *arg){ get_string_from_json_string_by_key_unescape(msg_lightsn, "sn", mqtt_parm.msg_sn,sizeof(mqtt_parm.msg_sn)); LOG_I("sn:%s\n",mqtt_parm.msg_sn); if(i==0){ - memset(lightsn1,0,9); + memset(lightsn1,0,32); memcpy(lightsn1,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); }else if(i==1){ - memset(lightsn2,0,9); + memset(lightsn2,0,32); memcpy(lightsn2,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); }else if(i==2){ - memset(lightsn3,0,9); + memset(lightsn3,0,32); memcpy(lightsn3,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); }else if(i==3){ - memset(lightsn4,0,9); + memset(lightsn4,0,32); memcpy(lightsn4,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); }else if(i==4){ - memset(lightsn5,0,9); + memset(lightsn5,0,32); memcpy(lightsn5,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==5){ + memset(lightsn6,0,32); + memcpy(lightsn6,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==6){ + memset(lightsn7,0,32); + memcpy(lightsn7,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==7){ + memset(lightsn8,0,32); + memcpy(lightsn8,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==8){ + memset(lightsn9,0,32); + memcpy(lightsn9,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==9){ + memset(lightsn10,0,32); + memcpy(lightsn10,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==10){ + memset(lightsn11,0,32); + memcpy(lightsn11,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==11){ + memset(lightsn12,0,32); + memcpy(lightsn12,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==12){ + memset(lightsn13,0,32); + memcpy(lightsn13,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==13){ + memset(lightsn14,0,32); + memcpy(lightsn14,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==14){ + memset(lightsn15,0,32); + memcpy(lightsn15,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==15){ + memset(lightsn16,0,32); + memcpy(lightsn16,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==16){ + memset(lightsn17,0,32); + memcpy(lightsn17,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==17){ + memset(lightsn18,0,32); + memcpy(lightsn18,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==18){ + memset(lightsn19,0,32); + memcpy(lightsn19,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==19){ + memset(lightsn20,0,32); + memcpy(lightsn20,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==20){ + memset(lightsn21,0,32); + memcpy(lightsn21,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==21){ + memset(lightsn22,0,32); + memcpy(lightsn22,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==22){ + memset(lightsn23,0,32); + memcpy(lightsn23,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==23){ + memset(lightsn24,0,32); + memcpy(lightsn24,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==24){ + memset(lightsn25,0,32); + memcpy(lightsn25,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==25){ + memset(lightsn26,0,32); + memcpy(lightsn26,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==26){ + memset(lightsn27,0,32); + memcpy(lightsn27,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==27){ + memset(lightsn28,0,32); + memcpy(lightsn28,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==28){ + memset(lightsn29,0,32); + memcpy(lightsn29,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); + }else if(i==29){ + memset(lightsn30,0,32); + memcpy(lightsn30,mqtt_parm.msg_sn,strlen(mqtt_parm.msg_sn)); } } @@ -1927,6 +2060,31 @@ void *thread_mqtt_recv(void *arg){ memset(lightsn3, 0, sizeof(lightsn3)); memset(lightsn4, 0, sizeof(lightsn4)); memset(lightsn5, 0, sizeof(lightsn5)); + memset(lightsn6, 0, sizeof(lightsn6)); + memset(lightsn7, 0, sizeof(lightsn7)); + memset(lightsn8, 0, sizeof(lightsn8)); + memset(lightsn9, 0, sizeof(lightsn9)); + memset(lightsn10, 0, sizeof(lightsn10)); + memset(lightsn11, 0, sizeof(lightsn11)); + memset(lightsn12, 0, sizeof(lightsn12)); + memset(lightsn13, 0, sizeof(lightsn13)); + memset(lightsn14, 0, sizeof(lightsn14)); + memset(lightsn15, 0, sizeof(lightsn15)); + memset(lightsn16, 0, sizeof(lightsn16)); + memset(lightsn17, 0, sizeof(lightsn17)); + memset(lightsn18, 0, sizeof(lightsn18)); + memset(lightsn19, 0, sizeof(lightsn19)); + memset(lightsn20, 0, sizeof(lightsn20)); + memset(lightsn21, 0, sizeof(lightsn21)); + memset(lightsn22, 0, sizeof(lightsn22)); + memset(lightsn23, 0, sizeof(lightsn23)); + memset(lightsn24, 0, sizeof(lightsn24)); + memset(lightsn25, 0, sizeof(lightsn25)); + memset(lightsn26, 0, sizeof(lightsn26)); + memset(lightsn27, 0, sizeof(lightsn27)); + memset(lightsn28, 0, sizeof(lightsn28)); + memset(lightsn29, 0, sizeof(lightsn29)); + memset(lightsn30, 0, sizeof(lightsn30)); // 设置label1和label2不参与匹配 strcpy(mqtt_parm.msg_label1Rule, "04"); // ∅ 不参与匹配 diff --git a/uart_can/uart_can.c b/uart_can/uart_can.c index fa7cf54..8f9bae2 100644 --- a/uart_can/uart_can.c +++ b/uart_can/uart_can.c @@ -199,6 +199,56 @@ int uart_data_send_head_lighton(uart_utils_t *uart,uint8_t wakeup_time,uint16_t data_len=26; }else if(tag_num==5){ data_len=30; + }else if(tag_num==6){ + data_len=34; + }else if(tag_num==7){ + data_len=38; + }else if(tag_num==8){ + data_len=42; + }else if(tag_num==9){ + data_len=46; + }else if(tag_num==10){ + data_len=50; + }else if(tag_num==11){ + data_len=54; + }else if(tag_num==12){ + data_len=58; + }else if(tag_num==13){ + data_len=62; + }else if(tag_num==14){ + data_len=66; + }else if(tag_num==15){ + data_len=70; + }else if(tag_num==16){ + data_len=74; + }else if(tag_num==17){ + data_len=78; + }else if(tag_num==18){ + data_len=82; + }else if(tag_num==19){ + data_len=86; + }else if(tag_num==20){ + data_len=90; + }else if(tag_num==21){ + data_len=94; + }else if(tag_num==22){ + data_len=98; + }else if(tag_num==23){ + data_len=102; + }else if(tag_num==24){ + data_len=106; + }else if(tag_num==25){ + data_len=110; + }else if(tag_num==26){ + data_len=114; + }else if(tag_num==27){ + data_len=118; + }else if(tag_num==28){ + data_len=122; + }else if(tag_num==29){ + data_len=126; + }else if(tag_num==30){ + data_len=130; } jt_head_package_t jt_head_package ={ .pre=0x2323,//# 0x23 $ 0x24 @@ -705,7 +755,13 @@ error: } int uart_data_send_lighton(uart_utils_t *uart,uint8_t ledctl,uint16_t flash_i,uint16_t light_d, - uint32_t tag_1,uint32_t tag_2,uint32_t tag_3,uint32_t tag_4,uint32_t tag_5,uint32_t tag_num){ + uint32_t tag_1,uint32_t tag_2,uint32_t tag_3,uint32_t tag_4,uint32_t tag_5, + uint32_t tag_6,uint32_t tag_7,uint32_t tag_8,uint32_t tag_9,uint32_t tag_10, + uint32_t tag_11,uint32_t tag_12,uint32_t tag_13,uint32_t tag_14,uint32_t tag_15, + uint32_t tag_16,uint32_t tag_17,uint32_t tag_18,uint32_t tag_19,uint32_t tag_20, + uint32_t tag_21,uint32_t tag_22,uint32_t tag_23,uint32_t tag_24,uint32_t tag_25, + uint32_t tag_26,uint32_t tag_27,uint32_t tag_28,uint32_t tag_29,uint32_t tag_30, + uint32_t tag_num){ int ret = 0; if (uart == NULL){ LOG_I("uart NULL pointer\n"); @@ -715,212 +771,67 @@ int uart_data_send_lighton(uart_utils_t *uart,uint8_t ledctl,uint16_t flash_i,ui uint8_t flash_i_h=(flash_i>>8)&0xFF; uint8_t flash_i_l=(flash_i)&0xFF; - uint8_t light_d_h=(light_d>>8)&0xFF; uint8_t light_d_l=(light_d)&0xFF; - uint8_t tag_1_1=(tag_1>>24)&0xFF; - uint8_t tag_1_2=(tag_1>>16)&0xFF; - uint8_t tag_1_3=(tag_1>>8)&0xFF; - uint8_t tag_1_4=(tag_1)&0xFF; + // 计算数据包长度:基础长度(8) + tag数量 * 4 + CRC(2) + uint8_t data_len = 8 + tag_num * 4 + 2; + uint8_t *buf = (uint8_t *)malloc(data_len); + if (buf == NULL) { + LOG_I("malloc failed\n"); + ret = -3; + goto error; + } + memset(buf, 0, data_len); - uint8_t tag_2_1=(tag_2>>24)&0xFF; - uint8_t tag_2_2=(tag_2>>16)&0xFF; - uint8_t tag_2_3=(tag_2>>8)&0xFF; - uint8_t tag_2_4=(tag_2)&0xFF; + // 填充基础数据 + buf[0] = 0x00; buf[1] = 0x00; // len1 + buf[2] = data_len - 2; // len2 (修改:减去2而不是3,因为len2不包含CRC) + buf[3] = ledctl; // ledCtr + buf[4] = flash_i_h; // flashInterval + buf[5] = flash_i_l; + buf[6] = light_d_h; // lightDuration + buf[7] = light_d_l; - uint8_t tag_3_1=(tag_3>>24)&0xFF; - uint8_t tag_3_2=(tag_3>>16)&0xFF; - uint8_t tag_3_3=(tag_3>>8)&0xFF; - uint8_t tag_3_4=(tag_3)&0xFF; + // 填充tag数据 + uint32_t tags[30] = {tag_1, tag_2, tag_3, tag_4, tag_5, tag_6, tag_7, tag_8, tag_9, tag_10, + tag_11, tag_12, tag_13, tag_14, tag_15, tag_16, tag_17, tag_18, tag_19, tag_20, + tag_21, tag_22, tag_23, tag_24, tag_25, tag_26, tag_27, tag_28, tag_29, tag_30}; + + for (int i = 0; i < tag_num; ++i) { + buf[8 + i * 4] = (tags[i] >> 24) & 0xFF; + buf[9 + i * 4] = (tags[i] >> 16) & 0xFF; + buf[10 + i * 4] = (tags[i] >> 8) & 0xFF; + buf[11 + i * 4] = tags[i] & 0xFF; + } - uint8_t tag_4_1=(tag_4>>24)&0xFF; - uint8_t tag_4_2=(tag_4>>16)&0xFF; - uint8_t tag_4_3=(tag_4>>8)&0xFF; - uint8_t tag_4_4=(tag_4)&0xFF; + // 计算CRC + uint16_t crc_c = CRC16_XMODEM(buf, data_len - 2); + buf[data_len - 2] = (crc_c >> 8) & 0xFF; + buf[data_len - 1] = crc_c & 0xFF; - uint8_t tag_5_1=(tag_5>>24)&0xFF; - uint8_t tag_5_2=(tag_5>>16)&0xFF; - uint8_t tag_5_3=(tag_5>>8)&0xFF; - uint8_t tag_5_4=(tag_5)&0xFF; -#if 0 - LOG_I("ledctl = %02x\r\n",ledctl); - LOG_I("flash_i_h = %02x\r\n",flash_i_h); - LOG_I("flash_i_l = %02x\r\n",flash_i_l); - LOG_I("light_d_h = %02x\r\n",light_d_h); - LOG_I("light_d_l = %02x\r\n",light_d_l); - LOG_I("tag_1_1 = %02x\r\n",tag_1_1); - LOG_I("tag_1_2 = %02x\r\n",tag_1_2); - LOG_I("tag_1_3 = %02x\r\n",tag_1_3); - LOG_I("tag_1_4 = %02x\r\n",tag_1_4); - LOG_I("tag_2_1 = %02x\r\n",tag_2_1); - LOG_I("tag_2_2 = %02x\r\n",tag_2_2); - LOG_I("tag_2_3 = %02x\r\n",tag_2_3); - LOG_I("tag_2_4 = %02x\r\n",tag_2_4); - LOG_I("tag_3_1 = %02x\r\n",tag_3_1); - LOG_I("tag_3_2 = %02x\r\n",tag_3_2); - LOG_I("tag_3_3 = %02x\r\n",tag_3_3); - LOG_I("tag_3_4 = %02x\r\n",tag_3_4); - LOG_I("tag_4_1 = %02x\r\n",tag_4_1); - LOG_I("tag_4_2 = %02x\r\n",tag_4_2); - LOG_I("tag_4_3 = %02x\r\n",tag_4_3); - LOG_I("tag_4_4 = %02x\r\n",tag_4_4); - LOG_I("tag_5_1 = %02x\r\n",tag_5_1); - LOG_I("tag_5_2 = %02x\r\n",tag_5_2); - LOG_I("tag_5_3 = %02x\r\n",tag_5_3); - LOG_I("tag_5_4 = %02x\r\n",tag_5_4); -#endif - if(tag_num==1){ - uint8_t test1[12] = {0x00,0x00,11,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<12;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_light_led1_package_t jt_light_led1_package ={ - .len1=0x0000, - .len2=11, - .ledCtr=ledctl, - .flashInterval=ntohs(flash_i), - .lightDuration=ntohs(light_d), - .tag1=ntohl(tag_1), - .crc=ntohs(crc_c), - }; - if(sizeof(jt_light_led1_package) == write(uart->uart_fd, &jt_light_led1_package, sizeof(jt_light_led1_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } - }else if(tag_num==2){ - uint8_t test1[16] = {0x00,0x00,15,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<16;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_light_led2_package_t jt_light_led2_package ={ - .len1=0x0000, - .len2=15, - .ledCtr=ledctl, - .flashInterval=ntohs(flash_i), - .lightDuration=ntohs(light_d), - .tag1=ntohl(tag_1), - .tag2=ntohl(tag_2), - .crc=ntohs(crc_c), - }; - - LOG_I("%04x,%02x,%02x,%04x,%04x,%08x,%08x,%04x\r\n",jt_light_led2_package.len1,jt_light_led2_package.len2, - jt_light_led2_package.ledCtr,jt_light_led2_package.flashInterval,jt_light_led2_package.lightDuration, - jt_light_led2_package.tag1,jt_light_led2_package.tag2,jt_light_led2_package.crc); - if(sizeof(jt_light_led2_package) == write(uart->uart_fd, &jt_light_led2_package, sizeof(jt_light_led2_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } - }else if(tag_num==3){ - uint8_t test1[20] = {0x00,0x00,19,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4,tag_3_1,tag_3_2,tag_3_3,tag_3_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<20;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_light_led3_package_t jt_light_led3_package ={ - .len1=0x0000, - .len2=19, - .ledCtr=ledctl, - .flashInterval=ntohs(flash_i), - .lightDuration=ntohs(light_d), - .tag1=ntohl(tag_1), - .tag2=ntohl(tag_2), - .tag3=ntohl(tag_3), - .crc=ntohs(crc_c), - }; - if(sizeof(jt_light_led3_package) == write(uart->uart_fd, &jt_light_led3_package, sizeof(jt_light_led3_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } - }else if(tag_num==4){ - uint8_t test1[24] = {0x00,0x00,23,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4,tag_3_1,tag_3_2,tag_3_3,tag_3_4, - tag_4_1,tag_4_2,tag_4_3,tag_4_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<24;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_light_led4_package_t jt_light_led4_package ={ - .len1=0x0000, - .len2=23, - .ledCtr=ledctl, - .flashInterval=ntohs(flash_i), - .lightDuration=ntohs(light_d), - .tag1=ntohl(tag_1), - .tag2=ntohl(tag_2), - .tag3=ntohl(tag_3), - .tag4=ntohl(tag_4), - .crc=ntohs(crc_c), - }; - if(sizeof(jt_light_led4_package) == write(uart->uart_fd, &jt_light_led4_package, sizeof(jt_light_led4_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } - }else if(tag_num==5){ - uint8_t test1[28] = {0x00,0x00,27,ledctl,flash_i_h,flash_i_l,light_d_h,light_d_l, - tag_1_1,tag_1_2,tag_1_3,tag_1_4,tag_2_1,tag_2_2,tag_2_3,tag_2_4,tag_3_1,tag_3_2,tag_3_3,tag_3_4, - tag_4_1,tag_4_2,tag_4_3,tag_4_4,tag_5_1,tag_5_2,tag_5_3,tag_5_4}; - uint16_t crc_c=CRC16_XMODEM(test1,sizeof(test1)); - for(int i=0;i<28;i++){ - printf("%02x ",test1[i]); - } - LOG_I("\r\n"); - LOG_I("%s XModem_CRC16 = %04x\r\n",__func__,crc_c); - jt_light_led5_package_t jt_light_led5_package ={ - .len1=0x0000, - .len2=27, - .ledCtr=ledctl, - .flashInterval=ntohs(flash_i), - .lightDuration=ntohs(light_d), - .tag1=ntohl(tag_1), - .tag2=ntohl(tag_2), - .tag3=ntohl(tag_3), - .tag4=ntohl(tag_4), - .tag5=ntohl(tag_5), - .crc=ntohs(crc_c), - }; - if(sizeof(jt_light_led5_package) == write(uart->uart_fd, &jt_light_led5_package, sizeof(jt_light_led5_package))){ - ret = 0; - //LOG_I("%s success\n",__func__); - }else{ - //LOG_I("%s fail\n", __func__); - ret = -2; - goto error; - } + // 打印调试信息 + for (int i = 0; i < data_len; i++) { + printf("%02x ", buf[i]); + } + DEBUG_TX("\r\n"); + DEBUG_TX("%s XModem_CRC16 = %04x\r\n", __func__, crc_c); + + // 发送数据 + if (data_len == write(uart->uart_fd, buf, data_len)) { + ret = 0; + } else { + ret = -4; + } + free(buf); + + DEBUG_TX("lightsnNum = %d\n", tag_num); + for(int i=0;i