Autodrop3d/serialTerminal.com

Suggestions to add hardware flow control and XML escape

Opened this issue · 0 comments

Great terminal application. Nice and simple for quick understanding of the Serial Api.

When testing with my device which that outputs upto 100K xml text, I quickly ran into problems with buffer overruns and lost characters. I turned on hardware flow control as follows as my device supports RTS & CTS handshake. Other samples suggest checkboxes for hardware flow control on/off. For a quick test I was happy to hardcode it.

            await port.open({
                baudRate: document.getElementById("baud").value,
                flowControl: "hardware", rtsCts: true,
                dataBits: 8, stopBits: 1, parity: "none",
                bufferSize: 2560
            });

As my device outputs XML, I had to define

    function escapeXml(unsafe) {
        return unsafe.replace(/[<>&'"]/g, function (c) {
            switch (c) {
            case '<': return '&lt;';
            case '>': return '&gt;';
            case '&': return '&amp;';
            case '\'': return '&apos;';
            case '"': return '&quot;';
            }
        });
    }

and then change append to escape the string being stuffed into the page for all characters to be rendered in a readable form.

// value is a string. escape characters as needed 
appendToTerminal(escapeXml(value));