如何正确使用SerialPort.DiscardInBuffer?

2024-01-31

我编写了一个应用程序,它以非常快的速度从串行设备读取数据。然而,串行端口对象无法触发收到数据 https://learn.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.datareceived连续运行约 20 分钟后发生事件。以编程方式断开并重新连接串行允许事件再次运行,但仅持续 20 分钟。

我尝试使用丢弃缓冲区 https://learn.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.discardinbuffer每次之后收到数据 https://learn.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.datareceived事件,这似乎已经解决了问题。但该方法会消耗大量 cpu 时间并降低应用程序的性能。 MSDN 提到该方法“丢弃串行驱动程序接收缓冲区中的数据。”,但没有建议何时使用该方法。

何时以及如何应该丢弃缓冲区 https://learn.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.discardinbuffer被使用,我是否在正确的上下文中使用它来解决我的特定问题?

Edit:

实施后收到错误 https://learn.microsoft.com/en-us/dotnet/api/system.io.ports.serialport.errorreceived事件,返回的事件数据表明事件类型是RXOver https://learn.microsoft.com/en-us/dotnet/api/system.io.ports.serialerror.


经过更多调查后,看来我的问题是一个更根本的问题。由于数据快速涌入,因此需要连续清除或处理串行端口缓冲区以防止“RXOver”错误。我通过在DataReceived事件并在另一个单独的线程中处理它。

据我了解DiscardInBuffer仅应有选择地用于出于初始化目的清除端口的内容,例如在打开端口之前。清除驱动程序缓冲区的过程确实需要一些时间才能完成,因此应在面向性能的应用程序中明智地使用。

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

如何正确使用SerialPort.DiscardInBuffer? 的相关文章

  • UML类图:抽象方法和属性是这样写的吗?

    当我第一次为一个小型 C 项目创建 uml 类图时 我在属性方面遇到了一些麻烦 最后我只是将属性添加为变量 lt
  • 从父类调用子类方法

    a doStuff 方法是否可以在不编辑 A 类的情况下打印 B did stuff 如果是这样 我该怎么做 class Program static void Main string args A a new A B b new B a
  • 如何避免情绪低落?

    我有一个实现状态模式每个状态处理从事件队列获取的事件 根据State因此类有一个纯虚方法void handleEvent const Event 事件继承基础Event类 但每个事件都包含其可以是不同类型的数据 例如 int string
  • 将布尔参数传递给 SQL Server 存储过程

    我早些时候问过这个问题 我以为我找到了问题所在 但我没有 我在将布尔参数传递给存储过程时遇到问题 这是我的 C 代码 public bool upload false protected void showDate object sende
  • 获取没有非标准端口的原始 url (C#)

    第一个问题 环境 MVC C AppHarbor Problem 我正在调用 openid 提供商 并根据域生成绝对回调 url 在我的本地机器上 如果我点击的话 效果很好http localhost 12345 login Request
  • 如何将图像和 POST 数据上传到 Azure 移动服务 ApiController 终结点?

    我正在尝试上传图片and POST表单数据 尽管理想情况下我希望它是json 到我的端点Azure 移动服务应用 我有ApiController method HttpPost Route api upload databaseId sea
  • 如何将图像路径保存到Live Tile的WP8本地文件夹

    我正在更新我的 Windows Phone 应用程序以使用新的 WP8 文件存储 API 本地文件夹 而不是 WP7 API 隔离存储文件 旧的工作方法 这是我如何成功地将图像保存到 共享 ShellContent文件夹使用隔离存储文件方法
  • 从路径中获取文件夹名称

    我有一些路c server folderName1 another name something another folder 我如何从那里提取最后一个文件夹名称 我尝试了几件事 但没有成功 我只是不想寻找最后的 然后就去休息了 Thank
  • Github Action 在运行可执行文件时卡住

    我正在尝试设置运行google tests on a C repository using Github Actions正在运行的Windows Latest 构建过程完成 但是当运行测试时 它被卡住并且不执行从生成的可执行文件Visual
  • 从库中捕获主线程 SynchronizationContext 或 Dispatcher

    我有一个 C 库 希望能够将工作发送 发布到 主 ui 线程 如果存在 该库可供以下人员使用 一个winforms应用程序 本机应用程序 带 UI 控制台应用程序 没有 UI 在库中 我想在初始化期间捕获一些东西 Synchronizati
  • 将 unsigned char * (uint8_t *) 转换为 const char *

    我有一个带有 uint8 t 参数的函数 uint8 t ihex decode uint8 t in size t len uint8 t out uint8 t i hn ln for i 0 i lt len i 2 hn in i
  • 将文本叠加在图像背景上并转换为 PDF

    使用 NET 我想以编程方式创建一个 PDF 它仅包含一个背景图像 其上有两个具有不同字体和位置的标签 我已阅读过有关现有 PDF 库的信息 但不知道 如果适用 哪一个对于如此简单的任务来说最简单 有人愿意指导我吗 P D 我不想使用生成的
  • 在 Dynamics CRM 插件中访问电子邮件发件人地址

    我正在编写一个 Dynamics CRM 2011 插件 该插件挂钩到电子邮件实体的更新后事件 阶段 40 pipeline http msdn microsoft com en us library gg327941 aspx 并且在此阶
  • C - 直接从键盘缓冲区读取

    这是C语言中的一个问题 如何直接读取键盘缓冲区中的数据 我想直接访问数据并将其存储在变量中 变量应该是什么数据类型 我需要它用于我们研究所目前正在开发的操作系统 它被称为 ICS OS 我不太清楚具体细节 它在 x86 32 位机器上运行
  • 有没有办法禁用 .NET 标签的“双击复制”功能?

    这真的很烦人 我使用标签作为列表项用户控件的一部分 用户可以单击它来选择列表项 然后双击它来重命名它 但是 如果剪贴板中有名称 双击标签会将其替换为标签文本 我还检查了应用程序中的其他标签 双击它们也会将其复制到剪贴板 我没有在这个程序中编
  • 32 位到 64 位内联汇编移植

    我有一段 C 代码 在 GNU Linux 环境下用 g 编译 它加载一个函数指针 它如何执行并不重要 使用一些内联汇编将一些参数推送到堆栈上 然后调用该函数 代码如下 unsigned long stack 1 23 33 43 save
  • 为什么 C# Math.Ceiling 向下舍入?

    我今天过得很艰难 但有些事情不太对劲 在我的 C 代码中 我有这样的内容 Math Ceiling decimal this TotalRecordCount this PageSize Where int TotalRecordCount
  • Process.Start 阻塞

    我正在调用 Process Start 但它会阻止当前线程 pInfo new ProcessStartInfo C Windows notepad exe Start process mProcess new Process mProce
  • Validation.ErrorTemplate 的 Wpf 动态资源查找

    在我的 App xaml 中 我定义了一个资源Validation ErrorTemplate 这取决于动态BorderBrush资源 我打算定义独特的BorderBrush在我拥有的每个窗口以及窗口内的不同块内
  • 防止索引超出范围错误

    我想编写对某些条件的检查 而不必使用 try catch 并且我想避免出现 Index Out of Range 错误的可能性 if array Element 0 Object Length gt 0 array Element 1 Ob

随机推荐

  • CSS - 如何强制元素达到父元素剩余/可用空间的 100%,而不超出它?

    在我看来 这似乎是一个非常业余的问题 但尽管如此 它仍然是一个令人沮丧的异常情况 这实际上是两部分问题的第二部分 第一部分是一个相当常见的部分 涉及让元素拉伸到其父对象的 100 高度 在我的演示中 我有以下 HTML div DIV 1
  • jQuery UI datepicker:配置键盘快捷键

    我用jQuery UI 日期选择器 http jqueryui com demos datepicker 让用户选择一个日期 它有一些快捷键 以便可以使用键盘进行控制 page up down previous next month ctr
  • 动态库映像不包含x86_64、i386架构

    我正在尝试为 iOS 构建动态库 并结合架构 armv7 armv7s arm64 i386 x86 64 Here is my target s Build Settings 如您所见 我已将 x86 64 和 i386 添加到架构 an
  • 在 iPad 上调试 JavaScript 错误

    有什么方法可以调试在 iPad 上运行的 JavaScript 页面吗 转到此位置 并启用调试控制台 iOS6 调试控制台消失了 使用替代方案使其发挥作用 例如 Firebug Lite 看看这里的相关问题 iOS6 删除了 iPad 的控
  • 不存在的模型类的雄辩关系

    我希望在我的应用程序中拥有许多模型 模块 但其中一些模型 模块将被某些客户删除 现在我有这样的关系 public function people return this gt hasMany People model id 当我跑步时 mo
  • Java 虚拟机和交换空间

    感谢这里的任何专家可以就以下 JVM 和交换空间相关查询提供建议 提前致谢 1 当 JVM Java 堆 永久代或本机堆中发生内存不足时 操作系统将使用交换空间 我对吗 或者交换空间用于本机堆中的内存不足 2 我是否正确 本机堆大小在 JV
  • 在 iOS SDK 中使用短信/彩信发送附件

    在 iOS 7 中 支持通过第三方应用程序在短信中添加附件 我想知道 支持哪些类型的文件作为附件 例如 png pdf 等 我可以通过短信 彩信发送 NSData 吗 例如 dat 格式 这些邮件的收件人是否能够使用 iOS 的 打开方式
  • Qt Webkit Bridge:C++ 访问 JavaScript

    我正在使用 QWebView 并调用 setHtml 来显示一些 HTML JavaScript 页面 我使用 QWebFrame evaluateJavaScript 传递数据更新 方法是向其传递包含对 JavaScript 函数 带参数
  • 从文本文件读取 - 批处理

    我有一个文本文件 a txt 你好世界下午好 我编写了一个批处理脚本来逐行读取该文件的内容 FOR F tokens delims x in a txt DO echo x 我得到的输出为 Hello World 由于分隔符 空格 的默认行
  • 在Python中使用字符串调用函数[重复]

    这个问题在这里已经有答案了 前几天在网上搜索 发现一篇关于python字典的有趣文章 这是关于使用字典中的键来调用函数 在那篇文章中 作者定义了一些函数 然后定义了一个字典 其键与函数名完全相同 然后他可以从用户那里获取输入参数并调用相同的
  • 继承:内部类与内部接口

    在表达关切的同时防止基类暴露 https stackoverflow com questions 52842532 prevent exposure of base classes abstract classes 52843168 528
  • CMYK + CMYK = ? CMYK / 2 =?

    假设CMYK中定义了两种颜色 color1 30 40 50 60 color2 50 60 70 80 如果要打印它们 最终的颜色会有什么值 color new min cyan1 cyan2 100 min magenta1 magen
  • 为所有用户卸载自动运行注册表项

    考虑这种情况 Inno Setup 将名为 XYZ 的程序安装到 Program Files 中 供所有用户访问 程序 XYZ 中的配置选项允许安装注册表值HKCU Software Microsoft Windows CurrentVer
  • Android:将静态库合并为一个

    我使用 Android NDK r8 生成多个静态库包括 BUILD STATIC LIBRARY 我成功得到 lib1 a lib2 a lib3 a等 现在我想将这些静态库合并为一个 我尝试使用 Android NDK 中的 ar ex
  • 为什么有 BigInteger(String) 而没有 BigInteger(long)?

    在 Java 中 要将 String 转换为 BigInteger 可以使用构造函数new BigInteger String 但要转换 int long 你可以使用工厂函数BigInteger valueof long 这是为什么 Mor
  • AngularDart 组件和模型绑定

    是否可以将 AngularDart ngComponent 绑定到模型 然后从组件操作该模型 并查看 ngComponent 外部更改之外的更改 例如
  • WordPress - $wpdb->插入 - MySQL NOW()

    是否有可能在 wpdb gt insert 调用中使用 MySQL NOW 当我使用以下代码时 NOW 不起作用 data array id gt NULL order gt serialize POST data Order create
  • 从另一个 .ipynb 文件导入函数

    我在名为 functions ipynb 的文件中定义了一个 hello world 函数 现在 我想使用 导入函数 导入另一个文件中的函数 我确信它们位于同一个文件夹中 但是 它仍然显示 ImportError 没有名为函数的模块 顺便说
  • fputs和fflush,写入和缓冲过程

    我对 C 中的写入处理如何进行感到困惑 所以我有一个字符串 s 我想将其写入输出 为此 我使用 fputs fputs s stdout 但显然这不会写入输出 而只是收集数据进行写入 具体是在哪里收集的 所以我必须等到程序退出或者直到我调用
  • 如何正确使用SerialPort.DiscardInBuffer?

    我编写了一个应用程序 它以非常快的速度从串行设备读取数据 然而 串行端口对象无法触发收到数据 https learn microsoft com en us dotnet api system io ports serialport dat