无法从OSX主机上的Ubuntu guest虚拟机的串口读取数据

时间:2014-01-27 00:59:17

标签: macos ubuntu serial-port virtual-machine pipe

我在OSX Mavericks主机上的VirtualBox中使用Ubuntu 12.04。我试图通过串口从Arduino读取数据。我在vm中启用了端口1,设置为: 端口号:COM1 IRQ:4个I / O端口:0x3F8端口模式:Dis连接。创建管道(未标记)端口/文件路径:/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)选择Host Pipe并勾选Create Pipe并将File Path设置为/dev/tty.submodem1411/dev/ttyS0。但是,虚拟无法启动(它停止响应,我无能为力,但强行退出) 2)选择主机设备并将文件路径设置为/dev/tty.submodem1411/dev/ttyS0,在这种情况下,“创建管道”显示为灰色。当我尝试启动虚拟机时,状态栏会显示文本“启动虚拟机”,但它也会丢失响应,并且无法以这种方式打开机器。

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

1 个答案:

答案 0 :(得分:3)

我拥有与您一样的操作系统(Ubuntu 12.04在M​​avericks上的VirtualBox VM中运行),但是我使用“正在启动的虚拟机”进入VM冻结...'使用TI Tiva C系列LaunchPad时的消息(类似于Arduino Uno)。要解决这个特殊问题:

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

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