老猫(blh)师傅请帮忙!!!

leemeimei 2002-11-11 06:19:10
老猫师傅,下面的程序编译没抱错,执行的时候,把串口2,3脚短接起来后,即RxD和TxD联系起来,按什么键,就显示什么键,不知道要出现怎样的结果才算对,而且,当我把短接线去掉后,竟然也能执行,结果一样,所以肯定有错误,我用gdb调试,老是找不出错误。不知怎么办?麻烦你看一下,多谢了!!!!
#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <fcntl.h>
#include <errno.h>
#include <termios.h>
#include <sys/types.h>
#include <sys/stat.h>

#define BAUDRATE B38400

open_port(void)
{
int fd,speed;
struct termios newtio;

fd = open("/dev/ttyS0",O_RDWR|O_NOCTTY|O_NDELAY);
if(fd==-1)
{
perror("open_port:Unable to open /dev/ttyS0");
}


tcgetattr(fd,&newtio);

bzero(&newtio,sizeof(newtio));
//setting c_cflag
newtio.c_cflag |= (CLOCAL|CREAD);
newtio.c_cflag &=~PARENB;
newtio.c_cflag &=~PARODD;
newtio.c_cflag &=~CSTOPB;
newtio.c_cflag &=~CSIZE;
newtio.c_cflag |=CS8;
newtio.c_lflag &=~(ICANON|ECHO|ECHOE|ISIG);
newtio.c_oflag &=~OPOST;
//setting c_iflag
newtio.c_iflag &=~(IXON|IXOFF|IXANY);

cfsetispeed(&newtio,BAUDRATE);
cfsetospeed(&newtio,BAUDRATE);
printf("speed=%d\n",BAUDRATE);
tcflush(fd, TCIFLUSH);
tcsetattr(fd,TCSANOW,&newtio);

return(fd);
}


main()
{
int fd;
char buff;
fd = open_port();
if(fd>0)
{ while(1)
{ if(read(fd,&buff,1))
write(fd,&buff,1);
}
return 0;
}
close(fd);
}
...全文
124 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
leemeimei 2002-11-12
  • 打赏
  • 举报
回复
不是我舍不得,而是我只有0分,根本就没分了,我还想问怎样才能多分呢?上面的机枪,只会说,怎么不给点建议呢?哎,真是的。老猫你在吗?
yrj 2002-11-11
  • 打赏
  • 举报
回复
你可真吝啬,请人帮忙,连1分都舍不得

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧