#include #include /* Konstruktor: Der Konstruktor initialisiert die Modbus-ID und die Baudrate auf Standardwerte (1 und 9600), falls die EEPROM-Werte nicht gesetzt sind (d.h. wenn sie 0xFF sind). */ ModBusConfig::ModBusConfig() { // Optional: Initialisieren Sie die EEPROM-Werte, falls erforderlich if (EEPROM.read(MODBUS_ID_ADDRESS) == 0xFF) { SetModbusID(STANDARD_MODBUS_ID); // Setze Standard ID } if (EEPROM.read(BAUD_RATE_ADDRESS) == 0xFF) { SetBaudRate(STANDARD_MODBUS_BAUDRATE); // Setze Standard Baudrate } } void ModBusConfig::SetModbusID(int ID) { if (ID >= 0 && ID <= MAX_MODBUS_ID_ADDRESS) { // Überprüfung, dass ID im gültigen Bereich liegt unsigned long currentTime = millis(); if (currentTime - lastWriteTimeID >= WRITE_INTERVAL) { // Only write if enough time has passed EEPROM.put(MODBUS_ID_ADDRESS, ID); lastWriteTimeID = currentTime; } //EEPROM.write(MODBUS_ID_ADDRESS, ID); } else { Serial.println("Ungültige Modbus-ID. ID muss zwischen 0 und 255 liegen."); } } void ModBusConfig::ResetModbusID() { unsigned long currentTime = millis(); if (currentTime - lastWriteTimeID >= WRITE_INTERVAL) { // Only write if enough time has passed SetModbusID(STANDARD_MODBUS_ID); // Reset to standard ID lastWriteTimeID = currentTime; } } void ModBusConfig::SetBaudRate(int BAUDRATE) { int dividedBaudrate = BAUDRATE / 100; unsigned long currentTime = millis(); // Überprüfung, dass Baudrate im gültigen Bereich liegt if (BAUDRATE > 0 && BAUDRATE <= MAX_BAUD_RATE) { if (dividedBaudrate != EEPROM.read(BAUD_RATE_ADDRESS)) { if (currentTime - lastWriteTimeBaud >= WRITE_INTERVAL) { EEPROM.put(BAUD_RATE_ADDRESS, dividedBaudrate); lastWriteTimeBaud = currentTime; } } } else { Serial.println("Ungültige Baudrate. Baudrate muss zwischen 0 und 115200 liegen."); } } void ModBusConfig::ResetBaudRate() { unsigned long currentTime = millis(); if (currentTime - lastWriteTimeBaud >= WRITE_INTERVAL) { SetBaudRate(STANDARD_MODBUS_BAUDRATE); // Reset to standard Baud rate lastWriteTimeBaud = currentTime; } } int ModBusConfig::GetModbusID() { int MbID = EEPROM.read(MODBUS_ID_ADDRESS); return MbID; } int ModBusConfig::GetBaudRate() { int Baudrate = EEPROM.read(BAUD_RATE_ADDRESS); return Baudrate; }