【发布时间】:2014-08-11 00:55:32
【问题描述】:
我正在尝试在Linux系统上编写c代码,在那里我设置了串口参数然后打开串口,然后我发现即使代码编译并运行,我也无法从该串口读取和写入端口(所以串口没有打开成功)!
有效的代码(不需要):
int fd;
char *portname;
portname = "/dev/ttyUSB0";
struct termios tty;
fd = open(portname, O_RDWR | O_NOCTYY | O_SYNC );
memset(&tty,0,sizeof tty);
tty.c_cflag &= ~PARENB;
tty.c_cflag &= ~CSTOP;
tty.c_cflag &= ~CSIZE;
tty.c_cflag |= CS8;
tty.c_cflag &= ~CRTSCTS;
tcsetattr(fd,TCSANOW,&tty);
不起作用的代码(需要)
int fd;
char *portname;
portname = "/dev/ttyUSB0";
struct termios tty;
memset(&tty,0,sizeof tty);
tty.c_cflag &= ~PARENB;
tty.c_cflag &= ~CSTOP;
tty.c_cflag &= ~CSIZE;
tty.c_cflag |= CS8;
tty.c_cflag &= ~CRTSCTS;
tcsetattr(fd,TCSANOW,&tty);
fd = open(portname, O_RDWR | O_NOCTYY | O_SYNC );
固体问题:我的应用程序序列要求我设置串口参数然后打开串口。有没有办法做到这一点?如果是,怎么做?
感谢您的帮助。
【问题讨论】:
-
你的程序是否允许打开串口?
-
由于您还没有文件描述符,因此您无法为连接设置任何选项。 为什么您的应用需要这样的设计?
-
-alk:是的,我只是把我的代码的sn-ps。 -meaning-matters:是的,我将自己加入了拨出组。 -Lukasz:我的应用程序需要这种设计,因为该程序是从 Windows 移植的,并且必须保持相同的结构。谢谢大家的cmets。我现在明白了这个问题。
标签: c linux serial-port