在 JavaScript 中读取基于 USB 串口的秤

问题描述 投票:0回答:1

我们刚刚从基于 USB HID 的秤切换到基于串行的秤。我在使用 JavaScript 从这些秤中检索数据时遇到问题。

(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
正确创建:

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]]: EventTarget

但是当尝试从秤读取输入时,一切都会停止:

const { value, done } = await reader.read();

我做错了什么?

javascript serial-port
1个回答
1
投票

Argh...与之前的基于 HID 的秤不同,它可以连续读数,用户需要按此秤上的“打印”按钮才能发送数据。

© www.soinside.com 2019 - 2024. All rights reserved.