你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
jinghong21 发表于 2016-12-29 09:34 我现在就是检测USB被插拔的,这些都没问题的! /// 检测USB串口的拔插 ///
查看全部评分
斜阳__ 发表于 2016-12-29 09:21 这个涉及到操作系统层面了;好像没办法处理;应该是在拔之前close;
党国特派员 发表于 2016-12-29 09:28 对虚拟串口要检测USB串口是否被拨掉消息的处理,具体参考windows消息WM_DEVICECHANGE ...
STM32隐藏
5.18活动板子会不会是STM32L4呢
STM32 CUBE软件中找不到STM32L4系列单片机
Your UAT Feedback is needed within today.
应用
AAA
tiwen
BBBB
aaa
2222
你明显是处理的不对。WM_DEVICECHANGE消息只是告诉你设备有变化,具体还要处理DBT_DEVICEQUERYREMOVE,DBT_DEVICEQUERYREMOVEFAILED,DBT_DEVICEREMOVEPENDING这几种情况。
你可以参考下:http://msdn.microsoft.com/en-us/library/aa363427(v=vs.85).aspx
评分
查看全部评分
评分
查看全部评分
你好,我在友善串口调试助手上面实验,是可以这样操作的,而且串口助手不会崩溃,它里面应该是做了处理。现在我只是想让软件不闪退,弹出对话框什么的都无所谓!
我现在就是检测USB被插拔的,这些都没问题的!
/// 检测USB串口的拔插
/// </summary>
/// <param name="m"></param>
protected override void WndProc(ref Message m)
{
if (m.Msg == Detection.UsbSet.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);
}
评分
查看全部评分