本帖最后由 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);
}
本帖最后由 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);
}
举报