VLLV (12.04.2019 15:44, просмотров: 339) ответил NAUT на это в смысле так как-то?
У меня полно разных вариантов, даже не знаю, что предлагать :) Вот например макросы, размещающие результат проверки условий в биты слова.
// number name name2 condition
SENSOR( CanAEmpty , "Can empty" , "AC,A2" , GetAdc(CanAdc) > se.CanEmptyLevel )
SENSOR( CanAShorted , "Can error" , "AC,A2" , GetAdc(CanAdc) < se.CanShortLevel )
SENSOR( NivBelowEmpty , "Niv below empt", "AC,A3" , GetAdc(NivEmptyAdc)>se.NiveauLevel )
SENSOR( NivBelowLow , "Niv below low" , "AC,A0" , GetAdc(NivLowAdc)>se.NiveauLevel )
SENSOR( NivBelowHigh , "Niv below high", "AC,A1" , GetAdc(NivHighAdc)>se.NiveauLevel )
SENSOR( NivInvalid , "Niv invalid" , " " , 0>1 )
//SENSOR( InputPressureHigh , "High in press" , "DC,A5" , GetAdc(InputAdc)<se.InSensorLevel )
SENSOR( LeakageOn , "Leakage" , "DC,A5" , GetAdc(LeakageAdc)<se.LeakageSensorLevel )
SENSOR( LowwOutputPressure , "Low out press" , "DC,A4" , GetAdc(OutputAdc) < loww_output_pressure )
SENSOR( OffOutputPressure , "Off pressure" , "DC,A4" , GetAdc(OutputAdc) > off_output_pressure )
SENSOR( OnOutputPressure , "On pressure" , "DC,A4" , GetAdc(OutputAdc) < on_output_pressure )
//SENSOR( MaxOutputPressure , "Max Sys press" , "DC,A5" , GetAdc(OutputAdc) > max_output_pressure )
//SENSOR( ExtraOutputPressure , "Extra press " , "DC,A5" , GetAdc(OutputAdc) > extra_output_pressure )
SENSOR( LowPower , "Low power " , "DC,A6" , GetAdc(PowerAdc) < se.LowPowerLevel )
SENSOR( ConcCounterInput , "Conc counter " , "DC,P4.0", GetPin(ConcCounterIn) )
SENSOR( WaterCounterInput , "Water counter" , "DC,P4.1", GetPin(WaterCounterIn) )
void SensorService(void)
{
unsigned int s=0;
unsigned int niv_sensors;
#pragma diag_suppress=Pa082
#define SENSOR(nam,mesa,mesb,condition) if (condition) s|=b##nam;
#include SENSORS_HEADER
#undef SENSOR
#pragma diag_warning=Pa082
sensors=s;
old_sensors=sensors;
}