1
0
mirror of https://github.com/node-red/node-red.git synced 2023-10-10 13:36:53 +02:00
node-red/nodes/core/io/25-serial.html
Frank van de Pol 9d1bb39018 Add configuration of serial protocol settings
- Add support for configuration of protocol parameters (data bits,
party, stop bits)
- Set serial device/port using select list (discovered ports)
- Provide default settings for existing flows that do not yet have
serial protocol settings
2014-04-21 23:35:28 +02:00

203 lines
7.8 KiB
HTML

<!--
Copyright 2013 IBM Corp.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
-->
<script type="text/x-red" data-template-name="serial in">
<div class="form-row node-input-serial">
<label for="node-input-serial"><i class="icon-bullhorn"></i> Serial Port</label>
<input type="text" id="node-input-serial">
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/x-red" data-help-name="serial in">
<p>Reads data from a local serial port.</p>
<p>Keeps reading from the serial port until it sees \n (default) or the character(s) requested. Only sets <b>msg.payload</b>.</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('serial in',{
category: 'input',
defaults: {
name: {name:""},
serial: {type:"serial-port",required:true}
},
color:"BurlyWood",
inputs:0,
outputs:1,
icon: "serial.png",
label: function() {
var serialNode = RED.nodes.node(this.serial);
return this.name||(serialNode?serialNode.label():"serial");
},
labelStyle: function() {
return this.name?"node_label_italic":"";
}
});
</script>
<script type="text/x-red" data-template-name="serial out">
<div class="form-row node-input-serial">
<label for="node-input-serial"><i class="icon-bullhorn"></i> Serial Port</label>
<input type="text" id="node-input-serial">
</div>
<div class="form-row">
<label for="node-input-name"><i class="icon-tag"></i> Name</label>
<input type="text" id="node-input-name" placeholder="Name">
</div>
</script>
<script type="text/x-red" data-help-name="serial out">
<p>Provides a connection to an outbound serial port.</p>
<p>Only the <b>msg.payload</b> is sent.</p>
<p>Optionally the new line character used to split the input can be appended to every message sent out to the serial port.</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('serial out',{
category: 'output',
defaults: {
name: {name:""},
serial: {type:"serial-port",required:true}
},
color:"BurlyWood",
inputs:1,
outputs:0,
icon: "serial.png",
align: "right",
label: function() {
var serialNode = RED.nodes.node(this.serial);
return this.name||(serialNode?serialNode.label():"serial");
},
labelStyle: function() {
return this.name?"node_label_italic":"";
}
});
</script>
<script type="text/x-red" data-template-name="serial-port">
<div class="form-row">
<label for="node-config-input-serialport"><i class="icon-bullhorn"></i> Serial Port</label>
<select type="text" id="node-config-input-serialport" style="width:75%;">
</select>
</div>
<div class="form-row">
<label for="node-config-input-serialbaud"><i class="icon-wrench"></i> Baud Rate</label>
<select type="text" id="node-config-input-serialbaud" style="width: 150px;">
<option value="115200">115200</option>
<option value="57600">57600</option>
<option value="38400">38400</option>
<option value="19200">19200</option>
<option value="9600">9600</option>
<option value="4800">4800</option>
<option value="2400">2400</option>
<option value="1800">1800</option>
<option value="1200">1200</option>
<option value="600">600</option>
<option value="300">300</option>
<option value="200">200</option>
<option value="150">150</option>
<option value="134">134</option>
<option value="110">110</option>
<option value="75">75</option>
<option value="50">50</option>
</select>
</div>
<div class="form-row">
<label for="node-config-input-databits"><i class="icon-wrench"></i> Data Bits</label>
<select type="text" id="node-config-input-databits" style="width: 100px;">
<option value="8">8</option>
<option value="7">7</option>
<option value="6">6</option>
<option value="5">5</option>
</select>
</div>
<div class="form-row">
<label for="node-config-input-parity"><i class="icon-wrench"></i> Parity</label>
<select type="text" id="node-config-input-parity" style="width: 100px;">
<option value="none">None</option>
<option value="even">Even</option>
<option value="mark">Mark</option>
<option value="odd">Odd</option>
<option value="space">Space</option>
</select>
</div>
<div class="form-row">
<label for="node-config-input-stopbits"><i class="icon-wrench"></i> Stop Bits</label>
<select type="text" id="node-config-input-stopbits" style="width: 100px;">
<option value="2">2</option>
<option value="1">1</option>
</select>
</div>
<div class="form-row">
<label for="node-config-input-newline"><i class="icon-text-width"></i> New line</label>
<input type="text" id="node-config-input-newline" style="width: 50px;">
</div>
<div class="form-row">
<label for="node-config-input-addchar">&nbsp;</label>
<select type="text" id="node-config-input-addchar" style="width: 70%;">
<option value="false">Dont add 'New Line' to serial output</option>
<option value="true">Add 'New line' to serial output message</option>
</select>
</div>
<div class="form-tips">Tip: the new line character is used to split the input into separate messages. It can also be added to every message sent out to the serial port.</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('serial-port',{
category: 'config',
defaults: {
//name: {value:""},
serialport: {value:"",required:true},
serialbaud: {value:57600,required:true},
databits: {value:8,required:true},
parity: {value:"none",required:true},
stopbits: {value:1,required:true},
newline: {value:"\\n"},
addchar: {value:false}
},
label: function() {
if (typeof this.serialbaud === 'undefined') {
this.serialbaud = 57600;
}
if (typeof this.databits === 'undefined') {
this.databits = 8;
}
if (typeof this.parity === 'undefined') {
this.parity = 'none';
}
if (typeof this.stopbits == 'undefined') {
this.stopbits = 1;
}
return this.serialport+":"+this.serialbaud+"-"+this.databits+this.parity.charAt(0).toUpperCase()+this.stopbits;
},
oneditprepare: function() {
var p = this.serialport;
var s = $("#node-config-input-serialport");
$.getJSON('serialports',function(data) {
$.each(data, function(i, port){
s.append($('<option>').text(port.comName).attr('value', port.comName));
});
s.val(p);
});
}
});
</script>