vb.net 做的上位機,怎么實時更新windows 的串口資訊,就是我要實時知道usb口有沒有拔掉,或重新插上,好像是要呼叫windows 的訊息函式,有沒有其他辦法。
uj5u.com熱心網友回復:
USB插拔會有訊息廣播覆寫wndproc可以接收到該訊息
這已經是最簡單了的
uj5u.com熱心網友回復:
用 libusb 或 cyusb 庫uj5u.com熱心網友回復:
你好,我也是做vb上位機的,可不可以請叫你一些問題,這是我的qq:1812775970,可不可以加為好友,謝謝哈uj5u.com熱心網友回復:
直接在一個視窗里面定義一個訊息過濾器或者多載wndproc就可以了。USB設備發生變化的時候會向所有視窗廣播一條訊息,處理這個訊息就可以了。用一個定時器做個范例,通過WMI進行設備列舉,用設備名中的部分字符(CH340)進行區分,你看一下:Dim WM_DEVICECHANGE As Integer = &H219
Dim DBT_DEVICEREMOVECOMPLETE As Integer = &H8004
Dim DBT_DEVICEARRIVAL As Integer = &H8000
Protected Overrides Sub WndProc(ByRef m As Message)
MyBase.WndProc(m)
If m.Msg = WM_DEVICECHANGE Then
If m.WParam.ToInt32 = DBT_DEVICEARRIVAL Then 'usb插入
tmrAutoSetPort.Enabled = True
ElseIf m.WParam.ToInt32 = DBT_DEVICEREMOVECOMPLETE Then
tmrAutoSetPort.Enabled = True
End If
End If
Private Sub tmrAutoSetPort_Tick(sender As Object, e As EventArgs) Handles tmrAutoSetPort.Tick
Dim b = New ManagementObjectSearcher("select * from Win32_PnPEntity").Get '檢測即插即用設備
Dim lst As New List(Of String)
Try
For Each c In b
Try
If c.GetPropertyValue("Name").ToString.Contains("CH340") Then
lst.Add(c.GetPropertyValue("Name"))
End If
Catch ex As Exception
End Try
Next
Catch ex As Exception
End Try
End Sub
End Sub
代碼中檢測了CH340設備并且添加到一個串列中,拔出時的處理沒寫,自己寫吧。
uj5u.com熱心網友回復:
嗷,倆函式粘一起了,End Sub位置不對,自己改改吧。轉載請註明出處,本文鏈接:https://www.uj5u.com/net/107535.html
標籤:VB.NET
上一篇:aspose問題
下一篇:JsonSerializationException Error converting value "無法更新,當前被鎖定”
