问题标签 [termios]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
925 浏览

linux - pty 文件描述符读取超时失败

我正在尝试在代表 PTY 的文件描述符上设置读取超时。我在 termios 中设置了 VMIN = 0 和 VTIME = 10,我希望在字符可用时返回,或者如果没有字符可用则在一秒钟后返回。但是,我的程序永远处于读取调用中。

PTY 有什么特别之处使它不起作用吗?是否有其他 TERMIOS 设置导致此设置起作用?我在标准输入文件描述符上尝试了相同的配置,它按预期工作。

0 投票
1 回答
302 浏览

c - 单线串口通讯,回显错误

我有一个单线串行通信接口,问题是我发送 01010101,我收到的回声是 01010101 的 10 次中有 8 次,但我收到 01110101 的 10 次中有 2 次。

代码示例:

我如何配置我的端口:

问题是什么?回声怎么可能混合了 10 次中的 2 次?

0 投票
0 回答
272 浏览

signals - 如何在自定义命令行界面中处理 ctrl-z?

我正在尝试制作一个命令行界面。我希望它处理Ctrl+ Z。它处理Ctrl+C就好了。现在,在处理+之前,我必须点击Ctrl+Z两次。这是处理+的代码:CtrlZCtrlZ

我知道为什么它必须被击中两次,但我不确定解决方案是什么。resetTerminal() 的代码是:

它恢复为无效的旧终端设置:

我不确定如何制作它,以便我可以恢复到旧的终端设置并传播Ctrl+Z并暂停我的程序。

有任何想法吗?谢谢。

0 投票
1 回答
1173 浏览

ruby - 尝试安装 termios gem 会导致错误

我正在尝试使用 ruby​​ 1.9.3-p194 在 OS X 10.7 上安装 termios gem。它以前安装得很好,但现在,即使我尝试在 1.9.3-p125 中安装它,我也会遇到同样的错误:

https://gist.github.com/83a4ff80fa882dcd6937

任何帮助将不胜感激。

0 投票
1 回答
4673 浏览

bash - 防止显示键入的字符(例如在 termios 中禁用“echo”属性)

我正在编写一个 bash 脚本,在该脚本中我从输入中读取单个字符。我这样做是使用read -n 1 -s. -n 1是只读取一个字符;-s是“静默”模式,在这种模式下键入的字符将不可见。

问题是,当当前执行的命令不存在read时(每当 bash 脚本中的一些其他命令正在执行时),字符就会显示在终端中。

这是终端中程序的正常行为。要禁用此功能,通常会禁用回显模式,例如使用 termios 库。

如何在 bash 脚本中实现这一点?

我更喜欢纯 bash / Unix 命令的解决方案(没有其他脚本语言,如 python、perl 等)。

0 投票
1 回答
939 浏览

linux - 无法通过 ARM 板的串行连接写入 GSM 模块

在我们的 Graduation 项目中,我们应该将 GSM 模块 (ADH8066) 连接到运行嵌入式 Linux (Qtopia) 的 ARM 板 (OK-6410) 并与之通信。

当我们第一次对模块进行操作时,它会发送一个“Ready”消息,然后我们可以通过 AT 命令与它进行通信。我们已经使用超级终端成功地与它通信,并设法发送了一条简单的短信。

当我们尝试从 ARM 板与它通信时,就会出现问题。

我们设法收到“就绪”消息,但没有任何响应。

这是我们到目前为止开发的代码:

我们得到的回应是:

然后它阻塞并保持空闲状态。

如果我们设法捕捉到“Ready”消息,这是否意味着“read”工作正常?如果上面印有“written”,那是不是意味着“write”工作正常?那么,为什么我们不能与模块通信呢?

谢谢。

0 投票
2 回答
380 浏览

c++ - 使用 termios 和 uint8_t 对串行通信进行符号扩展

我正在尝试使用 write() Unix 系统调用写入字节,但是我发送的任何以 1 开头的 8 位值都会变成 32 位值。我试图查看是否有任何 termios 标志来解决这个问题,但我似乎找不到任何标志。

输入样本:

BIN6: 10111110 -------- HEX6:be -------- DEC6: 190 -------- ASCII6: ?

BIN7: 11101100 -------- HEX7: ec -------- DEC7: 236 -------- ASCII7: ?

输出样本:

BIN6:000000011111111111111111111111110111110 -------- HEX:FFFFFFBE -------- DEC:-66 -------- ASCII:¾

BIN7:00000001111111111111111111111111101100 -------- HEX:FFFFFFEC -------- DEC:-20

知道如何解决这个问题吗?谢谢!

0 投票
1 回答
1207 浏览

c++ - 关闭回显后如何回显输入字符?

我有这段代码,用于在终端的登录屏幕上隐藏我的密码。登录后,输入全部还是空白。完成后如何将其设置为正常状态,例如恢复默认值getline

0 投票
2 回答
6069 浏览

linux - 命令行配置 TTY 设备

我目前的任务是将一些 16550 兼容芯片的驱动程序从 QNX 移植到 Linux。该芯片提供了几个 UART,每个都被视为标准的 16550 串行端口,尽管有一些扩展。

现在,在 QNX 中,整个设备驱动程序被打包到一个独立的可执行文件中,它既作为驱动程序又作为提供的 UART(波特率、环回模式等)的初始配置器。这在 QNX 中很自然,因为有设备驱动程序在用户空间中运行,只不过是标准的可执行文件。

在 Linux OTOH 上,驱动程序现在被实现为内核模块,可以随意加载。此外,该模块是由生产者提供的,所以我不想对其进行太多修改或修补。

对我来说,剩下的任务是提供一些机制来设置这些 UART 的参数。它们被视为 /dev/ttyPREFIXX 设备。我打算通过在感兴趣的串行端口上调用标准 termios(即 tcsetattr() 或 ioctls)的标准 C 编程可执行文件来做到这一点。

这让我想到了一个问题:我的方法对吗?而且,如果是,那么如何实现持久配置?据我所知(从这个例子:http ://www.easysw.com/~mike/serial/serial.html ),termios 函数作用于 OPEN 设备。简而言之:他们打开设备,设置参数,读取或写入,然后关闭端口。关闭端口后,配置(波特率等)是否丢失?我希望它不是,因为它已经存储在硬件中。

有人可以向我确认配置是持久的吗?并且,如果没有,如何为将来会再次打开该端口并期望它带有一些预先建立的参数的应用程序实现这种持久性?如果不是,我是否应该修改模块内核以接受一些参数,然后在加载时进行配置?

我现在打算的方法是编写打开端口的 C 可执行文件,设置它们的配置,然后关闭端口。我希望后面的应用程序会看到具有所需配置的端口。

谢谢你。

0 投票
0 回答
225 浏览

serial-port - Find Serial Buffer Size of Converter

I'm using an FTDI USB-to-Serial converter on linux. I'm writing an application that implements the standard functionality of changing settings like baud rate, etc... The only thing that I'm not sure how to get is the buffer size, e.g. if the user wants to know.

For example in the javax.comm SerialPort API there's a method getInputBufferSize(), so I thought there must be a way to check this on the device being used. So if I'm using a USB-to-Serial converter, is it possible to query it for the buffer size? I checked the termios documentation and cannot see such a setting.

Any suggestions on this please?