Google Chrome Web Serial API:如何配置 Modbus RTU 的参数?

Posted

技术标签:

【中文标题】Google Chrome Web Serial API:如何配置 Modbus RTU 的参数?【英文标题】:Google Chrome Web Serial API: How do I configure the parameters for Modbus RTU? 【发布时间】:2021-12-30 04:34:44 【问题描述】:

我打算使用 Google Chrome 中的 Web Serial API 来寻址具有 Modbus RTU 的设备。

必须指定波特率才能开始设置 - 因此这已经完成。

以下链接指向描述如何设置参数的文档部分: 古格 https://wicg.github.io/serial/#serialoptions-dictionary

我不明白语法解释。 javascript 不知道“字典”。

感谢您的帮助

【问题讨论】:

字典是一个对象(如果您想了解字典->对象映射的完整详细信息,请参阅example here 或Web IDL Standard)。 【参考方案1】:

正如https://web.dev/serial/#open-port 所解释的,一旦你有一个SerialPort 对象,以所需的波特率调用port.open() 将打开串行端口。 baudRate 字典成员指定通过串行线路发送数据的速度。它以比特每秒 (bps) 为单位表示。

检查您设备的文档以获取正确的值,因为如果指定不正确,您发送和接收的所有数据都将是乱码。对于一些模拟串行端口的 USB 和蓝牙设备,此值可以安全地设置为任何值,因为它会被模拟忽略。

// Prompt user to select any serial port.
const port = await navigator.serial.requestPort();

// Wait for the serial port to open.
await port.open( baudRate: 9600 );

您还可以在打开串行端口时指定其他选项。这些选项是可选的,并且具有方便的默认值。

dataBits:每帧的数据位数(7 或 8)。 stopBits:帧末尾的停止位数量(1 或 2)。 parity:奇偶校验模式(“无”、“偶数”或“奇数”)。 bufferSize:应该创建的读写缓冲区的大小(必须小于 16MB)。 flowControl:流控模式(“无”或“硬件”)。
// Wait for the serial port to open with more options.
await port.open(
  baudRate: 9600,
  dataBits: 8,
  stopBits: 1,
  parity: "none",
  bufferSize: 255,
  flowControl: "none",
);

【讨论】:

我的问题是我不清楚除了波特率之外如何指定其他参数。所以这是一个微不足道的语法问题。我发现了一种在 Visual Studio 中没有红色下划线并且不会在浏览器控制台中生成错误消息的方法。 我已经编辑了答案以包含更多选项。【参考方案2】:
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: 9600, dataBits: 8,  stopBits: 2, ParityType: "none");

【讨论】:

你基本上只是从接受的答案中获取了一些代码 我错了。对不公平的指控感到抱歉。我看到已接受的答案已被编辑以包含您的建议。但是,这仍然不是一个好的答案。主要是因为它几乎是一个没有解释的代码答案。

以上是关于Google Chrome Web Serial API:如何配置 Modbus RTU 的参数?的主要内容,如果未能解决你的问题,请参考以下文章

在 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 上失败