此文适用于Ubuntu虚拟机实现串口通讯,能够在虚拟机上运行程序,直接将windows下的串口映射到虚拟机上便可。在网上找了半天,没有找到合适的教程,并且网上的版本比较老。加之本身摸索,现将过程整理以下,便于往后复习与其余人使用。linux
首先个人VirtualBox的版本为5.2.16,目前已经支持了四个串口了(网上的好多教程还只支持两个)。言归正传:编程
一、关闭虚拟机,打开VirtualBox的设置菜单,找到串口选项,以下图所示:windows
二、目前只支持四个串口,确定够通常程序使用了。选中启用串口选项,这样就能够配置串口信息了,下面将个选项详细说明下:spa
串口编号:须要映射的串口号(此为Windows下串口设备链接的串口号)3d
端口模式:这里有五个选项,分别说明下:blog
未链接:建立串口,可是没有创建物理链接教程
主机管道:把串口设置成主机上的一个管道pipeip
主机设备:串口对应主机上的设备,例如此处COM3,那么对应到Ubuntu上为/dev/ttyS2,这里我使用的这种模式。这样就能够在虚拟机上访问这个串口名实现串口通讯了。get
裸文件:将串口输出,放到一个文件里面去。具体设置,就很简单,直接将文件路径填上就能够了;虚拟机
TCP:这个没有细研究,应该是经过ip:port的形式访问串口吧。
这里主要选择了主机设备,这样就能够在虚拟机上访问对应的串口了。
启动虚拟机,而后
能够经过命令查看linux上串口状态:
sudo setserial -g /dev/ttyS*(如果没有setserial命令根据提示安装就行)
这里能够看出串口设备的状态,此时ttyS2对应的状态以下:
其余串口都为unknown,即不可用,只有ttyS2为可用串口,这样咱们就能够经过操做文件那样open,read,write来操做这个串口了。须要调用tcgetattr,tcsetattr等设置串口的属性,这里不介绍串口使用。
最后:须要注意的是,这里有可能由于权限问题open串口失败,这里要检查下是否有相应的权限。直接sudo chmod 777 /dev/ttyS2修改下权限,或者sudo方式运行应用程序便可。