当前位置: 技术问答>linux和unix
Linux下如何设置串口的DTR/DSR硬件流控?
来源: 互联网 发布时间:2015-06-20
本文导语: 以下方法是设置RTS/CTS硬件流控的,如何设置DTR/DSR硬件流控呢? struct termios options; options.c_cflag |= CRTSCTS; // 设置有RTS/CTS硬件流控 options.c_cflag &= ~CRTSCTS; // 设置无RTS/CTS硬件流控 ... 而且上面的方法将我的RTS信号拉...
以下方法是设置RTS/CTS硬件流控的,如何设置DTR/DSR硬件流控呢?
struct termios options;
options.c_cflag |= CRTSCTS; // 设置有RTS/CTS硬件流控
options.c_cflag &= ~CRTSCTS; // 设置无RTS/CTS硬件流控
...
而且上面的方法将我的RTS信号拉高的同时我的CTS引脚还必须检测对方的RTS信号也拉高才能发送数据。
而我还想对DTR/DSR、RTS/CTS单独设置,也就是说将我的DTR、RTS信号拉高的同时,我的DSR、CTS引脚并不检测对端的DTR、RTS是否拉高。应该如何设置呢?
Windows API 很容易实现我这方面的要求,但在Linux下我却找不到接口。
望高手指教?严重感谢!
struct termios options;
options.c_cflag |= CRTSCTS; // 设置有RTS/CTS硬件流控
options.c_cflag &= ~CRTSCTS; // 设置无RTS/CTS硬件流控
...
而且上面的方法将我的RTS信号拉高的同时我的CTS引脚还必须检测对方的RTS信号也拉高才能发送数据。
而我还想对DTR/DSR、RTS/CTS单独设置,也就是说将我的DTR、RTS信号拉高的同时,我的DSR、CTS引脚并不检测对端的DTR、RTS是否拉高。应该如何设置呢?
Windows API 很容易实现我这方面的要求,但在Linux下我却找不到接口。
望高手指教?严重感谢!
|
microyzy(毛毛叉) 说得对,用 ioctl
我做过,可以的
Listing 6 - Dropping DTR with the TIOCMSET ioctl.
#include
#include
int fd;
int status;
ioctl(fd, TIOCMGET, &status);
status &= ~TIOCM_DTR;
ioctl(fd, TIOCMSET, &status);
我做过,可以的
Listing 6 - Dropping DTR with the TIOCMSET ioctl.
#include
#include
int fd;
int status;
ioctl(fd, TIOCMGET, &status);
status &= ~TIOCM_DTR;
ioctl(fd, TIOCMSET, &status);
|
也许ioctl可以,呵呵,猜测而已
|
直接写串口的控制寄存器,控制寄存器的定义你查查吧,我忘了。
写寄存器之前,要先调用iopl,或ioperm
写寄存器之前,要先调用iopl,或ioperm
|
minicom 的源代码里面有。