Topic: [RISOLTO] Errore scrittura su device USB con Hid e Hidapi  (Letto 82 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline maxtrevi

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Ciao a tutti,
sto cercando di comunicare via usb con una schedina relé che viene vista dal PC come dispositivo HID:

Dopo aver installato Hid e Hidapi e collegato la scheda al PC riesco a interagire con i seguenti comandi:

>>> device = hid.Device(1305,8216)  //1305 e 8216 sono il vendor id e il product id che ho letto con il metodo enumerate
>>> device.manufacturer
'Ucreatefun.com'
>>> device.product
'HIDRelay'
>>> device.serial
'A0001'

Ora vorrei accendere e spegnere i relé ma non so come usare il metodo "Device.write" e non trovo alcuna documentazione in rete.
Le uniche info sul protocollo che ci sono nel manualetto della schedina dicono che bisogna mandare coppie di valori:
0x00 e 0x0n per spegnere il relé n
0x00 e 0xFn per accendere il relé n

In realtà la schedina è corredata di un semplice tool in C# ma io vorrei farlo in Python.

Usando il metodo write per accendere il relé 1, ottengo questo:

>>> device.write([0x00,0xF1])
Traceback (most recent call last):
File "<pyshell#61>", line 1, in <module>
device.write([0x00,0xF1])
File
"C:\Users\trevisan\AppData\Local\Programs\Python\Python39\lib\site-
packages\hid\__init__.py", line 155, in write
return self.__hidcall(hidapi.hid_write, self.__dev, data, len(data))
File
"C:\Users\trevisan\AppData\Local\Programs\Python\Python39\lib\site-
packages\hid\__init__.py", line 142, in __hidcall
ret = function(*args, **kwargs)
ctypes.ArgumentError: argument 2: <class 'TypeError'>: wrong type
>>>


Qualcuno sa aiutarmi? Sto diventando matto  :confused:


Grazie
Max
« Ultima modifica: Luglio 13, 2021, 11:14 da maxtrevi »

Offline RicPol

  • python sapiens sapiens
  • ******
  • Post: 3.162
  • Punti reputazione: 9
    • Mostra profilo
Re:Usare Hid e Hidapi per interagire con una scheda relé
« Risposta #1 il: Luglio 09, 2021, 19:34 »
> non trovo alcuna documentazione in rete

tipo, questa documentazione? https://trezor.github.io/cython-hidapi/api.html#hid.device.write

Offline maxtrevi

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Usare Hid e Hidapi per interagire con una scheda relé
« Risposta #2 il: Luglio 12, 2021, 09:29 »
La documentazione dice che il metodo "write" accetta una lista di interi.
Quando uso:

device.write([0x00,0xF1])

Ottengo un errore di tipo:

"C:\..\Python\Python39\lib\site-
packages\hid\__init__.py", line 142, in __hidcall
ret = function(*args, **kwargs)
ctypes.ArgumentError: argument 2: <class 'TypeError'>: wrong type
>>>


Avete qualche idea?
Grazie
Max

Offline maxtrevi

  • python unicellularis
  • *
  • Post: 3
  • Punti reputazione: 0
    • Mostra profilo
Re:Errore scrittura su device USB con Hid e Hidapi
« Risposta #3 il: Luglio 13, 2021, 11:12 »
Ho risolto usando la classe "bytes":

>>> device.write(bytes([0x00,0xf1]))

Ora riesco a comandare correttamente i relé della scheda


Max