Acabamos de cambiar de básculas basadas en USB HID a básculas basadas en serie. Tengo problemas para recuperar datos usando javascript de estas escalas.
(async () => { const ports=await navigator.serial.getPorts(); const myScale=ports[0]; await myScale.open({ baudRate: 9600,dataBits:8,stopBits: 1, parity: `none`,flowControl: `none`}); console.log(`myScale: `, myScale); const textDecoder = new TextDecoderStream(); const readableStreamClosed = myScale.readable.pipeTo(textDecoder.writable); const reader = textDecoder.readable.getReader(); // Listen to data coming from the serial device. while (true) { const { value, done } = await reader.read(); if (done) { // Allow the serial port to be closed later. reader.releaseLock(); break; } // value is a string. console.log(value); } })();myScale se crea correctamente:
myScale: SerialPort {onconnect: null, ondisconnect: null, readable: ReadableStream, writable: WritableStream} onconnect: null ondisconnect: null readable: ReadableStream locked: false [[Prototype]]: ReadableStream writable: WritableStream locked: false [[Prototype]]: WritableStream [[Prototype]]: SerialPort close: ƒ close() getInfo: ƒ getInfo() getSignals: ƒ getSignals() onconnect: (...) ondisconnect: (...) open: ƒ open() readable: (...) setSignals: ƒ setSignals() writable: (...) constructor: ƒ SerialPort() Symbol(Symbol.toStringTag): "SerialPort" get onconnect: ƒ onconnect() set onconnect: ƒ onconnect() get ondisconnect: ƒ ondisconnect() set ondisconnect: ƒ ondisconnect() get readable: ƒ readable() get writable: ƒ writable() [[Prototype]]: EventTargetPero todo se detiene al intentar leer la entrada de la báscula:
const { value, done } = await reader.read();¿Qué estoy haciendo mal?
Argh... A diferencia de las básculas basadas en HID anteriores, que daban una lectura continua, el usuario debe presionar el botón "Imprimir" en esta báscula para enviar los datos.