socat使用

Electron 使用虚拟串口进行调试


✅ 一、目标:创建两个虚拟串口并连接调试

例如创建 /dev/ttys000 <--> /dev/ttys001,一端由 Electron 打开,另一端用终端或串口工具发数据。


✅ 二、安装并使用虚拟串口驱动工具

macOS 本身不支持虚拟串口对口(loopback)功能,需要使用 第三方工具 来模拟虚拟串口对。

推荐工具:socat

安装 socat(如未安装):

brew install socat


✅ 三、使用 socat 创建虚拟串口对

运行以下命令(新开终端窗口):

socat -d -d pty,raw,echo=0 pty,raw,echo=0

输出示例:

2025/07/08 11:36:00 socat[12345] N PTY is /dev/ttys007
2025/07/08 11:36:00 socat[12345] N PTY is /dev/ttys008
2025/07/08 11:36:00 socat[12345] N starting data transfer loop

  • /dev/ttys007

  • /dev/ttys008

特点:它们互相连通,你从一端发出的数据会在另一端收到。


✅ 四、Electron 中使用 serialport 打开其中一个端口

const { SerialPort } = require('serialport')

const port = new SerialPort({
  path: '/dev/ttys007', // 你根据上面输出选择一个
  baudRate: 9600
})

port.on('open', () => {
  console.log('Port open')
})

port.on('data', data => {
  console.log('Received:', data.toString())
})


✅ 五、另一端用 screen 或终端发送测试数据

你可以在另一个终端中运行:

screen /dev/ttys008 9600

然后输入文字,Electron 端就会收到!

你也可以反过来,Electron 写 /dev/ttys008screen/dev/ttys007


✅ 六、注意事项

问题 解决方案
Electron 无法打开串口 权限不足,请运行时加 sudo(或将当前用户加入 tty 组)
Resource busy 确保你只在一个程序里打开每个端口
多次创建 socat 每次执行 socat 都会新建一对端口,使用前先关闭旧进程(或用 PID 杀掉)

✅ 七、进阶模拟方式

写入虚拟串口进行测试

echo "Hello from virtual device" > /dev/ttys008


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容