我想比較我的溫度傳感器中的電流與我在程序中使用結構設置的上限值。如果溫度傳感器的價值超過目前的上限,我只想printf
一個聲明。比較高和低值來調用函數
這段代碼有什麼問題,它不會打印出printf
聲明,無論當前溫度如何。請假定程序中聲明瞭所有必需的頭文件,定義等。
作爲一個整體工作得很好,但我不明白爲什麼我不能得到一個簡單的printf
命令來顯示!請假定所有需要的定義已經完成,並相應地全部完成。
這裏是我的結構
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!!");
}
在'compareHighLimit()'函數(您的'if(...)'語句中的條件)中輸入您認爲應該導致printf()運行的輸入值。你期望的價值是什麼? – d0rmLife 2013-03-24 18:23:59
它觸發如果我使用compareHighLimit(CH1,CH1Reading),然後調用CH1讀入我的函數,並從那裏比較...但這不是我的鍛鍊點...我應該能夠確定CH1閱讀從剛使用單個CH1值,它應該分別從結構中調用它當前的溫度。 – 2013-03-24 18:29:26
我明白了。如果條件不符合要求,最好的做法是通過打印值來查看實際進行比較的結果。正如下面的答案所表明的那樣,這樣做很可能會告訴你,你從不設置溫度。 :) – d0rmLife 2013-03-24 18:31:31