簡體   English   中英

谷歌瀏覽器 Web 串行 API:意外行為

[英]Google Chrome Web Serial API: unexpected behaviour

我能夠證明以下 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 收到的正確命令

這里出了什么問題? 我需要如何調整我的代碼? 還是谷歌瀏覽器有錯誤?

弗朗索瓦·博福特是對的。 用 Parity 替換 ParityType 並且代碼發送正確的信號。 非常感謝!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM