To setup the USB events.
Add this declaration in the class, ManagementEventWatcher eventWatcher;
Include using System.Management; in the top of the source file.
In project, add referenece to the system management.
To setup the USB event add the following code to initialisation function.
WqlEventQuery eventQuery = new WqlEventQuery();
eventQuery.EventClassName = "__InstanceOperationEvent";
eventQuery.WithinInterval = new TimeSpan(0, 0, 1);
eventQuery.Condition = @"TargetInstance ISA 'Win32_USBControllerDevice' ";
eventWatcher = new ManagementEventWatcher(eventQuery);
eventWatcher.EventArrived += new EventArrivedEventHandler(eventWatcher_EventArrived);
eventWatcher.Start();
Add the event code.
private void eventWatcher_EventArrived(object sender, EventArrivedEventArgs e)
{
ManagementBaseObject mbo = (ManagementBaseObject)e.NewEvent["TargetInstance"];
using (ManagementObject mo = new ManagementObject(mbo["Dependent"].ToString()))
{
if (mo != null)
{
try
{
mo.Get();
/* Wavecom vendor ID is always 0x114F and Q26 product ID is 0x1234 */
if (mo.GetPropertyValue("DeviceID").ToString().Contains("VID_114F&PID_1234"))
{
objQ26Comms.Open(Q26Port);
USBConnectionFlag = true;
}
}
catch (ManagementException)
{
if (objQ26Comms != null)
{
objQ26Comms.Close();
}
USBConnectionFlag = false;
}
}
}
}