禁用传感器后不导致重采

rtmpsuck
XI.CHEN 6 months ago
parent 816881fd89
commit a24345e01f

@ -3792,69 +3792,99 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT
int angleno = 0; int angleno = 0;
for(int num = 0; num < MAX_SERIAL_DEV_NUM; num++) for(int num = 0; num < MAX_SERIAL_DEV_NUM; num++)
{ {
if(sensorParam[num].SensorsType == RALLY_PROTOCOL && sensorParam[num].IsNoInsta == 1) if(sensorParam[num].SensorsType == RALLY_PROTOCOL)
{ {
GetPullValue(num, &airt); if(sensorParam[num].IsNoInsta == 0)
if(airt.AiState == 255 || airt.AiState == -1)
{ {
iceInfo->t_sensor_data[pullno].original_tension = 0xff; iceInfo->t_sensor_data[pullno].original_tension = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,拉力未接传感器", XYLOG(XYLOG_SEVERITY_INFO, "地址%d,拉力传感器未启用",
sensorParam[num].devaddr, airt.AiState); sensorParam[num].devaddr);
}else }else
{ {
iceInfo->t_sensor_data[pullno].original_tension = airt.EuValue; GetPullValue(num, &airt);
XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力 = %f", sensorParam[num].devaddr, airt.AiState, iceInfo->t_sensor_data[pullno].original_tension); if(airt.AiState == 255 || airt.AiState == -1)
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 }else
{ {
if(iceInfo->tension == 0xff) iceInfo->t_sensor_data[pullno].original_tension = airt.EuValue;
iceInfo->tension =0; XYLOG(XYLOG_SEVERITY_INFO,"地址%d,采样状态 = %d,拉力 = %f", sensorParam[num].devaddr, airt.AiState, iceInfo->t_sensor_data[pullno].original_tension);
iceInfo->tension = iceInfo->tension + 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;
}else
{
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
iceInfo->t_sensor_data[pullno].original_tension = iceInfo->t_sensor_data[pullno].original_tension * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
iceInfo->t_sensor_data[pullno].original_tension = iceInfo->t_sensor_data[pullno].original_tension + sensorParam[num].offset;
if(iceInfo->tension == 0xff)
iceInfo->tension =0;
iceInfo->tension = iceInfo->tension + iceInfo->t_sensor_data[pullno].original_tension;
}
} }
} }
pullno++; pullno++;
} else if(sensorParam[num].SensorsType == SLANT_PROTOCOL && sensorParam[num].IsNoInsta == 1) } else if(sensorParam[num].SensorsType == SLANT_PROTOCOL)
{ {
GetAngleValue(num, &airt, 0); if(sensorParam[num].IsNoInsta == 0)
if(airt.AiState == 255 || airt.AiState == -1)
{ {
iceInfo->t_sensor_data[angleno].deflection_angle = 0xff; iceInfo->t_sensor_data[angleno].deflection_angle = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角x未接传感器", iceInfo->t_sensor_data[angleno].windage_yaw_angle = 0xff;
sensorParam[num].devaddr, airt.AiState); XYLOG(XYLOG_SEVERITY_INFO, "地址%d,倾角传感器未启用",
sensorParam[num].devaddr);
}else }else
{ {
iceInfo->t_sensor_data[angleno].deflection_angle = airt.EuValue; GetAngleValue(num, &airt, 0);
XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,x = %f", sensorParam[num].devaddr, if (airt.AiState == 255 || airt.AiState == -1) {
airt.AiState, iceInfo->t_sensor_data[angleno].deflection_angle); iceInfo->t_sensor_data[angleno].deflection_angle = 0xff;
if (airt.AiState != 2 && iceInfo->t_sensor_data[angleno].deflection_angle == 0) XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角x未接传感器",
{
XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角x未采集到数据,重新采样",
sensorParam[num].devaddr, airt.AiState); sensorParam[num].devaddr, airt.AiState);
status = 0; } 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;
} else{
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
iceInfo->t_sensor_data[angleno].deflection_angle = iceInfo->t_sensor_data[angleno].deflection_angle * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
iceInfo->t_sensor_data[angleno].deflection_angle = iceInfo->t_sensor_data[angleno].deflection_angle + sensorParam[num].offset;
}
} }
} GetAngleValue(num, &airt, 1);
GetAngleValue(num, &airt, 1); if (airt.AiState == 255 || airt.AiState == -1) {
if(airt.AiState == 255 || airt.AiState == -1) iceInfo->t_sensor_data[angleno].windage_yaw_angle = 0xff;
{ XYLOG(XYLOG_SEVERITY_INFO, "地址%d,采样状态 = %d,倾角y未接传感器",
iceInfo->t_sensor_data[angleno].windage_yaw_angle =0xff;
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); sensorParam[num].devaddr, airt.AiState);
status = 0; } 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;
}else{
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
iceInfo->t_sensor_data[angleno].windage_yaw_angle = iceInfo->t_sensor_data[angleno].windage_yaw_angle * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
iceInfo->t_sensor_data[angleno].windage_yaw_angle = iceInfo->t_sensor_data[angleno].windage_yaw_angle + sensorParam[num].offset;
}
} }
} }
angleno++; angleno++;
} }
} }
@ -3867,98 +3897,138 @@ 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); for (int num = 0; num < MAX_SERIAL_DEV_NUM; num++) {
if(airt.AiState == 255 || airt.AiState == -1) if (sensorParam[num].SensorsType == WIND_PROTOCOL && sensorParam[num].IsNoInsta == 0) {
{ iceTail->instantaneous_windspeed = 0xff;
iceTail->instantaneous_windspeed = 0xff; iceTail->instantaneous_winddirection = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风速未接传感器", XYLOG(XYLOG_SEVERITY_INFO, "地址%d,风速风向传感器未启用",
airt.AiState); sensorParam[num].devaddr);
}else break;
{ } else if (sensorParam[num].SensorsType == WIND_PROTOCOL &&
iceTail->instantaneous_windspeed = airt.EuValue; sensorParam[num].IsNoInsta == 1) {
if (airt.AiState != 2 && iceTail->instantaneous_windspeed == 0 && m_tempData.instantaneous_windspeed == 0xff) GetWindSpeedData(&airt);
{ if (airt.AiState == 255 || airt.AiState == -1) {
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;
}
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
iceTail->instantaneous_windspeed = iceTail->instantaneous_windspeed * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
iceTail->instantaneous_windspeed = iceTail->instantaneous_windspeed + sensorParam[num].offset;
}
}
GetWindDirectionData(&airt); GetWindDirectionData(&airt);
if(airt.AiState == 255 || airt.AiState == -1) if (airt.AiState == 255 || airt.AiState == -1) {
{ iceTail->instantaneous_winddirection = 0xff;
iceTail->instantaneous_winddirection = 0xff; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未接传感器",
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未接传感器", airt.AiState);
airt.AiState); } else {
}else iceTail->instantaneous_winddirection = airt.EuValue;
{ if (airt.AiState != 2 && iceTail->instantaneous_winddirection == 0 &&
iceTail->instantaneous_winddirection = airt.EuValue; m_tempData.instantaneous_winddirection == 0xff) {
if (airt.AiState != 2 && iceTail->instantaneous_winddirection == 0 && XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未采集到数据,重新采样",
m_tempData.instantaneous_winddirection == 0xff) airt.AiState);
{ status = 0;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰风向未采集到数据,重新采样", airt.AiState); } else {
status = 0; if (airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff)
} else if (airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff) {
{ m_tempData.instantaneous_winddirection = iceTail->instantaneous_winddirection;
m_tempData.instantaneous_winddirection = iceTail->instantaneous_winddirection; } else if (iceTail->instantaneous_winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff)
} else if (iceTail->instantaneous_winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff) {
{ iceTail->instantaneous_winddirection = m_tempData.instantaneous_winddirection;
iceTail->instantaneous_winddirection = m_tempData.instantaneous_winddirection; }
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
iceTail->instantaneous_winddirection = iceTail->instantaneous_winddirection * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
iceTail->instantaneous_winddirection = iceTail->instantaneous_winddirection + sensorParam[num].offset;
}
}
break;
} }
} }
GetAirTempData(&airt); for (int num = 0; num < MAX_SERIAL_DEV_NUM; num++) {
if(airt.AiState == 255 || airt.AiState == -1) if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && sensorParam[num].IsNoInsta == 0)
{
iceTail->air_temperature = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰温度未接传感器",
airt.AiState);
}else
{
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; iceTail->air_temperature = 0xff;
} iceTail->humidity = 0xff;
} XYLOG(XYLOG_SEVERITY_INFO, "地址%d,温湿度传感器未启用",
sensorParam[num].devaddr);
break;
} else if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && sensorParam[num].IsNoInsta == 1) {
GetAirTempData(&airt);
if (airt.AiState == 255 || airt.AiState == -1) {
iceTail->air_temperature = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰温度未接传感器",
airt.AiState);
} else {
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;
}
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
iceTail->air_temperature = iceTail->air_temperature * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
iceTail->air_temperature = iceTail->air_temperature + sensorParam[num].offset;
}
}
GetHumidityData(&airt); GetHumidityData(&airt);
if(airt.AiState == 255 || airt.AiState == -1) if (airt.AiState == 255 || airt.AiState == -1) {
{ iceTail->humidity = 0xff;
iceTail->humidity = 0xff; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未接传感器",
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未接传感器", airt.AiState);
airt.AiState); } else {
}else iceTail->humidity = airt.EuValue;
{ if (airt.AiState != 2 && iceTail->humidity == 0 &&
iceTail->humidity = airt.EuValue; m_tempData.humidity == 0xff) {
if (airt.AiState != 2 && iceTail->humidity == 0 && m_tempData.humidity == 0xff) XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未采集到数据,重新采样",
{ airt.AiState);
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,覆冰湿度未采集到数据,重新采样", status = 0;
airt.AiState); } else {
status = 0; if (airt.AiState == 2 && m_tempData.humidity == 0xff) {
} else if (airt.AiState == 2 && m_tempData.humidity == 0xff) m_tempData.humidity = iceTail->humidity;
{ } else if (iceTail->humidity == 0 && m_tempData.humidity != 0xff) {
m_tempData.humidity = iceTail->humidity; iceTail->humidity = m_tempData.humidity;
} else if (iceTail->humidity == 0 && m_tempData.humidity != 0xff) }
{ if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
iceTail->humidity = m_tempData.humidity; iceTail->humidity = iceTail->humidity * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
iceTail->humidity = iceTail->humidity + sensorParam[num].offset;
}
}
break;
} }
} }
} }
if(status) if(status)
@ -3967,7 +4037,7 @@ int CPhoneDevice::GetIceData(IDevice::ICE_INFO *iceInfo, IDevice::ICE_TAIL *iceT
return false; return false;
} }
int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo) int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *sensorParam)
{ {
m_tempData.instantaneous_windspeed = 0xff; m_tempData.instantaneous_windspeed = 0xff;
m_tempData.air_temperature = 0xff; m_tempData.air_temperature = 0xff;
@ -3992,137 +4062,219 @@ int CPhoneDevice::GetWData(IDevice::WEATHER_INFO *weatherInfo)
Data_DEF airt; Data_DEF airt;
{ {
std::lock_guard<std::mutex> lock(m_dataLocker); std::lock_guard<std::mutex> lock(m_dataLocker);
GetWeatherData(&airt, 2); for (int num = 0; num < MAX_SERIAL_DEV_NUM; num++)
if(airt.AiState == 255 || airt.AiState == -1)
{ {
weatherInfo->avg_windspeed_10min = 0xff; if (sensorParam[num].SensorsType == WIND_PROTOCOL && sensorParam[num].IsNoInsta == 0)
weatherInfo->extreme_windspeed = 0xff;
weatherInfo->standard_windspeed = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未接传感器", airt.AiState);
}else
{
weatherInfo->avg_windspeed_10min = airt.EuValue;
weatherInfo->extreme_windspeed = airt.EuValue;
weatherInfo->standard_windspeed = airt.EuValue;
if (airt.AiState != 2 && weatherInfo->avg_windspeed_10min == 0 &&
m_tempData.instantaneous_windspeed == 0xff)
{
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未采集到数据,重新采样",
airt.AiState);
status = 0;
} else if (airt.AiState == 2 && m_tempData.instantaneous_windspeed == 0xff)
{ {
m_tempData.instantaneous_windspeed = weatherInfo->avg_windspeed_10min; weatherInfo->avg_windspeed_10min = 0xff;
} else if (weatherInfo->avg_windspeed_10min == 0 && weatherInfo->extreme_windspeed = 0xff;
m_tempData.instantaneous_windspeed != 0xff) weatherInfo->standard_windspeed = 0xff;
weatherInfo->avg_winddirection_10min = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "地址%d,风速风向传感器未启用",
sensorParam[num].devaddr);
break;
} else if (sensorParam[num].SensorsType == WIND_PROTOCOL && sensorParam[num].IsNoInsta == 1)
{ {
weatherInfo->avg_windspeed_10min = m_tempData.instantaneous_windspeed; GetWeatherData(&airt, 2);
weatherInfo->extreme_windspeed = m_tempData.instantaneous_windspeed; if (airt.AiState == 255 || airt.AiState == -1)
weatherInfo->standard_windspeed = m_tempData.instantaneous_windspeed; {
} weatherInfo->avg_windspeed_10min = 0xff;
} weatherInfo->extreme_windspeed = 0xff;
weatherInfo->standard_windspeed = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未接传感器", airt.AiState);
} else
{
weatherInfo->avg_windspeed_10min = airt.EuValue;
weatherInfo->extreme_windspeed = airt.EuValue;
weatherInfo->standard_windspeed = airt.EuValue;
if (airt.AiState != 2 && weatherInfo->avg_windspeed_10min == 0 && m_tempData.instantaneous_windspeed == 0xff)
{
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风速未采集到数据,重新采样",
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;
}
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
{
weatherInfo->avg_windspeed_10min = weatherInfo->avg_windspeed_10min * sensorParam[num].multiple;
weatherInfo->extreme_windspeed = weatherInfo->avg_windspeed_10min;
weatherInfo->standard_windspeed = weatherInfo->avg_windspeed_10min;
}
if(sensorParam[num].offset != 0)
{
weatherInfo->avg_windspeed_10min = weatherInfo->avg_windspeed_10min + sensorParam[num].offset;
weatherInfo->extreme_windspeed = weatherInfo->avg_windspeed_10min;
weatherInfo->standard_windspeed = weatherInfo->avg_windspeed_10min;
}
}
}
GetWeatherData(&airt, 3); GetWeatherData(&airt, 3);
if(airt.AiState == 255 || airt.AiState == -1) if (airt.AiState == 255 || airt.AiState == -1)
{ {
weatherInfo->avg_winddirection_10min = 0xff; weatherInfo->avg_winddirection_10min = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未接传感器", airt.AiState); XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未接传感器", airt.AiState);
}else } else
{ {
weatherInfo->avg_winddirection_10min = airt.EuValue; weatherInfo->avg_winddirection_10min = airt.EuValue;
if (airt.AiState != 2 && weatherInfo->avg_winddirection_10min == 0 && if (airt.AiState != 2 && weatherInfo->avg_winddirection_10min == 0 && m_tempData.instantaneous_winddirection == 0xff)
m_tempData.instantaneous_winddirection == 0xff) {
{ XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未采集到数据,重新采样", airt.AiState);
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象风向未采集到数据,重新采样", airt.AiState); status = 0;
status = 0; } else {
} else if(airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff) if (airt.AiState == 2 && m_tempData.instantaneous_winddirection == 0xff) {
{ m_tempData.instantaneous_winddirection = weatherInfo->avg_winddirection_10min;
m_tempData.instantaneous_winddirection = weatherInfo->avg_winddirection_10min; } else if (weatherInfo->winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff) {
}else if(weatherInfo->winddirection == 0 && m_tempData.instantaneous_winddirection != 0xff) weatherInfo->avg_winddirection_10min = m_tempData.instantaneous_winddirection;
{ }
weatherInfo->winddirection = m_tempData.instantaneous_winddirection; if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
} weatherInfo->avg_winddirection_10min = weatherInfo->avg_winddirection_10min * sensorParam[num].multiple;
} if(sensorParam[num].offset != 0)
GetWeatherData(&airt, 0); weatherInfo->avg_winddirection_10min = weatherInfo->avg_winddirection_10min + sensorParam[num].offset;
if(airt.AiState == 255 || airt.AiState == -1) }
{ }
weatherInfo->air_temperature = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未接传感器", airt.AiState); GetWeatherData(&airt, 4);
}else weatherInfo->precipitation = airt.EuValue;
{ if(airt.AiState == 255 || airt.AiState == -1)
weatherInfo->air_temperature = airt.EuValue; {
if (airt.AiState != 2 && weatherInfo->air_temperature == 0 && weatherInfo->precipitation = 0xff;
m_tempData.air_temperature == 0xff) XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未接传感器", airt.AiState);
{ }else if (airt.AiState != 2 && weatherInfo->precipitation == 0)
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未采集到数据,重新采样", {
airt.AiState); XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未采集到数据,重新采样",
status = 0; weatherInfo->precipitation, airt.AiState);
} else if (airt.AiState == 2 && m_tempData.air_temperature == 0xff) status = 0;
{ } else
m_tempData.air_temperature = weatherInfo->air_temperature; {
} else if (weatherInfo->air_temperature == 0 && m_tempData.air_temperature != 0xff) if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
{ weatherInfo->precipitation = weatherInfo->precipitation * sensorParam[num].multiple;
weatherInfo->air_temperature = m_tempData.air_temperature; if(sensorParam[num].offset != 0)
weatherInfo->precipitation = weatherInfo->precipitation + sensorParam[num].offset;
}
GetWeatherData(&airt, 5);
weatherInfo->air_pressure = airt.EuValue;
if(airt.AiState == 255 || airt.AiState == -1)
{
weatherInfo->air_pressure = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未接传感器", airt.AiState);
}else if (airt.AiState != 2 && weatherInfo->air_pressure == 0) {
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未采集到数据,重新采样",
weatherInfo->air_pressure, airt.AiState);
status = 0;
} else
{
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
weatherInfo->air_pressure = weatherInfo->air_pressure * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
weatherInfo->air_pressure = weatherInfo->air_pressure + sensorParam[num].offset;
}
GetWeatherData(&airt, 6);
weatherInfo->radiation_intensity = airt.EuValue;
if(airt.AiState == 255 || airt.AiState == -1)
{
weatherInfo->radiation_intensity = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未接传感器", airt.AiState);
}else if (airt.AiState != 2 && weatherInfo->radiation_intensity == 0) {
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未采集到数据,重新采样",
weatherInfo->radiation_intensity, airt.AiState);
status = 0;
} else
{
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
weatherInfo->radiation_intensity = weatherInfo->radiation_intensity * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
weatherInfo->radiation_intensity = weatherInfo->radiation_intensity + sensorParam[num].offset;
}
break;
} }
} }
GetWeatherData(&airt, 1); for (int num = 0; num < MAX_SERIAL_DEV_NUM; num++) {
if(airt.AiState == 255 || airt.AiState == -1) if (sensorParam[num].SensorsType == WEATHER_PROTOCOL && sensorParam[num].IsNoInsta == 0)
{
weatherInfo->humidity = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未接传感器", airt.AiState);
}else
{
weatherInfo->humidity = airt.EuValue;
if (airt.AiState != 2 && weatherInfo->humidity == 0 && m_tempData.humidity == 0xff)
{ {
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未采集到数据,重新采样", airt.AiState); weatherInfo->air_temperature = 0xff;
status = 0; weatherInfo->humidity = 0xff;
} else if(airt.AiState == 2 && m_tempData.humidity == 0xff) XYLOG(XYLOG_SEVERITY_INFO, "地址%d,温湿度传感器未启用",
{ sensorParam[num].devaddr);
m_tempData.humidity = weatherInfo->humidity; break;
}else if(weatherInfo->humidity == 0 && m_tempData.humidity != 0xff) } else if (sensorParam[num].SensorsType == WEATHER_PROTOCOL &&
sensorParam[num].IsNoInsta == 1)
{ {
weatherInfo->humidity = m_tempData.humidity; GetWeatherData(&airt, 0);
} if (airt.AiState == 255 || airt.AiState == -1)
} {
weatherInfo->air_temperature = 0xff;
GetWeatherData(&airt, 4); XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未接传感器", airt.AiState);
weatherInfo->precipitation = airt.EuValue; } else
if(airt.AiState == 255 || airt.AiState == -1) {
{ weatherInfo->air_temperature = airt.EuValue;
weatherInfo->precipitation = 0xff; if (airt.AiState != 2 && weatherInfo->air_temperature == 0 &&
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未接传感器", airt.AiState); m_tempData.air_temperature == 0xff)
}else if (airt.AiState != 2 && weatherInfo->precipitation == 0) {
{ XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象温度未采集到数据,重新采样",
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,降雨量未采集到数据,重新采样", airt.AiState);
weatherInfo->precipitation, airt.AiState); status = 0;
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;
}
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
weatherInfo->air_temperature = weatherInfo->air_temperature * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
weatherInfo->air_temperature = weatherInfo->air_temperature + sensorParam[num].offset;
}
}
GetWeatherData(&airt, 5); GetWeatherData(&airt, 1);
weatherInfo->air_pressure = airt.EuValue; if (airt.AiState == 255 || airt.AiState == -1)
if(airt.AiState == 255 || airt.AiState == -1) {
{ weatherInfo->humidity = 0xff;
weatherInfo->air_pressure = 0xff; XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气象湿度未接传感器", airt.AiState);
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未接传感器", airt.AiState); } else
}else if (airt.AiState != 2 && weatherInfo->air_pressure == 0) { {
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,气压未采集到数据,重新采样", weatherInfo->humidity = airt.EuValue;
weatherInfo->air_pressure, airt.AiState); if (airt.AiState != 2 && weatherInfo->humidity == 0 &&
status = 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;
}
if(sensorParam[num].multiple != 1 && sensorParam[num].multiple != 0)
weatherInfo->humidity = weatherInfo->humidity * sensorParam[num].multiple;
if(sensorParam[num].offset != 0)
weatherInfo->humidity = weatherInfo->humidity + sensorParam[num].offset;
}
}
break;
}
} }
GetWeatherData(&airt, 6);
weatherInfo->radiation_intensity = airt.EuValue;
if(airt.AiState == 255 || airt.AiState == -1)
{
weatherInfo->radiation_intensity = 0xff;
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未接传感器", airt.AiState);
}else if (airt.AiState != 2 && weatherInfo->radiation_intensity == 0) {
XYLOG(XYLOG_SEVERITY_INFO, "采样状态 = %d,光照强度未采集到数据,重新采样",
weatherInfo->radiation_intensity, airt.AiState);
status = 0;
}
if (status) if (status)
return true; return true;
else else

@ -231,7 +231,7 @@ public:
virtual uint64_t RequestWakelock(uint64_t timeout); virtual uint64_t RequestWakelock(uint64_t timeout);
virtual bool ReleaseWakelock(uint64_t wakelock); virtual bool ReleaseWakelock(uint64_t wakelock);
virtual int GetWData(WEATHER_INFO *weatherInfo); virtual int GetWData(WEATHER_INFO *weatherInfo, D_SENSOR_PARAM *sensorParam);
virtual int GetIceData(ICE_INFO *iceInfo, ICE_TAIL *icetail, D_SENSOR_PARAM *sensorParam); virtual int GetIceData(ICE_INFO *iceInfo, ICE_TAIL *icetail, D_SENSOR_PARAM *sensorParam);
virtual bool OpenSensors(int sensortype); virtual bool OpenSensors(int sensortype);
virtual bool CloseSensors(int sensortype, uint32_t delayedCloseTime); virtual bool CloseSensors(int sensortype, uint32_t delayedCloseTime);

Loading…
Cancel
Save