比较高值和低值来调用函数

时间:2013-03-24 18:19:14

标签: c function structure

我想将温度传感器中的电流与我在程序中使用结构设置的上限值进行比较。如果温度传感器的值超过当前的上限,我只想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!!");  
}

2 个答案:

答案 0 :(得分:3)

您的设定临时功能实际上并未设定值:

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;
}

答案 1 :(得分:1)

似乎你没有设定温度。你说你打电话了

setCurrentTemperature(CH1, temperatureSensor1Reading);

我认为,这应该将CH1的温度设置为temperatureSensor1Reading。但是,此功能似乎不会改变温度:

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

您可能混淆了setCurrentTemperaturegetCurrentTemperature的代码?