Linux串口的正确初始化顺序

2023-12-25

我编写了一个必须在 Linux 上使用串行端口的应用程序,尤其是 ttyUSB 端口。读取和写入操作是使用标准的 select()/read() 循环和 write() 执行的,它们可能没有任何问题,但初始化代码(或缺少某些部分)会损坏 tty 子系统中的某些内容。这里是:


  vuxboot(string filename, unsigned baud = B115200) : _debug(false) {
    _fd = open(filename.c_str(), O_RDWR | O_NOCTTY);
    if(_fd < 0) throw new io_error("cannot open port");

    // Serial initialization was written with FTDI USB-to-serial converters
    // in mind. Anyway, who wants to use non-8n1 protocol?

    tcgetattr(_fd, &_termios);

    termios tio = {0};
    tio.c_iflag = IGNPAR;
    tio.c_oflag = 0;
    tio.c_cflag = baud | CLOCAL | CREAD | CS8;
    tio.c_lflag = 0;

    tcflush(_fd, TCIFLUSH);
    tcsetattr(_fd, TCSANOW, &tio;);
  }

Another tcsetattr(_fd, TCSANOW, &_termios)位于析构函数中,但无关紧要。

无论有没有这个 termios 初始化,系统都会发生奇怪的事情应用程序退出后。有时平淡cat (or hd)每次都立即退出,不打印任何内容或相同的内容,有时它正在等待并且不显示任何肯定发送到端口的数据;和close() (read()也是,但不是每次)发出奇怪的声音WARNING发送至 dmesg参考usb-serial.c http://git.kernel.org/?p=linux/kernel/git/stable/linux-2.6.32.y.git;a=blob;f=drivers/usb/serial/usb-serial.c;h=bd3fa7ff15b12166bf0cf2ad86f3214144f914c0;hb=HEAD#l440.

我检查了硬件和固件数十次(甚至在不同的机器上),我确信它按预期工作;此外,我剥离了固件,只是一遍又一遍地打印相同的消息。

如何在不破坏任何东西的情况下使用串口? Thanks.


击中一个WARN_ON line might意味着您遇到了内核错误。我知道最近在改进 USB 串行驱动程序方面做了很多工作;我建议尝试更新的内核,和/或询问[电子邮件受保护] /cdn-cgi/l/email-protection邮件列表。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux串口的正确初始化顺序 的相关文章

  • C++,多语言/本地化支持

    向 C 程序添加多语言支持的最佳方法是什么 如果可能 应该从包含键值对 WelcomeMessage Hello s 之类的纯文本文件中读取语言 我想到了添加一个 localizedString key 函数来返回加载的语言文件的字符串 有
  • 以概率从列表中选择随机元素

    我有一个包含四个项目 A B C D 的列表 每个项目都有被选择的概率 例如 A 有 74 的机会被选中 B 15 C 7 D 4 我想创建一个函数 根据其概率随机选择一个项目 有什么帮助吗 为您的项目定义一个类 如下所示 class It
  • stl 集的 C# 等效项是什么?

    我想使用 C 将一些值存储在平衡二叉搜索树中 我查看了泛型命名空间中的集合 但没有找到与 stl 集合等效的集合 我可以使用什么通用集合 我不想存储键 值对 只是值 你可以使用HashSet http msdn microsoft com
  • 子进程中的变量修改

    我正在研究科比和奥哈拉伦的作品Computer Systems A Programmer s Perspective 练习 8 16 要求程序的输出如下 我更改了它 因为他们使用了一个你可以在他们的网站上下载的头文件 include
  • Visual Studio 2013 Intellisense 不会将枚举类型放在方法参数的位置

    例如 我有以下代码 namespace VS2013 EnumTypes class Program enum SomeEnum One Two static void SomeMethod SomeEnum someEnum some c
  • File.ReadAllLines 或流读取器

    我们可以使用以下方式读取文件StreamReader http msdn microsoft com en us library vstudio system io streamreader或通过使用File ReadAllLines ht
  • .NET Core 2 - 从启动中调用存储库方法[重复]

    这个问题在这里已经有答案了 我有以下存储库和类 public interface IValueService GetAll public class ValueService IValueService private DataContex
  • 如何使用 C# 调用 REST API?

    这是我到目前为止的代码 public class Class1 private const string URL https sub domain com objects json api key 123 private const str
  • 使用 MessagingCenter 和标准 .NET 事件处理程序向感兴趣的各方通知更改有什么区别?

    使用 MessagingCenter 和标准 NET 事件处理程序向感兴趣的各方通知更改有什么区别 下面演示了同一事物的两个 未经测试的 实现 public class FooClass public event EventHandler
  • C++ 为非虚方法指定初始化

    我有 a h 如下所示 class A public void doSomething 0 然后我有 b h 如下所示 include a h class b public A public void doSomething 我只是想通过尝
  • 如何设置cookie值?

    我正在执行以下操作来设置 cookie 值 HttpCookie mycookie new HttpCookie mycookie mycookie Value value1 Case sensitivity mycookie Expire
  • 将数字 n 拆分为 k 个不同数字的总和

    我有一个数字 n 我必须将它分成 k 个数字 使得所有 k 个数字都是不同的 k 个数字的总和等于 n 并且 k 最大 例如 如果 n 为 9 则答案应为 1 2 6 如果 n 为 15 则答案应为 1 2 3 4 5 这就是我尝试过的 v
  • 通过 MVC 将数据写入数据库的最佳方法是什么?

    我正在使用 MVC 和 EF Core 开发一个家庭作业项目 我正在寻找将数据写入数据库的最佳方法 我是初学者 有两张桌子 Predbilje ba 报名 和Seminari 研讨会 public class Predbilje ba Ke
  • 我的 Opencv 应用程序处理速度非常慢

    我正在构建一个 OpenCV 应用程序 它从相机捕获视频 并在删除背景后将其覆盖在另一个视频上 我无法达到合理的速度 因为它以大约 1 fps 的速度播放输出 而我的背景去除以 3 fps 的速度工作 有没有办法以正常速度显示背景视频并以
  • Linux“屏幕”的 Windows 等效项还是其他替代方案?

    我正在寻找一种在 Windows 环境中控制程序的方法 我希望它与 Linux 软件有点相似 screen 我搜索的原因是我需要使用标识符启动一个程序 在 Windows 上 这样我以后就能够关闭该特定程序 而无需关闭其他任何程序 即使实际
  • 定义一个断言,即使定义了 NDEBUG,该断言也有效

    我想定义一个assert与标准相同的宏assert 3 http man7 org linux man pages man3 assert 3 html调用 但它不会被预处理器删除NDEBUG被定义为 这样的呼唤 让我们称之为assert2
  • 在运行时将项目添加到 ToolStrip

    您好 我有一个带有 收藏夹 菜单的 ToolStripMenu 我想在运行时在 WinForms 应用程序中添加子项目 我有一个 datagridview 右键单击它会显示一个包含 添加到收藏夹 选项的上下文菜单 当该事件被触发时 我想使用
  • 在 Visual Studio C++ 资源编辑器中导入 png 文件

    我希望能够在 Visual Studio 资源编辑器中导入 png 文件 以便能够在不同的其他项目中使用嵌入的资源 有解决办法吗 我知道它适用于位图 但我对 png 感兴趣 因为即使在较低格式 16x16 或 32x32 上也可以使用 透明
  • 当前线程中的单例

    我的单身人士如下 public class CurrentSingleton private static CurrentSingleton uniqueInstance null private static object syncRoo
  • 使用 Powershell 或 C# 获取 Azure“文件和文件夹”作业状态

    我一直在尝试找到一种方法来获取在 AzureRM 中运行的几个客户上运行的 文件和文件夹 备份作业的状态 可以在 AzureRm 门户中手动找到状态 恢复服务保管库 gt 作业 gt 备份作业 使用powershell不显示任何作业信息 G

随机推荐

  • tput cols 在脚本中无法正常工作

    我在脚本中使用 tput cols 一切正常 除非窗口最大化 我的脚本能够正确获取任何窗口大小 但是当窗口最大化时 它会得到错误的值 80 然后我直接在终端中输入 tput cols 然后得到正确的大小 158 所以我的问题是 即使窗口最大
  • ASP.NET 和 Visual Studio - 添加项目引用与 Bin 文件夹 DLL

    我昨天刚刚开始一份新工作 这只是我在 ASP NET 方面的第二份工作 我们正在设置我的开发盒 并且在使用一些第三方组件 例如 Telerik 等 时遇到了问题 我注意到他们安装了这些第三方工具 寻找 DLL 文件 将它们复制到 bin 中
  • cakephp auth组件,使用两种模型

    我的网站有一个供员工使用的公共部分和一个供管理员使用的后端 它使用两种不同的模型 员工模型和管理员模型 我想使用身份验证组件进行员工登录和管理员登录 我知道如何设置 Auth 组件以使用默认用户模型以外的模型 但是我可以让身份验证组件使用两
  • Python——检查对象是否是某个模块中任何类的实例

    需要一种方法来检查对象是否是某个特定模块中任何类的实例 我知道我可以通过从该模块显式导入每个类并检查元组来做到这一点 from my module import ClassOne ClassTwo gt gt gt isinstance m
  • RabbitMQ 和 ActiveMQ 在同一台机器上运行

    出于测试目的 我需要在同一台 Windows 计算机上运行 ActiveMQ 和 RabbitMQ 我已经安装了两者 但无法一起运行它们 我需要停止一项服务才能运行另一项服务 这是我尝试启动运行 ActiveMQ 的 RabbitMQ 时遇
  • 在 Laravel 中迁移表时出现“SQLSTATE[HY000] [2002] No such file or directory”错误

    当我尝试使用 php artisan migrate 命令迁移 Laravel 5 中的表时 出现以下错误 SQLSTATE HY000 2002 中没有这样的文件或目录 vendor laravel framework src Illum
  • 使用代码进行 Entity Framework Core 1.0 代码优先迁移?

    在实体框架的早期版本中 可以使用 DbMigrator 类以编程方式控制代码优先迁移 例如 检查并应用可用迁移 该类是否仍然存在于某处或者是否有功能替代 我发现了一篇关于早期 RC 版本的帖子 其中指出了替代品 但 Core 1 0 中似乎
  • JPopupMenu 行为

    我在下面准备了一个小测试用例 我的问题是当我右键单击窗口时 JPopupMenu 显示 但如果我单击 JWindow 菜单之外的任何位置都不会消失 我必须单击窗口上的某个位置才能将其删除 这不是预期的行为 编辑 阅读 akf 的答案后 我切
  • 如何在Asp.Net Mvc中做Basecamp风格的账户?

    对于 Asp Net 软件即服务应用程序 我想要执行基于帐户的子域 例如 Basecamp 和其他 37Signals 产品 例如 acme myapp com 将加载该客户的帐户并仅提取他们的信息 这在 Ruby on Rails 中很容
  • 滚动到 Bootstrap 模式弹出窗口的顶部

    下面显示的是我的 HTML 代码 它是一个 Bootstrap 模式弹出窗口 我想做的是 如果用户单击 保存 按钮 我正在执行某种验证 如果验证失败 则会显示该消息 并且应自动向上滚动到模式弹出窗口的顶部 但它不向上滚动 下面我还指出了 J
  • 如何在运行时从 Assets 文件夹加载 JAR

    如何在运行时从 Android 应用程序的 asset 文件夹加载 jar 文件 从资产文件夹加载是我的要求 有什么办法可以做到这一点吗 请帮忙 我得到了答案 我在这里添加这个答案 因为这可能对其他一些搜索有帮助 有一些步骤可以实现这一点
  • 在 Finalizer 中处置 MemoryCache 会引发 AccessViolationException

    EDIT有关更多详细信息 请参阅问题底部的编辑注释 原问题 我有一个 CacheWrapper 类 它创建并保存 NET 的实例MemoryCache内部类 MemoryCache将自身挂钩到 AppDomain 事件中 因此除非显式处置
  • 使用 sbt- assembly 将供应商信息添加到 MANIFEST.MF

    我正在使用 sbt assembly 创建一个可运行的 jar 但我的应用程序崩溃了 因为 jai imageio 从 MANIFEST MF 文件加载供应商名称 如果我手动编辑 META INF MANIFEST MF 文件 Manife
  • 圆括号还是不圆括号?有什么不同?

    我最近看到这两件事 我有点困惑 var blah new MyClass Name hello and var blah new MyClass Name hello 有什么不同 为什么它们都有效 Update 这是否意味着如果我在构造函数
  • NotificationCompat.Builder 不起作用,Android 2.2.1

    我有下一个代码 NotificationCompat Builder mBuilder new NotificationCompat Builder this setSmallIcon R drawable ic launcher setC
  • 如何在标题文本上制作字段集图例样式的“背景线”?

    我正在尝试将标题文本设置为类似于您的样式默认图例文本 http www w3schools com tags tryit asp filename tryhtml fieldset出现在字段集中 也就是说 我想要一条类似删除线的行到达文本
  • 通过指针传递和通过引用传递[重复]

    这个问题在这里已经有答案了 可能的重复 C 中指针变量和引用变量有什么区别 https stackoverflow com questions 57483 what are the differences between pointer v
  • 如何在 WooCommerce 中获取具有自定义订单状态的立即付款 URL?

    我想获取客户可以直接支付发票费用的 URL 并且它应该与wc cancelled and wc transaction declined 自定义订单状态 我的解决方案我现在正在做的是使用我的自定义获取参数创建一个自定义页面 并将整个付款流程
  • CGAL:带有信息的点的凸包

    我在平面上有一个由 2D 点 N 个元素 组成的向量 我想制作这些点的凸包 之后 我想检索凸包中每个顶点的向量索引 我该怎么做 我知道 通过利用三角测量存在这种可能性vector
  • Linux串口的正确初始化顺序

    我编写了一个必须在 Linux 上使用串行端口的应用程序 尤其是 ttyUSB 端口 读取和写入操作是使用标准的 select read 循环和 write 执行的 它们可能没有任何问题 但初始化代码 或缺少某些部分 会损坏 tty 子系统