0

温度センサーの電流を、構造を使用してプログラムで設定した上限値と比較したいと思います。値付けされた温度センサーが現在の上限を超えている場合、私はただ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!!");  
}
4

2 に答える 2

3

set temp関数は、実際には値を設定しません。

temperature_t setCurrentTemperature(int channelID, temperature_t temperature)
{
    // you need to set the data here, not just return the existing  value
    return temperatureChannel[channelID].currentTemperature;
}
于 2013-03-24T18:26:46.237 に答える
1

温度を設定したことはないようです。あなたはあなたが呼ぶと言った

setCurrentTemperature(CH1, temperatureSensor1Reading);

CH1これは、の温度をに設定することになっていると思いtemperatureSensor1Readingます。ただし、この関数は温度を変更しないようです。

temperature_t setCurrentTemperature(int channelID, temperature_t temperature)
{
    return temperatureChannel[channelID].currentTemperature;
}

setCurrentTemperaturegetCurrentTemperature?のコードを混同している可能性があります。

于 2013-03-24T18:27:28.833 に答える