This commit is contained in:
2026-02-25 15:12:13 +08:00
parent 9d69b29eed
commit 090eb335a8
25 changed files with 620 additions and 19973 deletions
@@ -114,16 +114,22 @@ static void proto_leakage_tx_curr_data_get(proto_leakage_t *p_leakage)
static void proto_leakage_tx_task(proto_leakage_t *p_leakage)
{
u16 i;
proto_sensor_class_t *p_sensor;
p_sensor = &p_leakage->sensor[p_leakage->sensor_index];
if(0 == (p_sensor->comm.sensor_state_code & (0x00000001 << PROTO_LEAKAGE_STATE_CODE_TIME_OUT)))
if(0 == p_leakage->sensor_num)/*没有传感器的COM口不发送*/
{
if((++p_sensor->comm.tx_time_out_count) > 20)/*500ms轮询 10秒通讯超时*/
return;
}
if(0 == (p_sensor->comm.sensor_state_code & (PROTO_LEAKAGE_STATE_CODE_TIME_OUT)))
{
if((++p_sensor->comm.tx_time_out_count) > 10)/*连续读取10次 通讯超时*/
{
p_sensor->comm.sensor_state_code |= (0x00000001 << PROTO_LEAKAGE_STATE_CODE_TIME_OUT);
p_sensor->comm.sensor_state_code |= (PROTO_LEAKAGE_STATE_CODE_TIME_OUT);
/*清除数据*/
//memset(&gas_data[p_sensor->sensor_index],0,sizeof(gas_data_t));
}
@@ -131,6 +137,10 @@ static void proto_leakage_tx_task(proto_leakage_t *p_leakage)
switch(p_sensor->comm.state)
{
case PROTO_LEAKAGE_COMM_STATE_INIT:
{
}break;
case PROTO_LEAKAGE_COMM_STATE_CURR_DATA_GET:
{
proto_leakage_tx_curr_data_get(p_leakage);
@@ -140,14 +150,34 @@ static void proto_leakage_tx_task(proto_leakage_t *p_leakage)
}break;
}
/*通讯超时*/
if(p_sensor->comm.sensor_state_code & (PROTO_LEAKAGE_STATE_CODE_TIME_OUT))
{
for(i=0;i<APP_LEAKAGE_SUB_DEVICE_CH_NUM;i++)
{
leakage.sub_device_data[p_sensor->comm.leakage_data_index].ch_data[i].state |= APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT;
}
}
else
{
for(i=0;i<APP_LEAKAGE_SUB_DEVICE_CH_NUM;i++)
{
leakage.sub_device_data[p_sensor->comm.leakage_data_index].ch_data[i].state &= (~APP_LEAKAGE_SUB_DEVICE_STATE_TIME_OUT);
}
}
p_sensor->comm.state_send_time++;
if(p_sensor->comm.state_send_time >= 3) /*进入异常*/
{
p_sensor->comm.sensor_state_code |= (0x00000001 << p_sensor->comm.sensor_state_code);/*记录异常状态*/
p_sensor->comm.sensor_state_code |= (p_sensor->comm.sensor_state_code);/*记录异常状态*/
p_sensor->comm.state_send_time = 0;
p_sensor->comm.sensor_state_code = PROTO_LEAKAGE_COMM_STATE_DEFAULT;
p_sensor->comm.state = PROTO_LEAKAGE_COMM_STATE_DEFAULT;
proto_leakage_switch(p_leakage); /*切换设备*/
}
}
static void proto_leakage_rx_task(u8 *p_data,u16 len,void *other_data)
@@ -209,7 +239,7 @@ static void proto_leakage_rx_task(u8 *p_data,u16 len,void *other_data)
p_sensor->comm.tx_time_out_count = 0;
p_sensor->comm.sensor_state_code &= (~(0x00000001 << PROTO_LEAKAGE_STATE_CODE_TIME_OUT));
p_sensor->comm.sensor_state_code &= (~PROTO_LEAKAGE_STATE_CODE_TIME_OUT);
switch(p_sensor->comm.state)
{
@@ -220,7 +250,7 @@ static void proto_leakage_rx_task(u8 *p_data,u16 len,void *other_data)
case PROTO_LEAKAGE_COMM_STATE_CURR_DATA_GET:
{
/*计算当前设备索引*/
u8 sensor_index = p_leakage->sensor_index;
u8 sensor_index = p_sensor->comm.leakage_data_index;
u16 ch_addr_offset[4] = {0,4,8,11}; /*漏液待数据地址偏移*/
u16 temp;