macos - 无法从 OSX 主机上的 Ubuntu 客户机的串行端口读取数据

标签 macos ubuntu serial-port virtual-machine pipe

我在 OSX Mavericks 主机上的 VirtualBox 中使用 Ubuntu 12.04。我正在尝试通过串口从 Arduino 读取数据。我在vm中启用了端口1,设置是:
端口号:COM1 IRQ:4 I/O 端口:0x3F8 端口模式:断开连接。创建管道(未勾选)端口/文件路径:/dev/tty.submodem1411

在虚拟机中,可以找到端口。当我使用 setserial 试图找到端口时,输出是:

/dev/ttyS0, UART: 16550A, Port: 0x03f8, IRQ: 4
/dev/ttyS1, UART: unknown, Port: 0x02f8, IRQ: 3
/dev/ttyS2, UART: unknown, Port: 0x03e8, IRQ: 4
/dev/ttyS3, UART: unknown, Port: 0x02e8, IRQ: 3

虽然可以找到端口,但它并没有从串口获取数据数据。我已经阅读了 virtualBox 的手册并理解这是因为我未勾选端口模式已断开连接。但是,如果选择主机设备或主机管道,我真的不知道如何正确设置文件路径。
Arduino串口被称为tty.submodem1411在主机系统中。我试过的是:
1)选择主机管道并勾选创建管道并将文件路径设置为/dev/tty.submodem1411/dev/ttyS0 .但是虚拟机无法启动(停止响应,只能强制退出)
2) 选择主机设备并将文件路径设置为/dev/tty.submodem1411/dev/ttyS0 ,在这种情况下,“创建管道”显示为灰色。当我尝试启动虚拟机时,会出现一个状态栏以及文本“正在启动虚拟机”,但它也失去了响应,并且无法以这种方式打开机器。

我已经在主机系统上安装了管道,但不知道如何在虚拟机和主机系统之间创建连接。如果有人可以提供帮助,我们将不胜感激!

最佳答案

我有与您一样的操作系统设置(Ubuntu 12.04 在 Mavericks 上的 VirtualBox VM 中运行),但在使用 TI Tiva C 系列 LaunchPad(类似于Arduino Uno)。要解决此特定问题:

  • 在运行 VM 之前连接设备并打开它。这将在/dev 中创建 USB 设备(在您的情况下为/dev/tty.submodem1411)。
  • VM Settings > Ports > Serial Ports > Port 1 , 检查 Enable Serial Port , 选择COM1作为 Port Number , 选择Host Device作为 Port Mode ,然后在 Port/File Path 中输入您的 USB 设备的路径.
  • VM 卡在“正在启动虚拟机...”的解决方法:运行一个串行端口通信程序,例如 minicom,并将其配置为使用/dev/tty.submodem1411。然后让它将初始化字符串发送到设备(minicom 中的“initialize Modem”)。如果保存此配置,您只需运行 minicom - 它会在启动时自动初始化设备。
  • 运行虚拟机。 guest 操作系统现在将启动(感谢第 3 步 - 这似乎是一个 VirtualBox 错误)。 guest 操作系统中的串行端口现在是/dev/ttyS0。

  • 但:

    以下可能与 Arduino 无关,但 FWIW,这是我为 LaunchPad 编程所做的:在 VM Settings > Ports > USB , 检查 Enable USB Controller并点击Add Filter From Device并选择您的设备。当您启动 guest 操作系统时,如果设备已经打开,您将无法访问它(您的设备将不会在 VirtualBox VM 菜单项 Devices > USB Devices 中进行检查)。只需重新启动电路板(或拔下/插入),客户操作系统现在就可以访问设备(设备将在上述菜单中检查)。现在创建了一个新的串行设备(在我的例子中,称为/dev/ttyACM0),它可用于与开发板通信。如果这样做,则不需要步骤 2 的串行端口设置(因此,不需要步骤 3 的解决方法)。如果您保留步骤 2 和 3,您应该能够使用/dev/ttyS0 和/dev/ttyACM0 与设备通信。希望这可以帮助。

    关于macos - 无法从 OSX 主机上的 Ubuntu 客户机的串行端口读取数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21371406/

    相关文章:

    swift - 是否可以在 NSPopupButton 中对项目进行分组?

    bash - Platypus 的替代品(它构建了一个 mac .app,当用户双击它时运行脚本),它在 Linux 上运行?

    macos - base64 在 Mac 中没有 -w 选项

    python - Django haystack 语法错误

    c# - 从类中的串行端口访问 WinForms 控件

    Mac OS X 上的 ruby​​ 1.9.2 + pcap

    macos - 不要在 vagrant up 命令 PHPStorm 上选择 VagrantFile

    apache - 将域请求重定向到 localhost/子文件夹

    c++ - 伪终端和串行设备之间奇怪的字符替换

    Windows 上的 Java RS-232 通信