问题标签 [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.
c++ - 终端配置
在 MAC OS X (10.10) 程序中,我很难为 RS-485 串行通信正确设置 termios(我使用带有 FTDI 芯片的 starcom USB → RS-485)
我需要设置以下内容:
- 1 个起始位(0 位)
- 8 个数据位
- 1 奇校验位
- 1 个停止位(1 位)
- 19200 波特
通信是二进制的,所以没有停止字符。
目前,我已经找到了如何设置大部分设置(见下面的代码),但我没有找到告诉 termios 我想要一个开始位的地方。
serial-port - Termios 在数据之前传输用户名
我正在尝试在 Raspberry Pi 中使用串行通信。我找到了这个链接。我只对代码进行了一次更改,并将缓冲区值增加到 30。这是我编辑的代码:-
我短接 Rx 和 Tx 引脚并运行此代码。我应该收到“你好”,但我得到了这个:-
所以,很明显我正在接收“你好”,但另外我正在自动传输
所以,请告诉我停止传输我的用户名。
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
linux - 打开 tty 串行 USB 端口
我正在使用 Sierra Aircard 调制解调器
在配置拨号端口/PPP 端口时,我像这样打开这个端口(deb/ttyUSB3)
到目前为止,此配置在建立连接时运行良好。重新连接等
但是这种方法有一个问题:如果我在此操作进行时移除了加密狗(仅几毫秒),我无法在我的物理设备管理器中检测到加密狗移除(此过程执行设备管理模式切换等。 .) 因为没有从内核层收到味精。另外,如果我删除加密狗, /dev/ttyUSB3 仍然存在(已发布 0,1,2)。请让我知道这是否是打开端口的正确方法或任何其他方法可用。感谢您的帮助
编辑
我被卡住了请帮忙
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
):
c - gcc linux - 'CRTSCTS' 'ECHOCTL' 未声明(termios.h)
我正在尝试编译一个在 Linux 上使用串行通信的静态库,但它失败并出现以下错误:
我搜索了这个问题,我能找到的唯一信息是: CRTSCTS not defined when compiling as C99
不幸的是,解决方案(使用-std=gnu99
)对我不起作用。
以下是一些环境信息:
linux - 简单的 termios 发射器
我在使用 termios 库发送数据时遇到问题
在接收方面,我得到了完全的垃圾。我正在使用 Arduino Uno 作为接收设备。我哪里搞砸了?:)
c - linux中的串行缓冲区多长时间?
我的问题是<termios.h>
。据我了解,在通过 UART 读取某些内容时存在两个缓冲区 - 一个存储接收到的字节的硬件缓冲区,以及一个用于加载已存储在硬件缓冲区中的内容的软件缓冲区。read(uart_channel, BUFFER, length)
据我了解,这个软件缓冲区是第二个参数。
请说明:硬件缓冲区多长时间?我可以控制它有多长吗?对我来说,读取设备通过 UART 发送的 12 个最新字节至关重要- 我如何确保这一点?
linux - 如何使 termios read() 在 VTIME 值之后返回?
我确实使用 termios 在 linux 上打开了一个本机串行端口。
端口以阻塞模式打开,并使用设置VMIN = 10
和VTIME = 5
. 我认为这应该意味着如果超时命中,阻塞读取函数将在半秒后返回。
虽然我在这里找到了这个:
当 VMIN 字符已被传输到调用者的缓冲区时,或者当 VTIME 十分之一在字符之间到期时,满足 read()。由于此计时器在第一个字符到达之前不会启动,因此如果串行线路空闲,此调用可以无限期地阻塞。这是最常见的操作模式,我们认为 VTIME 是字符间超时,而不是整体超时。他的调用不应该返回读取的零字节。
所以我现在的问题是,如果线路空闲,如何让呼叫在此超时时返回?
谢谢!
c - 我如何#include在 Arduino 软件 (1.6.5) 中?
所以这就是现在发生的事情,我正在使用来自 URG 激光传感器的代码,我正在尝试在 Arduino 软件中编译它以查看它是否可以测试。但是,当我单击“编译”时,会显示此错误消息:
我下载了我为 Ubuntu Linux 找到的所有 termios 库,但它仍然给我错误。我找到的库将副本复制到 urg_sensor.h 文件所在的位置,但效果不佳。
我尝试通过以下命令安装:sudo apt-get install libc6 或 libc6-dev(用于 linux 的 termios 库),但它们已经是最新版本。
所以,我不知道还能做什么。如果有人对我现在应该做什么有任何想法或意见,我真的很感激。
谢谢你!