完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
我现在是能检测到虚拟串口被拔出的,不过现在需要串口再次插上去的时候,能够再次使用,这个就不好弄了,因为拔掉之前的串口状态是Open着的,串口再插上去不管你Open()还是Close()软件都会出问题!而且这种情况去操作,上位机软件经常出现崩溃闪退的现象!
有什么方法让上位机软件不闪退崩溃吗? |
|
相关推荐
22个回答
|
|
|
你明显是处理的不对。WM_DEVICECHANGE消息只是告诉你设备有变化,具体还要处理DBT_DEVICEQUERYREMOVE,DBT_DEVICEQUERYREMOVEFAILED,DBT_DEVICEREMOVEPENDING这几种情况。 你可以参考下:https://msdn.microsoft.com/en-us/library/aa363427(v=vs.85).aspx |
|
|
|
|
|
有点深奥 没怎么看懂!!!
|
|
|
|
|
|
虚拟串口,没玩过,听过
|
|
|
|
|
|
我也想知道
|
|
|
|
|
|
这个涉及到操作系统层面了;好像没办法处理;应该是在拔之前close;
|
|
|
|
|
|
你好,我在友善串口调试助手上面实验,是可以这样操作的,而且串口助手不会崩溃,它里面应该是做了处理。现在我只是想让软件不闪退,弹出对话框什么的都无所谓! |
|
|
|
|
|
对虚拟串口要检测USB串口是否被拨掉消息的处理,具体参考windows消息WM_DEVICECHANGE
|
|
|
|
|
|
本帖最后由 jinghong21 于 2016-12-29 09:37 编辑 我现在就是检测USB***拔的,这些都没问题的! /// 检测USB串口的拔插 /// /// protected override void WndProc(ref Message m) { if (m.Msg == Detection.U***Set.WM_DEVICE_CHANGE) // 捕获USB设备的拔出消息WM_DEVICECHANGE { try { comPort.Close(); //我怀疑闪退就是这一局导致的,因为comPort已经不存在了,去操作它导致软件崩溃的! //可是,要是不加这一局comPort的状态就是Open,下一次USB再插进来,都不能操作comPort } catch { } if (Detection.GetComNum() != null) { try { comPort.PortName = Detection.GetComNum(); comPort.BaudRate = Setting.ComSet.comBaudRate; comPort.Open(); statusStrip1.BackColor = Color.Green; toolStripStatusLabel1.Text = "Open " + comPort.PortName + " " + comPort.BaudRate.ToString(); } catch { comPort.Close(); comPort.Open(); } } else { comPort.Close(); statusStrip1.BackColor = Color.Red; toolStripStatusLabel1.Text = "Close " + comPort.PortName + " " + comPort.BaudRate.ToString(); } } base.WndProc(ref m); } |
|
|
|
|
|
应该不会崩溃吧,我们经常遇到是再次打开的时候会失败而已。
|
|
|
|
|
|
是很奇怪,在Debug调试下就不会出现闪退的现象,直接打开exe就会出现闪退的现象! |
|
|
|
|
你我然后 发表于 2018-11-16 09:22 你好,这个没关系的。 我在 if (Detection.GetComNum() != null) 做了处理了! 就是有一个疑惑的地方,闪退的解决办法? |
|
|
|
|
|
你再仔细看下,这是系统在拔掉USB之前,给你一个Close的机会。过了这个机会你再Close就要报错了。因为已经不存在要关闭的设备了。 |
|
|
|
|
|
switch (m.WParam.ToInt32()) 这个值一直为7,不会等于DBT_DEVICEREMOVECOMPLETE或者DBT_DEVICEARRIVAL。 |
|
|
|
|
|
简单的处理是每次操作的时候重新扫描u***虚拟设备端口是否存在,当然用消息处理最合理
|
|
|
|
|
|
而且有一个奇怪的现象,Debug模式下面怎么操作都不会崩溃闪退,只有在bin下面的exe文件下面才会有闪退的现象!
|
|
|
|
|
|
这个我也遇到,看看有什么办法没
|
|
|
|
|
|
10楼正解呀
|
|
|
|
|
|
|
|
|
支持热插拔?
|
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
STM32F405驱动DS1302时钟模块,输出时间错乱该怎么排查?
2797 浏览 2 评论
stm32f405rgt6驱动DS1302ZN出现时间错乱问题
2403 浏览 1 评论
stm32用fsmc读取ad7606采集数据,数据不变,只有开发版复位才更新数据
2276 浏览 0 评论
2388 浏览 1 评论
1637 浏览 1 评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 20:55 , Processed in 0.956008 second(s), Total 78, Slave 71 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
989