Javascript和串口通讯

时间:2018-06-21 06:55:41

标签: javascript serial-port webusb

我正在进行串行端口通信。要求是使用javascript通过串行端口与硬件进行通信。我正在寻找Chrome WEB-USB-API

使用此API,我能够连接到设备。现在我想向连接的设备发送命令,有人可以指导我吗?

device.controlTransferOut({requestType: 'class',recipient:'interface',request: 0x22,value: 0x01,index: 0x02})

上面的代码在web-usb-api文档页面上给出,但无法了解如何通过它发送任何命令。

任何与javascript和串行端口通信有关的指南都将非常有帮助。

1 个答案:

答案 0 :(得分:2)

在此情况下,有必要具有USB协议和USB CDC-ACM(“串行”的奇特名称)协议的某些背景知识:控制传输发送和接收少量数据,通常用于启用和禁用设备功能。上面代码段中发送的控制传输来自USB CDC-ACM协议,它是SET_CONTROL_LINE_STATE命令。当发送到实际的USB串行适配器时,它告诉适配器在串行线上声明DTR信号,这使所连接的串行设备能够检测到主机已准备好接收数据。在仅模拟USB串行适配器的设备中(如本示例所写的那样),仅表示所有主机软件已初始化,并且已准备好用于设备发送数据。

现在,有了适当的背景,就应该清楚,这不是您将自己的命令发送到设备的方式。该设备期望它们作为虚拟串行端口上的数据发送,而不是作为其状态的控制信号发送。为此,您想使用transferOut()函数。它接受两个参数,第一个是发送数据的端点号,第二个是数据本身。在博客文章的示例中,仅使用transferIn()函数。在此示例中,它从端点5读取64个字节。虽然本文中未显示,但用于将数据发送回设备的端点是端点4。对于您自己的设备,应检查USB设备描述符以确定适当的端点。用于发送和接收数据。这些描述符在USBDevice对象的configurations属性下可用。