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

c - 编译为 C99 时 CRTSCTS 未定义

我正在树莓派上编写一些串行代码并切换到 C99。当我这样做时,我开始收到错误“错误:'CRTSCTS' undeclared (first use in this function)”

使用 -M 显示 2 个 termios.h 标头。前者不包含 CRTSCTS 的定义,而后者包含。

我假设标准 c89 使用的是好的 c99 而不是 c99,但我不确定,因为 -M 调用的结果是相同的。谁能向我解释为什么当我切换到 C99 时会发生这种情况以及如何解决它?

0 投票
4 回答
175 浏览

c++ - 在 C 中手动调用 C++ 对象的初始化程序

我正在开发一个用 C++ 编写的小型应用程序,并希望在我的平台上使用。不幸的是,我们的交叉编译工具链仅(可靠地)提供了 C 编译器。我查看了该应用程序,它相当简单,仅在少数地方使用了 C++ 特定的习惯用法,所以我想我只需手动将其转换为 C 代码即可。

我碰到了一条不知道如何处理的线。该代码使用 Termios 打开一个新端口与 TTY 流通信,并使用new关键字初始化 Termios 结构。

据我了解,new关键字除了分配适当的内存外,还调用对象的初始化程序。在 C 中,使用 分配内存后malloc,我可以手动调用初始化程序吗?我需要吗?

我有一种感觉,我误解了一些明显/基本的东西,或者我认为这一切都是错误的。我不太习惯 C++ 代码。

编辑:我似乎引起了一些混乱。上面的代码行创建了一个新的 termios 结构,定义在 中termios.h,它是大多数 C 实现的标准库的一部分。

0 投票
1 回答
349 浏览

c++ - 如何使用 std::cin 清除将 TTY 设置为原始模式的输入缓冲区?

所以我使用了 termios 库将终端置于原始模式,这允许我这样做:

这会等待输入缓冲区中的单个字符准备好并返回它。

但如果我尝试这样做:

它进入一个无限循环。

清除输入缓冲区的适当方法是什么?我试过这个:

但它也挂起。我也想只使用 iostreams 或标准 posix 函数来做到这一点。

0 投票
2 回答
1483 浏览

c++ - 用于与 arduino 进行串行通信的 struct termios 设置

在基于 unix 的软件上,它必须向 arduino 发送一个 0 到 179 之间的数字,而 arduino 会将该数字作为角度应用于伺服电机,但我不知道我必须在 terminos 结构中更改哪些参数以允许串行沟通。

这是 C++ 代码:

这是arduino的:

那么你能告诉我我必须改变“ttable”吗?

0 投票
1 回答
2547 浏览

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 等?

0 投票
1 回答
785 浏览

c++ - c++ , Unix 中的串口

我写了一个代码来连接,通过一个串口,mi计算机到arduino。

这是arduino的代码:

这是 c++ 的:

它应该连接到 arduino ,然后问我一个介于 0 到 179 之间的数字,然后将该数字发送到 arduino,该数字将该数字作为伺服电机的角度;但它停在。arduino.open("/dev/tty.usbmodem3a21")我能做什么?

0 投票
1 回答
382 浏览

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) 代码摘录:

0 投票
0 回答
3042 浏览

linux - ioctl 抱怨 tty 设备不是 tty 设备

我正在编写一个程序来打开、设置和写入 rs485 的 tty。我用tty设备玩了一下,现在我似乎无法再打开它了。

以下是相关代码:

,从测试程序中调用,如下所示:

函数ioctl中的. 说:rs485_enableNOTTYstrace

和 stty 说:

感觉就像我/dev/ttyUSBserial在玩它时打破了它,但我不知道如何或如何修复它。由于它是一个 USB 设备,我可以轻松地拔下并重新插入它,并希望它重置为某种默认值,但我宁愿了解发生了什么。

0 投票
0 回答
764 浏览

c - Linux termios.h:传入字节只能在\n之后读取

我正在尝试在 linux 中编写一个与串行端口交互的 C 程序。该程序有 2 个线程,一个主线程和一个监听线程。我的问题在听力线程中。我希望读取函数在单个字节到达后立即读取原始数据。

无论我尝试使用 termios 结构,我都只能读取数据,直到收到换行符(\n 或 \r)。我正在使用连接了 Rx 和 Tx 的 USB 串行棒进行测试。提前致谢。

0 投票
0 回答
807 浏览

io - 在 Go 中等待串口输入

我有一个数显卡尺,可以通过串口发送测量值。该数据的格式类似于+123.45\r设备,可以随时发送。

所以我的程序需要“监听”第一个数据输入(总是以回车结束)并在这个之后直接关闭读取,然后再继续他自己的工作。

像CoolTermPutty这样的专用终端可以完美地处理这些不可预测的输入……但我不知道如何在 Go 中做到这一点(即使使用 cgo)。

我的系统

  • OS X 10.9.5
  • 去 1.4.2 达尔文/AMD64

设备

  • 4800 波特
  • 7 个数据位
  • 偶校验
  • 2 个停止位
  • DTR

我的实际代码

……这行不通……</p>