问题标签 [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 - 编译为 C99 时 CRTSCTS 未定义
我正在树莓派上编写一些串行代码并切换到 C99。当我这样做时,我开始收到错误“错误:'CRTSCTS' undeclared (first use in this function)”
使用 -M 显示 2 个 termios.h 标头。前者不包含 CRTSCTS 的定义,而后者包含。
我假设标准 c89 使用的是好的 c99 而不是 c99,但我不确定,因为 -M 调用的结果是相同的。谁能向我解释为什么当我切换到 C99 时会发生这种情况以及如何解决它?
c++ - 在 C 中手动调用 C++ 对象的初始化程序
我正在开发一个用 C++ 编写的小型应用程序,并希望在我的平台上使用。不幸的是,我们的交叉编译工具链仅(可靠地)提供了 C 编译器。我查看了该应用程序,它相当简单,仅在少数地方使用了 C++ 特定的习惯用法,所以我想我只需手动将其转换为 C 代码即可。
我碰到了一条不知道如何处理的线。该代码使用 Termios 打开一个新端口与 TTY 流通信,并使用new
关键字初始化 Termios 结构。
据我了解,new
关键字除了分配适当的内存外,还调用对象的初始化程序。在 C 中,使用 分配内存后malloc
,我可以手动调用初始化程序吗?我需要吗?
我有一种感觉,我误解了一些明显/基本的东西,或者我认为这一切都是错误的。我不太习惯 C++ 代码。
编辑:我似乎引起了一些混乱。上面的代码行创建了一个新的 termios 结构,定义在 中termios.h
,它是大多数 C 实现的标准库的一部分。
c++ - 如何使用 std::cin 清除将 TTY 设置为原始模式的输入缓冲区?
所以我使用了 termios 库将终端置于原始模式,这允许我这样做:
这会等待输入缓冲区中的单个字符准备好并返回它。
但如果我尝试这样做:
它进入一个无限循环。
清除输入缓冲区的适当方法是什么?我试过这个:
但它也挂起。我也想只使用 iostreams 或标准 posix 函数来做到这一点。
c++ - 用于与 arduino 进行串行通信的 struct termios 设置
在基于 unix 的软件上,它必须向 arduino 发送一个 0 到 179 之间的数字,而 arduino 会将该数字作为角度应用于伺服电机,但我不知道我必须在 terminos 结构中更改哪些参数以允许串行沟通。
这是 C++ 代码:
这是arduino的:
那么你能告诉我我必须改变“ttable”吗?
linux - 在linux中使用ioctl()调用设置串口的DTR RTS引脚时遇到问题
嗨,我正在编写一个小代码来控制 Linux(Mint Linux 13 Maya,x86)上 USB 到串行端口转换器芯片 FT232 的 DTR 和 RTS 线。
我已经成功地编写了代码来使用 termios 读取和写入数据到 FT232 芯片。现在我想控制 DTR 和 RTS 线路,所以我使用 ioctl() 调用来设置和清除 DTR 和 RTS 线路。
这是代码
代码在 gcc 上编译成功,没有任何错误。我已将两个 LED 连接到 FT232 的 RTS 和 DTR 线。由于 RTS 和 DTR 线反转,设置 RTS 会使 LED 熄灭。连接到 RTS 和 DTR 的 LED 最初为 ON。
使用“sudo ./serial”运行代码
RTS 和 DTR Led 都熄灭,而不仅仅是 RTS(编码状态 |= TIOCM_RTS;)并在 getchar() 之后打开。
为什么 DTR 会随着 RTS 线变低?我也无法通过使用 TIOCM_CD、TIOCM_DTR 等来更改其他调制解调器线路,如 RI、DCD、DCD、DTR 等?
c++ - c++ , Unix 中的串口
我写了一个代码来连接,通过一个串口,mi计算机到arduino。
这是arduino的代码:
这是 c++ 的:
它应该连接到 arduino ,然后问我一个介于 0 到 179 之间的数字,然后将该数字发送到 arduino,该数字将该数字作为伺服电机的角度;但它停在。arduino.open("/dev/tty.usbmodem3a21")
我能做什么?
linux - Linux 串行 RS-232,第 8 位始终清除(设置为 0)
以下是串行通信端口设置
1. BaudRate: 19200
2. Parity: Even
3. StopBits: 1
发送器发送几个字节的数据:0x5A 0xA5 0xAA
接收
器是在 Linux 上使用 termios 串行 API 用 C 语言编写的
每个字节的设置为 0...为什么?
以下是用于在接收器应用程序上设置串行端口设置的 C (OS: Linux) 代码摘录:
linux - ioctl 抱怨 tty 设备不是 tty 设备
我正在编写一个程序来打开、设置和写入 rs485 的 tty。我用tty设备玩了一下,现在我似乎无法再打开它了。
以下是相关代码:
,从测试程序中调用,如下所示:
函数ioctl
中的. 说:rs485_enable
NOTTY
strace
和 stty 说:
感觉就像我/dev/ttyUSBserial
在玩它时打破了它,但我不知道如何或如何修复它。由于它是一个 USB 设备,我可以轻松地拔下并重新插入它,并希望它重置为某种默认值,但我宁愿了解发生了什么。
c - Linux termios.h:传入字节只能在\n之后读取
我正在尝试在 linux 中编写一个与串行端口交互的 C 程序。该程序有 2 个线程,一个主线程和一个监听线程。我的问题在听力线程中。我希望读取函数在单个字节到达后立即读取原始数据。
无论我尝试使用 termios 结构,我都只能读取数据,直到收到换行符(\n 或 \r)。我正在使用连接了 Rx 和 Tx 的 USB 串行棒进行测试。提前致谢。