Improvements
This commit is contained in:
parent
0400a4c8db
commit
14a946bf5f
@ -5,43 +5,62 @@
|
||||
*/
|
||||
#ifndef ModbusSlaveConfigToEEPROM_H
|
||||
#define ModbusSlaveConfigToEEPROM_H
|
||||
|
||||
#include <Arduino.h>
|
||||
#include <EEPROM.h>
|
||||
|
||||
class ModBusConfig{
|
||||
public:
|
||||
ModBusConfig(int ID, int BAUDRATE);
|
||||
void SetModbusID(int ID);
|
||||
void SetBaudRate(int BAUDRATE);
|
||||
int GetModbusID();
|
||||
int GetBaudRate();
|
||||
private:
|
||||
int ModBusID;
|
||||
int ModBusBaudrate;
|
||||
class ModBusConfig {
|
||||
public:
|
||||
ModBusConfig(); // Konstruktor ohne Parameter
|
||||
void SetModbusID(int ID);
|
||||
void SetBaudRate(int BAUDRATE);
|
||||
int GetModbusID();
|
||||
int GetBaudRate();
|
||||
|
||||
private:
|
||||
static const int MODBUS_ID_ADDRESS = 0; // Speicheradresse für Modbus-ID
|
||||
static const int BAUD_RATE_ADDRESS = 1; // Speicheradresse für Baudrate
|
||||
static const int MAX_BAUD_RATE = 115200; // Maximal unterstützte Baudrate
|
||||
};
|
||||
|
||||
void ModBusConfig::SetModbusID(int BAUDRATE){
|
||||
EEPROM.write(0,BAUDRATE);
|
||||
}
|
||||
|
||||
void ModBusConfig::SetBaudRate(int BAUDRATE){
|
||||
// divide Baudrate / 100 - to save it in Eeprom (8Bit 0 - 255)
|
||||
int dividedBaudrate = BAUDRATE/100;
|
||||
|
||||
if ( dividedBaudrate != EEPROM.read(1)){
|
||||
EEPROM.write(1,dividedBaudrate);
|
||||
ModBusConfig::ModBusConfig() {
|
||||
// Optional: Initialisieren Sie die EEPROM-Werte, falls erforderlich
|
||||
if (EEPROM.read(MODBUS_ID_ADDRESS) == 0xFF) {
|
||||
SetModbusID(1); // Setze Standard ID
|
||||
}
|
||||
if (EEPROM.read(BAUD_RATE_ADDRESS) == 0xFF) {
|
||||
SetBaudRate(9600); // Setze Standard Baudrate
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
int ModBusConfig::GetModbusID(){
|
||||
return EEPROM.read(0);
|
||||
|
||||
void ModBusConfig::SetModbusID(int ID) {
|
||||
if (ID >= 0 && ID <= 255) { // Überprüfung, dass ID im gültigen Bereich liegt
|
||||
EEPROM.write(MODBUS_ID_ADDRESS, ID);
|
||||
} else {
|
||||
Serial.println("Ungültige Modbus-ID. ID muss zwischen 0 und 255 liegen.");
|
||||
}
|
||||
}
|
||||
|
||||
int ModBusConfig::GetBaudRate(){
|
||||
int Baudrate = EEPROM.read(1)*100;
|
||||
void ModBusConfig::SetBaudRate(int BAUDRATE) {
|
||||
int dividedBaudrate = BAUDRATE / 100;
|
||||
|
||||
// Überprüfung, dass Baudrate im gültigen Bereich liegt
|
||||
if (BAUDRATE > 0 && BAUDRATE <= MAX_BAUD_RATE) {
|
||||
if (dividedBaudrate != EEPROM.read(BAUD_RATE_ADDRESS)) {
|
||||
EEPROM.write(BAUD_RATE_ADDRESS, dividedBaudrate);
|
||||
}
|
||||
} else {
|
||||
Serial.println("Ungültige Baudrate. Baudrate muss zwischen 0 und 115200 liegen.");
|
||||
}
|
||||
}
|
||||
|
||||
int ModBusConfig::GetModbusID() {
|
||||
return EEPROM.read(MODBUS_ID_ADDRESS);
|
||||
}
|
||||
|
||||
int ModBusConfig::GetBaudRate() {
|
||||
int Baudrate = EEPROM.read(BAUD_RATE_ADDRESS) * 100;
|
||||
return Baudrate;
|
||||
}
|
||||
|
||||
#endif
|
||||
#endif
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user