温度センサーの電流を、構造を使用してプログラムで設定した上限値と比較したいと思います。値付けされた温度センサーが現在の上限を超えている場合、私はただprintf
声明を出したいと思います。
printf
このコードの何が問題になっていますか。現在の温度に関係なく、ステートメントが出力されることはありません。必要なヘッダーファイル、定義などはすべてプログラムに記載されていると想定してください。
全体的には問題なく動作しますが、簡単なコマンドが表示されない理由がわかりませんprintf
!! 必要なすべての定義が作成され、それに応じてすべてが作成されたと想定してくださいtypedef
。
これが私の構造です
struct temperatureChannel_t { //set a structure that encompasses all of the follow elements in an array
temperature_t temperatureArray;
temperature_t temperatures[MAXSAMPLES];
temperature_t currentTemperature;
temperature_t lowLimit;
temperature_t highLimit;
temperature_t minTemperature;
temperature_t maxTemperature;
};
struct temperatureChannel_t temperatureChannel[MAXCHANNELS];
これが現在の上限を初期化する方法です
void initializeTemperatureSubsystem()
{
currentInsertionPoint = 0;
for(int chID = 0; chID < MAXCHANNELS; chID++)
{
srand(time(NULL));
for(int i = 1; i < MAXSAMPLES; i++)
{
temperatureChannel[chID].temperatures[i] = rand()%100;
}
temperatureChannel[chID].lowLimit = 50;
temperatureChannel[chID].highLimit = 100;
temperatureChannel[chID].currentTemperature = 75;
averageIsValid = FALSE; //NEW line
}
}
これが私が現在の温度を設定する方法です、最初に関数の呼び出し
setCurrentTemperature(CH1, temperatureSensor1Reading);
次に関数
temperature_t setCurrentTemperature(int channelID, temperature_t temperature)
{
return temperatureChannel[channelID].currentTemperature;
}
まず、使用している現在のチャネルを使用して、関数を呼び出します
compareHighLimit(CH1);
次に、printfコマンドを出力しない関数を次に示します。
void compareHighLimit (int channelID)
{
if (temperatureChannel[channelID].currentTemperature > temperatureChannel[channelID].highLimit)
printf("you have activated the high alarm!!");
}