uclinux的串口设置是不是有问题啊
时间:2007-04-13
来源:互联网
uclinux的串口设置是不是有问题啊
求教串口编程,怪问题?
//readtest1.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>
#include "/home/prog2/stru.h"
int spfd;
int main()
{
char fname[16],hd[4],*rbuf;
PROTCOL pro;
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;
}
for(i=0;i<4;i++)
printf("%c\n",hd);
close(spfd);
return 0;
}
//writetest1.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);
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]='\n';
retv=write(spfd,fname,4);
if(retv==-1)
perror("write");
printf("the number sent is %d\n",retv);
close(spfd);
return 0;
}
我是在arm上放writetest1.c, 在主机放readtest1.c,这样readtest1.c能读取writetest1.c发来的数据,
但是,在arm上放readtest1.c, 在主机放writetest1.c,这样readtest1.c第一不能读取writetest1.c发来的数据,必须执行两次./writetest1,
主机上:./readtest1
arm:要执行两次./writetest
主机上才能显示arm发来的数据(printf);
有时这样也不行
干脆arm只能写串口,不能读串口,郁闷
是在uclinux下的
不知为什么?希望指点一二
求教串口编程,怪问题?
//readtest1.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>
#include "/home/prog2/stru.h"
int spfd;
int main()
{
char fname[16],hd[4],*rbuf;
PROTCOL pro;
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;
}
for(i=0;i<4;i++)
printf("%c\n",hd);
close(spfd);
return 0;
}
//writetest1.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);
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]='\n';
retv=write(spfd,fname,4);
if(retv==-1)
perror("write");
printf("the number sent is %d\n",retv);
close(spfd);
return 0;
}
我是在arm上放writetest1.c, 在主机放readtest1.c,这样readtest1.c能读取writetest1.c发来的数据,
但是,在arm上放readtest1.c, 在主机放writetest1.c,这样readtest1.c第一不能读取writetest1.c发来的数据,必须执行两次./writetest1,
主机上:./readtest1
arm:要执行两次./writetest
主机上才能显示arm发来的数据(printf);
有时这样也不行
干脆arm只能写串口,不能读串口,郁闷
是在uclinux下的
不知为什么?希望指点一二
作者: soqsoqsoq 发布时间: 2007-04-13
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28