Skip to content

Commit

Permalink
add rts pin to config
Browse files Browse the repository at this point in the history
  • Loading branch information
zivillian committed Jul 7, 2022
1 parent 80ace83 commit 9390e07
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 8 deletions.
3 changes: 3 additions & 0 deletions include/config.h
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
uint32_t _tcpTimeout;
unsigned long _modbusBaudRate;
uint32_t _modbusConfig;
int8_t _modbusRtsPin;
unsigned long _serialBaudRate;
uint32_t _serialConfig;
public:
Expand All @@ -31,6 +32,8 @@
void setModbusParity(uint8_t value);
uint8_t getModbusStopBits();
void setModbusStopBits(uint8_t value);
int8_t getModbusRtsPin();
void setModbusRtsPin(int8_t value);
uint32_t getSerialConfig();
unsigned long getSerialBaudRate();
void setSerialBaudRate(unsigned long value);
Expand Down
12 changes: 12 additions & 0 deletions src/config.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ Config::Config()
,_tcpTimeout(10000)
,_modbusBaudRate(9600)
,_modbusConfig(SERIAL_8N1)
,_modbusRtsPin(-1)
,_serialBaudRate(115200)
,_serialConfig(SERIAL_8N1)
{}
Expand All @@ -17,6 +18,7 @@ void Config::begin(Preferences *prefs)
_tcpTimeout = _prefs->getULong("tcpTimeout", _tcpTimeout);
_modbusBaudRate = _prefs->getULong("modbusBaudRate", _modbusBaudRate);
_modbusConfig = _prefs->getULong("modbusConfig", _modbusConfig);
_modbusRtsPin = _prefs->getChar("modbusRtsPin", _modbusRtsPin);
_serialBaudRate = _prefs->getULong("serialBaudRate", _serialBaudRate);
_serialConfig = _prefs->getULong("serialConfig", _serialConfig);
}
Expand Down Expand Up @@ -92,6 +94,16 @@ void Config::setModbusStopBits(uint8_t value){
_prefs->putULong("modbusConfig", _modbusConfig);
}

int8_t Config::getModbusRtsPin(){
return _modbusRtsPin;
}

void Config::setModbusRtsPin(int8_t value){
if (_modbusRtsPin == value) return;
_modbusRtsPin = value;
_prefs->putChar("modbusRtsPin", _modbusRtsPin);
}

uint32_t Config::getSerialConfig(){
return _serialConfig;
}
Expand Down
11 changes: 6 additions & 5 deletions src/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
AsyncWebServer webServer(80);
Config config;
Preferences prefs;
ModbusClientRTU MBclient(modbusSerial);
ModbusClientRTU *MBclient;
ModbusBridgeWiFi MBbridge;
WiFiManager wm;

Expand All @@ -31,15 +31,16 @@ void setup() {
dbgln("[wifi] finished");
dbgln("[modbus] start");
modbusSerial.begin(config.getModbusBaudRate(), config.getModbusConfig());
MBclient.setTimeout(1000);
MBclient.begin();
MBclient = new ModbusClientRTU(modbusSerial, config.getModbusRtsPin());
MBclient->setTimeout(1000);
MBclient->begin();
for (uint8_t i = 1; i < 248; i++)
{
MBbridge.attachServer(i, i, ANY_FUNCTION_CODE, &MBclient);
MBbridge.attachServer(i, i, ANY_FUNCTION_CODE, MBclient);
}
MBbridge.start(config.getTcpPort(), 10, config.getTcpTimeout());
dbgln("[modbus] finished");
setupPages(&webServer, &MBclient, &MBbridge, &config, &wm);
setupPages(&webServer, MBclient, &MBbridge, &config, &wm);
webServer.begin();
dbgln("[setup] finished");
}
Expand Down
34 changes: 31 additions & 3 deletions src/pages.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -105,9 +105,32 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
"</td>"
"<td>");
response->printf("<select id=\"ms\" name=\"ms\" data-value=\"%d\">", config->getModbusStopBits());
response->print("<option value=\"1\">1 bit</option>"
"<option value=\"2\">1.5 bits</option>"
"<option value=\"3\">2 bits</option>"
response->print("<option value=\"0\">None</option>"
"<option value=\"2\">Even</option>"
"<option value=\"3\">Odd</option>"
"</select>"
"</td>"
"</tr>"
"<tr>"
"<td>"
"<label for=\"mr\">RTS Pin</label>"
"</td>"
"<td>");
response->printf("<select id=\"mr\" name=\"mr\" data-value=\"%d\">", config->getModbusRtsPin());
response->print("<option value=\"-1\">Auto</option>"
"<option value=\"4\">D4</option>"
"<option value=\"13\">D13</option>"
"<option value=\"14\">D14</option>"
"<option value=\"18\">D18</option>"
"<option value=\"19\">D19</option>"
"<option value=\"21\">D21</option>"
"<option value=\"22\">D22</option>"
"<option value=\"23\">D23</option>"
"<option value=\"25\">D25</option>"
"<option value=\"26\">D26</option>"
"<option value=\"27\">D27</option>"
"<option value=\"32\">D32</option>"
"<option value=\"33\">D33</option>"
"</select>"
"</td>"
"</tr>"
Expand Down Expand Up @@ -201,6 +224,11 @@ void setupPages(AsyncWebServer *server, ModbusClientRTU *rtu, ModbusBridgeWiFi *
config->setModbusStopBits(stop);
dbgln("[webserver] saved modbus stop bits");
}
if (request->hasParam("mr", true)){
auto rts = request->getParam("mr", true)->value().toInt();
config->setModbusRtsPin(rts);
dbgln("[webserver] saved modbus rts pin");
}
if (request->hasParam("sb", true)){
auto baud = request->getParam("sb", true)->value().toInt();
config->setSerialBaudRate(baud);
Expand Down

0 comments on commit 9390e07

Please sign in to comment.