本文的目的是实现windows系统和虚拟机上安装的ubuntu通过串口进行通信。为了直观观测串口收发数据的内容,需要在windows系统和ubuntu系统使用串口助手来进行监听。windows系统端用的监听工具是串口助手SSCOM,ubuntu系统端使用的串口助手是CuteCom。
ubuntu端CuteCom发送字符"1"和"2",windows端SSCOM可以接收到这两个字符。再通过windows端SSCOM发送字符串"button_up"和"button_down",ubuntu端的CuteCom同样可以接收到这两个字符串。这样就实现了windows系统和ubuntu系统的串口通信。
本例用到的虚拟机VMware版本为17.5.0,ubuntu版本为22.04.3,虚拟串口vspd版本为7.2,windows系统串口助手SSCOM版本V5.13.1,ubuntu系统串口助手为CuteCom版本为0.30.3。
本文推荐了虚拟机下载安装、在虚拟机上安装ubuntu系统教程的博文链接。vspd和SSCOM的下载安装比较简单,网上资料也比较多,大家可以自行搜索。
目录
八、windows系统SSCOM和ubuntu系统CuteCom进行通信
一、什么是虚拟机
虚拟机(Virtual Machine)指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离环境中的完整计算机系统。在实体计算机中能够完成的工作在虚拟机中都能够实现。在计算机中创建虚拟机时,需要将实体机的部分硬盘和内存容量作为虚拟机的硬盘和内存容量。每个虚拟机都有独立的CMOS、硬盘和操作系统,可以像使用实体机一样对虚拟机进行操作。
简单的说,虚拟机就是在windows系统上安装的一个仿真软件,这个软件虚拟仿真出的另外一台独立的电脑,windows所在的实体机也叫宿主机,虚拟的这台电脑叫虚拟机,这台虚拟机和真实的电脑一样,可以安装操作系统,也可以在操作系统里安装软件。本文在虚拟机里安装的操作系统是ubuntu。
二、在windows系统安装虚拟机
操作步骤可参考以下链接博文:
Vmware下载安装教程(非常详细)从零基础入门到精通,看完这一篇就够了_vmware安装教程-CSDN博客
三、在虚拟机上安装Ubuntu
操作步骤可参考以下链接博文:
Ubuntu系统下载及安装教程_ubuntu下载-CSDN博客
注意:如果下载的ubuntu文件为iso格式,那么可以省略此博文的第2、3两步。
四、在windows系统安装虚拟串口vspd
操作步骤略。
五、在windows系统配置vspd虚拟串口
操作步骤可参考以下链接博文的第一步"配置vspd虚拟串口":
利用proteus实现串口助手和arduino Mega 2560的串口通信-CSDN博客
本例添加的串口号为COM1和COM2。
六、在虚拟机上添加虚拟串口
要想让宿主机的windows系统和虚拟机的ubuntu系统进行串口通信,就需要在宿主机和虚拟机分别配置虚拟串口,并且需要把两个虚拟串口关联起来。
上边第四步和第五步实现了在宿主机安装配置虚拟串口,虚拟机上已经带有虚拟串口,不用另外安装软件,只需要添加即可。宿主机配置的虚拟串口在虚拟机上是可以检测到的,所以可以把虚拟机上的虚拟串口和宿主机的虚拟串口关联起来。
下边介绍关联两个系统的虚拟串口的步骤:
1、在虚拟机上添加虚拟串口
虚拟机安装完ubuntu,默认的设备里是没有虚拟串口的,需要在ubuntu处于关机的状态下,单击"编辑虚拟机设置"来进行添加,如下图所示。

在"虚拟机设置"对话框里选择"硬件"标签,然后单击"添加"按钮。

在"添加硬件向导"对话框中选择"串行端口",然后单击"完成"按钮。

2、关联虚拟机和宿主机的串口
在"虚拟机设置"对话框,可以看到硬件列表里已经成功添加了一个串行端口,在右侧"使用物理串行端口"下侧的下拉列表框中选择COM2,然后点击"确定"按钮。COM1和COM2是在宿主机windows系统下创建的,见上边第五步。

此时在ubuntu界面设备列表里,也可以看到一个串行端口,鼠标移动到这里,可以显示"正在使用端口 COM2",关联成功。

3、连接虚拟机上的虚拟串口
单击"开启此虚拟机"启动ubuntu系统,在ubuntu界面右下角有一个任务栏,有虚拟串口的图标,如下图所示。

鼠标右键点击这个图标,在弹出的菜单里有"连接"或者的"断开连接"的选项,单击即可完成相应的操作。串口连接后图标下侧会出现一个小绿点,断开时没有小绿点。鼠标移动到这个图标上,会显示"串行端口:正在使用端口 COM2"

七、在ubuntu系统安装配置串口助手
本例安装的串口助手为CuteCom,安装需要在终端命令窗口来操作。
1、调出终端命令行窗口
打开终端命令行窗口的操作步骤:单击"显示应用程序"图标->单击"终端"图标即可。

调出终端命令行窗口,如下图所示。

2、安装CuteCom
在命令行输入:sudo apt-get install cutecom
安装过程如下图所示。

安装完成后,单击"显示应用程序"图标->应用程序最后一项就是CuteCom,单击"终端"图标即可打开这个软件。应用程序图标比较多,一页放不下,可以上下滚动滚轮进行翻页。

3、打开CuteCom
CuteCom打开后的界面如下图所示。

4、配置CuteCom
(1)设置串口参数
在Device选择/dev/ttyS0,然后单击"Settings"按钮。

在Settings设置界面,设置Baudrate(波特率)为9600,然后单击"Open"按钮,连接串口。

(2)打开串口使用权限
如果单击"Open"后出现下图所示报错信息,"Permission denied"意思是ttyS0串口未授权,所以需要在终端命令行进行授权。
授权的操作步骤:
在终端命令行输入:sudo chmod 777 /dev/ttyS0,然后回车。这行命令的作用是开放串口ttyS0的使用权限。
执行命令前需要输入用户登录密码,然后回车即可完成设置。注意,此时输入密码时不显示输入内容,输完密码后直接回车即可。
完成串口授权后,再单击cutecom窗口的"open"按钮,就可以打开ttyS0串口了。

5、CuteCom功能分区
CuteCom界面如下图所示,在"Input"后边的编辑框输入要发送的内容,然后回车,即可完成发送。发送的内容在"Input"上侧的文本框显示,"Input"下侧的文本框用来显示接收到的内容。

6、ubuntu串口命名规律
本文在设备里只添加了一个虚拟串口,所以Device里只有一个ttyS0,如果添加了多个虚拟串口,那命名有什么样的规律呢?ubuntu串口的命名规律为:ttyS0,ttyS1,ttyS2......,在设备列表中名称对应为:串行端口,串行端口2,串行端口3......,如下图所示。

八、windows系统SSCOM和ubuntu系统CuteCom进行通信
windows系统SSCOM串口助手端口号设置为COM1,波特率也设置为9600,然后单击"打开串口"按钮。
在CuteCom的Input输入框内输入字符"1",然后回车,可以看到在SSCOM的接收框内也显示收到了字符"1"。

在CuteCom的Input输入框内输入字符"2",然后回车,可以看到在SSCOM的接收框内也显示收到了字符"2"。

在SSCOM的发送框内输入字符串"button_up",然后回车,可以看到在CuteCom的接收框内也显示收到了字符串"button_up"。

在SSCOM的发送框内输入字符串"button_down",然后回车,可以看到在CuteCom的接收框内也显示收到了字符串"button_down"。

九、结论
通过以上操作,可以看到在宿主机系统上安装的虚拟串口,能够为宿主机上安装的虚拟机所共用,因此虚拟机上安装的ubuntu系统就可以通过这些虚拟串口实现与windows系统的通信。