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 01 00 13 00 25 0E 84 の代わりに 11 40 13 25 88 を受信します。HTerm で目的の信号を送信すると、正しい信号が得られます。その結果、ハードウェアは正常に動作しています。

間違ったコマンド を受信Google Chrome から受信した間違った信号 HTerm によって目的の modbus コマンドを送信 HTerm によって送信された目的のコマンドを HTerm によって送信されたコマンド 受信 HTerm から受け取った正しいコマンド

ここで何がうまくいかないのですか?コードをどのように調整する必要がありますか? または、Google Chrome にバグがありますか?

4

1 に答える 1