feat:可修改服务器域名与端口;温控器增加单控设定自动模式、单控设定自动风速;全局设置驱动增加退出睡眠模式,跳过执行起夜动作,直接进入起夜模式方法。

1、全局设置驱动修改点
     -> BLV_Nor_Dev_GlobalSet_Init 修改为 BLV_Nor_Dev_GlobalSet_For_Logic_Init
     -> 增加方法 - 退出睡眠模式,跳过执行起夜动作,直接进入起夜模式 (前提是当前处于睡眠模式)
2、将PB20设备驱动相关的代码通过宏定义 C8_TYPE 选择编译的功能进行完善了
3、温控器设备配置模型上增加方法
     -> 温度相对加、温度相对减、风速相对加、风速相对减
4、温控器设备驱动与设备配置模型上新增方法
     -> 增加单控设定自动模式(代码上没使用,配置上存在)、单控设定自动风速
     -> 增加自动风速下,挡位是否包含风速停(可设定包含、或不包含)
5、温控器配置模型中私有属性上,增加自动风速下,挡位是否包含风速停(可设定包含、或不包含)
6、增加可通过网络通讯 - 设置映射寄存器,可设定服务器的域名与端口 - 初步测试OK
This commit is contained in:
caocong
2026-03-27 10:30:56 +08:00
parent 9a24bb0256
commit 5f2f16a918
37 changed files with 46565 additions and 9423 deletions

View File

@@ -93,7 +93,8 @@ void BLW_RS485_AirDetect_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t
BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = Dev_AirDetect_Read;
/*<2A><>ʼ<EFBFBD><CABC>AirDetect<63><74><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼֵ*/
Rs485AirDetect.AirDetectInputValidNum = AirDetectValidMax;
Rs485AirDetect.DevOffline = Rs485AirDetect.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485AirDetect.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485AirDetect.DevOffline = Rs485AirDetect.DevOfflineLast;
Add_POLL_Device_To_List2(&BUS_Public,(uint8_t *)&Rs485AirDetect,sizeof(RS485_AirDetect_INFO));
Poll485_Info.device_num += 1;
}

View File

@@ -125,11 +125,13 @@ void BLV_RS485_Card_Data_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t
BUS_Public.type = dev_info->type; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
BUS_Public.port = dev_info->port; //<2F><EFBFBD><E8B1B8><EFBFBD>Ͷ˿<CDB6>
BUS_Public.baud = 9600; //<2F><EFBFBD><E8B1B8><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>
BUS_Public.retry_num = 0x03; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
BUS_Public.wait_time = 0x0064; //<2F><EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> - 100ms
BUS_Public.Protocol = dev_info->version;
Rs485CardInfo.DevOffline = Rs485CardInfo.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD>߳<EFBFBD>ʼ<EFBFBD><CABC>
BUS_Public.retry_num = dev_info->retry; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
BUS_Public.wait_time = dev_info->writ_time; //<2F><EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> - 100ms
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD>Ӳ忨ȡ<EFBFBD><EFBFBD>_111:%d,%d",dev_info->retry,dev_info->writ_time);
BUS_Public.Protocol = dev_info->version;
Rs485CardInfo.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD>߳<EFBFBD>ʼ<EFBFBD><CABC>
Rs485CardInfo.DevOffline = Rs485CardInfo.DevOfflineLast;
BUS_Public.DevFunInfo.Dev_Input_Type_Get = Dev_Rs485_Card_InType_Get;
// Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"<22><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>˿ڲ忨ȡ<E5BFA8><C8A1>_111:%d",Rs485CardInfo.DevPort);

View File

@@ -104,7 +104,8 @@ void BLW_RS485_Curtain_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *d
}
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"485<EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ʒ<EFBFBD><C6B7><EFBFBD>ʹ<EFBFBD><CAB9>:%d",Rs485CurtainInfo.reverse_enable);
Rs485CurtainInfo.DevOffline = Rs485CurtainInfo.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485CurtainInfo.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485CurtainInfo.DevOffline = Rs485CurtainInfo.DevOfflineLast;
switch(BUS_Public.Protocol) //Э<><D0AD><EFBFBD>
{
case ENUM_RS485_DEV_PRO_01: if(NULL!=RS485_DEV_PRO_FUN_01) RS485_DEV_PRO_FUN_01(&BUS_Public, &Rs485CurtainInfo);break;

View File

@@ -20,7 +20,7 @@ void BLV_RS485_EnrgyMonitor_Data_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,
BUS_Public.wait_time = dev_info->writ_time; //<2F><EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1> - 100ms
BUS_Public.Protocol = dev_info->version;
Rs485EnergyInfo.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD>߳<EFBFBD>ʼ<EFBFBD><CABC>
Rs485EnergyInfo.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD>߳<EFBFBD>ʼ<EFBFBD><CABC>
Rs485EnergyInfo.DevOffline = Rs485EnergyInfo.DevOfflineLast;
BUS_Public.polling_cf = (uint32_t)&BLV_RS485_Energy_Cycle_Dis; //<2F><>Ӧ<EFBFBD>Ķ˿<C4B6><CBBF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>

View File

@@ -129,7 +129,8 @@ void BLW_RS485_FloorHeatFun_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *
BUS_Public.DevFunInfo.Dev_Output_Ctrl = CLED_Set_FloorHeat_Func; //<2F><>ů<EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
}
FloorHeat_Info.DevOffline = FloorHeat_Info.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
FloorHeat_Info.DevOfflineLast = DEV_IS_ONLINE; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
FloorHeat_Info.DevOffline = FloorHeat_Info.DevOfflineLast;
switch(BUS_Public.Protocol) //Э<><D0AD><EFBFBD>ж<EFBFBD>
{
case ENUM_RS485_DEV_PRO_01: if(NULL!=RS485_DEV_PRO_FUN_01) RS485_DEV_PRO_FUN_01(&BUS_Public, &FloorHeat_Info);break;

View File

@@ -143,8 +143,8 @@ void RS485_IrSend_Data_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *d
BUS_Public.DevFunInfo.Dev_Output_Ctrl = Ir_Control_State;
/*<2A><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ת<EFBFBD><D7AA><EFBFBD><EFBFBD>ʼֵ*/
RS485IRInfo.DevOfflineLast = DEV_IS_LINEUNINIT;
RS485IRInfo.DevOffline = DEV_IS_LINEUNINIT;
RS485IRInfo.DevOfflineLast = DEV_IS_ONLINE;
RS485IRInfo.DevOffline = DEV_IS_ONLINE;
switch(BUS_Public.Protocol)
{

View File

@@ -205,7 +205,8 @@ void BLW_RS485_LED_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,
// {
// Rs485LED.LEDLoopValidNum = dev_info->output_num;
// }
Rs485LED.DevOffline = Rs485LED.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485LED.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485LED.DevOffline = Rs485LED.DevOfflineLast;
switch(BUS_Public.Protocol) //Э<><D0AD><EFBFBD>
{
case ENUM_RS485_DEV_PRO_01: if(NULL!=RS485_DEV_PRO_FUN_01) RS485_DEV_PRO_FUN_01(&BUS_Public, &Rs485LED, dev_info->output_num);break; //

View File

@@ -156,7 +156,8 @@ void BLW_RS485_Music_Data_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *da
BUS_Public.DevFunInfo.Dev_Output_Ctrl = BLW_Music_Control_State;
#endif
BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = BLW_Music_Read_State;
Rs485Music.DevOffline = Rs485Music.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485Music.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485Music.DevOffline = Rs485Music.DevOfflineLast;
/*<2A><>ʼ<EFBFBD><CABC>Music<69><63><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD>ʼֵ*/
if(dev_info->output_num >= MUSICLOOPMAX) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>·<EFBFBD><C2B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Χ
{

View File

@@ -142,7 +142,8 @@ void BLW_RS485_Rotary_Switch_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint
Rs485RotaryInfo.SwtInputValidNum = dev_info->input_num;
Rs485RotaryInfo.SwtOutputValidNum = dev_info->output_num;
Rs485RotaryInfo.DevOffline = Rs485RotaryInfo.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485RotaryInfo.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485RotaryInfo.DevOffline = Rs485RotaryInfo.DevOfflineLast;
switch(BUS_Public.Protocol)

View File

@@ -90,7 +90,7 @@ void BLW_RS485_Switch_Init(uint16_t DataLen, uint8_t *Data)
if(Data[10] >= Key_BUFF_Size) Rs485SwiInfo.SwtOutputValidNum = Key_BUFF_Size;//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else Rs485SwiInfo.SwtOutputValidNum = Data[10];
Rs485SwiInfo.DevOffline = Rs485SwiInfo.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485SwiInfo.DevOffline = Rs485SwiInfo.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
switch(Rs485SwiInfo.SwtInputValidNum)
{
case 0x06: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ6
@@ -150,11 +150,11 @@ void BLW_RS485_Switch_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *da
BUS_Public.addr = dev_info->addr; //<2F><EFBFBD><E8B1B8>ַ
BUS_Public.type = dev_info->type; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
BUS_Public.baud = dev_info->baud; //<2F><EFBFBD><E8B1B8><EFBFBD>Ͳ<EFBFBD><CDB2><EFBFBD><EFBFBD><EFBFBD>
BUS_Public.retry_num = 0x00; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
BUS_Public.wait_time = 100; //<2F><EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
BUS_Public.retry_num = dev_info->retry; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD><EFBFBD>ط<EFBFBD><D8B7><EFBFBD><EFBFBD><EFBFBD>
BUS_Public.wait_time = dev_info->writ_time; //<2F><EFBFBD><E8B1B8><EFBFBD>ݷ<EFBFBD><DDB7>͵ȴ<CDB5><C8B4>ظ<EFBFBD>ʱ<EFBFBD><CAB1>
// BUS_Public.polling_cf = (uint32_t)&BLW_Touch_SwitchCycleDis;
// BUS_Public.processing_cf = (uint32_t)&BLW_Rs485_Touch_Swi_Check;
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"<EFBFBD><EFBFBD><EFBFBD>ӿ<EFBFBD><EFBFBD><EFBFBD>_111:%d,%d",dev_info->retry,dev_info->writ_time);
BUS_Public.Protocol = dev_info->version;
BUS_Public.DevFunInfo.Dev_Input_Type_Get = Dev_Swi_InType_Get;
@@ -166,7 +166,8 @@ void BLW_RS485_Switch_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *da
if(dev_info->output_num >= Key_BUFF_Size) Rs485SwiInfo.SwtOutputValidNum = Key_BUFF_Size;//<2F><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
else Rs485SwiInfo.SwtOutputValidNum = dev_info->output_num;
Rs485SwiInfo.DevOffline = Rs485SwiInfo.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485SwiInfo.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485SwiInfo.DevOffline = Rs485SwiInfo.DevOfflineLast;
switch(Rs485SwiInfo.SwtInputValidNum)
{
case 0x06: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϊ6

View File

@@ -83,7 +83,7 @@ void BLW_RS485_TempFun_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *d
Rs485TempT1.TemState.on_off = 1;
Rs485TempT1.TemState.set_t = 25;
Rs485TempT1.TemState.indoor_t = 26;
Rs485TempT1.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485TempT1.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485TempT1.DevOffline = Rs485TempT1.DevOfflineLast;
// switch(BUS_Public.addr)
@@ -125,13 +125,20 @@ void BLW_RS485_TempFun_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *d
Rs485TempT1.switch_en_flag = 0x00;
}
//<2F>Ƿ<EFBFBD><C7B7><EFBFBD>ֹͣ<CDA3><D6B9>λ
if(dev_info->priproperty[2] == 0x01){
Rs485TempT1.FanStop_Flag = 0x00; //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ٲ<EFBFBD><D9B2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ
}else{
Rs485TempT1.FanStop_Flag = 0x01; //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ٰ<EFBFBD><D9B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ͣ,<2C><><EFBFBD><EFBFBD><EFBFBD>ϰ汾<CFB0><E6B1BE><EFBFBD><EFBFBD>
}
//<2F>ж<EFBFBD><D0B6><EFBFBD>ʾ<EFBFBD><CABE><EFBFBD>Ƿ<EFBFBD>ʹ<EFBFBD><CAB9>
if( ((Rs485TempT1.fan_en_flag == 0x01) && (PlayList.EnFlag == 0x00)) || ((Rs485TempT1.switch_en_flag == 0x01) && (PlayList.EnFlag == 0x00)) )
{
PlayList.EnFlag = 0x01;
}
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ValveNoExist init: %02X, %02X - %02x",Rs485TempT1.ValveNoExist,Rs485TempT1.switch_en_flag,Rs485TempT1.fan_en_flag);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"ValveNoExist init: %02X, %02X - %02x - %02x",Rs485TempT1.ValveNoExist,Rs485TempT1.fan_en_flag,Rs485TempT1.switch_en_flag,Rs485TempT1.FanStop_Flag);
switch(dev_info->port)
{
@@ -634,6 +641,7 @@ void Dev_TEMPCTRL_Ctrl(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t Cfg
break;
case TEM_DecFan: //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
if(0x00 == SingleCtrlFlag) break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
switch(Rs485Tem.TemState.fan)
{
case TEMP_HIGH:Rs485TemLoc.fan = TEMP_MID;break;
@@ -641,12 +649,28 @@ void Dev_TEMPCTRL_Ctrl(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t Cfg
}
break;
case TEM_AddFan: //<2F>ӷ<EFBFBD><D3B7><EFBFBD>
if(0x00 == SingleCtrlFlag) break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
switch(Rs485Tem.TemState.fan)
{
case TEMP_MID:Rs485TemLoc.fan = TEMP_HIGH;break;
case TEMP_LOW:Rs485TemLoc.fan = TEMP_MID;break;
}
break;
case SET_TEMP_FANAUTO: //<2F><><EFBFBD>÷<EFBFBD><C3B7><EFBFBD><EFBFBD>Զ<EFBFBD>
if(0x00 == SingleCtrlFlag) break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Rs485TemLoc.fan = TEMP_FANAUTO;
break;
case SET_TEMP_MODEAUTO: //<2F><><EFBFBD><EFBFBD>ģʽ<C4A3>Զ<EFBFBD>(<28><><EFBFBD><EFBFBD>)
if(0x00 == SingleCtrlFlag) break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
break;
case SET_FANAUTO1: //<2F><><EFBFBD>÷<EFBFBD><C3B7>ٺ<EFBFBD>ֹͣ<CDA3><D6B9>
if(0x00 == SingleCtrlFlag) break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Rs485Tem.FanStop_Flag = 0x01;
break;
case SET_FANAUTO2: //<2F><><EFBFBD>÷<EFBFBD><C3B7>ٲ<EFBFBD><D9B2><EFBFBD>ֹͣ<CDA3><D6B9>
if(0x00 == SingleCtrlFlag) break; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
Rs485Tem.FanStop_Flag = 0x00;
break;
case 0x20: //Ψ<><CEA8>32<33><32> <20>Ÿ<EFBFBD>ֵΪ0
// if(0x00 == SingleCtrlFlag) //ȫ<><C8AB>
{
@@ -656,7 +680,9 @@ void Dev_TEMPCTRL_Ctrl(uint32_t CfgDevAddIn, uint16_t DevInputAddr, uint32_t Cfg
case 0x00: //<2F><><EFBFBD><EFBFBD>ֵ <20><><EFBFBD><EFBFBD>ԭ<EFBFBD><D4AD><EFBFBD><EFBFBD>
break;
default:
Rs485TemLoc.set_t = TempSet; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD>ȫ<EFBFBD><C8AB>ֵ <20><>ֵ0, 16~31
if(TempSet >= 16 && TempSet < 32){
Rs485TemLoc.set_t = TempSet; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><C2B6><EFBFBD>ȫ<EFBFBD><C8AB>ֵ <20><>ֵ 16~31
}
break;
}
@@ -1200,7 +1226,13 @@ void Temp_FanAuto_Set(RS485_TEMP_BASIC *Rs485TemRecBuf, RS485_TEMP_INFO *Rs485Te
{
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit," ֹͣ<CDA3><D6B9><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD><EFBFBD><EFBFBD>λ");
Rs485Tem->TemCondRec.FanFlag = 0x01; //<2F><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>
Rs485Tem->TemCondRec.FanState = 0x00; //<2F><><EFBFBD><EFBFBD>ֹͣ
if( (Rs485Tem->FanStop_Flag == 0x01) || (Rs485Tem->ValveNoExist == 0x01) ){ //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD>
Rs485Tem->TemCondRec.FanState = 0x00; //<2F><><EFBFBD><EFBFBD>ֹͣ
}else{
Rs485Tem->TemCondRec.FanState = TEMP_LOW; //<2F>ͷ<EFBFBD><CDB7><EFBFBD>
}
last_auto_fan = Rs485Tem->TemCondRec.FanState;
//printf("Rs485Tem->TemCondRec.FanState<74><65>%d last_auto_fan<61><6E>%d\r\n",Rs485Tem->TemCondRec.FanState,last_auto_fan);
}
@@ -1240,7 +1272,11 @@ void Temp_FanAuto_Set(RS485_TEMP_BASIC *Rs485TemRecBuf, RS485_TEMP_INFO *Rs485Te
if(set_temp <= (indoor_temp - 3))
{
Rs485Tem->TemCondRec.FanFlag = 0x01; //<2F><><EFBFBD>ٶ<EFBFBD><D9B6><EFBFBD>
Rs485Tem->TemCondRec.FanState = 0x00; //<2F><><EFBFBD><EFBFBD>ֹͣ
if( (Rs485Tem->FanStop_Flag == 0x01) || (Rs485Tem->ValveNoExist == 0x01) ){ //<2F>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>޷<EFBFBD>
Rs485Tem->TemCondRec.FanState = 0x00; //<2F><><EFBFBD><EFBFBD>ֹͣ
}else{
Rs485Tem->TemCondRec.FanState = TEMP_LOW; //<2F>ͷ<EFBFBD><CDB7><EFBFBD>
}
last_auto_fan = Rs485Tem->TemCondRec.FanState;
//printf("Rs485Tem->TemCondRec.FanState<74><65>%d last_auto_fan<61><6E>%d\r\n",Rs485Tem->TemCondRec.FanState,last_auto_fan);
}
@@ -1474,12 +1510,21 @@ void Temp_Action_Set(RS485_TEMP_BASIC *Rs485TemRecBuf, RS485_TEMP_INFO *Rs485Tem
}else {
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD><EFBFBD>һ<EFBFBD><EFBFBD> <20>յ<EFBFBD><D5B5><EFBFBD>ʾ<EFBFBD><CABE> <20><><EFBFBD><EFBFBD>Ӧ");
}
}else if((TEMP_STATE_ON == Rs485TemRecBuf->TemState.on_off)&&(TEMP_FANAUTO == Rs485TemRecBuf->TemState.fan)){
Temp_FanAuto_Set(Rs485TemRecBuf, Rs485Tem);//ת<><D7AA><EFBFBD>ɵ<EFBFBD><C9B5>и<EFBFBD>ͣ<EFBFBD>Ķ<EFBFBD><C4B6><EFBFBD> 2026-03-26
}
}
if((Rs485Tem->FanAutoRelay != Rs485TemRecBuf->FanAutoRelay)||(Rs485Tem->TemState.set_t != Rs485TemRecBuf->TemState.set_t)
||(Rs485Tem->TemState.indoor_t != Rs485TemRecBuf->TemState.indoor_t)) //<2F>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ٱ<EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȣ<C2B6><C8A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶ȱ<C2B6>
{
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ仯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶ȱ仯 : %d",Rs485TemRecBuf->FanAutoRelay);
Dbg_Println(DBG_BIT_LOGIC_STATUS_bit,"<EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ٱ仯<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶ȱ仯 :%d,%d,%d,%d,%d,%d",
Rs485Tem->FanAutoRelay,
Rs485TemRecBuf->FanAutoRelay,
Rs485Tem->TemState.set_t,
Rs485TemRecBuf->TemState.set_t,
Rs485Tem->TemState.indoor_t,
Rs485TemRecBuf->TemState.indoor_t
);
Rs485Tem->FanAutoRelay = Rs485TemRecBuf->FanAutoRelay;
if((TEMP_STATE_ON == Rs485TemRecBuf->TemState.on_off) && (TEMP_FANAUTO == Rs485TemRecBuf->TemState.fan)) //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¸<EFBFBD>ֵ
{

View File

@@ -15,6 +15,10 @@
#define TEM_AddTem 33 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TEM_DecFan 14 //<2F><><EFBFBD>ٷ<EFBFBD><D9B7><EFBFBD>
#define TEM_AddFan 34 //<2F><><EFBFBD>ӷ<EFBFBD><D3B7><EFBFBD>
#define SET_TEMP_FANAUTO 35 //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD> 2026-03-27
#define SET_TEMP_MODEAUTO 36 //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD>ģʽ 2026-03-27
#define SET_FANAUTO1 37 //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ٺ<EFBFBD>ֹͣ<CDA3><D6B9>λ 2026-03-27
#define SET_FANAUTO2 38 //<2F><><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD>ٺ<EFBFBD><D9BA><EFBFBD>ֹͣ<CDA3><D6B9>λ 2026-03-27
#define TEM_MIN_SET 0x10 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
#define TEM_MAX_SET 0x20 //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
@@ -152,6 +156,8 @@ typedef struct
uint8_t switch_en_flag; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʾ<EFBFBD><CABE> ʹ<>ܱ<EFBFBD>־λ
uint8_t fan_en_flag; //<2F><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ʾ<EFBFBD><CABE> ʹ<>ܱ<EFBFBD>־λ
uint8_t FanStop_Flag; //<2F><><EFBFBD><EFBFBD><EFBFBD>Ƿ<EFBFBD><C7B7><EFBFBD>ֹͣ<CDA3><D6B9>λ <20><>־λ
uint8_t DevPort; //2024-11-05
uint8_t DevPort_Last; //2024-11-05
uint8_t DevPort_Flag; //2024-11-05

View File

@@ -165,7 +165,7 @@ void BLWOut_TempT1Ctrl(Device_Public_Information_G *BUS_Public,RS485_TEMP_INFO *
}
NetCRC16(&CtrlSend[3],7);
Rs485Tem->DevOffline = DEV_IS_LINEUNINIT; //<2F>豸״̬δȷ<CEB4><C8B7>
// Rs485Tem->DevOffline = DEV_IS_LINEUNINIT; //<2F>豸״̬δȷ<CEB4><C8B7>
/*<2A><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
MCU485_SendString(BUS_Public->port,CtrlSend,10);
@@ -411,7 +411,7 @@ uint8_t BLWOut_TempT1CtrDataProc(Device_Public_Information_G* BUS_Public, uint8_
/*<2A>ȶԷ<C8B6><D4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>״̬ - <20>Ƿ<EFBFBD>д<EFBFBD><D0B4><EFBFBD><EFBFBD>־
2025-10-13 <20>޸<EFBFBD>
1<><31>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB><EFBFBD><EFBFBD><EFBFBD>״̬<D7B4><EFBFBD><E4BBAF><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD><CFB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¶ȱ仯<C8B1><E4BBAF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
2<><32><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9>30S<30><53><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD>
2<><32><EFBFBD>¿<EFBFBD><C2BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣ<CDA3><D6B9>30S<30><53><EFBFBD><EFBFBD><EFBFBD>ٽ<EFBFBD><D9BD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ϱ<EFBFBD> - <20>Ѿ<EFBFBD>ȡ<EFBFBD><C8A1><EFBFBD><EFBFBD><EFBFBD>Ļ<EFBFBD>2s
*/
if( (Rs485Tem->TemStateLast.on_off != Rs485Tem->TemState.on_off) \
|| (Rs485Tem->TemStateLast.mode != Rs485Tem->TemState.mode) \
@@ -535,6 +535,12 @@ uint8_t BLWOut_Rs485_TempT1_Check(uint32_t dev_addr,uint32_t data_addr,uint16_t
}
break;
case 0x07: //<2F><><EFBFBD>ƿ<EFBFBD><C6BF>ػ<EFBFBD>
Rs485TempT1.DevOffline = DEV_IS_ONLINE; //<2F><EFBFBD><E8B1B8><EFBFBD><EFBFBD>
if(Rs485TempT1.DevOffline != Rs485TempT1.DevOfflineLast) //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
{
Rs485TempT1.DevOfflineLast = Rs485TempT1.DevOffline; //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>һ<EFBFBD><D2BB><EFBFBD><EFBFBD><EFBFBD><EFBFBD>״̬
Write_Device_Fault_State(BUS_Public.type,BUS_Public.addr,In_ErrFun_LineState,DEV_IS_ONLINE); //<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><E8B1B8><EFBFBD><EFBFBD>״̬<D7B4><CCAC>SRAM
}
switch(data[6]) //SRAM_Read_Byte(data_addr + 6)
{
case 0x01: //<2F><><EFBFBD>ػ<EFBFBD><D8BB>ظ<EFBFBD>

View File

@@ -29,7 +29,7 @@ uint8_t BLW_Rs485_Touch_Swi_Check(uint32_t DevAdd ,uint32_t Data_addr, uint16_t
void BLV_485_Dev_Touch_Switch_Init(Device_Public_Information_G *BUS_Public, RS485_SWI_INFO *Rs485SwiInfo)
{
Rs485SwiInfo->SwtRelayLedCtrlCnt = REPEATSENDTIMEMAX;
Rs485SwiInfo->SwtRelayLedCtrlCnt = BUS_Public->retry_num;
BUS_Public->polling_cf = (uint32_t)&BLW_Touch_SwitchCycleDis;
BUS_Public->processing_cf = (uint32_t)&BLW_Rs485_Touch_Swi_Check;
@@ -275,7 +275,7 @@ void BLW_Touch_Rs485_Swi_Pro(Device_Public_Information_G* BUS_Public, uint8_t *d
break;
case 0x06:
Switch_Info->SwtRelayLedCtrlFlag = 0x00;
Switch_Info->SwtRelayLedCtrlCnt = REPEATSENDTIMEMAX;
Switch_Info->SwtRelayLedCtrlCnt = BUS_Public->retry_num;
break;
default:
@@ -487,7 +487,7 @@ uint8_t BLW_Touch_SwitchCycleDis(uint32_t DevAdd)
}
else
{
Rs485SwiInfo.SwtRelayLedCtrlCnt = REPEATSENDTIMEMAX;
Rs485SwiInfo.SwtRelayLedCtrlCnt = BUS_Public.retry_num;
Rs485SwiInfo.SwtRelayLedCtrlFlag = 0x00;
//<2F><><EFBFBD>ͽ<EFBFBD><CDBD><EFBFBD>

View File

@@ -149,8 +149,8 @@ void BLW_RS485_WeixinLockFun_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t
BUS_Public.DevFunInfo.Dev_Output_Ctrl = RS485_WxLock_IndiCtrl;
// BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = NULL;
Rs485WxLockInfo.DevOffline = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485WxLockInfo.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485WxLockInfo.DevOffline = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
Rs485WxLockInfo.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
switch(BUS_Public.Protocol)
{

View File

@@ -36,7 +36,8 @@ void BLV_BUS_CSIO_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *data,u
BUS_Public.polling_cf = (uint32_t)&BLV_BUS_C5IO_Cycle_Call;
BUS_Public.processing_cf = (uint32_t)&BLV_BUS_C5IO_Data_Processing;
C5IO_Info.DevOffline = C5IO_Info.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD>߳<EFBFBD>ʼ<EFBFBD><CABC>
C5IO_Info.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD>߳<EFBFBD>ʼ<EFBFBD><CABC>
C5IO_Info.DevOffline = C5IO_Info.DevOfflineLast;
C5IO_Info.C5IO_Version = 1;
/*Ĭ<>϶<EFBFBD>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>*/
@@ -577,7 +578,7 @@ uint8_t BLV_BUS_C5IO_Data_Processing(uint32_t dev_addr,uint32_t data_addr,uint16
if(deal_buff[PKT_PARA] == BLV_C5IO_Do_Result)
{
C5IO_Info.DO_Control_Flag &= ~(C5IO_Info.Last_DO_Control_Flag);
Dbg_Println(DBG_BIT_DEVICE_STATUS_bit,"BLV_C5IO_Set_DO_Succ");
LOG_Device_COMM_Control_Reply_Record2(dev_addr+Dev_port,dev_addr+Dev_baud,deal_buff,deal_len);
}
break;
@@ -1256,7 +1257,7 @@ void BUS_C5IO_DO_Control_Datasend(uint32_t dev_addr,BUS_C5IO_INFO *Dev_Info)
send_buff[PKT_CHKSUM] = CheckSum(send_buff, send_buff[PKT_LEN]);
temp = SRAM_Read_Byte(dev_addr+Dev_port);
// Dbg_Print_Buff(DBG_BIT_DEVICE_STATUS_bit, "IO_SEND:", send_buff, send_buff[PKT_LEN]);
Dbg_Print_Buff(DBG_BIT_DEVICE_STATUS_bit, "IO_SEND:", send_buff, send_buff[PKT_LEN]);
MCU485_SendString(temp,send_buff, send_buff[PKT_LEN]);
/*<2A><>־<EFBFBD><D6BE>¼*/
LOG_Device_COMM_Send_Control_Record2(dev_addr+Dev_port,dev_addr+Dev_baud,send_buff,send_buff[PKT_LEN]);

View File

@@ -72,7 +72,8 @@ void BLV_BUS_C5MUSIC_For_Logic_Init(LOGICFILE_DEVICE_INFO *dev_info,uint8_t *dat
BUS_Public.DevFunInfo.Dev_Output_Ctrl = Logic_Music_Ctrl; //
BUS_Public.DevFunInfo.Dev_Output_Loop_State_Get = Dev_Music_Loop_State;
C5Music_Info.DevOffline = C5Music_Info.DevOfflineLast = DEV_IS_LINEUNINIT; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
C5Music_Info.DevOfflineLast = DEV_IS_ONLINE; //<2F><><EFBFBD><EFBFBD>״̬<D7B4><CCAC>ʼ<EFBFBD><CABC>
C5Music_Info.DevOffline = C5Music_Info.DevOfflineLast;
C5Music_Info.now_playback_type = 0x01; //Ĭ<><C4AC>Ϊ<EFBFBD><CEAA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
C5Music_Info.default_volume = BLV_C5MUSIC_Default_Volume;
C5Music_Info.fade_time = 0x01; //<2F><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> - 100ms