Зависит от языка, я не уверен, что последовательные устройства вызывают событие смены устройства, и у меня нет ни одного в данный момент для тестирования.
Однако, если PNP подберет его, я попробую
От создателя WmiCode
Imports System
Imports System.Management
Imports System.Windows.Forms
Namespace WMISample
Public Class WMIReceiveEvent
Public Overloads Shared Function Main() As Integer
Try
Dim query As New WqlEventQuery( _
"SELECT * FROM Win32_DeviceChangeEvent")
Dim watcher As New ManagementEventWatcher(query)
Console.WriteLine("Waiting for an event...")
Dim eventObj As ManagementBaseObject = watcher.WaitForNextEvent()
Console.WriteLine("{0} event occurred.", eventObj("__CLASS"))
' Cancel the event subscription
watcher.Stop()
Return 0
Catch err As ManagementException
MessageBox.Show("An error occurred while trying to receive an event: " & err.Message)
End Try
End Function
End Class
End Namespace
Оттуда вы сможете усовершенствовать то, что было добавлено или удалено из системы.Однако это мало что дает для того факта, что машина могла быть загружена без подключенного устройства.
В любом случае во всех протоколах связи я предполагаю, что правильная обработка ошибок связи необходима.Это похоже на тот факт, что вы не можете гарантировать, что сокет отключился между проверкой, чтобы увидеть, если подключен и записи.