跳转到内容

串口(UART)

EcuBus-Pro 支持将串口(UART)作为一级硬件设备,如同 CAN / LIN / PWM 一样。 已配置的串口设备:

  • 在项目启动时自动打开,
  • 可由脚本节点驱动(发送/接收原始字节),
  • 追踪窗口中显示所有 TX/RX 流量。

支持的硬件:

制造商协议
任何操作系统串口(USB-Serial、虚拟 COM 等)原始 UART

如果您仅需要临时、基于路径的访问而无需设备配置,也可以直接在脚本中使用 serialport npm 包——请参阅使用外部包

添加串口设备

  1. 打开设备窗口。
  2. ECUBUS 供应商下选择串口,然后点击 + 按钮。
  3. 配置设备:
    • 端口 — 操作系统串口(例如 COM7/dev/ttyUSB0)。 使用刷新重新枚举端口。
    • 波特率 — 预设值包括 1152005000001000000;可手动输入任意自定义值。
    • 数据位8 / 7 / 6 / 5
    • 停止位1 / 1.5 / 2
    • 校验 / / / 标记 / 空格
  4. 为设备取一个名称(例如 ECUBUS_Serial_0)并保存。

绑定脚本节点

网络窗口中,创建一个脚本节点,并将其通道设置为串行设备。 节点的脚本将通过设备名称发送和接收字节。

脚本 API

typescript
// 接收:触发接收(IN)和发送(OUT)的帧。
// 传入设备名称,或 `true` 监听所有串行设备。
Util.OnSerial('ECUBUS_Serial_0', (msg) => {
  // msg.dir : 'IN'(接收)| 'OUT'(发送)
  // msg.data: Buffer
  // msg.ts  : 时间戳(微秒,相对于启动时)
  if (msg.dir === 'IN') {
    console.log('rx:', msg.data.toString('hex'))
  }
})

// 发送:传入设备名称,或 `undefined` 使用节点的第一个串行通道。
Util.Init(async () => {
  await Util.writeSerial('ECUBUS_Serial_0', Buffer.from([0x01, 0x02, 0x03]))
})
方法描述
Util.OnSerial(device | true, cb)注册串行帧监听器。 cb 接收一个包含 dirdatatsSerialMessage
Util.writeSerial(device, data)写入原始字节(Buffernumber[])。 返回发送的时间戳。 传入 undefined 作为 device,使用节点的第一个串行通道。

在 Trace 中查看

打开Trace窗口——串行帧显示为Serial行,Tx表示发送的字节(OUT),Rx表示接收的字节(IN)。 使用Serial过滤器显示/隐藏它们。

示例

一个可随时运行的示例捆绑在示例列表中的Serial下(resources/examples/serial):它配置一个串行设备,使用Util.writeSerial定期发送帧,并使用Util.OnSerial记录接收到的数据。