日期:2014-05-16  浏览次数:20705 次

请教虚拟机vmware下串口通信的问题
请教虚拟机vmware下串口通信的问题


我在虚拟机vmware下安了linux,用了串口,  
arm写了一个写串口程序,linux下写了一个读串口程序,能成功的运行;  
但在linux下写一个写串口程序,arm下写了一个读串口程序,就读不出数据来,怎么回事,是虚拟机有问题吗,只能写不能读?
程序:
//writetest.c
#include   <stdio.h>
#include   <string.h>
#include   <stdlib.h>
#include   <malloc.h>
#include   <sys/types.h>
#include   <sys/stat.h>
#include   <fcntl.h>
#include   <unistd.h>
#include   <termios.h>
#include   <errno.h>
#include   <math.h>

int   spfd;
int   main()
{
char   fname[16],*sbuf;
int   retv,i,ncount=0;
struct   termios   oldtio;
int   realdata=0;
spfd=open( "/dev/ttyS0 ",O_RDWR|O_NOCTTY|O_NONBLOCK);
//spfd=open( "/dev/ttyS0 ",O_RDWR|O_NOCTTY);
if(spfd <0)
{
perror( "open/dev/ttyS0 ");
return   -1;
}
tcgetattr(spfd,&oldtio);
cfmakeraw(&oldtio);
cfsetispeed(&oldtio,B57600);
cfsetospeed(&oldtio,B57600);
tcsetattr(spfd,TCSANOW,&oldtio);
printf( "ready   for   sending   data...\n ");
fname[0]= '1 ';
fname[1]= '2 ';
fname[2]= '3 ';
fname[3]= '\0 ';

retv=write(spfd,fname,4);
if(retv==-1)
perror( "write ");
printf( "the   number   sent   is   %d\n ",retv);
close(spfd);
return   0;
}

//readtest.c

#include   <stdio.h>
#include   <string.h>
#include   <malloc.h>
#include   <sys/types.h>
#include   <sys/stat.h>
#include   <fcntl.h>
#include   <unistd.h>
#include   <termios.h>
#include   <errno.h>
#include   <math.h>

int   spfd;
int   main()
{
char   hd[4];
int   retv,i,ncount=0;
struct   termios   oldtio;
int   realdata=0;
spfd=open( "/dev/ttyS0 ",O_RDWR|O_NOCTTY|O_NONBLOCK);
//spfd=open( "/dev/ttyS0 ",O_RDWR|O_NOCTTY);
if(spfd <0)
{
perror( "open/dev/ttyS0 ");
return   -1;
}
printf( "spfd%d\n ",spfd);
tcgetattr(spfd,&oldtio);
cfmakeraw(&oldtio);
cfsetispeed(&oldtio,B57600);
cfsetospeed(&oldtio,B57600);
tcsetattr(spfd,TCSANOW,&oldtio);

printf( "ready   for   receiving   data...\n ");
retv=read(spfd,hd,4);
/*
if(retv==-1)
{
perror( "read ");
return   -1;
}
*/

printf( "%d\n ",retv);
printf( "%s\n ",hd);

close(spfd);
return   0;
}
arm开发板和主机是通过串口通信,arm发出的数据,主机能读,主机发出的数据,arm就不能读,郁闷!
哪位高手指点指点我,不胜感谢


------解决方案--------------------
我老用vmware串口,没问题啊
你用minicom测试一下吧,看你的程序有没问题。

vmware添加串口的时候,也没啥特别要注意的,在菜单里指定物理串口就可以了