<script type="text/html" data-help-name="serial in">
    <p>Reads data from a local serial port.</p>
    <h3>Outputs</h3>
    <dl class="message-properties">
        <dt>payload <span class="property-type">string | buffer</span></dt>
        <dd>received data via the serial port</dd>
        <dt>port <span class="property-type">string</span></dt>
        <dd>name of the serial port</dd>
    </dl>
    <p>The node can either
        <ul>
            <li>wait for a "split" character (default \n).
                Also accepts escaped shortcut (e.g. \n) or hex notation (0x0d).</li>
            <li>wait for a timeout in milliseconds from the first character received.</li>
            <li>wait for a silence time in milliseconds after the last character received.</li>
            <li>wait to fill a fixed sized buffer.</li>
        </ul>
    </p>
    <p>It then outputs <code>msg.payload</code> as either a UTF-8 ASCII string or a binary buffer object.</p>
    <p><code>msg.port</code> is set to the name of the port selected.</p>
    <p>If no split character is specified, or a timeout or buffer size of 0,
       then a stream of single characters is sent -
       again either as ASCII chars or size 1 binary buffers.</p>
</script>

<script type="text/html" data-help-name="serial out">
    <p>Send data via a local serial port.</p>
    <h3>Inputs</h3>
    <dl class="message-properties">
        <dt>payload <span class="property-type">string | buffer</span></dt>
        <dd>data to be sent via the serial port</dd>
        <dt class="optional">baudrate <span class="property-type">string</span></dt>
        <dd>baudrate of the serial port (optional)</dd>
    </dl>
    <p>Only the <code>msg.payload</code> is sent.</p>
    <p>Optionally the baudrate can be changed using <code>msg.baudrate</code>.</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>
    <p>Binary payloads can be sent by using a buffer object.</p>
</script>

<script type="text/html" data-help-name="serial request">
    <p>Provides a connection to a request/response serial port.</p>
    <p>This node behaves as a tightly coupled combination of <code>serial in</code> and <code>serial out</code> nodes,
       with which it shares the configuration.</p>
    <p>Send the request message in <code>msg.payload</code> as you would do with a <code>serial out</code> node.
       The message will be forwarded to the serial port following a strict FIFO (First In, First Out) queue,
       waiting for a single response before transmitting the next request.
       Once a response is received (with the same logic of a <code>serial in</code> node), or after a timeout occurs,
       a message is sent to the output (see Outputs below),
       with <code>msg.payload</code> containing the received response (or missing in case if timeout) and
       all other properties are preserved.</p>
    <p>For consistency with the <code>serial in</code> node, <code>msg.port</code> is set to the name of the port selected.</p>
    <h3>Inputs</h3>
    <ul>
        <li><code>msg.timeout</code> is the timeout (in ms) after which the incoming message is propagated
            to the output with <code>msg.status</code> set to <code>"ERR_TIMEOUT"</code> and missing payload.
            If not present, the default value is 10000 (10s).</li>
        <li><code>msg.count</code> if set this will override the configured number of characters
            as long as it is less than the number configured.</li>
        <li><code>msg.waitfor</code> must be a single character, escape code, or hex code.
            If set, the node will wait until it matches that character in the stream and then start the output.</li>
        <li>Optionally the baudrate can be changed using <code>msg.baudrate</code></li>
    </ul>
    <h3>Outputs</h3>
    <ul>
        <li><code>msg.payload</code> is the response. If no response occured, this property is removed.</li>
        <li><code>msg.status</code> is <code>"OK"</code> in case a response is received,
            or <code>"ERR_TIMEOUT"</code> if a timeout occurs.</li>
        <li>Any other property coming from the input will be preserved.</li>
    </ul>
</script>

<script type="text/html" data-help-name="serial-port">
    <p>Configuration options for a local serial port.</p>
    <p>The search button should return a list of available serial ports to choose from,
       or you can type in the location if known.</p>
    <p>The DTR, RTS, CTS and DSR switches can be used to permanently pull the corresponding flow control pin high or low,
       e.g. in order to power devices via those pins.</p>
    <p>The node can optionally wait until it matches a pre-defined character.</p>
    <p>The serial data reception can either
        <ul>
            <li>wait for a "split" character (default \n). Also accepts escaped shortcut (e.g. \n) or hex notation (0x0d).</li>
            <li>wait for a timeout in milliseconds from the first character received.</li>
            <li>wait for a silence time in milliseconds after the last character received.</li>
            <li>wait to fill a fixed sized buffer.</li>
        </ul>
    </p>
    <p>It then outputs the received data as either a UTF-8 ASCII string or a binary buffer object.</p>
    <p>If no split character is specified, or a timeout or buffer size of 0, then a stream of single characters is sent -
       again either as ASCII chars or size 1 binary buffers.</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>