diff --git a/ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js b/ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js
index 2dfc961..96c398b 100644
--- a/ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js
+++ b/ui/src/app/extension/extensions-forms/extension-form-modbus.directive.js
@@ -31,17 +31,38 @@ export default function ExtensionFormModbusDirective($compile, $templateCache, $
var linker = function(scope, element) {
+ function TcpTransport() {
+ this.type = "tcp",
+ this.host = "localhost",
+ this.port = 502,
+ this.timeout = 5000,
+ this.reconnect = true,
+ this.rtuOverTcp = false
+ }
+
+ function UdpTransport() {
+ this.type = "udp",
+ this.host = "localhost",
+ this.port = 502,
+ this.timeout = 5000
+ }
+
+ function RtuTransport() {
+ this.type = "rtu",
+ this.portName = "COM1",
+ this.encoding = "ascii",
+ this.timeout = 5000,
+ this.baudRate = 115200,
+ this.dataBits = 7,
+ this.stopBits = 1,
+ this.parity ="even"
+ }
function Server() {
- this.transport = {
- "type": "tcp",
- "host": "localhost",
- "port": 502,
- "timeout": 3000
- };
+ this.transport = new TcpTransport();
this.devices = []
}
-
+
function Device() {
this.unitId = 1;
this.deviceName = "";
@@ -105,9 +126,13 @@ export default function ExtensionFormModbusDirective($compile, $templateCache, $
scope.onTransportChanged = function(server) {
var type = server.transport.type;
- server.transport = {};
- server.transport.type = type;
- server.transport.timeout = 3000;
+ if (type === "tcp") {
+ server.transport = new TcpTransport();
+ } else if (type === "udp") {
+ server.transport = new UdpTransport();
+ } else if (type === "rtu") {
+ server.transport = new RtuTransport();
+ }
scope.theForm.$setDirty();
};
diff --git a/ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html b/ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html
index 989d3f0..508ddc0 100644
--- a/ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html
+++ b/ui/src/app/extension/extensions-forms/extension-form-modbus.tpl.html
@@ -73,49 +73,69 @@
</div>
- <div layout="row" ng-if="server.transport.type == 'tcp' || server.transport.type == 'udp'">
- <md-input-container flex="33" class="md-block">
- <label translate>extension.host</label>
- <input required name="transportHost_{{serverIndex}}" ng-model="server.transport.host">
- <div ng-messages="theForm['transportHost_' + serverIndex].$error">
- <div translate ng-message="required">extension.field-required</div>
- </div>
- </md-input-container>
+ <div ng-if="server.transport.type == 'tcp' || server.transport.type == 'udp'">
+ <div layout="row">
+ <md-input-container flex="33" class="md-block">
+ <label translate>extension.host</label>
+ <input required name="transportHost_{{serverIndex}}" ng-model="server.transport.host">
+ <div ng-messages="theForm['transportHost_' + serverIndex].$error">
+ <div translate ng-message="required">extension.field-required</div>
+ </div>
+ </md-input-container>
- <md-input-container flex="33" class="md-block">
- <label translate>extension.port</label>
- <input type="number"
- required
- name="transportPort_{{serverIndex}}"
- ng-model="server.transport.port"
- min="1"
- max="65535"
- >
- <div ng-messages="theForm['transportPort_' + serverIndex].$error">
- <div translate
- ng-message="required"
- >extension.field-required</div>
- <div translate
- ng-message="min"
- >extension.port-range</div>
- <div translate
- ng-message="max"
- >extension.port-range</div>
- </div>
- </md-input-container>
-
- <md-input-container flex="33" class="md-block">
- <label translate>extension.timeout</label>
- <input type="number"
- required name="transportTimeout_{{serverIndex}}"
- ng-model="server.transport.timeout"
- >
- <div ng-messages="theForm['transportTimeout_' + serverIndex].$error">
- <div translate
- ng-message="required"
- >extension.field-required</div>
- </div>
- </md-input-container>
+ <md-input-container flex="33" class="md-block">
+ <label translate>extension.port</label>
+ <input type="number"
+ required
+ name="transportPort_{{serverIndex}}"
+ ng-model="server.transport.port"
+ min="1"
+ max="65535"
+ >
+ <div ng-messages="theForm['transportPort_' + serverIndex].$error">
+ <div translate
+ ng-message="required"
+ >extension.field-required</div>
+ <div translate
+ ng-message="min"
+ >extension.port-range</div>
+ <div translate
+ ng-message="max"
+ >extension.port-range</div>
+ </div>
+ </md-input-container>
+
+ <md-input-container flex="33" class="md-block">
+ <label translate>extension.timeout</label>
+ <input type="number"
+ required name="transportTimeout_{{serverIndex}}"
+ ng-model="server.transport.timeout"
+ >
+ <div ng-messages="theForm['transportTimeout_' + serverIndex].$error">
+ <div translate
+ ng-message="required"
+ >extension.field-required</div>
+ </div>
+ </md-input-container>
+ </div>
+
+ <div layout="row" ng-if="server.transport.type == 'tcp'">
+ <md-input-container flex="50" class="md-block">
+ <md-checkbox aria-label="{{ 'extension.modbus-tcp-reconnect' | translate }}"
+ ng-checked="server.transport.reconnect"
+ name="transportTcpReconnect_{{serverIndex}}"
+ ng-model="server.transport.reconnect">{{ 'extension.modbus-tcp-reconnect' | translate }}
+ </md-checkbox>
+ </md-input-container>
+
+ <md-input-container flex="50" class="md-block">
+ <md-checkbox aria-label="{{ 'extension.modbus-rtu-over-tcp' | translate }}"
+ ng-checked="server.transport.rtuOverTcp"
+ name="transportRtuOverTcp_{{serverIndex}}"
+ ng-model="server.transport.rtuOverTcp">{{ 'extension.modbus-rtu-over-tcp' | translate }}
+ </md-checkbox>
+ </md-input-container>
+ </div>
</div>
<div ng-if="server.transport.type == 'rtu'">
diff --git a/ui/src/app/locale/locale.constant-en_US.json b/ui/src/app/locale/locale.constant-en_US.json
index 30e1eb1..3aa520a 100644
--- a/ui/src/app/locale/locale.constant-en_US.json
+++ b/ui/src/app/locale/locale.constant-en_US.json
@@ -1008,6 +1008,8 @@
"modbus-add-server": "Add server/slave",
"modbus-add-server-prompt": "Please add server/slave",
"modbus-transport": "Transport",
+ "modbus-tcp-reconnect": "Automatically reconnect",
+ "modbus-rtu-over-tcp": "RTU over TCP",
"modbus-port-name": "Serial port name",
"modbus-encoding": "Encoding",
"modbus-parity": "Parity",