0

我能够证明以下 JavaScript 代码不会生成所需的 Modbus 信号。

<!DOCTYPE html>
<html lang="de">
  <head>
    <meta charset="utf-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>examplepage</title>
    <script>
        
    async function start() 
    {
            // Prompt user to select any serial port.
            const port = await navigator.serial.requestPort();

            // Wait for the serial port to open.
            await port.open({ baudRate: 57600, dataBits: 8,  stopBits: 1, ParityType: "even"});

            //Übermittle Anfrage um Inhalt von Register anzufordern
            const writer = port.writable.getWriter();

            //const data = new Uint8Array([0x01, 0x03, 0x00, 0x01, 0x00, 0x02, 0x95, 0xCB]); // request for register
            const data = new Uint8Array([0x11, 0x01, 0x00, 0x13, 0x00, 0x25, 0x0E, 0x84]); 
            await writer.write(data);


            // Allow the serial port to be closed later.
            writer.releaseLock();
            // empfangen
            const reader = port.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 Uint8Array.
            console.log(value);
            }
    }
    
    if ("serial" in navigator) {
  alert("Your browser supports Web Serial API!");
}
    else {alert("Your browser does not support Web Serial API, the latest version of Google Chrome is recommended!");};
    
    </script>
  </head>
  <body>
   <button onclick="start()">Click me</button> 
  </body>
</html>

我已将相应的 COM 端口连接到计算机的另一个 COM 端口。另一方面,HTerm 正在监听。HTerm 接收 11 40 13 25 88 而不是 11 01 00 13 00 25 0E 84。如果我用 HTerm 发送所需的信号,我会得到正确的信号。因此,硬件工作正常。

接收错误 从谷歌浏览器收到的错误信号 的命令 通过 HTerm 发送所需的 modbus 命令 HTerm 发送的命令 接收 HTerm 发送的所需命令从 HTerm 收到的正确命令

这里出了什么问题?我需要如何调整我的代码?还是谷歌浏览器有错误?

4

1 回答 1

1

弗朗索瓦·博福特是对的。用 Parity 替换 ParityType 并且代码发送正确的信号。非常感谢!

于 2022-01-26T10:05:09.443 回答