我有一个功能:
int term_option(int option)
{
struct termios attributes;
switch(option)
{
case 0: // Echo On
if(tcgetattr(STDIN_FILENO,&attributes) != 0) return (-1);
attributes.c_lflag |= ECHO;
attributes.c_lflag |= ICANON;
attributes.c_lflag |= ISIG;
if(tcsetattr(STDIN_FILENO,TCSANOW,&attributes) != 0) return (-1);
break;
case 1: // Echo Off
if(tcgetattr(STDIN_FILENO,&attributes) != 0) return (-1);
attributes.c_lflag &= ~(ECHO);
if(tcsetattr(STDIN_FILENO,TCSAFLUSH,&attributes) != 0) return (-1);
break;
case 2: // Wait for the keyboard to be touched
if(tcgetattr(STDIN_FILENO,&attributes) != 0) return (-1);
attributes.c_lflag &= ~(ICANON);
attributes.c_cc[VMIN] = 1;
attributes.c_cc[VTIME] = 1;
if(tcsetattr(STDIN_FILENO,TCSANOW,&attributes) != 0) return (-1);
break;
case 3:
if(tcgetattr(STDIN_FILENO,&attributes) != 0) return (-1);
attributes.c_lflag &= ~(ICANON);
attributes.c_lflag &= ~(ISIG);
attributes.c_cc[VMIN] = 0;
attributes.c_cc[VTIME] = 0;
if(tcsetattr(STDIN_FILENO,TCSANOW,&attributes) != 0) return (-1);
break;
}
return 0;
}
当我打电话给:
term_option(1);
term_option(3);
它根本不会返回任何内容。事实上,它似乎甚至没有被执行。我不确定为什么。是的,我确实使用了termios.h
头文件。
有人有什么想法吗?
感谢。
以下是gdb结果:
答案 0 :(得分:0)
请检查需要设置的波特率。 使用您正在使用的机器以及与之连接的设备。