如何自动检测串行COM端口的连接C#

2023-12-12

我有与设备通信的应用程序。设备通过串行 COM 端口连接。我的应用程序可以与设备通信。

我需要一些方法/事件,可以通过运行应用程序扫描COM端口。当我将设备连接到 PC 时,方法/事件将打印带有消息“已连接”或类似内容的 MessageBox。

我发现了这样的事情:

comPort.DataReceived += new SerialDataReceivedEventHandler(port_DataReceived);

但这不起作用。


我不确定您是否正在尝试自动检测设备连接到哪个端口,或者自动检测设备是否连接到特定端口。

但在这两种情况下,原理是相同的:

  1. 您可以使用以下命令枚举串行端口:串行端口.GetPortNames如果您需要确定端口,或者如果您已经知道端口,请跳至步骤 2
  2. 对于集合中的每个端口,您可以通过创建新的连接来打开连接SerialPort对象,并通过调用Open
  3. 对于每个打开的连接,您尝试从端口写入/读取确定设备是否已连接的数据序列
  4. 对于每个打开的连接,如果数据读取超时,则没有设备连接到该端口;否则,如果您得到预期的结果,您就知道您的设备已连接
  5. 对于每个端口,使用关闭连接Close on the SerialPort object.

在任何给定点执行上述操作都会告诉您您的设备是否在该点连接,以及它连接到哪个端口。

如果您需要连续进行存在检测,那么您可能需要创建一个计时器并定期执行此测试(每 30 秒或每 2 分钟 - 取决于您愿意接受的延迟)。

NOTE

正如其他人在答案中指出的那样,您将希望异步运行串行端口检测代码,以免在扫描端口时阻塞您的主应用程序。由于没有连接设备的端口超时,扫描肯定需要一段时间。

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

如何自动检测串行COM端口的连接C# 的相关文章

  • Web 客户端和 Expect100Continue

    使用 WebClient C NET 时设置 Expect100Continue 的最佳方法是什么 我有下面的代码 我仍然在标题中看到 100 continue 愚蠢的 apache 仍然抱怨 505 错误 string url http
  • ASP.NET MVC:这个业务逻辑应该放在哪里?

    我正在开发我的第一个真正的 MVC 应用程序 并尝试遵循一般的 OOP 最佳实践 我正在将控制器中的一些简单业务逻辑重构到我的域模型中 我最近一直在阅读一些内容 很明显我应该将逻辑放在域模型实体类中的某个位置 以避免出现 贫血域模型 反模式
  • Asp.NET WebApi 中类似文件名称的路由

    是否可以在 ASP NET Web API 路由配置中添加一条路由 以允许处理看起来有点像文件名的 URL 我尝试添加以下条目WebApiConfig Register 但这不起作用 使用 URIapi foo 0de7ebfa 3a55
  • 使用实体框架模型输入安全密钥

    这是我今天的完美想法 Entity Framework 中的强类型 ID 动机 比较 ModelTypeA ID 和 ModelTypeB ID 总是 至少几乎 错误 为什么编译时不处理它 如果您使用每个请求示例 DbContext 那么很
  • 类模板参数推导 - clang 和 gcc 不同

    下面的代码使用 gcc 编译 但不使用 clang 编译 https godbolt org z ttqGuL template
  • BitTorrent 追踪器宣布问题

    我花了一点业余时间编写 BitTorrent 客户端 主要是出于好奇 但部分是出于提高我的 C 技能的愿望 我一直在使用理论维基 http wiki theory org BitTorrentSpecification作为我的向导 我已经建
  • 用于登录 .NET 的堆栈跟踪

    我编写了一个 logger exceptionfactory 模块 它使用 System Diagnostics StackTrace 从调用方法及其声明类型中获取属性 但我注意到 如果我在 Visual Studio 之外以发布模式运行代
  • OleDbDataAdapter 未填充所有行

    嘿 我正在使用 DataAdapter 读取 Excel 文件并用该数据填充数据表 这是我的查询和连接字符串 private string Query SELECT FROM Sheet1 private string ConnectStr
  • C# 中通过 Process.Kill() 终止的进程的退出代码

    如果在我的 C 应用程序中 我正在创建一个可以正常终止或开始行为异常的子进程 在这种情况下 我通过调用 Process Kill 来终止它 但是 我想知道该进程是否已退出通常情况下 我知道我可以获得终止进程的错误代码 但是正常的退出代码是什
  • C#中如何移动PictureBox?

    我已经使用此代码来移动图片框pictureBox MouseMove event pictureBox Location new System Drawing Point e Location 但是当我尝试执行时 图片框闪烁并且无法识别确切
  • 控件的命名约定[重复]

    这个问题在这里已经有答案了 Microsoft 在其网站上提供了命名指南 here http msdn microsoft com en us library xzf533w0 VS 71 aspx 我还有 框架设计指南 一书 我找不到有关
  • 垃圾收集器是否在单独的进程中运行?

    垃圾收集器是否在单独的进程中启动 例如 如果我们尝试测量某段代码所花费的进程时间 并且在此期间垃圾收集器开始收集 它会在新进程上启动还是在同一进程中启动 它的工作原理如下吗 Code Process 1 gt Garbage Collect
  • 什么时候虚拟继承是一个好的设计? [复制]

    这个问题在这里已经有答案了 EDIT3 请务必在回答之前清楚地了解我要问的内容 有 EDIT2 和很多评论 有 或曾经 有很多答案清楚地表明了对问题的误解 我知道这也是我的错 对此感到抱歉 嗨 我查看了有关虚拟继承的问题 class B p
  • 如何查看网络连接状态是否发生变化?

    我正在编写一个应用程序 用于检查计算机是否连接到某个特定网络 并为我们的用户带来一些魔力 该应用程序将在后台运行并执行检查是否用户请求 托盘中的菜单 我还希望应用程序能够自动检查用户是否从有线更改为无线 或者断开连接并连接到新网络 并执行魔
  • 这些作业之间是否存在顺序点?

    以下代码中的两个赋值之间是否存在序列点 f f x 1 1 x 2 不 没有 在这种情况下 标准确实是含糊不清的 如果你想确认这一点 gcc 有这个非常酷的选项 Wsequence point在这种情况下 它会警告您该操作可能未定义
  • 向现有 TCP 和 UDP 代码添加 SSL 支持?

    这是我的问题 现在我有一个 Linux 服务器应用程序 使用 C gcc 编写 它与 Windows C 客户端应用程序 Visual Studio 9 Qt 4 5 进行通信 是什么very在不完全破坏现有协议的情况下向双方添加 SSL
  • 基于 OpenCV 边缘的物体检测 C++

    我有一个应用程序 我必须检测场景中某些项目的存在 这些项目可以旋转并稍微缩放 更大或更小 我尝试过使用关键点检测器 但它们不够快且不够准确 因此 我决定首先使用 Canny 或更快的边缘检测算法 检测模板和搜索区域中的边缘 然后匹配边缘以查
  • 测试用例执行完成后,无论是否通过,如何将测试用例结果保存在变量中?

    我正在使用 NUNIT 在 Visual Studio 中使用 Selenium WebDriver 测试用例的代码是 我想在执行测试用例后立即在变量中记录测试用例通过或失败的情况 我怎样才能实现这一点 NUnit 假设您使用 NUnit
  • 如何将服务器服务连接到 Dynamics Online

    我正在修改内部管理应用程序以连接到我们的在线托管 Dynamics 2016 实例 根据一些在线教程 我一直在使用OrganizationServiceProxy out of Microsoft Xrm Sdk Client来自 SDK
  • 如何在文本框中插入图像

    有没有办法在文本框中插入图像 我正在开发一个聊天应用程序 我想用图标图像更改值 等 但我找不到如何在文本框中插入图像 Thanks 如果您使用 RichTextBox 进行聊天 请查看Paste http msdn microsoft co

随机推荐

  • 更快地显示 HTML 标题属性

    有没有办法减少HTML标题属性的显示延迟 如果您实现自己的工具提示机制 您可以自由调整显示所需的时间 无法修改本机工具提示
  • 如何查看docker镜像内容

    我做了一个 docker pull 并可以列出已下载的图像 我想看看这张图片的内容 在网上搜索过但没有直接答案 如果映像包含 shell 您可以使用该映像运行交互式 shell 容器并探索该映像所包含的任何内容 如果sh不可用 busybo
  • Common Lisp 中的宏延续——关于 OnLisp 中的实现

    In On Lisp p 267 Paul Graham 提供了连续传递宏的实现 setq cont identity defmacro lambda parms body body lambda cont parms body defma
  • 在框架内调用特定的 id

    我在 mainpage html 中有一个 iframe 标记 该 iframe 会回调 back html 有没有办法只调用 back html 中的特定 ID 以在 iframe 中显示 细节 我在 back html 中有 25x25
  • 如何连接到本地谷歌云数据存储数据库?

    我有 GAE 应用程序 它在 Google Cloud Datastore 中创建一些数据并将一些二进制文件存储到 Google Cloud Storage 让我们调用该应用程序WebApp 现在我有一个不同的应用程序在 Google 计算
  • 基于C#列表而不是过滤表过滤sql

    假设我有一个包含以下数据的表 现在我想按主键部门和号码进行过滤 我有一个必须在代码中过滤的部门和号码组合的列表 在我看来 我会创建一个连接 结果如下 select from employee e inner join dynamicTabl
  • 是否有 HTML5 方法来显示已加载到内存中的 tiff 图像数据

    我有一个 tiff 图像存储在内存中 在 JavaScript 变量中 在浏览器窗口中显示该图像的 javascript 或 html 技术是什么 是否有 drawimage 类型的函数 本机浏览器对 tiff 文件的支持仍然很差 维基百科
  • 长时间运行的云运行进程和 pubsub 消息重试

    我有一个云运行服务 它将运行长达 60 分钟 pubsub 是执行云运行服务的触发点 重试策略的 pubsub 配置设置为最大值 600 秒 现在 当从 pubsub 发布消息时 cloud run 开始执行 因为完整执行大约需要 60 分
  • ASP.NET Core Web应用程序-如何上传大文件

    Problem 我正在尝试创建一个 ASP NET Core 3 1 Web 应用程序 该应用程序接受文件上传 然后将其分成块以通过 MS Graph API 发送到 Sharepoint 这里还有一些其他帖子解决了类似的问题 但它们假设我
  • PHP 的 APC 与 Ruby 类似吗?

    PHP 有不同的操作码缓存 如 APC Zend Optimizer 来缓存代码并显着加快速度 Ruby 有类似的东西吗 默认的 Ruby 1 9 x 基于字节码 VM 此外您还有基于 Java 虚拟机的 Ruby 实现 JRuby 和 L
  • 如何使用 JavaScript/jQuery 访问 iframe 的内容?

    我想使用 jQuery 操作 iframe 内的 HTML 我想我可以通过将 jQuery 函数的上下文设置为 iframe 的文档来做到这一点 如下所示 function document ready some selector fram
  • 使用 JQgrid 和 sortableRows。更新表行顺序

    Using 使用 SortableRows 并了解行何时被移动修改行顺序后 我已经能够调用警报 我如何将此数据发送到 PHP 调用 editurl 传递此数据 类似于添加或编辑行时 editurl 接收 POST oper 变量 目前有 j
  • 从堆执行指令

    我可以在堆上分配一个块 将其字节设置为与函数调用及其参数相对应的值 然后使用函数调用和取消引用运算符来执行该序列吗 因此 如果我没理解错的话 您想在堆上动态创建 CPU 汇编指令并执行它们 有点像自修改代码 理论上这是可能的 但实际上可能不
  • 使用 Python 修复 Selenium Form 的等待时间

    我是 Python 新手 正在尝试自动填写表单 我已经完成了所有工作 但是当尝试 提交 时 它没有读取 XPATH 因此没有单击 HTML
  • 如何获取操作的默认应用程序

    如何确定哪个应用程序是特定操作的默认应用程序 例如我想知道哪个应用程序用于拨打电话或接收短信 有什么方法可以以编程方式找出哪个应用程序设置为默认应用程序 PackageManager resolveActivity做一些符合您正在寻找的事情
  • 自定义声音远程推送通知 iOS 不起作用

    我正在尝试更改远程消息的声音 我已将文件添加到我的项目中 见图1 我还将所有内容添加到我的 AppDelegate 中 在 didFinishLaunchingWithOptions 中我添加了 if UIDevice currentDev
  • 即使添加 -fPIC 编译标志后,“使用 -fPIC 重新编译”错误仍然存​​在

    我已经下载了一些我想从源代码编译的 C 运行后cmake src进而make从命令行 在构建目录中 我收到以下错误 usr bin ld usr local lib libBulletCollision a btDbvtBroadphase
  • 寄存器的十六进制值? x86

    MOV DL AL MOV DL B2 但是 AL 的十六进制字节值是多少 这些在哪里列出 我刚刚意识到这一定是另一个操作码 有人能指出我正确的方向吗 来自英特尔架构软件开发人员手册 第 2 卷 指令集参考手册 表3 1 与 rb rw 和
  • 即使身份验证成功,PassportJS Facebook 登录 isAuthenticated 返回 false

    由于某种原因 在我的 NodeJS Express 应用程序上 当通过 PassportJS 库与 Facebook 进行身份验证时 无论身份验证是否成功并返回配置文件数据 都会调用request isAuthenticated 总是回来f
  • 如何自动检测串行COM端口的连接C#

    我有与设备通信的应用程序 设备通过串行 COM 端口连接 我的应用程序可以与设备通信 我需要一些方法 事件 可以通过运行应用程序扫描COM端口 当我将设备连接到 PC 时 方法 事件将打印带有消息 已连接 或类似内容的 MessageBox