|
|
|
@ -5,6 +5,7 @@ char subTopic[512]="/sys/hp8oQhMZJ67/Device1/thing/service/property/set";//
|
|
|
|
|
|
|
|
|
|
|
|
#define MQTT_SOCK 5
|
|
|
|
#define MQTT_SOCK 5
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
u8 RS485_RX_BUF_COPY[128]={0};
|
|
|
|
u8 cnt_flag=0,sub_flag=0,pub_flag=0;
|
|
|
|
u8 cnt_flag=0,sub_flag=0,pub_flag=0;
|
|
|
|
u16 time=0;//记录ping服务器的时间
|
|
|
|
u16 time=0;//记录ping服务器的时间
|
|
|
|
char wet_temp[256];//订阅与发布消息的缓存区
|
|
|
|
char wet_temp[256];//订阅与发布消息的缓存区
|
|
|
|
@ -154,33 +155,36 @@ void Sensor_Communication_task(void *pvParameters)
|
|
|
|
// pingMqtt(MQTT_SOCK);
|
|
|
|
// pingMqtt(MQTT_SOCK);
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
now_stage=timelong_Compare();//
|
|
|
|
now_stage=timelong_Compare();//
|
|
|
|
printf("%d %d\r\n",chour,cminute);
|
|
|
|
//printf("%d %d\r\n",chour,cminute);
|
|
|
|
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
|
|
|
|
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
|
|
|
|
printf("current stage: %d\r\n",now_stage);
|
|
|
|
printf("current stage: %d\r\n",now_stage);
|
|
|
|
RS485_1_Send_Data_1(rs485buf,8);//(RS485_RX_CNT=0已被注释)
|
|
|
|
RS485_1_Send_Data_1(rs485buf,8);//(RS485_RX_CNT=0已被注释)
|
|
|
|
printf("send finish\r\n");
|
|
|
|
//printf("send finish\r\n");
|
|
|
|
delay_xms(500);
|
|
|
|
delay_xms(500);
|
|
|
|
RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
RS485_1_Send_Data_3();
|
|
|
|
RS485_1_Send_Data_3();
|
|
|
|
delay_xms(500);
|
|
|
|
delay_xms(500);
|
|
|
|
RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
while(!(isAllZeros(RS485_RX_BUF,128)))
|
|
|
|
bufcut_Init(RS485_RX_BUF_COPY,RS485_RX_BUF,0,128);
|
|
|
|
|
|
|
|
RS485_RX_CNT=0;
|
|
|
|
|
|
|
|
while((isAllZeros(RS485_RX_BUF_COPY,128)==0))
|
|
|
|
|
|
|
|
//while(!(RS485_RX_BUF[0]==0x00 && RS485_RX_BUF[1]==0x00&&RS485_RX_BUF[2]==0x00 && RS485_RX_BUF[3]==0x00))
|
|
|
|
{
|
|
|
|
{
|
|
|
|
printf("enter while\r\n");
|
|
|
|
//printf("enter while\r\n");
|
|
|
|
|
|
|
|
|
|
|
|
if(RS485_RX_BUF[0]==0x01 && RS485_RX_BUF[1]==0x03) // 判断是否校验成功
|
|
|
|
if(RS485_RX_BUF_COPY[0]==0x01 && RS485_RX_BUF_COPY[1]==0x03) // 判断是否校验成功
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
T = RS485_RX_BUF[3];
|
|
|
|
T = RS485_RX_BUF_COPY[3];
|
|
|
|
T = T<<8|RS485_RX_BUF[4];
|
|
|
|
T = T<<8|RS485_RX_BUF_COPY[4];
|
|
|
|
|
|
|
|
|
|
|
|
H = RS485_RX_BUF[5];
|
|
|
|
H = RS485_RX_BUF_COPY[5];
|
|
|
|
H = H<<8|RS485_RX_BUF[6];
|
|
|
|
H = H<<8|RS485_RX_BUF_COPY[6];
|
|
|
|
|
|
|
|
|
|
|
|
C= RS485_RX_BUF[19];
|
|
|
|
C= RS485_RX_BUF_COPY[19];
|
|
|
|
C = C<<8|RS485_RX_BUF[20];
|
|
|
|
C = C<<8|RS485_RX_BUF_COPY[20];
|
|
|
|
|
|
|
|
|
|
|
|
printf("now_tem=%d.%d℃,now_hum=%d.%d%% ,co2=%d\r\n",T/10,T%10,H/10,H%10,C);
|
|
|
|
//printf("now_tem=%d.%d℃,now_hum=%d.%d%% ,co2=%d\r\n",T/10,T%10,H/10,H%10,C);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/*GPIO1->报警铃 GPIO2->压缩机 GPIO3->四通阀 GPIO4—>新风风扇 GPIO5->加湿器 */
|
|
|
|
/*GPIO1->报警铃 GPIO2->压缩机 GPIO3->四通阀 GPIO4—>新风风扇 GPIO5->加湿器 */
|
|
|
|
@ -247,90 +251,90 @@ void Sensor_Communication_task(void *pvParameters)
|
|
|
|
// GPIO_ResetBits(GPIOD,GPIO_Pin_1);//关闭风扇
|
|
|
|
// GPIO_ResetBits(GPIOD,GPIO_Pin_1);//关闭风扇
|
|
|
|
humidity_flag=0;
|
|
|
|
humidity_flag=0;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
printf("!!!");
|
|
|
|
//printf("!!!");
|
|
|
|
RS485_1_Send_Data_2(); //上传参数
|
|
|
|
RS485_1_Send_Data_2(); //上传参数
|
|
|
|
RX_BUF_ZERO(23);
|
|
|
|
RX_BUF_ZERO(23);
|
|
|
|
//printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
RX_BUF_Transfer(0,23);
|
|
|
|
RX_BUF_Transfer(0,23);
|
|
|
|
//printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
// printf("\r\n");
|
|
|
|
// printf("\r\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB6&&RS485_RX_BUF[2]==0x03)//单个同步
|
|
|
|
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB6&&RS485_RX_BUF_COPY[2]==0x03)//单个同步
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Analysis(&n,&i,RS485_RX_BUF);
|
|
|
|
Analysis(&n,&i,RS485_RX_BUF_COPY);
|
|
|
|
printf("B6 03 cmd: batch sync\r\n");
|
|
|
|
//printf("B6 03 cmd: batch sync\r\n");
|
|
|
|
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
|
|
|
|
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
|
|
|
|
Write_Init();
|
|
|
|
Write_Init();
|
|
|
|
RX_BUF_ZERO(11);
|
|
|
|
RX_BUF_ZERO(11);
|
|
|
|
printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
RX_BUF_Transfer(0,11);
|
|
|
|
RX_BUF_Transfer(0,11);
|
|
|
|
printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB6&&RS485_RX_BUF[2]==0x04)//切换阶段
|
|
|
|
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB6&&RS485_RX_BUF_COPY[2]==0x04)//切换阶段
|
|
|
|
{
|
|
|
|
{
|
|
|
|
change_stage_rev1=RS485_RX_BUF[3];
|
|
|
|
change_stage_rev1=RS485_RX_BUF_COPY[3];
|
|
|
|
printf("B6 04 cmd: change stage\r\n");
|
|
|
|
//printf("B6 04 cmd: change stage\r\n");
|
|
|
|
RTC_synchronization_ins(2023,9,1,0,00,00);
|
|
|
|
RTC_synchronization_ins(2023,9,1,0,00,00);
|
|
|
|
now_stage=change_stage_rev1;
|
|
|
|
now_stage=change_stage_rev1;
|
|
|
|
store_stage=change_stage_rev1;
|
|
|
|
store_stage=change_stage_rev1;
|
|
|
|
Write_Init();
|
|
|
|
Write_Init();
|
|
|
|
RX_BUF_ZERO(8);
|
|
|
|
RX_BUF_ZERO(8);
|
|
|
|
printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
RX_BUF_Transfer(0,8);
|
|
|
|
RX_BUF_Transfer(0,8);
|
|
|
|
printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB6&&RS485_RX_BUF[2]==0x01)//批量同步
|
|
|
|
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB6&&RS485_RX_BUF_COPY[2]==0x01)//批量同步
|
|
|
|
{
|
|
|
|
{
|
|
|
|
Batch_synchronization(&n,RS485_RX_BUF);
|
|
|
|
Batch_synchronization(&n,RS485_RX_BUF_COPY);
|
|
|
|
printf("B6 01 cmd: get one %d\r\n", n);
|
|
|
|
//printf("B6 01 cmd: get one %d\r\n", n);
|
|
|
|
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
|
|
|
|
Array(&now_stage,&hour,&min,&tem,&hum,&red,&blue,&white);//更新对应阶段号的参数
|
|
|
|
//Write_Init();减少擦写的次数
|
|
|
|
//Write_Init();减少擦写的次数
|
|
|
|
RX_BUF_ZERO(20);
|
|
|
|
RX_BUF_ZERO(20);
|
|
|
|
printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
RX_BUF_Transfer(0,20);
|
|
|
|
RX_BUF_Transfer(0,20);
|
|
|
|
printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB1&&RS485_RX_BUF[2]==0x11&&RS485_RX_BUF[15]==0xFF&&RS485_RX_BUF[16]==0xFF)//单个同步默认带的数据
|
|
|
|
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1&&RS485_RX_BUF_COPY[2]==0x11&&RS485_RX_BUF_COPY[15]==0xFF&&RS485_RX_BUF[16]==0xFF)//单个同步默认带的数据
|
|
|
|
{
|
|
|
|
{
|
|
|
|
RX_BUF_ZERO(17);
|
|
|
|
RX_BUF_ZERO(17);
|
|
|
|
printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
printf("cut overdata of B6 03 \r\n");
|
|
|
|
//printf("cut overdata of B6 03 \r\n");
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
RX_BUF_Transfer(0,17);
|
|
|
|
RX_BUF_Transfer(0,17);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB1&&RS485_RX_BUF[2]==0x11&&RS485_RX_BUF[14]==0xFF&&RS485_RX_BUF[15]==0xFF)//单个同步默认带的数据
|
|
|
|
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1&&RS485_RX_BUF_COPY[2]==0x11&&RS485_RX_BUF_COPY[14]==0xFF&&RS485_RX_BUF[15]==0xFF)//单个同步默认带的数据
|
|
|
|
{
|
|
|
|
{
|
|
|
|
RX_BUF_ZERO(16);
|
|
|
|
RX_BUF_ZERO(16);
|
|
|
|
printf("cut overdata of B6 03 \r\n");
|
|
|
|
//printf("cut overdata of B6 03 \r\n");
|
|
|
|
printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
RX_BUF_Transfer(0,16);
|
|
|
|
RX_BUF_Transfer(0,16);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB1&&RS485_RX_BUF[2]==0x11&&RS485_RX_BUF[12]==0xFF&&RS485_RX_BUF[13]==0xFF)//阶段切换默认带的数据
|
|
|
|
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1&&RS485_RX_BUF_COPY[2]==0x11&&RS485_RX_BUF_COPY[12]==0xFF&&RS485_RX_BUF_COPY[13]==0xFF)//阶段切换默认带的数据
|
|
|
|
{
|
|
|
|
{
|
|
|
|
RX_BUF_ZERO(14);
|
|
|
|
RX_BUF_ZERO(14);
|
|
|
|
printf("cut overdata of B6 04 \r\n");
|
|
|
|
//printf("cut overdata of B6 04 \r\n");
|
|
|
|
printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
RX_BUF_Transfer(0,14);
|
|
|
|
RX_BUF_Transfer(0,14);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
else if(RS485_RX_BUF[0]==0xEE&&RS485_RX_BUF[1]==0xB1&&RS485_RX_BUF[2]==0x01&&RS485_RX_BUF[7]==0xFF&&RS485_RX_BUF[8]==0xFF)//上位机默认带的数据
|
|
|
|
else if(RS485_RX_BUF_COPY[0]==0xEE&&RS485_RX_BUF_COPY[1]==0xB1&&RS485_RX_BUF_COPY[2]==0x01&&RS485_RX_BUF_COPY[7]==0xFF&&RS485_RX_BUF_COPY[8]==0xFF)//上位机默认带的数据
|
|
|
|
{
|
|
|
|
{
|
|
|
|
RX_BUF_ZERO(9);
|
|
|
|
RX_BUF_ZERO(9);
|
|
|
|
printf("cut overdata of Upper computer \r\n");
|
|
|
|
//printf("cut overdata of Upper computer \r\n");
|
|
|
|
printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
RX_BUF_Transfer(0,9);
|
|
|
|
RX_BUF_Transfer(0,9);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
@ -339,16 +343,16 @@ void Sensor_Communication_task(void *pvParameters)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
printf("previous array cut\r\n");
|
|
|
|
printf("previous array cut\r\n");
|
|
|
|
RX_BUF_Transfer(0,1);
|
|
|
|
RX_BUF_Transfer(0,1);
|
|
|
|
printf(" \r\n");
|
|
|
|
//printf(" \r\n");
|
|
|
|
printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
//RX_BUF_Printf(128);
|
|
|
|
printf("\r\n");
|
|
|
|
//printf("\r\n");
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
printf("%d %d %d\r\n",T,H,C);
|
|
|
|
//printf("%d %d %d\r\n",T,H,C);
|
|
|
|
printf("current params: %d:%d,hot or cold flag:%d, humidity flag:%d, alarm: %d\r\n",chour, cminute, hot_clod_flag, humidity_flag, ALARM);
|
|
|
|
//printf("current params: %d:%d,hot or cold flag:%d, humidity flag:%d, alarm: %d\r\n",chour, cminute, hot_clod_flag, humidity_flag, ALARM);
|
|
|
|
printf("led!!!\r\n");
|
|
|
|
//printf("led!!!\r\n");
|
|
|
|
if(red<=1000&&blue<=1000)
|
|
|
|
if(red<=1000&&blue<=1000)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
@ -359,7 +363,7 @@ void Sensor_Communication_task(void *pvParameters)
|
|
|
|
//printf("bule=%d\r\n",blue);
|
|
|
|
//printf("bule=%d\r\n",blue);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
RS485_RX_CNT=0;
|
|
|
|
RS485_RX_CNT=0;
|
|
|
|
printf("end data to serial monitor end");
|
|
|
|
//printf("end data to serial monitor end");
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|