未接传感器不作为采集失败处理

N938
XI.CHEN 6 months ago
parent 915259ba2f
commit c2aa754b4b

@ -3537,32 +3537,59 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT
if(sensorParam[num].SensorsType == RALLY_PROTOCOL && sensorParam[num].IsNoInsta == 1) if(sensorParam[num].SensorsType == RALLY_PROTOCOL && sensorParam[num].IsNoInsta == 1)
{ {
GetPullValue(num, &airt); GetPullValue(num, &airt);
iceInfo->t_sensor_data[pullno].original_tension = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力 = %f", sensorParam[num].devaddr, airt.AiState, iceInfo->t_sensor_data[pullno].original_tension);
if(airt.AiState != 2 && iceInfo->t_sensor_data[pullno].original_tension == 0)
{ {
XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力未采集到数据,重新采样", sensorParam[num].devaddr, airt.AiState); iceInfo->t_sensor_data[pullno].original_tension = 0xff;
status = 0; XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,拉力未接传感器",
sensorParam[num].devaddr, airt.AiState);
}else
{
iceInfo->t_sensor_data[pullno].original_tension = airt.EuValue;
XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力 = %f", sensorParam[num].devaddr, airt.AiState, iceInfo->t_sensor_data[pullno].original_tension);
if(airt.AiState != 2 && iceInfo->t_sensor_data[pullno].original_tension == 0)
{
XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力未采集到数据,重新采样", sensorParam[num].devaddr, airt.AiState);
status = 0;
}
} }
pullno++; pullno++;
} else if(sensorParam[num].SensorsType == SLANT_PROTOCOL && sensorParam[num].IsNoInsta == 1) } else if(sensorParam[num].SensorsType == SLANT_PROTOCOL && sensorParam[num].IsNoInsta == 1)
{ {
GetAngleValue(num, &airt, 0); GetAngleValue(num, &airt, 0);
iceInfo->t_sensor_data[angleno].deflection_angle = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,x = %f", sensorParam[num].devaddr, airt.AiState, iceInfo->t_sensor_data[angleno].deflection_angle);
if(airt.AiState != 2 && iceInfo->t_sensor_data[angleno].deflection_angle == 0)
{ {
XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,倾角x未采集到数据,重新采样", sensorParam[num].devaddr, airt.AiState); iceInfo->t_sensor_data[angleno].deflection_angle = 0xff;
status = 0; XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角x未接传感器",
sensorParam[num].devaddr, airt.AiState);
}else
{
iceInfo->t_sensor_data[angleno].deflection_angle = airt.EuValue;
XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,x = %f", sensorParam[num].devaddr,
airt.AiState, iceInfo->t_sensor_data[angleno].deflection_angle);
if (airt.AiState != 2 && iceInfo->t_sensor_data[angleno].deflection_angle == 0)
{
XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角x未采集到数据,重新采样",
sensorParam[num].devaddr, airt.AiState);
status = 0;
}
} }
GetAngleValue(num, &airt, 1); GetAngleValue(num, &airt, 1);
iceInfo->t_sensor_data[angleno].windage_yaw_angle = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,y = %f", sensorParam[num].devaddr, airt.AiState, iceInfo->t_sensor_data[angleno].windage_yaw_angle);
if(airt.AiState != 2 && iceInfo->t_sensor_data[angleno].windage_yaw_angle == 0)
{ {
XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,倾角y未采集到数据,重新采样", sensorParam[num].devaddr, airt.AiState); iceInfo->t_sensor_data[angleno].windage_yaw_angle =0xff;
status = 0; XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角y未接传感器",
sensorParam[num].devaddr, airt.AiState);
}else
{
iceInfo->t_sensor_data[angleno].windage_yaw_angle = airt.EuValue;
XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,y = %f", sensorParam[num].devaddr,
airt.AiState, iceInfo->t_sensor_data[angleno].windage_yaw_angle);
if (airt.AiState != 2 && iceInfo->t_sensor_data[angleno].windage_yaw_angle == 0)
{
XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角y未采集到数据,重新采样",
sensorParam[num].devaddr, airt.AiState);
status = 0;
}
} }
angleno++; angleno++;
@ -3572,59 +3599,95 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT
{ {
std::lock_guard<std::mutex> lock(m_dataLocker); std::lock_guard<std::mutex> lock(m_dataLocker);
GetWindSpeedData(&airt); GetWindSpeedData(&airt);
iceTail->instantaneous_windspeed = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
if(airt.AiState != 2 && iceTail->instantaneous_windspeed == 0 && m_tempData.instantaneous_windspeed == 0xff)
{ {
XYLOG(XYLOG_SEVERITY_INFO,"采样状态 = %d,覆冰风速未采集到数据,重新采样",airt.AiState); iceTail->instantaneous_windspeed = 0xff;
status = 0; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风速未接传感器",
}else if(airt.AiState == 2 && m_tempData.instantaneous_windspeed == 0xff) airt.AiState);
}else
{ {
m_tempData.instantaneous_windspeed = iceTail->instantaneous_windspeed; iceTail->instantaneous_windspeed = airt.EuValue;
}else if(iceTail->instantaneous_windspeed == 0 && m_tempData.instantaneous_windspeed != 0xff) if (airt.AiState != 2 && iceTail->instantaneous_windspeed == 0 && m_tempData.instantaneous_windspeed == 0xff)
{ {
iceTail->instantaneous_windspeed = m_tempData.instantaneous_windspeed; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风速未采集到数据,重新采样", airt.AiState);
status = 0;
} else if (airt.AiState == 2 && m_tempData.instantaneous_windspeed == 0xff)
{
m_tempData.instantaneous_windspeed = iceTail->instantaneous_windspeed;
} else if (iceTail->instantaneous_windspeed == 0 && m_tempData.instantaneous_windspeed != 0xff)
{
iceTail->instantaneous_windspeed = m_tempData.instantaneous_windspeed;
}
} }
GetWindDirectionData(&airt); GetWindDirectionData(&airt);
iceTail->instantaneous_winddirection = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
if(airt.AiState != 2 && iceTail->instantaneous_winddirection == 0 && m_tempData.instantaneous_winddirection == 0xff)
{
XYLOG(XYLOG_SEVERITY_INFO,"采样状态 = %d,覆冰风向未采集到数据,重新采样",airt.AiState);
status = 0;
}else if(airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff)
{ {
m_tempData.instantaneous_winddirection = iceTail->instantaneous_winddirection; iceTail->instantaneous_winddirection = 0xff;
} else if(iceTail->instantaneous_winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff) XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未接传感器",
airt.AiState);
}else
{ {
iceTail->instantaneous_winddirection = m_tempData.instantaneous_winddirection; iceTail->instantaneous_winddirection = airt.EuValue;
if (airt.AiState != 2 && iceTail->instantaneous_winddirection == 0 &&
m_tempData.instantaneous_winddirection == 0xff)
{
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未采集到数据,重新采样", airt.AiState);
status = 0;
} else if (airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff)
{
m_tempData.instantaneous_winddirection = iceTail->instantaneous_winddirection;
} else if (iceTail->instantaneous_winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff)
{
iceTail->instantaneous_winddirection = m_tempData.instantaneous_winddirection;
}
} }
GetAirTempData(&airt); GetAirTempData(&airt);
iceTail->air_temperature = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
if(airt.AiState != 2 && iceTail->air_temperature == 0 && m_tempData.air_temperature == 0xff)
{ {
XYLOG(XYLOG_SEVERITY_INFO,"采样状态 = %d,覆冰温度未采集到数据,重新采样",airt.AiState); iceTail->air_temperature = 0xff;
status = 0; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰温度未接传感器",
}else if(airt.AiState == 2 && m_tempData.air_temperature == 0xff) airt.AiState);
{ }else
m_tempData.air_temperature = iceTail->air_temperature;
}else if(iceTail->air_temperature == 0 && m_tempData.air_temperature != 0xff)
{ {
iceTail->air_temperature = m_tempData.air_temperature; iceTail->air_temperature = airt.EuValue;
if (airt.AiState != 2 && iceTail->air_temperature == 0 &&
m_tempData.air_temperature == 0xff)
{
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰温度未采集到数据,重新采样",
airt.AiState);
status = 0;
} else if (airt.AiState == 2 && m_tempData.air_temperature == 0xff)
{
m_tempData.air_temperature = iceTail->air_temperature;
} else if (iceTail->air_temperature == 0 && m_tempData.air_temperature != 0xff)
{
iceTail->air_temperature = m_tempData.air_temperature;
}
} }
GetHumidityData(&airt); GetHumidityData(&airt);
iceTail->humidity = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
if(airt.AiState != 2 && iceTail->humidity == 0 && m_tempData.humidity == 0xff)
{ {
XYLOG(XYLOG_SEVERITY_INFO,"采样状态 = %d,覆冰湿度未采集到数据,重新采样",airt.AiState); iceTail->humidity = 0xff;
status = 0; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未接传感器",
}else if(airt.AiState == 2 && m_tempData.humidity == 0xff) airt.AiState);
}else
{ {
m_tempData.humidity = iceTail->humidity; iceTail->humidity = airt.EuValue;
}else if(iceTail->humidity == 0 && m_tempData.humidity != 0xff) if (airt.AiState != 2 && iceTail->humidity == 0 && m_tempData.humidity == 0xff)
{ {
iceTail->humidity = m_tempData.humidity; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未采集到数据,重新采样",
airt.AiState);
status = 0;
} else if (airt.AiState == 2 && m_tempData.humidity == 0xff)
{
m_tempData.humidity = iceTail->humidity;
} else if (iceTail->humidity == 0 && m_tempData.humidity != 0xff)
{
iceTail->humidity = m_tempData.humidity;
}
} }
} }
@ -3661,91 +3724,129 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo)
{ {
std::lock_guard<std::mutex> lock(m_dataLocker); std::lock_guard<std::mutex> lock(m_dataLocker);
GetWeatherData(&airt, 2); GetWeatherData(&airt, 2);
weatherInfo->avg_windspeed_10min = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
weatherInfo->extreme_windspeed = airt.EuValue; {
weatherInfo->standard_windspeed = airt.EuValue; weatherInfo->avg_windspeed_10min = 0xff;
if (airt.AiState != 2 && weatherInfo->avg_windspeed_10min == 0 && weatherInfo->extreme_windspeed = 0xff;
m_tempData.instantaneous_windspeed == 0xff) weatherInfo->standard_windspeed = 0xff;
{ XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未接传感器", airt.AiState);
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未采集到数据,重新采样", airt.AiState); }else
status = 0; {
} else if(airt.AiState == 2 && m_tempData.instantaneous_windspeed == 0xff) weatherInfo->avg_windspeed_10min = airt.EuValue;
{ weatherInfo->extreme_windspeed = airt.EuValue;
m_tempData.instantaneous_windspeed = weatherInfo->avg_windspeed_10min; weatherInfo->standard_windspeed = airt.EuValue;
}else if(weatherInfo->avg_windspeed_10min == 0 && m_tempData.instantaneous_windspeed != 0xff) if (airt.AiState != 2 && weatherInfo->avg_windspeed_10min == 0 &&
{ m_tempData.instantaneous_windspeed == 0xff)
weatherInfo->avg_windspeed_10min = m_tempData.instantaneous_windspeed; {
weatherInfo->extreme_windspeed = m_tempData.instantaneous_windspeed; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未采集到数据,重新采样",
weatherInfo->standard_windspeed = m_tempData.instantaneous_windspeed; airt.AiState);
status = 0;
} else if (airt.AiState == 2 && m_tempData.instantaneous_windspeed == 0xff)
{
m_tempData.instantaneous_windspeed = weatherInfo->avg_windspeed_10min;
} else if (weatherInfo->avg_windspeed_10min == 0 &&
m_tempData.instantaneous_windspeed != 0xff)
{
weatherInfo->avg_windspeed_10min = m_tempData.instantaneous_windspeed;
weatherInfo->extreme_windspeed = m_tempData.instantaneous_windspeed;
weatherInfo->standard_windspeed = m_tempData.instantaneous_windspeed;
}
} }
GetWeatherData(&airt, 3); GetWeatherData(&airt, 3);
weatherInfo->avg_winddirection_10min = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
if (airt.AiState != 2 && weatherInfo->avg_winddirection_10min == 0 &&
m_tempData.instantaneous_winddirection == 0xff)
{ {
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未采集到数据,重新采样", airt.AiState); weatherInfo->avg_winddirection_10min = 0xff;
status = 0; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未接传感器", airt.AiState);
} else if(airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff) }else
{ {
m_tempData.instantaneous_winddirection = weatherInfo->avg_winddirection_10min; weatherInfo->avg_winddirection_10min = airt.EuValue;
}else if(weatherInfo->winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff) if (airt.AiState != 2 && weatherInfo->avg_winddirection_10min == 0 &&
{ m_tempData.instantaneous_winddirection == 0xff)
weatherInfo->winddirection = m_tempData.instantaneous_winddirection; {
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未采集到数据,重新采样", airt.AiState);
status = 0;
} else if(airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff)
{
m_tempData.instantaneous_winddirection = weatherInfo->avg_winddirection_10min;
}else if(weatherInfo->winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff)
{
weatherInfo->winddirection = m_tempData.instantaneous_winddirection;
}
} }
GetWeatherData(&airt, 0); GetWeatherData(&airt, 0);
weatherInfo->air_temperature = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
if (airt.AiState != 2 && weatherInfo->air_temperature == 0 &&
m_tempData.air_temperature == 0xff)
{ {
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未采集到数据,重新采样", airt.AiState); weatherInfo->air_temperature = 0xff;
status = 0; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未接传感器", airt.AiState);
} else if(airt.AiState == 2 && m_tempData.air_temperature == 0xff) }else
{
m_tempData.air_temperature = weatherInfo->air_temperature;
}else if(weatherInfo->air_temperature == 0 && m_tempData.air_temperature != 0xff)
{ {
weatherInfo->air_temperature = m_tempData.air_temperature; weatherInfo->air_temperature = airt.EuValue;
if (airt.AiState != 2 && weatherInfo->air_temperature == 0 &&
m_tempData.air_temperature == 0xff)
{
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未采集到数据,重新采样",
airt.AiState);
status = 0;
} else if (airt.AiState == 2 && m_tempData.air_temperature == 0xff)
{
m_tempData.air_temperature = weatherInfo->air_temperature;
} else if (weatherInfo->air_temperature == 0 && m_tempData.air_temperature != 0xff)
{
weatherInfo->air_temperature = m_tempData.air_temperature;
}
} }
GetWeatherData(&airt, 1); GetWeatherData(&airt, 1);
weatherInfo->humidity = airt.EuValue; if(airt.AiState == 255 || airt.AiState == -1)
if (airt.AiState != 2 && weatherInfo->humidity == 0 && m_tempData.humidity == 0xff)
{
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未采集到数据,重新采样", airt.AiState);
status = 0;
} else if(airt.AiState == 2 && m_tempData.humidity == 0xff)
{ {
m_tempData.humidity = weatherInfo->humidity; weatherInfo->humidity = 0xff;
}else if(weatherInfo->humidity == 0 && m_tempData.humidity != 0xff) XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未接传感器", airt.AiState);
}else
{ {
weatherInfo->humidity = m_tempData.humidity; weatherInfo->humidity = airt.EuValue;
if (airt.AiState != 2 && weatherInfo->humidity == 0 && m_tempData.humidity == 0xff)
{
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未采集到数据,重新采样", airt.AiState);
status = 0;
} else if(airt.AiState == 2 && m_tempData.humidity == 0xff)
{
m_tempData.humidity = weatherInfo->humidity;
}else if(weatherInfo->humidity == 0 && m_tempData.humidity != 0xff)
{
weatherInfo->humidity = m_tempData.humidity;
}
} }
GetWeatherData(&airt, 4); GetWeatherData(&airt, 4);
weatherInfo->precipitation = airt.EuValue; weatherInfo->precipitation = airt.EuValue;
// if (airt.AiState != 2 && weatherInfo->precipitation == 0) { #if 0
// XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未采集到数据,重新采样", if (airt.AiState != 2 && weatherInfo->precipitation == 0) {
// weatherInfo->precipitation, airt.AiState); XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未采集到数据,重新采样",
// status = 0; weatherInfo->precipitation, airt.AiState);
// } status = 0;
}
#endif
GetWeatherData(&airt, 5); GetWeatherData(&airt, 5);
weatherInfo->air_pressure = airt.EuValue; weatherInfo->air_pressure = airt.EuValue;
// if (airt.AiState != 2 && weatherInfo->air_pressure == 0) { #if 0
// XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未采集到数据,重新采样", if (airt.AiState != 2 && weatherInfo->air_pressure == 0) {
// weatherInfo->air_pressure, airt.AiState); XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未采集到数据,重新采样",
// status = 0; weatherInfo->air_pressure, airt.AiState);
// } status = 0;
}
#endif
GetWeatherData(&airt, 6); GetWeatherData(&airt, 6);
weatherInfo->radiation_intensity = airt.EuValue; weatherInfo->radiation_intensity = airt.EuValue;
// if (airt.AiState != 2 && weatherInfo->radiation_intensity == 0) { #if 0
// XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未采集到数据,重新采样", if (airt.AiState != 2 && weatherInfo->radiation_intensity == 0) {
// weatherInfo->radiation_intensity, airt.AiState); XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未采集到数据,重新采样",
// status = 0; weatherInfo->radiation_intensity, airt.AiState);
// } status = 0;
}
#endif
if (status) if (status)
return true; return true;
else else

Loading…
Cancel
Save