1.前言
折腾了许久,网上很多方法都试过,最终还是无法在 VM 虚拟机中使用串口,无奈只得放弃,但心里还是有一种倔劲.
2.设置方式
多次苦苦寻找, 主要存在以下两种配置方式:
- 1.虚拟机识别串口
★打开 VM10.0 虚拟机软件,但不启动 Linux 系统
★VM -> Settings -> (左下角)Add -> Serial Port
★选择 use physical serial port on the host
★选择在 Window 下的串口编号, 比如 COM3
★选择 Connected at power on 完成后启动虚拟机系统。
★查看虚拟机右下角是否串口已经连接上,没连接上就手动连接然后在 linux 程序中使用 ttyS0, 进行通讯. 若不行,则尝试一下 ttyS[0-3]
- 2.虚拟机识别 USB 转串口
★首先 windows 能够识别 USB 转串口(可能需要装驱动)。
★设置虚拟机:VM -> Removable devices -> Future Devices USB Serial Converter -> Connect (Disconnect from Host) 即可
★若步骤二中没有出现 USB 选项, 则关闭虚拟机中的 linux 系统, 添加过程与配置虚拟机识别串口的添加过程一样.
注意:需要确保 VMware USB Arbitration Service 服务是启动的VMware USB Arbitration Service 服务启动步骤如下:
★点击Windows下的开始->运行,在对话框中输入“services.msc”,点击确定,打开Windows服务管理器。
★在服务列表中选中“VMware USB Arbitration Service”,双击打开属性对话框,在选中“启动”项就可以启动VMware USB Arbitration Service服务了
★关闭VMware软件,再重新打开,启动虚拟机
查看虚拟机 Linux 系统的 /dev 目录,如果有 ttyUSBx 则说明成功了!若是首个 USB 转串口,则显示为 ttyUSB0, 接着在 Linux 程序中打开设备 ttyUSB0,进行串口通讯。
3. 解决过程
- 博主首先安装的是 VM9.0 版本,尝试了以上第一种识别串口的配置方式,linux 程序打开 ttyS0 - ttyS3 的其中一个, 运行程序,始终没有任何通信数据。
- 然后使用了直接装的 Ubuntu linux 系统的笔记本来进行测试,插上 USB 转串口的工具,在 /dev/ 目录下, 发现增加了 ttyUSB0 设备,linux 程序中打开该设备进行读写,发现能够通信。
- 再次返回到 VM 虚拟机上,尝试第二种识别 USB 转串口的设置方式,却一直无法成功连接,原因在于连接时总是报出如下错误:
the device is currently in use!
但实际上根本没有哪个软件在占用.
在网上搜索了一下,发现很多网友也遇见过,可是都没有一个办法来解决, 后面无意之间发现如下博文:
http://forum.ubuntu.org.cn/viewtopic.php?p=3138685 道出了连接 ttyUSB0 时出现连接错误时的解决之道,
把VM虚拟机升级到 10.0 即以上就可以了,VM9.0 有 Bug。
后面我把VM虚拟机从 9.0 升级到 10.0, 果断解决了该问题,尼玛真坑啦!
最后使用 ttyUSB0 进行串口通讯,经测试通讯成功。 - 看见 ttyUSB0 能够进行通讯了,后又折回到 ttyS0,经验证, 也成功使得 VM 虚拟机运行的 linux 系统中的程序与 Windows 系统下的串口进行了通信.
- 至此,完美解决了 VMware 虚拟机 Linux 系统的串口使用的问题。
4. 结语
总观整个摸索过程,可以用 “峰回路转,总有出路” 来形容了。不过总归还是解决了,其中滋味,摸索过才能体会到,也在摸索中学到了很多东西。