Skip to content

Pisanje i čitanje

Ove funkcije su svi dostupni načini komunikacije sa priključenim USB uređajima u vašim pluginovima. Komande su podeljene u dve varijante operacija čitanja i pisanja, u zavisnosti od protokola uređaja, kao i kontrolnih transfera koji omogućavaju handshake komande i naprednu funkcionalnost.

Ova funkcija izvršava Hid_Write komandu na trenutno izabranom endpointu uređaja. Ovo je funkcija pisanja koju koristi većina uređaja i biće najčešće korišćena komanda.

  • Napomena: Još jedna varijanta pisanja je device.send_report. Ovo je komanda pisanja za slanje HID Feature Reports uređaju. Funkcionalnost je inače identična sa device.write().
  • Napomena: Ako je navedena dužina veća od dostavljenog niza podataka, kraj niza će biti dopunjen sa 0x00.
  • Napomena: Većina HID uređaja dopunjava prednji deo svojih komandi pisanja sa nulom. To se postiže umetanjem dodatnog 0x00 ispred DataArray-a i povećanjem dužine za jedan. Ove vrednosti uređaj uklanja tokom prenosa podataka. Ovo se uglavnom dešava kada uređaj nema Report ID za izabrani endpoint.
ParametarTipOpisPrimer
DataArray1D ArrayNiz sa hex bajtovima koji treba poslati uređaju[0x08,0xAB,0xFF,0x37]
LengthIntInt vrednost koja predstavlja ukupnu dužinu paketa koji treba poslati4

Ispod je primer paketa sa ASUS LED kontrolera koji pokazuje kreiranje i prenos ka uređaju.

var packet = [];
packet[0] = 0xEC; //This is the Report Id
packet[1] = 0x40; //Command
packet[2] = apply ? 0x80 | channel : channel; //Channel Number
packet[3] = start; //Led to Start on
packet[4] = count; //Led Count
packet = packet.concat(RGBData); //Array of RGB values in a [R,G,B ...] format
device.write(packet, 65); //Writing the packet to the device in 65 Bytes

Ovaj poziv funkcije prima niz sa Report ID endpointa i brojem bajtova za čitanje i izvršava Hid_Read na uređaju. Funkcija vraća niz bajtova pročitanih sa uređaja. Neki uređaji zahtevaju čitanje za sprečavanje prekoračenja bafera i povremeno moraju čitati konfiguraciju ili podatke podešavanja sa uređaja.

  • Napomena: Još jedna varijanta čitanja je:
  • device.read_report*. Ovo je komanda čitanja za dohvatanje HID Feature Reports sa uređaja. Funkcionalnost je inače identična sa device.read().
ParametarTipOpisPrimer
DataArray1D ArrayNiz sa Report ID potrebnom za komandu čitanja[0x08, 0x02]
LengthIntInt vrednost koja predstavlja broj bajtova za čitanje65
PovratakTipOpisPrimer
DataArray1D ArrayNiz sa svim pročitanim HEX bajtovima sa uređaja[0x08, 0x02,0x00,0x64]
  • Napomena: Ova funkcija vraća niz podataka koji odgovara dužini izveštaja uređaja. Ako vam je potreban stvarni broj pročitanih bajtova, koristite device.getLastReadSize().
var config = device.read(packet, 65);

Ova funkcija vraća broj bajtova pročitanih tokom poslednjeg poziva read/get_report na uređaju.

PovratakTipOpisPrimer
BytesReadIntBroj bajtova pročitanih sa uređaja64

Ispod je primer sa Glorious Model 0 mišem.

function CheckPacketLength(){
var packet = [0x52]
packet = device.get_report(packet,200) //attempts to read up to 200 bytes
return device.getLastReadSize(); //Returns 186 on a successful read of the config packet
}

Ova funkcija pokušava da potpuno isprazni bafer za čitanje uređaja. Ovo može biti korisno za resetovanje pre kritičnih čitanja na uređaju.

  • Napomena: Korisnost ove funkcije zavisi od uređaja i endpointa. Ako uređaj ne podržava pražnjenje, možda ćete morati ručno da ga ispraznite petljama čitanja dok device.getLastReadSize() ne vrati 0 bajtova.
export function Initialize(){
device.flush()
if(Corsair_Get(CORSAIR_MODE) == CORSAIR_HARDWARE_MODE){
EnableSoftwareControl();
}
}