- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
newattr.c_lflag &= ~(ICANON|ECHO);
这里是 c_lflag
的新值已经设置好了。但我不明白这是什么意思&= ~
|
是什么?表示介于 ICANON
之间和ECHO
?
最佳答案
在 macOS 上,ICANON
和 ECHO
的值在 /usr/include/sys/termios.h
中定义为:
#define ECHO 0x00000008 /* enable echoing */
#define ICANON 0x00000100 /* canonicalize input lines */
您的计算机上的值可能有所不同;细节并不重要,但关键是每个都是具有单个位集的数字。
|
运算符形成两个数字的按位“或”:0x000000108
。
~
运算符形成两个数字的按位补码:0xFFFFFEF7
。
&=
获取 newattr.c_lflag
中已有的值,并与值 0xFFFFFEF7
形成按位“与”。最终结果是保留变量中已设置的所有位(ECHO
和 ICANON
位除外,这两个位均设置为 0
。
符号value & ~(bit1 | bit2 …)
是一个标准的C习惯用法,用于清除可能或可能未设置在整数中的位。对应的设置代码为value | (bit1 | bit2 …)
,其中括号是可选的,因为运算符始终相同。您可以使用按位“异或”或 ^
来翻转位 - 将 1
更改为 0
,反之亦然。
关于c - 带有按位运算符的 Termios 语法配置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477989/
我正在使用 Python 3.7,我需要 import termios屏蔽密码输入。但我无法在 https://pypi.org/ 上找到它 import sys, tty, termios Trac
我想要实现的目标:我想设置自定义 baud rate一些值 tty* -喜欢UART -映射终端。 方法:目前我发现的唯一方法是使用 struct termios2结构位于 header (如前所述
我需要通过 UART 连接与某个传感器“对话”。使用 termios 一切工作都没有问题,我能够与它进行持续的通信 - 多次写入和读取。 但是,如果我在此通信期间的任何时间使用 fopen() 或 o
在更改终端设置的代码中(它嵌入了 python,后者又使用一些终端操作模块),在我通过 Ctrl-\向进程发送 SIGQUIT 退出后,更改的状态仍然存在。 在启动时保存终端设置,然后注册将恢复这些设
我正在开发一个 C 程序,用于监听在 ARM Linux 嵌入式设备上运行的串口。 其他数据集工作正常,但当我发送一组特定数据时,数据集的开头总是被截断。被截断的内容如下(目标上运行的slsniff程
我是 C 和驱动程序编程的新手。目前,我正在编写一个用户空间驱动程序,以使用 Debian 通过 USB 与 RS232 进行通信。在研究时,我遇到了以下代码。 tty.c_cflag &=
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5 个月前关闭。 Improve t
newattr.c_lflag &= ~(ICANON|ECHO); 这里是 c_lflag 的新值已经设置好了。但我不明白这是什么意思&= ~ | 是什么?表示介于 ICANON 之间和ECHO ?
基本上,如果我写: struct termios raw; tcgetattr(STDIN_FILENO, &raw); raw.c_lflag &= ~(ECHO); tcsetattr(STDIN
我有一个设置为 ~(ICANON) 模式的终端,想知道如何使用为退格键获得的数据(即 ^?),以便我可以将 putchar('\b') 发送到控制台后退一格。 编辑: struct termios n
我遇到的问题是,当您按下箭头键时,您检测到 3 个输入并且 while 循环执行了 3 次,实际上字符串 PRINT OF DEBUG 的打印发生了 3 次。为什么?我希望当您按下箭头键时,循环会执行
测试.c... #include #include int main() { printf("%x\n",B600); } 在我的系统上,这会打印“8”。 gcc -M test.c 显示
使用非规范输入处理,我正在使用带有“DB9-to-USB”电缆的 Xbee 接口(interface) XBIB-R-Dev 读取发送到 Xbee S2B Pro (ZB) 的串行数据。我正在使用 h
我们整个上午都在为这个问题苦苦思索。我们在嵌入式 linux 设备和 Ubuntu 机器之间设置了一些串行线路。我们的读取被搞砸了,因为我们的代码通常返回两个(有时更多,有时恰好一个)消息读取,而不是
我想获取终端的大小。我正在使用此功能: import sys, struct, fcntl, termios s = struct.pack('HHHH', 0, 0, 0, 0) t = fcntl
我需要使用串行端口进行聊天。我通过 socat 模拟 pty: socat -d -d PTY PTY 接下来我写了一个小演示。这就是我初始化 termios 结构的方式: int tty_f
我正在使用 termios.h 与 USB 适配器进行通信。我想在断开加密狗时关闭文件描述符。有没有办法做到这一点。我知道这是为了f.e.对于 TCP/IP 连接,如果对方关闭连接,您将收到 EOF。
我需要通过 USB 虚拟串行设备与硬件进行通信。我所需要的只是使用正确的 UART 设置来快速地来回传递原始字节,我不想使用终端。使用 termios 的概念验证软件没有配置正确的位,并且除非我在运行
我正在 Linux 中制作一个 C++ 串行类。我正在尝试在收到传入数据时注册一个事件。 我正在研究 Olimex Lime2 板。gcc 版本 4.6.3 (Debian 4.6.3-14) 这是我
我在(资源受限的)嵌入式 Linux 平台(C 语言)中使用 Termios 从各种 tty 外围设备 (CP2102 USB-UART) 发送命令和接收数据。显然有多种方法可以做到这一点,而且很多方
我是一名优秀的程序员,十分优秀!