问题标签 [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 投票
0 回答
1753 浏览

c++ - 终端配置

在 MAC OS X (10.10) 程序中,我很难为 RS-485 串行通信正确设置 termios(我使用带有 FTDI 芯片的 starcom USB → RS-485)

我需要设置以下内容:

  • 1 个起始位(0 位)
  • 8 个数据位
  • 1 奇校验位
  • 1 个停止位(1 位)
  • 19200 波特

通信是二进制的,所以没有停止字符。

目前,我已经找到了如何设置大部分设置(见下面的代码),但我没有找到告诉 termios 我想要一个开始位的地方。

0 投票
0 回答
115 浏览

serial-port - Termios 在数据之前传输用户名

我正在尝试在 Raspberry Pi 中使用串行通信。我找到了这个链接。我只对代码进行了一次更改,并将缓冲区值增加到 30。这是我编辑的代码:-

我短接 Rx 和 Tx 引脚并运行此代码。我应该收到“你好”,但我得到了这个:-

所以,很明显我正在接收“你好”,但另外我正在自动传输

所以,请告诉我停止传输我的用户名。

0 投票
1 回答
314 浏览

python - 在 Python 中禁用 DSUSP

一个 OSX 用户提交了一个错误,该错误CTRL+Y导致 python 终端应用程序被挂起,通过dsusp导致当 Python 程序尝试在标准输入上读取时发送 SIGTSTP。下面的代码解决了这个问题:(上下文

  • 如何检测到此功能(dsusp)?有没有我可以基于os.uname()或类似使用的启发式方法?
  • termios.VDSUSP不存在,即使在拥有它的系统上也是如此。有没有它失踪的原因?
  • 这种关闭它的行为有多普遍?使用 readline 的程序似乎在 OSX 上忽略了CTRL+ Y,所以它至少相当普遍。我很久以前添加stty dsusp undef到我的 .bashrc 中,所以没有注意到它。

要查看此挂起行为,请在 OSX 或其他具有此功能的设备上运行cat并输入CTRL+ 。Y Return

0 投票
0 回答
597 浏览

linux - 打开 tty 串行 USB 端口

我正在使用 Sierra Aircard 调制解调器

在配置拨号端口/PPP 端口时,我像这样打开这个端口(deb/ttyUSB3)

到目前为止,此配置在建立连接时运行良好。重新连接等

但是这种方法有一个问题:如果我在此操作进行时移除了加密狗(仅几毫秒),我无法在我的物理设备管理器中检测到加密狗移除(此过程执行设备管理模式切换等。 .) 因为没有从内核层收到味精。另外,如果我删除加密狗, /dev/ttyUSB3 仍然存在(已发布 0,1,2)。请让我知道这是否是打开端口的正确方法或任何其他方法可用。感谢您的帮助

编辑

我被卡住了请帮忙

0 投票
0 回答
1178 浏览

c - 从串口接收的字节顺序错误

我有一个带有 FPGA 的设备,它通过简单的 UART 发送数据。数据是一个 32 字节的数据包,波特率为 115200。我通过 UART-TTL/USB 适配器将它们连接到我的笔记本电脑,因此在系统(Ubuntu 14.04)中,我可以从ttyUSB. 我在 GTK/C 中做了一个简单的应用程序来接收数据,进行一些数学运算并将结果保存在文本文件中。一切正常,直到我将发送 32 字节数据包的频率从每秒 5 次增加到每秒 100 次。问题是十几个或几十个数据包中的一个数据包的字节顺序错误。我用逻辑分析仪检查了我的 FPGA 每次都正确发送数据。

例如 FPGA 发送数据包:

1 2 3 4 5 6 7 8 9

但我的申请有时会收到:

1 2 7 3 4 5 6 8 9

我正在使用此功能打开串行端口:

在我的 GTK/C 应用程序中,单击“打开”按钮调用上述函数:

然后,我为串口创建一个通道,设置它的编码并为接收事件添加一个处理程序:

函数read_channel()看起来像这样(frame是一个带有字符表buffer和整数字段的结构byte_number):

0 投票
1 回答
1139 浏览

c - gcc linux - 'CRTSCTS' 'ECHOCTL' 未声明(termios.h)

我正在尝试编译一个在 Linux 上使用串行通信的静态库,但它失败并出现以下错误:

我搜索了这个问题,我能找到的唯一信息是: CRTSCTS not defined when compiling as C99

不幸的是,解决方案(使用-std=gnu99)对我不起作用。

以下是一些环境信息:

0 投票
0 回答
80 浏览

linux - 简单的 termios 发射器

我在使用 termios 库发送数据时遇到问题

在接收方面,我得到了完全的垃圾。我正在使用 Arduino Uno 作为接收设备。我哪里搞砸了?:)

0 投票
2 回答
2382 浏览

c - linux中的串行缓冲区多长时间?

我的问题是<termios.h>。据我了解,在通过 UART 读取某些内容时存在两个缓冲区 - 一个存储接收到的字节的硬件缓冲区,以及一个用于加载已存储在硬件缓冲区中的内容的软件缓冲区。read(uart_channel, BUFFER, length)据我了解,这个软件缓冲区是第二个参数。

请说明:硬件缓冲区多长时间?我可以控制它有多长吗?对我来说,读取设备通过 UART 发送的 12 个最新字节至关重要- 我如何确保这一点?

0 投票
0 回答
873 浏览

linux - 如何使 termios read() 在 VTIME 值之后返回?

我确实使用 termios 在 linux 上打开了一个本机串行端口。
端口以阻塞模式打开,并使用设置VMIN = 10VTIME = 5. 我认为这应该意味着如果超时命中,阻塞读取函数将在半秒后返回。

虽然我在这里找到了这个:

当 VMIN 字符已被传输到调用者的缓冲区时,或者当 VTIME 十分之一在字符之间到期时,满足 read()。由于此计时器在第一个字符到达之前不会启动,因此如果串行线路空闲,此调用可以无限期地阻塞。这是最常见的操作模式,我们认为 VTIME 是字符间超时,而不是整体超时。他的调用不应该返回读取的零字节。

所以我现在的问题是,如果线路空闲,如何让呼叫在此超时时返回?

谢谢!

0 投票
1 回答
1570 浏览

c - 我如何#include在 Arduino 软件 (1.6.5) 中?

所以这就是现在发生的事情,我正在使用来自 URG 激光传感器的代码,我正在尝试在 Arduino 软件中编译它以查看它是否可以测试。但是,当我单击“编译”时,会显示此错误消息:

我下载了我为 Ubuntu Linux 找到的所有 termios 库,但它仍然给我错误。我找到的库将副本复制到 urg_sensor.h 文件所在的位置,但效果不佳。

我尝试通过以下命令安装:sudo apt-get install libc6 或 libc6-dev(用于 linux 的 termios 库),但它们已经是最新版本。

所以,我不知道还能做什么。如果有人对我现在应该做什么有任何想法或意见,我真的很感激。

谢谢你!