let port; let reader; const decoder = new TextDecoder("utf-8"); let readibleoutput = 0; // Request a port and open a connection. async function connect() { //vraag aan de browser om een serial port te selecteren port = await navigator.serial.requestPort(); await port.open({ baudRate: 9600 }); reader = port.readable.getReader(); console.log("Port is open!"); readLoop() } // Read data from serial port async function readLoop() { let buffer = []; // loop until reader.cancel() is called while (true) { // Wait for data const { value, done } = await reader.read(); for (let iByte = 0; iByte < value.length; iByte++) { let singleByte = value[iByte]; //functie maken er van met boolean!!! if (singleByte != 10) { buffer.push(singleByte); } else { let sensorString = decoder.decode(new Uint8Array(buffer)); //Put all data in a json Array and parse it to a boolean array try { // Parse the incoming data as JSON // "replace(/'/g, '\"')" replaces all single quotes with double quotes with use of regular expressions. So we can use Jsonparse to parse it into a booleanArray let SerialArray = JSON.parse(sensorString.replace(/'/g, '"')); // Ensure SerialArray is an array if (Array.isArray(SerialArray)) { //Convert the array of strings to a boolean array //When a bit is 1 it becomes true, when a bit is 0 it becomes false let booleanArray = SerialArray.map(bit => bit == '1'); // Dispatch an event with booleanArray as detail let event = new CustomEvent('booleanArrayUpdated', { detail: booleanArray }); window.dispatchEvent(event); console.log(booleanArray); } else { console.error("Dit is geen Array"); } } catch (e) { console.log("json niet geparserd"); } buffer = []; } if (done) { console.log('[readLoop] DONE', done); reader.releaseLock(); break; } } } } // Sluit de poort async function disconnect() { await reader.cancel(); await port.close(); console.log("Port is closed!"); }