永发信息网

ARM和linux虚拟机串口通信,ARM端打不开串口设备。

答案:3  悬赏:40  手机版
解决时间 2021-02-11 04:49
  • 提问者网友:玫瑰园
  • 2021-02-10 17:18
我用的MINI2440的板子,接收串口的程序如下:

#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

int main()
{
FILE *spfd;
char hd[16];
int retv=0;
//int i,ncount=0;
struct termios oldtio;
//int realdata=0;
spfd=fopen( "/dev/ttySAC0 ","r");
//spfd=open( "/dev/ttySAC0 ",O_RDWR|O_NOCTTY);
if(spfd == NULL)
{
perror( "fopen /dev/ttySAC0");
return -1;
}
printf( "the discriptor of file is %d\n ",fileno(spfd));
tcgetattr(fileno(spfd),&oldtio);
cfmakeraw(&oldtio);
cfsetispeed(&oldtio,B115200);
cfsetospeed(&oldtio,B115200);
tcsetattr(fileno(spfd),TCSANOW,&oldtio);

printf( "ready for receiving data...\n ");
retv=fread(hd,sizeof(char),16,spfd);

printf( "the number received is %d\n ",retv);
printf( "/dev/ttySAC0 received message :%s\n ",hd);
fclose(spfd);
return 0;
}

在板子上运行却显示: no such file or directory。

但是在虚拟机里用echo ok > /dev/usb0
在minicom里输入 cat /dev/ttySAC0 却能收到消息。请教各位,怎样才能让ARMread到消息,ARM端的设备符号是什么。
下面是我在linux上运行的写串口的程序:

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

//retv=write(spfd,fname,4);
printf("sending : %s \n",fname);
retv = fwrite(fname,sizeof(char),strlen(fname)+1,spfd);
if(retv==-1)
perror( "write ");
printf( "the number sent is %d\n ",retv);
fclose(spfd);
return 0;
}
最佳答案
  • 五星知识达人网友:北城痞子
  • 2021-02-10 17:46
查一下板子上的串口设备有没有:
grep tty /proc/devices
如果有ttyS设备,再看/dev/有没有ttySx,如没有就建立一个:
mknod /dev/ttyS0 c 4 64
全部回答
  • 1楼网友:上分大魔王
  • 2021-02-10 19:31
我对MINI2440不熟,但是由你的描述看来,就是没有这个驱动。 所以,建议你在 ARM 端的 Linux 下的 /dev 查看看有哪些设备符号。
  • 2楼网友:woshuo
  • 2021-02-10 19:09
。。。在你当前这个目录执行下这个命令:ll 看看这个目录中都有些什么东西。。 肯定没有java这个命令啊。。。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯