Autodrop3d / serialTerminal.com

A browser based serial terminal. No plugins. Vanilla javascript.
https://www.serialterminal.com
ISC License
200 stars 46 forks source link

Suggestions to add hardware flow control and XML escape #8

Open doingnz opened 3 years ago

doingnz commented 3 years ago

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));