Puedo leer y escribir en un puerto serie por separado con dos botones separados (hacer clic). Ahora trato de escribir en el puerto serie, cuando se lee un valor ("Envíe el archivo") desde el mismo puerto con un solo clic. A continuación se muestra mi código que muestra errores.
TypeError: no se pudo ejecutar 'escribir' en 'UnderlyingSinkBase': el valor proporcionado no es del tipo '(ArrayBuffer o ArrayBufferView)'.
TypeError no capturado (en promesa): no se pudo ejecutar 'pipeTo' en 'ReadableStream': no se puede canalizar una secuencia bloqueada.
navigator.serial.requestPort().then(async (port) => { await port.open({ baudRate: 115200 }); // Reading port // while (port.readable) { const textDecoder = new TextDecoderStream(); const readableStreamClosed = port.readable.pipeTo(textDecoder.writable); const reader = textDecoder.readable.getReader(); try { while (true) { const { value, done } = await reader.read(); if (done) { break; } if (value) { document.getElementById('log').innerHTML += value + "<br/>"; if(value.includes('Please send the file')){ var arr=[]; // Getting file to be sent // var oReq = new XMLHttpRequest(); oReq.open("GET", "uart_rx_test2.bin", true); oReq.responseType = "arraybuffer"; oReq.onload = function (oEvent) { var arrayBuffer = oReq.response; // Note: not oReq.responseText if (arrayBuffer) { var byteArray = new Uint8Array(arrayBuffer); arr = byteArray; } }; oReq.send(null);// Escribiendo al puerto //
const writer = port.writable.getWriter(); await writer.write(arr); } } } } catch (error) { console.log(error) } } }).catch((e) => { console.log(e) });