繁体   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