変数を宣言します
int exceedLimit = 0;
関数を呼び出す
compareLimit(selectChannel,exceedLimit);
この関数は、選択したチャネルの現在の値をチェックし、それが現在の設定制限 (上限は 100 に設定され、下限は 50 に設定されます) を超えているかどうかをチェックします。デフォルトでは、ユーザーがいくつかの値を変更するまでトリガーされません。
int compareLimit (int channelID, int isLimitExceeded)
{
if (temperatureChannel[channelID].currentTemperature > temperatureChannel[channelID].highLimit || temperatureChannel[channelID].currentTemperature < temperatureChannel[channelID].lowLimit)
isLimitExceeded = 2;
else
isLimitExceeded = 1;
return isLimitExceeded;
}
コードの次の行に問題があります....前の関数では、isLimitExceeded を返し、その戻り値を照合して、アラーム状態がトリガーされるべきかどうかを判断しようとしました。この if ステートメントは、compareLimit の直後に記述されます
if (exceedLimit = 2)
logSubsystem();
このプログラムを実行すると、exceedLimit がすぐにトリガーされ、logsubsystem 関数が呼び出されますexceedLimit = 0
。