串口编程之三: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 管道


猜你喜欢

转载自blog.csdn.net/zh405123507/article/details/7435130
今日推荐