Google Chrome Web Serial API:如何使用十六进制代码寻址 Modbus 设备?

Posted

技术标签:

【中文标题】Google Chrome Web Serial API:如何使用十六进制代码寻址 Modbus 设备?【英文标题】:Google Chrome Web Serial API: How do I address a Modbus device with a hex code? 【发布时间】:2022-01-03 19:55:54 【问题描述】:

我打算通过 Google Chrome 中内置的 Web Serial API 使用 Modbus 来寻址设备。我想用十六进制代码寻址我的设备。下面的截图证明我的设备可以使用这样的工具成功寻址。 因此,该接口使用以下十六进制值寻址:01 03 00 01 00 02 95 CB

我现在的问题是。 Tutorial 仅显示如何将接口寻址为 Uint8Array 或 Text。如何使用 HEX 代码寻址接口?

感谢您的帮助

【问题讨论】:

不太了解您的问题; Uint8Array 是一个 8 位无符号整数数组;你如何设置这个(使用十六进制、十进制、八进制等)与最终结果无关。例如Uint8Array([0x01, 0x03, 0x00, 0x01, 0x00, 0x02, 0x95, 0xCB]). 【参考方案1】:

如https://developer.mozilla.org/en-US/docs/Web/javascript/Reference/Global_Objects/Uint8Array 中所示,Uint8Array 类型数组表示一个 8 位无符号整数数组。

在 JavaScript 中,0x 用于指示所有后续字符应解释为十六进制(以 16 为基数的数字系统)。

因此,您只需要以下内容:

const writer = port.writable.getWriter();

const data = new Uint8Array([0x01, 0x03, 0x00, 0x01, 0x00, 0x02, 0x95, 0xCB]);
await writer.write(data);

【讨论】:

以上是关于Google Chrome Web Serial API:如何使用十六进制代码寻址 Modbus 设备?的主要内容,如果未能解决你的问题,请参考以下文章

在 Chrome 上的 Web Serial API 中获取连接设备的名称

什么是“必须处理用户手势才能显示权限请求”。 Chrome Web Serial API 中的错误消息?

Install Google Chrome Web Browser on Ubuntu 18.04

在 Chrome 中打开 Sans Google Web 字体渲染

Google Web 字体无法在 iOS 版 Chrome 中加载

Flutter Web:google_sign_in_web:适用于桌面和 iOS。在 Android Chrome 上失败