Created
April 8, 2020 14:46
-
-
Save owlscatcher/8e96b0eb59428b2f1da42e53c4a32204 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
using System; | |
using System.Collections.Generic; | |
using System.Data; | |
using System.Data.Sql; | |
using System.Data.SqlClient; | |
using System.IO; | |
using System.IO.Ports; | |
using System.Linq; | |
using System.Management; | |
using System.Windows.Forms; | |
namespace ConsoleApp1 | |
{ | |
class Program | |
{ | |
private static string AutodetectComPort() | |
{ | |
ManagementScope connectionScope = new ManagementScope(); | |
SelectQuery serialQuery = new SelectQuery("SELECT * FROM Win32_SerialPort"); | |
ManagementObjectSearcher searcher = new ManagementObjectSearcher(connectionScope, serialQuery); | |
try | |
{ | |
foreach (ManagementObject item in searcher.Get()) | |
{ | |
string desc = item["Description"].ToString(); | |
string deviceId = item["DeviceID"].ToString(); | |
if (desc.Contains("Устройство с последовательным интерфейсом USB")) | |
{ | |
return deviceId; | |
} | |
} | |
} | |
catch (ManagementException e) | |
{ | |
/* Do Nothing */ | |
} | |
return null; | |
} | |
public enum EventType | |
{ | |
Inserted = 2, | |
Removed = 3 | |
} | |
static void Main(string[] args) | |
{ | |
ManagementEventWatcher watcher = new ManagementEventWatcher(); | |
WqlEventQuery query = new WqlEventQuery("SELECT * FROM Win32_DeviceChangeEvent WHERE EventType = 2 or EventType = 3"); | |
watcher.EventArrived += (s, e) => | |
{ | |
EventType eventType = (EventType)(Convert.ToInt16(e.NewEvent.Properties["EventType"].Value)); | |
string eventName = Enum.GetName(typeof(EventType), eventType); | |
Console.WriteLine("{0}: {1}", DateTime.Now, eventName); | |
Console.WriteLine(AutodetectComPort()); | |
}; | |
watcher.Query = query; | |
watcher.Start(); | |
Console.ReadLine(); | |
} | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment