подстановка ! t==1 ничего не поменяла.
Добавлено after 42 minutes 12 seconds:
Получается что !t при t равном единице не ноль. Как это исправить?
"Какие ваши доказательства?"t равном единице не ноль.
Код: Выделить всё
//main.h
.
.// Всякие инклюды
.
#include "ds18b20.h"
.
.// Всякие инклюды
.
#include "PrintFunc.h" // В PrintFunc.cpp почему то не видится объявление из ds18b20.h !!!!!
.
.// Всякие инклюды
.Код: Выделить всё
//PrintFunc.h
#include "SensorConf.h" // Если внутри объявить "void print_SensorConf(SensorConf &ptr);" после объявления класса "SensorConf" то всё нормально собирается.
.
.
.
void print_SensorConf(SensorConf &ptr); // Ругается - "variable or field 'print_SensorConf' declared void",
// "'SensorConf' was not declared in this scope"
// "'ptr' was not declared in this scope"
Код: Выделить всё
/*
* PrintFunc.h
*
* Created: 21.09.2019 16:11:05
* Author: Admin
*/
#ifndef PRINTFUNC_H_
#define PRINTFUNC_H_
//#include "main.h"
#include "stdint.h"
#include "SensorConf.h" // Если void print_SensorConf(SensorConf &ptr); - прописать внутри то всё собирается
void print_ads1115_value(uint16_t val);
void print_ADC_value(uint16_t val);
void print_Freg100(uint16_t val);
void print_ds18b20_val(int16_t &t);
void print_SensorConf(SensorConf &ptr); // Так не собирается
#endif /* PRINTFUNC_H_ */Код: Выделить всё
/*
* SensorConf.h
*
* Created: 27.04.2019 20:44:02
* Author: Admin
*/
#ifndef SensorConf_h_
#define SensorConf_h_
#include <stdint.h>
//#include "pin_macros.h"
//#include "menu.h"
#include "global_vars.h"
//#include "PinDefs.h"
typedef struct{
bool DS18B20_Enable; // 1 <DS18B * ON/OFF> Вкл/Откл датчика
uint8_t Alarm_1_Enable; // 2 <Alarm 1 ON/OFF> Разрешение сигнала тревоги 1
uint8_t Alarm_1_ifUpTemperature; // 3 <Alarm 1 if >/<> Настройка тревоги 1 по превышению(или равно) или понижению(или равно)
int16_t Alarm_1_TemperatureVal; // 4 <Alarm 1 set tC> Уставка тревоги 1 по температуре
uint8_t Action_1_Namber; // 5 <Choice1 action> Номер действия для первого аларма
uint8_t Alarm_2_Enable; // 6 <Alarm 2 ON/OFF> Разрешение сигнала тревоги 2
uint8_t Alarm_2_ifUpTemperature; // 7 <Alarm 1 if >/<> Настройка тревоги 1 по превышению(или равно) или понижению(или равно)
int16_t Alarm_2_TemperatureVal; // 8 <Alarm 2 set tC> Уставка тревоги 1 по температуре
uint8_t Action_2_Namber; // 9 <Choice2 action> Номер действия для второго аларма
uint8_t Action_Sensor_ERROR; // 10
} EEstruct;
using SensorConfEEPROM = EEstruct;
class SensorConf
{
//variables
public:
public:
SensorConfEEPROM Conf; // Настройки в ОЗУ, сохраняемые во шлэше
bool Check_Alarm(void); // Проверка значений датчиков на уставки тревоги. true - тревога.
unsigned int AlarmActionsStatus; // При алармах тут выставляем флаги.
bool AlarmFlag; // При любом аларме выставляем флаг, сбрасывается только вручную.
const signed int *TValue; // Указатель на температуру.
const bool *TValueCRC; // Указатель на CRC температуры, true-верная.
static bool SC_eepromERROR; // Если при включении eeprom прочти с ошибкой
unsigned char MenuN; // номер функцию меню
/*
uint8_t Alarm_1_Enable_EEPROM EEMEM = 0;
uint8_t Alarm_1_ifUpTemperature_EEPROM EEMEM = 1;
uint16_t Alarm_1_TemperatureVal_EEPROM EEMEM = (30<<4);
uint8_t Action_1_Namber_EEPROM EEMEM = 0;
uint8_t Alarm_2_Enable_EEPROM EEMEM = 0;
uint8_t Alarm_2_ifUpTemperature_EEPROM EEMEM = 0;
uint16_t Alarm_2_TemperatureVal_EEPROM EEMEM = (25<<4);
uint8_t Action_2_Namber_EEPROM EEMEM = 0;
uint8_t Action_Sensor_ERROR_EEPROM EEMEM = 0;*/
private:
SensorConfEEPROM *SC_eeprom; // Указатель на структуру флэша где будем сохранять настройки
SensorConfEEPROM *SC_eepromXOR; // Указатель на структуру флэша где будем сохранять XOR настроек
void menu_1(void); // Вкл/откл датчика
void menu_2(void); // <Alarm 1 ON/OFF> Разрешение сигнала тревоги 1
void menu_3(void); // <Alarm 1 if >/<> Настройка тревоги 1 по превышению(или равно) или понижению(или равно)
void menu_4(void); // <Alarm 1 set tC> Уставка тревоги 1 по температуре
void menu_5(void); // <Choice action > Номер действия для первого аларма
void menu_6(void); // <Alarm 2 ON/OFF> Разрешение сигнала тревоги 2
void menu_7(void); // <Alarm 1 if >/<> Настройка тревоги 1 по превышению(или равно) или понижению(или равно)
void menu_8(void); // <Alarm 2 set tC> Уставка тревоги 1 по температуре
void menu_9(void); // <Choice2 action> Номер действия для второго аларма
void menu_10(void); // <Sens ERROR act>
void menu_0(void);
char RW_EEPROM(bool a=0); // true - сохранение, false - восстановление настроек. Возврат 0 если была ошибка.
public:
void ToDefoult(void); // Сброс к настройкам по умолчанию.
void menu_start(void);
//void (SensorConf::*Menu[10])(void); // нулевая и последняя функция в массиве будут выводить в корневое меню
using FP = void(SensorConf::*) ();
FP Menu[12] = { &SensorConf::menu_0,
&SensorConf::menu_1,
&SensorConf::menu_2,
&SensorConf::menu_3,
&SensorConf::menu_4,
&SensorConf::menu_5,
&SensorConf::menu_6,
&SensorConf::menu_7,
&SensorConf::menu_8,
&SensorConf::menu_9,
&SensorConf::menu_10,
&SensorConf::menu_0};
unsigned char Sensor_number; // Номер датчика
protected:
private:
// Можно сделать статическим...
void CheckButtonAndSwitchMenu(void); // Переключение меню от кнопок LEFT-RIGHT
//functions
public:
SensorConf(const int*, const bool*, SensorConfEEPROM *eeprom, SensorConfEEPROM *SC_eepromXOR, unsigned char SN);
SensorConf();
~SensorConf();
protected:
private:
SensorConf( const SensorConf &c );
SensorConf& operator=( const SensorConf &c );
}; //SensorConf
#ifdef MAIN
#define _Ex
#else
#define _Ex extern
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_1;
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_2;
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_3;
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_4;
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_5;
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_XOR_1; // Для контроля целостности
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_XOR_2;
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_XOR_3;
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_XOR_4;
_Ex SensorConfEEPROM EEMEM SensorConfEEPROM_XOR_5;
_Ex SensorConfEEPROM SensorConfDefoult; // Дефолтные настройки
_Ex SensorConf SensorConf_1; // DS18B20_1
_Ex SensorConf SensorConf_2; // DS18B20_2
_Ex SensorConf SensorConf_3; // DS18B20_3
_Ex SensorConf SensorConf_4; // DS18B20_4
_Ex SensorConf SensorConf_5; // DS18B20_5
#endif
//void print_SensorConf(SensorConf &ptr); // Если раскомментировать, и закомментировать в PrintFunc.h то собирается
#endif /*SensorConf_h_*/Код: Выделить всё
#define _MAIN_C_Код: Выделить всё
#ifndef _MAIN_H_INCLUDED
#define _MAIN_H_INCLUDED
#ifdef __cplusplus
extern "C" {
#endif
#ifdef _MAIN_C_
#define _MAIN_EXTERNAL_
#else
#define _MAIN_EXTERNAL_ extern
#endif // _MAIN_C_
...
_MAIN_EXTERNAL_ int some_global_static_variable;
...
#ifdef __cplusplus
}
#endif
#endif // _MAIN_H_INCLUDED