Contoh CI | Status |
---|---|
Linux/macOS/Windows (master) | |
Windows (master) | |
BSD, last build (branch/PR) | |
Coverity Scan (last) |
HIDAPI adalah perpustakaan multi-platform yang memungkinkan aplikasi berinteraksi dengan perangkat Kelas HID USB dan Bluetooth di Windows, Linux, FreeBSD, dan macOS. HIDAPI dapat dibangun sebagai perpustakaan bersama ( .so
, .dll
atau .dylib
) atau dapat disematkan langsung ke aplikasi target dengan menambahkan satu file sumber (per platform) dan satu header.
Lihat komentar tentang penyematan langsung ke sistem build Anda.
Perpustakaan HIDAPI awalnya dikembangkan oleh Alan Ott (signal11).
Itu dipindahkan ke libusb/hidapi pada tanggal 4 Juni 2019, untuk menggabungkan perbaikan bug penting dan melanjutkan pengembangan perpustakaan.
hid.dll
) Di Linux, back-end hidraw atau libusb dapat digunakan. Ada pengorbanannya, dan fungsionalitas yang didukung sedikit berbeda. Keduanya dibangun secara default. Terserah pada aplikasi yang menautkan ke hidapi untuk memilih backend pada waktu tautan dengan menautkan ke libhidapi-libusb
atau libhidapi-hidraw
.
Perhatikan bahwa Anda perlu menginstal file aturan udev dengan aplikasi Anda agar pengguna yang tidak memiliki hak istimewa dapat mengakses perangkat HID dengan hidapi. Lihat file 69-hid.rules di direktori udev
sebagai contoh.
linux/hid.c
):Back-end ini menggunakan antarmuka hidraw di kernel Linux, dan mendukung perangkat USB dan Bluetooth HID. Dibutuhkan versi kernel setidaknya 2.6.39 untuk membangun. Selain itu, ia hanya akan berkomunikasi dengan perangkat yang memiliki node hidraw yang terkait dengannya. Keyboard, mouse, dan beberapa perangkat lain yang masuk daftar hitam karena memiliki node hidraw tidak akan berfungsi. Untungnya, untuk hampir semua penggunaan hidraw, hal ini tidak menjadi masalah.
libusb/hid.c
):Back-end ini menggunakan libusb-1.0 untuk berkomunikasi langsung ke perangkat USB. Back-end ini tentu saja tidak berfungsi dengan perangkat Bluetooth.
HIDAPI juga dilengkapi dengan GUI Uji. GUI Tes bersifat lintas platform dan menggunakan Fox Toolkit http://www.fox-toolkit.org. Ini akan dibangun pada setiap platform yang didukung HIDAPI. Karena bergantung pada perpustakaan pihak ketiga, membangunnya bersifat opsional tetapi berguna saat melakukan debug perangkat keras.
CATATAN: Uji GUI berdasarkan Fox Toolkit tidak dikembangkan atau didukung secara aktif oleh tim HIDAPI. Itu disimpan sebagai artefak sejarah. Bahkan mungkin berfungsi pada suatu waktu atau pada beberapa platform, tetapi tidak akan mendapatkan fitur baru atau perbaikan bug apa pun.
Petunjuk untuk menginstal Fox-Toolkit di setiap platform tidak disediakan. Pastikan untuk menggunakan Fox-Toolkit v1.6 jika Anda memilih untuk menggunakannya.
Jika Anda ingin bermain-main dengan perangkat HID Anda sebelum memulai pengembangan apa pun dengan HIDAPI dan menggunakan aplikasi GUI bukanlah pilihan bagi Anda, Anda dapat mencoba hidapitester
.
Aplikasi ini memiliki antarmuka konsol untuk sebagian besar fitur yang didukung oleh perpustakaan HIDAPI.
API menyediakan fungsi HID yang paling umum digunakan termasuk pengiriman dan penerimaan masukan, keluaran, dan laporan fitur. Contoh program, yang berkomunikasi dengan versi sampel Microchip USB Generic HID yang telah diretas, terlihat seperti ini (dengan pemeriksaan kesalahan dihapus untuk kesederhanaan):
Peringatan: Hanya jalankan kode yang Anda pahami, dan hanya jika sesuai dengan spesifikasi perangkat. Menulis data ( hid_write
) secara acak ke perangkat HID Anda dapat merusaknya.
#include // printf
#include // wchar_t
#include
#define MAX_STR 255
int main ( int argc , char * argv [])
{
int res ;
unsigned char buf [ 65 ];
wchar_t wstr [ MAX_STR ];
hid_device * handle ;
int i ;
// Initialize the hidapi library
res = hid_init ();
// Open the device using the VID, PID,
// and optionally the Serial number.
handle = hid_open ( 0x4d8 , 0x3f , NULL );
if (! handle ) {
printf ( "Unable to open devicen" );
hid_exit ();
return 1 ;
}
// Read the Manufacturer String
res = hid_get_manufacturer_string ( handle , wstr , MAX_STR );
printf ( "Manufacturer String: %lsn" , wstr );
// Read the Product String
res = hid_get_product_string ( handle , wstr , MAX_STR );
printf ( "Product String: %lsn" , wstr );
// Read the Serial Number String
res = hid_get_serial_number_string ( handle , wstr , MAX_STR );
printf ( "Serial Number String: (%d) %lsn" , wstr [ 0 ], wstr );
// Read Indexed String 1
res = hid_get_indexed_string ( handle , 1 , wstr , MAX_STR );
printf ( "Indexed String 1: %lsn" , wstr );
// Toggle LED (cmd 0x80). The first byte is the report number (0x0).
buf [ 0 ] = 0x0 ;
buf [ 1 ] = 0x80 ;
res = hid_write ( handle , buf , 65 );
// Request state (cmd 0x81). The first byte is the report number (0x0).
buf [ 0 ] = 0x0 ;
buf [ 1 ] = 0x81 ;
res = hid_write ( handle , buf , 65 );
// Read requested state
res = hid_read ( handle , buf , 65 );
// Print out the returned buffer.
for ( i = 0 ; i < 4 ; i ++ )
printf ( "buf[%d]: %dn" , i , buf [ i ]);
// Close the device
hid_close ( handle );
// Finalize the hidapi library
res = hid_exit ();
return 0 ;
}
Anda juga dapat menggunakan hidtest/test.c sebagai titik awal untuk aplikasi Anda.
HIDAPI dapat digunakan oleh salah satu dari tiga lisensi sebagaimana diuraikan dalam LICENSE.txt.
Jika Anda ingin membangun aplikasi sendiri yang menggunakan perangkat HID dengan HIDAPI, Anda perlu mendapatkan paket pengembangan HIDAPI.
Bergantung pada lingkungan pengembangan Anda, HIDAPI kemungkinan besar disediakan oleh manajer paket Anda.
Misalnya di Ubuntu, HIDAPI tersedia melalui APT:
sudo apt install libhidapi-dev
Nama paket HIDAPI untuk sistem/manajer paket lain mungkin berbeda. Periksa dokumentasi/daftar paket manajer paket Anda.
Periksa BUILD.md untuk detailnya.