termios相关内容

如何在 Linux 上正确设置串行通信

我正在尝试在 FPGA 板上读写数据.该板本身带有一个驱动程序,该驱动程序在插入该板时创建一个名为 ttyUSB0 的终端设备.在 FPGA 上,实现了异步接收器和发送器,它们似乎可以工作. 但是,C 方面似乎存在问题.我一直在使用一些测试向量来测试 FPGA 是否输出了正确的信息.我注意到了一些事情: 设备有时无法正确打开 有时无法检索或设置终端属性. 读取有时是非阻塞的,不会检 ..
发布时间:2022-01-18 15:09:11 服务器开发

未知原因读取串行端口块

我正在尝试使用 Linux 下的 termios 框架通过 UART(usbserial)连接非接触式智能卡读卡器.该代码在 PC 上运行良好,但是当我在 ARM9 目标上进行交叉编译并试用时,它能够打开设备甚至将命令写入设备,但读取命令会无限期地阻塞.这是代码片段: int mifare_rdr_init(struct mifare_1K * ptr, char *rdr_devnode){b ..
发布时间:2022-01-18 15:09:04 服务器开发

Raspberry Pi UART 程序在 C 中使用 termios 接收垃圾(Rx 和 Tx 直接连接)

我有一个用 C 语言编写的简单程序,它使用 termios 将基本字符串发送到 Raspberry Pi UART 并尝试读取和输出响应.Raspberry Pi 上的 Rx 和 Tx 引脚通过跳线连接,因此无论发送什么都应该立即接收. 尽管程序输出它已成功发送和接收所选字符串 ('Hello') 的 5 个字符,但尝试打印缓冲区的内容只会产生一两个垃圾字符. 程序: #includ ..
发布时间:2022-01-18 14:28:11 其他开发

使用 termios api (c++) 在 Linux 中检测字符设备是否已断开连接

我在 Linux 中使用 termios api 与串行设备进行通信.我正在尝试检测设备是否已断开连接,以便在超时后尝试重新连接.我有以下示例代码: while(1){FD_ZERO(&rfds);FD_SET(tty_fd, &rfds);//已尝试检查 fcntl(tty_fd, F_GETFL);也//阻塞调用以等待我们有数据选择(tty_fd+1,&rfds,NULL,NULL,NULL ..
发布时间:2022-01-18 14:20:38 服务器开发

Ubuntu串行通信:读取失败然后立即全部进入

我正在编写一个程序,该程序在运行 Ubuntu 服务器 14.04 的 MIO-3260 单板计算机上运行,​​并与 AMC DPRANIE C100A400 驱动器通信.该程序向驱动器发送一串十六进制代码,并且应该接收它发送的每条消息的响应.当我在 windows 上的 realTerm 中尝试它时,效果很好,所以我认为这不是驱动器的问题.但是,当我尝试从串行端口读取时,read() 几乎总是返 ..
发布时间:2022-01-18 14:16:33 其他开发

如何在 C 程序中通过串行终端读取二进制数据?

我阅读了关注的链接和其他来源,但没有找到我的问题的答案. 串行终端上的二进制数据 数据在通过串行端口传输时损坏 我通过串行端口与我的嵌入式设备通信.默认情况下,嵌入式 Linux 使用此端口作为终端.但我也想通过端口传输二进制数据(服务包).我的/etc/inittab 文件有一个“getty"调用:console::respawn:/sbin/getty 115200 ttyS ..
发布时间:2022-01-18 14:06:52 其他开发

编译为 C99 时未定义 CRTSCTS

我正在树莓派上编写一些串行代码并切换到 C99.当我这样做时,我开始收到错误消息“错误:‘CRTSCTS’未声明(首次在此函数中使用)" $ c99 -M serial01.c |grep termios.h/usr/include/termios.h/usr/include/arm-linux-gnueabihf/bits/termios.h \$ gcc -M serial01.c |gre ..
发布时间:2022-01-05 10:55:31 其他开发

C中使用termios的Raspberry Pi UART程序接收垃圾(Rx和Tx直接连接)

我有一个用 C 编写的简单程序,它使用 termios 将基本字符串发送到 Raspberry Pi UART,并尝试读取和输出响应.Raspberry Pi 上的 Rx 和 Tx 引脚通过跳线连接,因此应立即接收发送的任何内容. 尽管程序输出它成功发送和接收所选字符串('Hello')的 5 个字符,尝试打印缓冲区的内容只会产生一两个垃圾字符. 程序: #include #incl ..
发布时间:2022-01-05 10:34:24 其他开发

规范模式 Linux 串口

Termios 手册页 (http://man7.org/linux/man-pages/man3/termios.3.html) 用于规范模式状态: 输入是逐行提供的.输入线可用当键入其中一个行分隔符(NL、EOL、EOL2;或 EOF 在行的开始).除 EOF 外,行分隔符包含在 read(2) 返回的缓冲区中. 我的问题是:当一个硬件输出数据以符合规范时 - 是否将 0xD0xA ..
发布时间:2021-12-03 13:37:12 服务器开发

Linux 阻塞与非阻塞串行读取

我有此代码 在 Linux 中从串行读取,但我不知道在读取串行端口时阻塞和非阻塞有什么区别,在哪种情况下哪个更好? 解决方案 您提到的代码在 IMO 中编码和注释都很糟糕.该代码不符合 设置中所述的可移植性的 POSIX 实践终端模式正确和POSIX 操作系统串行编程指南.该代码没有提到它使用非规范(又名原始)模式,并重用了“阻塞"模式.和“非阻塞"用于描述 VMIN 和 VTIME 属性 ..
发布时间:2021-12-03 12:57:45 服务器开发

如何使用 .NET Core 在 Linux 上以非规范模式打开 tty 设备

我目前在嵌入式 Linux 平台上使用 .NET Core 并取得了成功.不过,我在尝试以原始(非规范模式)打开 tty 设备时遇到了问题.如果我使用的是常规 C 或 C++,我会在打开设备后调用 cfmakeraw(),但如何从 .NET Core 应用程序执行此操作? 我需要使用的设备是用于 USB 客户端连接器的 CDC ACM 功能驱动程序,即它是一个虚拟 COM 端口.它在我的系统 ..
发布时间:2021-11-24 20:09:03 C#

Backspace(\b) 在非规范模式 termios 中不清除文本

我试图通过按退格键来清除文本,我在非规范模式下使用 termios.我创建了一个条件语句,当用户按下退格键时,它应该通过返回一个字符来删除前一个字符. 但是当我按 Backspace 而不是删除字符时,它会在该行上打印 ^?. 我不想使用规范模式. 我的代码: #include #include #include #include #include #include #defi ..
发布时间:2021-09-05 20:36:36 服务器开发

如何将字节间延迟超时设置为毫秒?

我目前正在使用 termios 在 Linux 中进行串行通信. 我需要将字符间超时设置为 5 毫秒. 我找到了一种使用 VMIN 和 VTIME 设置字符间超时的方法,其中 VMIN 必须为 VMIN > 0 和 VTIME > 0. 问题是我需要将 VTIME 设置为 5ms,但 VTIME 以十分之一秒表示. VTIME 数据类型是无符号字符,所以我不能将它设置为 0 ..
发布时间:2021-07-20 18:37:42 服务器开发

在Swift中使用termios

现在我们已经到达Swift 2.0,我决定将尚未完成的OS X应用程序转换为Swift.取得了进展,但我在使用termios时遇到了一些问题,可能需要一些澄清和建议. termios结构在Swift中被视为结构,这并不奇怪,但是令人惊讶的是,该结构中的控制字符数组现在是一个元组.我期望它只是一个数组.就像您可能想像的那样,我花了一些时间才弄清楚这一点.如果可以,请在操场上工作: var ..
发布时间:2020-08-12 00:50:55 移动开发

如何使用.NET Core在Linux上以非规范模式打开tty设备

到目前为止,我正在嵌入式Linux平台上使用.NET Core,并取得了良好的成功.我只是尝试以原始(非规范模式)打开tty设备而遇到问题.如果我使用的是常规C或C ++,则在打开设备后会调用cfmakeraw(),但是如何从.NET Core应用程序中做到这一点? 我需要使用的设备是用于USB客户端连接器的CDC ACM功能驱动程序,即它是一个虚拟COM端口.它在我的系统中显示为/dev/ ..
发布时间:2020-07-10 23:28:20 其他开发

如何更改termios配置,以便当用户按下< tab>时getc()立即返回钥匙?

我想为我的CLI应用程序实现自动完成功能.仅当输入以下字符列表时,才返回getc()的默认行为:NEW_LINE或EOF.我想将TAB添加到此列表中,以便可以触发自动完成算法. 有没有办法做到这一点,例如使用termios?编辑行库(http://www.thrysoee.dk/editline/)可以执行此操作,但是我不知道它是如何执行的? 解决方案 在"UNIX环境中的高级编程" ..
发布时间:2020-07-10 23:28:10 其他开发

串口读取不完整

因此,以下功能用于在Linux下从串行端口读取数据.调试时可以读取完整的数据,但是启动程序时, read_buffer 似乎不完整.我可以正确接收一小部分数据,但缓冲区的其余部分完全为 zero .可能是什么问题? int8_t __serial_port_open(uint8_t *port) { mode_t perms = S_IRWXU; fd = open(port ..
发布时间:2020-07-10 23:28:05 服务器开发

您如何阅读箭头键?

在termios和xterm上使用原始模式的广泛搜索导致了对“定时技巧"的大量引用,以区分转义序列和转义的单独出现字符. 那你怎么做呢? 我不想使用诅咒,因为我不想清除屏幕.这是用于计算器样式的程序,因此保留"ticker-tape"界面很重要. 解决方案 最终在 Path: utzoo!utgpu!news-server.csri.toronto.edu!cs.utexas. ..
发布时间:2020-07-10 23:25:53 服务器开发

当编译为C99时CRTSCTS未定义

我正在树莓派上编写一些串行代码,并切换到C99.当我完成操作时,我开始收到错误“错误:未声明'CRTSCTS'(此功能的首次使用)" $ c99 -M serial01.c | grep termios.h /usr/include/termios.h /usr/include/arm-linux-gnueabihf/bits/termios.h \ $ gcc -M serial01.c ..
发布时间:2020-07-10 23:24:50 其他开发