求助:关于LINUX串口通信设置
下面是LINUX串口通信设置的一些问题。 希望大家帮我解释下那个规范模式输入和行模式输入是什么意思?在实际使用串口通信中,这两个东西运行后的表现是什么?
本地项
本地模式成员 c_lflag 控制输入字符如何被串行驱动使用。一般你设置 c_lflag 成员为 canonical 或 raw 输入方式。
表 6 - c_lflag成员常数 常数 描述
ISIG 使SIGINTR, SIGSUSP, SIGDSUSP, SIGQUIT等信号作用
ICANON 设定规范canonical(或行式raw)
XCASE Map uppercase /lowercase (废除)
ECHO 回显输入字符
ECHOE 回显擦除字符 BS-SP-BS
ECHOK 在删除字符后,回显 NL
ECHONL 回显 NL
NOFLSH 不在中断或退出字符后刷新输入缓冲
IEXTEN 扩展函数作用
ECHOCTL 以^char方式回显控制字符和以~?方式显示删除字符
ECHOPRT 回显提示有删除字符
ECHOKE BS-SP-BS整行,在有行删除时
FLUSHO 刷新输出
PENDIN 在下次读或输入时,将未决字符重打
TOSTOP 传送SIGTTOU信号作为背景
选择规范方式输入
规范方式输入是行式操作的。输入字符存放于一用户可编辑的缓冲中,直到接受到CR (回车)或 LF (进行)。
当选择这个模式时,你通常选择ICANON, ECHO, and ECHOE options:
options.c_lflag |= (ICANON | ECHO | ECHOE);
选择行方式输入
行式输入是不经处理的。输入字符在接受到后就直接传递,保持原样不处理。一般当你用行方式输入时,你需要去除 ICANON, ECHO, ECHOE, and ISIG 项:
options.c_lflag &= ~(ICANON | ECHO | ECHOE | ISIG);
关于回显的说明
决不 使用输入回显 (ECHO, ECHOE) ,当传送指令到一MODEM或其它计算机时,因为如果对方也回显字符的话,你就造成了在两个串口间反馈死循环!