虚拟tcp ucp有与虚拟串口类似

虚拟tcp ucp有与虚拟串口类似,第1张

这个方法在同一台电脑上使用两个vmare机虚拟linux,(在同一个vmare机上也可以建立两个串口对联,见文章末尾),建立一对虚拟串口,并虚拟串口联通,搭建出两机的串口通讯通路。适用于在没有串口硬件设备的情况下,调试串口通讯程序。(1) 确保安装了linux的vmare虚拟机的串口没被其他的程序占用。具体在fedora linux 60里面,串口可能被xen服务占用。最简单的解除方法是,在fedora 启动菜单里面有两项,第一项是默认启动xen,第二项默认关闭xen,选择从第二项启动linux即可。若系统没有提供这个选项。则首先确认xen服务在工作,再找其他办法关闭xen服务,网上可以搜到。(2) 分别在两台虚拟机上,添加串口设备,并设置。编辑第一台虚拟机,添加一个Serial Port,选择use named pipe,然后输入管道名称: \\\pipe\com_1,然后下面选择this end is the server和the other end is a virtual machine,把Yield CPU on poll勾上就可以了。 第二台虚拟机同上,尤其管道名称要一样,下面选择this end is the client其他一样。(3) 安装设置Named Pipe TCP Proxy打开Named Pipe TCP Proxy,选择Edit→New,然后设置好named pipe名称和端口号pipe设置为: \\\pipe\com_1(和vmare中名称一样) port设置为:2001(随机) , 其它默认。(4)开一个cmd窗口,输入telnet 127001 2001,如果提示attaching console,wait 就表示ok了,这个窗口不要关。这个步骤完成两个虚拟串口的虚拟连接。以上就完成了所有设置,下面来测试虚拟串口是否能正常工作:在第一台虚拟机的命令行下输入:cat /dev/ttyS0在第二台虚拟机的命令行下输入:echo 1234 >/dev/ttyS0如果第一台虚拟机的命令行下打印出1234,则说明虚拟串口通讯成功。否则重点检查步骤(1),看是否还有其他因素导致连接不通。 这个方法在同一台电脑上使用两个vmare机虚拟linux,(在同一个vmare机上也可以建立两个串口对联,见文章末尾),建立一对虚拟串口,并虚拟串口联通,搭建出两机的串口通讯通路。适用于在没有串口硬件设备的情况下,调试串口通讯程序。(1) 确保安装了linux的vmare虚拟机的串口没被其他的程序占用。具体在fedora linux 60里面,串口可能被xen服务占用。最简单的解除方法是,在fedora 启动菜单里面有两项,第一项是默认启动xen,第二项默认关闭xen,选择从第二项启动linux即可。若系统没有提供这个选项。则首先确认xen服务在工作,再找其他办法关闭xen服务,网上可以搜到。(2) 分别在两台虚拟机上,添加串口设备,并设置。编辑第一台虚拟机,添加一个Serial Port,选择use named pipe,然后输入管道名称: \\\pipe\com_1,然后下面选择this end is the server和the other end is a virtual machine,把Yield CPU on poll勾上就可以了。 第二台虚拟机同上,尤其管道名称要一样,下面选择this end is the client其他一样。(3) 安装设置Named Pipe TCP Proxy打开Named Pipe TCP Proxy,选择Edit→New,然后设置好named pipe名称和端口号pipe设置为: \\\pipe\com_1(和vmare中名称一样) port设置为:2001(随机) , 其它默认。(4)开一个cmd窗口,输入telnet 127001 2001,如果提示attaching console,wait 就表示ok了,这个窗口不要关。这个步骤完成两个虚拟串口的虚拟连接。以上就完成了所有设置,下面来测试虚拟串口是否能正常工作:在第一台虚拟机的命令行下输入:cat /dev/ttyS0在第二台虚拟机的命令行下输入:echo 1234 >/dev/ttyS0如果第一台虚拟机的命令行下打印出1234,则说明虚拟串口通讯成功。否则重点检查步骤(1),看是否还有其他因素导致连接不通。另外,以上通路也可以在一台vmare linux上建立,只需要在一台vmare上添加两个串口,设置方法同(2),经过步骤(4)之后,虚拟连接了ttyS0和ttyS1。测试方法如下:在一个命令行终端下输入:cat /dev/ttyS0在另一个命令行终端下输入:echo 1234>/dev/ttyS1如果第一个命令行终端下打印出1234,则说明通讯成功。收起

不可以的。

1、在调试程序时,可以通过虚拟串口来进行测试。

2、生成一对串口,而且相互连接,形成一个串口通信线路。

3、这样 A程序打开一个 端口1 读,B程序打开另一个 端口2 写。

简单实用的方案:

1、买2个USB-RS232转换器(大概100来元搞定),使电脑具备2个串口。两个串口之间用串行交叉电缆连接,即2-3、3-2、5-5。

2、从网上下载modbus从机模拟软件——modbus slave软件,运行时指定一个串口,仿真modbus从机。

3、运行用户开发的modbus主机程序,并指定另一个串口,这样组成了测试平台。

剩下的工作就是程序测试了。

如何开启VMware串口

先前在玩GEC2410时,有个想法,就是在linux下进行调试,由于目标板上电或复位时会发送信息给PC机的串口,这已在windows下实现过,于是想在linux下看看效果,可是当时我在linux下设好串口后,发现一点反应都没有,当时以为是自己没有安装交叉编译环境,于是昨天晚上把嵌入式 linux下的交叉编译环境装好后,心想这下应该可以拉,没想到我上电目标板,linux下的串口一直没有反应,郁闷,怎么这样呢,既然不适交叉编译环境的原因,总得有个原因吧,于是我上网搜,先前我也够笨的,怎么就不知道上网查呢,呵呵,原来是我没有把VMware的串口打开,呵呵,马上关机[关虚拟机下的系统],在VM->Setting->点击ADD,把串口加进来,呵呵设置时尽量不要用自动检测,要选中串口,反正即使你的虚拟系统启动后可以随便改的,同时要把串口设为启动时就连接拉,这样,linux下的串口在目标板上电或复位后收到和windows下一样的数据,哈哈,爽!

环境:

宿主机:Windows7 VMware71

虚拟机:Fedora12

VMware的串口:

一个虚拟机最多可以添加四个虚拟串口,有如下几个方法配置虚拟串口:

连接一个虚拟串口到宿主机的物理串口。

连接一个虚拟串口到宿主机上的一个文件。

在两个虚拟机之间建立一个直接的连接,或者将虚拟机的串口与宿主机的应用程序连接。

为虚拟机添加串口

首先要保证虚拟机处于关机(power off)状态,选择菜单中的VM -> Settings ,在Hardware标签页中点击Add按钮,在Add Hardware Wizard对话框中选择Serial Port,点击next,如图:

然后要选择Serial port type,共有三种类型:

1如果你要使用宿主机的物理串口设备,选择Use physical serial port on the host,然后点击next,选择你要使用的物理串口即可。

2如果想要将串口数据输出到一个文件,选择 Output to file,然后next,选择输出文件,该文件是一个txt文本文件。启动虚拟机后做个测试,在命令行中执行:

echo "asdf" >> /dev/ttyS0,

然后打开输出文件,即可看到串口输出的字符串asdf。

3使用named pipe可以实现两个虚拟机或虚拟机与宿主机的应用程序通过串口连接。选择Output to named pipe,点击next,进入如下界面:

输入管道名,对于windows宿主机,管道名格式为 ///pipe/ ,必须以 ///pipe/开头。

输出调试信息到宿主机上的应用程序:

第一个下拉菜单选择This end is the server或This end isthe client,在第二个下拉菜单选择The other end is an application。

输出调试信息到另一个虚拟机:

第一个下拉菜单选择This end is the server,第二个下拉菜单选择The other end is an application。

将两个虚拟机用串口连接:

在虚拟机上安装Fedora12和ubuntu1004,为两个虚拟机添加串口,

Fedora12的串口设置为:

Ubuntu1004的串口设置为:

这样设置后Fedora的串口为serial port 1,设备名为ttyS0,ubuntu的串口为serial port 2,设备名为ttyS1。

测试:

在Fedora下执行:

cat < /dev/ttyS0

在ubuntu下执行:

echo hello > /dev/ttyS1

在Fedora里可以看到收到的字符串hello,说明ubuntu发送和Fedora接收正常,可以互换后做同样的测试。

语 法

statserial[必要参数][设备]

功 能

statserial 命令:显示各个接脚的状态,常用来判断串口是否正常,Ctrl+C退出

类似命令: stat

相似命令: linux命令

执行权限: 超级用户 普通用户

命令属性: 网络通讯

参数

必要参数

-n 不循环显示

-d 十进制显示

-x 十六进制显示

选择参数

范例

范例1:显示串口状态

[root@linux ~]# statserial /dev/tty1

范例2:只显示一次串口状态

[root@linux ~]# statserial -n /dev/tty1

不可以的。 1、在调试程序时,可以通过虚拟串口来进行测试。 2、生成一对串口,而且相互连接,形成一个串口通信线路。 3、这样 A程序打开一个 端口1 读,B程序打开另一个 端口2 写。

以上就是关于虚拟tcp ucp有与虚拟串口类似全部的内容,包括:虚拟tcp ucp有与虚拟串口类似、一个串口能被两个程序同时访问吗、如何测试modbus主机程序,只有一台电脑,且电脑没有硬件的串口等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10622285.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存