Questo sito utilizza cookies, anche di terze parti, per mostrare pubblicità e servizi in linea con il tuo account. Leggi l'informativa sui cookies.
Username: Password: oppure
C# / VB.NET - [VB.NET2005] - USB Hid Connessione - Disconnessione
Forum - C# / VB.NET - [VB.NET2005] - USB Hid Connessione - Disconnessione

Avatar
Neo1986 (Ex-Member)
Pro


Messaggi: 88
Iscritto: 21/06/2010

Segnala al moderatore
Postato alle 11:41
Martedì, 26/01/2016
Buongiorno a tutti!

E' da parecchio che non scrivevo più!

Vorrei chiedervi un consiglio, sto realizzando una dll per la comunicazione con periferiche USB Hid, riesco tramite la libreria hid.dll a fare tutto cio che è necessario ma purtroppo mi sono bloccato a questo punto :

-) Una volta avviata la comunicazione con la periferica HID, per sapere quando viene connessa o disconnessa, molti utenti sui vari forum utilizzano il metodo :

Codice sorgente - presumibilmente VB.NET

  1. <DllImport("user32.dll", CharSet:=CharSet.Auto, SetLastError:=True)> Shared Function RegisterDeviceNotification _
  2.          (ByVal hRecipient As IntPtr, _
  3.          ByVal NotificationFilter As IntPtr, _
  4.          ByVal Flags As Int32) _
  5.          As IntPtr
  6.         End Function



per ricevere i vari eventi della periferica usb in questione.

Il Problema è il parametro ByVal hRecipient As IntPtr, praticamete tutti gli utenti dei forum gli passano come parametri Me.Handle e gestiscono gli eventi nel form principale dell'applicazione in questo modo :

Codice sorgente - presumibilmente VB.NET

  1. Protected Overrides Sub WndProc(ByRef m As Message)
  2.  
  3.         Try
  4.             ' The OnDeviceChange routine processes WM_DEVICECHANGE messages.
  5.  
  6.             If m.Msg = WM_DEVICECHANGE Then
  7.                 OnDeviceChange(m)
  8.                 'Trace.WriteLine("CAMBIO STATO PERIFERICA")
  9.             End If
  10.  
  11.             ' Let the base form process the message.
  12.  
  13.             MyBase.WndProc(m)
  14.  
  15.         Catch ex As Exception
  16.             DisplayException(Me.Name, ex)
  17.             Throw
  18.         End Try
  19.  
  20.     End Sub



Volendo integrare tutto in una classe, non posso utilizzare WndProc.... secondo voi come potrei ovviare al problema?

PS. un'alternativa sarebbe quella di controllare 'a mano' (in un piccolo loop temporizzato) lo stato della periferica usb.


Chiedere è lecito, rispondere è cortesia, rompere il caxxx è prassi!
PM Quote