`
bcyy
  • 浏览: 1823432 次
文章分类
社区版块
存档分类
最新评论

串口编程之三:VMware虚拟机下的串口调试

 
阅读更多

Windows为宿主机,VMware虚拟机中安装了 Linux,也可以在 Linux 下编写程序对串口发送消息。原理同样是利用虚拟串口软件VSPM 将COM3与COM4连接后通过串口调试器捕获。下面会附上Linux下串口程序的C代码示例。


VSPM的使用和下载参照《串口编程之一:虚拟串口VSPM解决串口编程问题http://blog.csdn.net/zh405123507/article/details/7424877

串口编程的VB代码请参照《串口编程之二:VB发送串口数据http://blog.csdn.net/zh405123507/article/details/7424889


以 Ubuntu 命令行模式为例,在 VMware 下配置虚拟机的硬件。选择添加串口硬件,并选择使用本机的物理串口。根据给出的串口列表进行选择吧。(好像就只有COM3可选)




打开VSPM文件夹下的“虚拟串口互联插件”目录,将vspm.ini 拷贝到VSPM主目录并覆盖原来的配置文件,目的是使 VSPM 在下次启动时将 COM3 和 COM4 相连,这样在Windows下就可以利用程序捕获 COM4 的输出,也就是虚拟机 Linux 中 COM3 的输入。


如果你给虚拟机分配的串口不是COM3也没关系。vspm.ini 文件的最后四行如下:


COM3=127.0.0.1:7102;127.0.0.1:7101;Active;UDP_BC
COM4=127.0.0.1:7101;127.0.0.1:7102;Active;UDP_BC
COM5=127.0.0.1:7202;127.0.0.1:7201;Active;UDP_BC
COM6=127.0.0.1:7201;127.0.0.1:7202;Active;UDP_BC

这四个端口是两两相连的(第一行和第二行相连,第三行和第四行相连)。所以可以将COM后面的数字进行修改已达到你需要的效果。


如果设置好 VMware 和 VSPM 后就可以启动虚拟机开始测试啦。现在分别启动VMware下的Linux和Windows下的串口调试器。




现在,在Ubuntu 输入命令(或其他Linux控制台,命令是通用的)

echo hello > /dev/ttyS0

如果串口调试器的接收窗口有显示“hello”说明链接成功,可以编写程序来对VMware Linux的虚拟串口进行调试了。




下面是一个简单的Linux C串口程序:

#include <termios.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <fcntl.h>
#include <sys/signal.h>

#define FALSE 0
#define TRUE 1

int main()
{
	volatile int STOP=FALSE;
	volatile int fd;

	/*类似读写文件的方式打开串口*/
	fd = open( "/dev/ttyS1", O_RDWR);
	if (-1 == fd){
  		perror(" 提示错误!");
	}

	/*设置串口参数*/
	struct termios Opt;
	tcgetattr(fd, &Opt);
	cfsetispeed(&Opt,B19200); //接收波特率
	cfsetospeed(&Opt,B19200); //发送波特率
	tcsetattr(fd,1,&Opt);

	Opt.c_cflag &= ~PARENB;
	Opt.c_cflag &= ~CSTOPB;
	Opt.c_cflag &= ~CSIZE;
	Opt.c_cflag |= ~CS8;

	
	/*开始向fd送数据*/
	int c='0';
	printf("send data\n");
	while (STOP==FALSE) /* modem input handler */
	{
 		c++;
  		c %= 255;
  		write(fd,&c,1); /* stdout */
  		usleep(100000);
	}

	
	return 0;
}

/*需要另外编写函数捕获键盘输入使STOP == FALSE,发送停止*/

编译后,程序输出如下:


===================================

本文来自:http://blog.csdn.net/zh405123507

tags:串口 串口编程 VMware Linux 管道


分享到:
评论

相关推荐

    LinuxLED驱动实验-控制发光二极管亮灭(Vmware虚拟机+S5P6818开发板)

    报告包含串口调试工具的使用、Linux编程、开发板的使用、U盘挂载、Makefile文件的编写、实验总结。 实验内容: 1.自动创建节点文件。 2.红灯亮一秒-----&gt;绿灯亮一秒-----&gt;蓝灯亮一秒-----&gt;全部亮一秒,循环往复。 3....

    嵌入式课件

    11.2.3 VMware虚拟机环境 11.3 Linux的使用 11.3.1 Linux基本命令 11.3.2 vi编辑器的使用 11.3.3 gcc编译器 11.3.4 make工具和Makefile文件 11.4 Linux内核结构 11.4.1核心子系统 11.4.2设备驱动程序 11.5 Linux目录...

    寒江独钓-Windows内核安全编程(高清完整版).part4

     本书从Windows内核编程出发,全面系统地介绍了串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编程技术,以及基于这些技术实现的密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙等信息安全软件的...

    寒江独钓-Windows内核安全编程(高清完整版).part1

     本书从Windows内核编程出发,全面系统地介绍了串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编程技术,以及基于这些技术实现的密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙等信息安全软件的...

    寒江独钓-Windows内核安全编程(高清完整版).part7

     本书从Windows内核编程出发,全面系统地介绍了串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编程技术,以及基于这些技术实现的密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙等信息安全软件的...

    寒江独钓-Windows内核安全编程(高清完整版).part5

     本书从Windows内核编程出发,全面系统地介绍了串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编程技术,以及基于这些技术实现的密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙等信息安全软件的...

    Windows驱动开发技术详解的光盘-part1

     从Windows最基本的两类驱动程序的编译、安装、调试入手讲解,非常容易上手,用实例详细讲解PCI、USB、虚拟串口、虚拟摄像头、SDIO等驱动程序的开发,归纳了多种调试驱动程序的高级技巧,如用WinDBG和VMWARE软件对...

    寒江独钓-Windows内核安全编程(高清完整版).part6

     本书从Windows内核编程出发,全面系统地介绍了串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编程技术,以及基于这些技术实现的密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙等信息安全软件的...

    windows驱动开发技术详解-part2

    用WinDBG和VMWARE软件对驱动进行源码级调试,深入Windows操作系统的底层和内核,透析Windows驱动 开发的本质。 本书是作者结合教学和科研实践经验编写而成的,不仅详细介绍了Windows内核原理,而且介绍了编程技 巧...

    寒江独钓-Windows内核安全编程(高清完整版).part3

     本书从Windows内核编程出发,全面系统地介绍了串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编程技术,以及基于这些技术实现的密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙等信息安全软件的...

    寒江独钓-Windows内核安全编程(高清完整版).part2

     本书从Windows内核编程出发,全面系统地介绍了串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编程技术,以及基于这些技术实现的密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙等信息安全软件的...

    Windows内核安全与驱动开发光盘源码

    1.3.4 设置VMware的管道虚拟串口 11 1.3.5 设置Windows内核符号表 12 1.3.6 实战调试first 13 第2章 内核编程环境及其特殊性 16 2.1 内核编程的环境 16 2.1.1 隔离的应用程序 16 2.1.2 共享的内核空间 17 ...

    Windows内核安全驱动开发(随书光盘)

    1.3.4 设置VMware的管道虚拟串口 11 1.3.5 设置Windows内核符号表 12 1.3.6 实战调试first 13 第2章 内核编程环境及其特殊性 16 2.1 内核编程的环境 16 2.1.1 隔离的应用程序 16 2.1.2 共享的内核空间 17 ...

Global site tag (gtag.js) - Google Analytics