Skip to content

Penulisan dan Pembacaan

Fungsi-fungsi ini adalah semua cara yang tersedia untuk berkomunikasi dengan peranti USB yang disambungkan dalam plugin Anda. Arahan dibahagikan kepada dua variasi operasi baca dan tulis bergantung pada protokol peranti, serta pemindahan kawalan yang membolehkan arahan jabat tangan dan kefungsian lanjutan.

Fungsi ini melaksanakan arahan Hid_Write pada endpoint yang dipilih semasa peranti. Ini adalah fungsi tulis yang digunakan oleh kebanyakan peranti dan akan menjadi arahan yang paling kerap digunakan.

  • Nota: Satu lagi variasi penulisan ialah device.send_report. Ini ialah arahan tulis untuk menghantar laporan ciri HID ke peranti. Kefungsiannya selain itu adalah sama dengan device.write().
  • Nota: Jika panjang yang diberikan lebih besar daripada array data yang disediakan, penghujung array akan diisi dengan 0x00.
  • Nota: Kebanyakan peranti HID mengisi bahagian hadapan arahan tulis mereka dengan sifar. Ini dilakukan dengan memasukkan 0x00 tambahan sebelum DataArray dan meningkatkan panjang sebanyak satu. Nilai-nilai ini dibuang oleh peranti semasa penghantaran data. Ini terutamanya berlaku apabila peranti tidak mempunyai Report ID untuk endpoint yang dipilih.
ParameterJenisKeteranganContoh
DataArray1D ArrayArray dengan bait hex yang hendak dihantar ke peranti[0x08,0xAB,0xFF,0x37]
LengthIntNilai Int yang mewakili jumlah panjang paket yang hendak dihantar4

Berikut ialah contoh paket dari pengawal LED ASUS yang menunjukkan penciptaan dan penghantarannya ke peranti.

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

Panggilan fungsi ini mengambil array dengan Report ID endpoint dan bilangan bait yang hendak dibaca, dan melaksanakan Hid_Read pada peranti. Fungsi ini mengembalikan array bait yang dibaca dari peranti. Sesetengah peranti memerlukan pembacaan untuk mencegah limpahan penimbal, dan kadang-kadang perlu membaca data konfigurasi atau tetapan dari peranti.

  • Nota: Satu lagi variasi pembacaan ialah:
  • device.read_report*. Ini ialah arahan baca untuk mendapatkan laporan ciri HID dari peranti. Kefungsiannya selain itu adalah sama dengan device.read().
ParameterJenisKeteranganContoh
DataArray1D ArrayArray dengan Report ID yang diperlukan untuk arahan baca[0x08, 0x02]
LengthIntNilai Int yang mewakili bilangan bait yang hendak dibaca65
PulanganJenisKeteranganContoh
DataArray1D ArrayArray yang mengandungi semua bait HEX yang dibaca dari peranti[0x08, 0x02,0x00,0x64]
  • Nota: Fungsi ini mengembalikan array data yang bersamaan dengan panjang laporan peranti. Jika Anda memerlukan bilangan bait sebenar yang dibaca, gunakan device.getLastReadSize().
var config = device.read(packet, 65);

Fungsi ini mengembalikan bilangan bait yang dibaca semasa panggilan read/get_report terakhir pada peranti.

PulanganJenisKeteranganContoh
BytesReadIntBilangan bait yang dibaca dari peranti64

Berikut ialah contoh dari Glorious Model 0 Mouse.

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
}

Fungsi ini cuba mengosongkan penimbal baca peranti sepenuhnya. Ini boleh berguna untuk melakukan tetapan semula sebelum pembacaan kritikal pada peranti.

  • Nota: Kegunaan fungsi ini bergantung pada peranti dan endpoint. Jika peranti tidak menyokong pembilasan, Anda mungkin perlu membilasnya secara manual dengan pembacaan gelung sehingga device.getLastReadSize() mengembalikan 0 bait.
export function Initialize(){
device.flush()
if(Corsair_Get(CORSAIR_MODE) == CORSAIR_HARDWARE_MODE){
EnableSoftwareControl();
}
}