【C#】Winform监听USB串口设备拔插实现自动断开
【C#】Winform监听USB串口设备拔插
零、问题
最近在开发串口相关的软件,需要检测串口拔掉后主动关闭串口,因此需要检测到USB的拔插事件。
一、解决
在主窗口From类下覆盖WndProc方法:
//事件代码
private const int WM_DEVICECHANGE = 0x219; //设备改变
private const int DBT_DEVICEARRIVAL = 0x8000; //检测到新设备
private const int DBT_DEVICEREMOVECOMPLETE = 0x8004; //移除设备
protected override void WndProc(ref Message m)
{
base.WndProc(ref m);//调用父类方法,以确保其他功能正常
switch (m.Msg)
{
case WM_DEVICECHANGE://设备改变事件
switch ((int) m.WParam)
{
case DBT_DEVICEARRIVAL:
DebugWriteLine("新设备", DEBUG_I);
int devType = Marshal.ReadInt32(m.LParam, 4);
DebugWriteLine("设备类型:" + devType, DEBUG_I);
break;
case DBT_DEVICEREMOVECOMPLETE:
DebugWriteLine("设备移除", DEBUG_I);
break;
}
//刷新串口设备
RefreshUsableSp();
break;
}
}
其中,RefreshUsableSp()方法为刷新串口的相关操作,不管在设备插入还是拔出的时候都应该调用,在插入时添加到串口选项,在拔除时移除串口选项,如果串口是打开状态则监测连接的串口有没有被拔掉,有拔掉就断开当前串口(虽然会自己断掉,但是没有回调,因此需要主动检测并断掉)。
二、效果
能实现插入串口实时刷新,拔除之后自动断开,效果理想。
【C#】Winform监听USB串口设备拔插实现自动断开的更多相关文章
- Delphi在Android下实现BroadcastReceiver功能(举例在Delphi下获取USB外设拔插消息)
在Android里,用java通过实现BroadcastReceiver接口,就可以获得Intent消息.可是Delphi程序不能直接实现JBroadcastReceiver,如何能够实现类似Java ...
- Java线程监听,意外退出线程后自动重启
Java线程监听,意外退出线程后自动重启 某日,天朗气清,回公司,未到9点,刷微博,顿觉问题泛滥,惊恐万分! 前一天写了一个微博爬行程序,主要工作原理就是每隔2分钟爬行一次微博,获取某N个关注朋友微博 ...
- C# 上位机的USB设备拔插检测
我们做USB通信时,通信成功后,往往要检测USB设备的拔插状态,这里就USB拔插进行一下说明. 参考:https://www.imooc.com/article/17438 先说明一下,我这里只是用C ...
- golang监听rabbitmq消息队列任务断线自动重连接
需求背景: goalng常驻内存任务脚本监听rbmq执行任务 任务脚本由supervisor来管理 当rabbitmq长时间断开连接会出现如下图 进程处于fatal状态 假如因为不可抗拒因素,rabb ...
- android 监听 USB 拔插广播消息
USBBroadcastReceiver.java package com.example.communication; import android.content.BroadcastReceive ...
- 广播监听USB插入与拔出
package com.joy.usbbroadcastreceiver; import android.content.BroadcastReceiver; import android.conte ...
- USB设备的插入和弹出的监听以及软弹出可移动媒体(如Windows的移除USB设备) .
一.监听USB设备的插入和弹出 当USB设备插入或者弹出时,Windows会产生一条全局消息:WM_DEVICECHANGE 我们需要做的是,获得这条消息的wParam参数,如果为DBT_DEVICE ...
- Android USB大容量存储时SD卡状态监听(转)
对SD卡状态监听,到现在为止我知道的有两种方式: 1.注册StorageEventListener来监听sd卡状态 StorageEventListener中有onStorageStateChange ...
- 【winform】基于UserControl实现webBrower组件时html页面元素加载及onclick事件监听实现
[背景]基于System.Windows.Forms.UserControl实现的webBrower组件在html内使用window.external调用winform事件失败. [解决思路]借助wi ...
- 设置USB数据监听
设置USB数据监听 在Kali Linux中,USB也是作为一个通信端口进行存在.常见的鼠标.键盘.U盘都是通过USB接口传输数据.所以,对于USB接口也可以实施监听,类似网络接口一样.在进行US ...
随机推荐
- sql注入学校后台
有运气成分,遇到两个学校,子域名查询了一下发现有登录平台,然后就直接sql了 payload:admin'or 1=1--+ 很离谱,这年头这两学校还能直接被sql进入后台. 然后进学校后台后就可以直 ...
- uniapp去修改vuex中state中的值
修改state中的值 修改state中的值,方法 (1) 在mutations中写修改state的api. (2)写好之后,直接store.commit("changeValue" ...
- 表治理-Iceberg过期快照清理
总结 指标 清理前(已优化小文件) 清理后 查询速度 13秒 15秒(波动) 表总大小 26.4G 17.2G metadata目录文件数 75 42 data目录文件数 1501 602 !!!需要 ...
- Amis配置
一.穿梭器 { "type": "transfer-picker", "name": "parentMenuId", & ...
- 从SSH远程到Git Push:在Windows上一步到位实现免密码登录
前言 我一直希望在Windows上能像在Linux系统中那样,通过SSH密钥实现免密码远程连接.每次远程连接到服务器时,手动输入密码既麻烦又不太安全,尤其是在我需要频繁操作的情况下. 之前的文章中已经 ...
- 解密prompt系列48. DeepSeek R1 & Kimi 1.5长思维链 - RL Scaling
春节前DeepSeek R1和Kimi1.5炸翻天了,之前大家推测的O1的实现路径,多数都集中在MCTS推理优化,以及STaR等样本自优化方案等等,结果DeepSeek和Kiim直接出手揭示了reas ...
- 每次下载idea都必装的十个插件!
IDEA必备插件 Alibaba Java Coding Guidelines 功能: 阿里巴巴Java开发规范插件,用于代码规范检查. 特点: 基于阿里巴巴Java开发手册,提供实时代码规范检查,帮 ...
- SpringBoot 自动代码生成三层
前言 虽然mybatis已经有了代码生成,但是对于SpringBoot 项目来说生成的还是需要改动,而且也没得逻辑层,和控制层.但是这些东西是逃避不了,所以我就针对单表,做了一个代码生成器. my ...
- Markdown 编写技巧汇总(二)
继续上篇汇总 附-上篇汇总,接着做更加高级一点的应用技巧. [1]列表与引言嵌套 两者嵌套,如: > 我是一行文本 > 1. 文本1 > 2. 文本2 > 1. 文本 > ...
- Chrome 133 里程碑式更新 - moveBefore, 或开启前端框架未来新纪元?
相关背景: Chrome 133 版本(将于 2 月 4 日发布稳定版)引入了一个新的 DOM 操作方法:Node.prototype.moveBefore.这一方法虽然看似简单,但其意义重大,因为它 ...