2
2
using System ;
3
3
using System . IO ;
4
4
using System . IO . Ports ;
5
- using System . Management ;
6
5
using System . Text ;
7
6
using System . Threading . Tasks ;
8
7
using System . Windows . Forms ;
@@ -13,49 +12,10 @@ namespace SerialTool
13
12
public partial class MainForm : Form
14
13
{
15
14
private SerialPort port ;
16
- private ManagementEventWatcher portCreationWatcher ;
17
- private ManagementEventWatcher portDeletionWatcher ;
18
15
19
16
public MainForm ( )
20
17
{
21
18
InitializeComponent ( ) ;
22
-
23
- Task . Run ( ( ) =>
24
- {
25
- string query = "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance isa \" WIN32_SerialPort\" " ;
26
- portCreationWatcher = new ManagementEventWatcher ( query ) ;
27
- portCreationWatcher . EventArrived += Watcher_SerialPortCreation ;
28
- portCreationWatcher . Start ( ) ;
29
-
30
- query = "SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance isa \" WIN32_SerialPort\" " ;
31
- portDeletionWatcher = new ManagementEventWatcher ( query ) ;
32
- portDeletionWatcher . EventArrived += Watcher_SerialPortDeletion ;
33
- portDeletionWatcher . Start ( ) ;
34
- } ) ;
35
- }
36
-
37
- private void Watcher_SerialPortCreation ( object sender , EventArrivedEventArgs e )
38
- {
39
- BeginInvoke ( ( MethodInvoker ) delegate
40
- {
41
- ManagementBaseObject target = ( ManagementBaseObject ) e . NewEvent . Properties [ "TargetInstance" ] . Value ;
42
- serialPortName . Items . Add ( target . Properties [ "DeviceId" ] . Value . ToString ( ) ) ;
43
- } ) ;
44
- }
45
-
46
- private void Watcher_SerialPortDeletion ( object sender , EventArrivedEventArgs e )
47
- {
48
- BeginInvoke ( ( MethodInvoker ) delegate
49
- {
50
- ManagementBaseObject target = ( ManagementBaseObject ) e . NewEvent . Properties [ "TargetInstance" ] . Value ;
51
- string portName = target . Properties [ "DeviceId" ] . Value . ToString ( ) ;
52
- if ( serialPortName . Text . Equals ( portName ) )
53
- {
54
- serialPortName . Text = string . Empty ;
55
- CloseSerialPort ( ) ;
56
- }
57
- serialPortName . Items . Remove ( portName ) ;
58
- } ) ;
59
19
}
60
20
61
21
private void ShowSerialPorts ( )
@@ -263,28 +223,9 @@ private void TimeOut_CheckedChanged(object sender, EventArgs e)
263
223
264
224
private async void SerialPortName_SelectedIndexChanged ( object sender , EventArgs e )
265
225
{
266
- string description = string . Empty ;
267
- string pnpDeviceID = string . Empty ;
268
- string portName = serialPortName . Text ;
269
- await Task . Run ( ( ) =>
270
- {
271
- string query = $ "SELECT * FROM WIN32_SerialPort WHERE DeviceID=\" { portName } \" ";
272
- using ( var searcher = new ManagementObjectSearcher ( query ) )
273
- {
274
- var ports = searcher . Get ( ) ;
275
- foreach ( var port in ports )
276
- {
277
- description = port . Properties [ "Description" ] . Value . ToString ( ) ;
278
- pnpDeviceID = port . Properties [ "PNPDeviceID" ] . Value . ToString ( ) ;
279
- break ;
280
- }
281
- }
282
- } ) ;
283
- outputText . AppendText ( $ "{ description } ") ;
284
- outputText . AppendText ( $ "{ Environment . NewLine } ") ;
285
- outputText . AppendText ( $ "{ pnpDeviceID } ") ;
286
- outputText . AppendText ( $ "{ Environment . NewLine } ") ;
226
+ await Task . CompletedTask ;
227
+ outputText . AppendText ( $ "{ serialPortName . Text } selected.") ;
287
228
outputText . AppendText ( $ "{ Environment . NewLine } ") ;
288
229
}
289
230
}
290
- }
231
+ }
0 commit comments