前期准备
- 学习 Web Serial API
- 下载串口模拟工具 VSPD,用于建立虚拟串口对
- 下载串口调试精灵,用于调试,包括打开、关闭串口,发送、接收数据等
- 编写 js 代码,读取串口数据
资源链接
代码示例
检查浏览器是否支持
只有浏览器支持 Web Serial API 才能通过 JavaScript 代码访问串口设备。要检查是否支持 Web Serial API,请使用:
1 | if ("serial" in navigator) { |
打开串行端口
Web Serial API 在设计上是异步的。这可以防止网站 UI 在等待输入时阻塞。要打开串行端口,首先访问一个 SerialPort 对象。为此,可以通过调用 navigator.serial.requestPort()
以响应用户手势(例如触摸或鼠标单击)来提示用户选择单个串行端口,或者从返回的 navigator.serial.getPorts()
中选择一个网站已被授予访问权限的串行端口列表。
1 | document.querySelector('button').addEventListener('click', async () => { |
1 | // 获取用户之前授予网站访问权限的所有串行端口。 |
1 | // 提示用户选择任意串口。 |
还可以在打开串行端口时指定以下任何选项。这些选项是可选的,查看默认值。
dataBits
: 每帧的数据位数(7 或 8)。stopBits
: 帧末尾的停止位数(1 或 2)。parity
: 奇偶校验模式("none"
,"even"
或者"odd"
)。bufferSize
: 应创建的读写缓冲区的大小(必须小于 16MB)。flowControl
:流量控制模式("none"
或"hardware"
)。
地磅读数代码示例
1 | var $ = window.$; |
chrome浏览器配置在http协议使用web串行api
Web串行Api需要域是HTTPS协议的,否则该api被Chrome屏蔽,无法被调用。仅在本地localhost调试开发时可以使用http域,Chrome浏览器会暴露该api。
可以通过配置Chrome浏览器解除这个限制,需要配置两个地方:
- 打开
chrome://flags/
,设置Insecure origins treated as secure
为Enabeld
,填入要配置的域名http://192.168.80.53:9000
- Enable Bluetooth Serial Port Profile in Serial API为开启蓝牙设备串行api。
- 在桌面
Google Chrome
图标的快捷方式上,鼠标右键点属性
,修改目标
字段加上启动参数,修改后为"C:\Program Files\Google\Chrome\Application\chrome.exe" --unsafely-treat-insecure-origin-as-secure="http://192.168.80.53:9000"