2011-04-05 32 views
5

Genel bir HID aygıtı ile iletişim kurmak için python kullanmaya çalışıyorum.Python'da HIDAPI kitaplığına erişme

C dilinde yazılan HIDAPI kitaplığının basit ve kararlı çapraz platform HID iletişimi için libusb1.0'ı geçtiğini okudum. Bununla birlikte, hiç kimse bir python komut dosyasından HIDAPI işlevlerini nasıl arayacağımı göstermekten hiç rahatsızlık duymadı ve sorun yaşıyorum.

ben gibi gerçekten basit C işlevleri çağırmak için yeterli ctypes anlama:

int add(int n1, int n2) { 
    return n1 + n2; 
    } 

sorun HIDAPI fonksiyonları (HIDAPI header file cinsinden) gibi daha karmaşık olmasıdır:

struct hid_device_info HID_API_EXPORT * HID_API_CALL hid_enumerate(unsigned short vendor_id, unsigned short product_id); 

hangi Bu yapıya işaret eden noktalar (mac branch C file'da):

struct hid_device_info HID_API_EXPORT *hid_enumerate(unsigned short vendor_id, unsigned short product_id) 
{ 
... 
} 

burada '...', HID aygıtı hakkında bilgi içeren yapı #hid_device'nin bağlantılı bir listesine bir işaretçi döndüren bir çok OS seviyesindeki koddur "

Nasıl kullanılır? Bir python betiğinde böyle bir işlevi çağırmak için klişeler veya başka bir araç? Ben bu stackoverflow sayfasının aynı sorunu çözmek isteyen diğer tüm insanlar için bir rehber olarak hizmet etmesini umuyorum, bu yüzden lütfen bol miktarda ayrıntı verin, teşekkür ederim.

cevap

3

Bu, sorunuzun tam olarak yanıtları değil, ancak bazı yeni işaretçiler verebilir. Karmaşık yerli kütüphaneleri ile etkileşim yaparken

, muhtemelen "köprü" ve ctypes yalnız kesmek olmayabilir bazı C kodu yazmak gerekir. Köprü kodu, C yapılarını Python'a aktarmadan önce basitleştirir ve bunun tersi de tam tersi, yerel kodun tüm şıklarını klişeler ile tanımlayamayabilirsiniz.

Yerel Python C uzantısını elle yazabilirsiniz, ancak bu önerilmez.

birkaç "köprü araç kitleri" ya da durumların bu tür kullanabilirsiniz hangi kodun jeneratörleri vardır. En popüler olanlardan biri, C ve Python kodunu özgürce karıştırabileceğiniz .pyx modülleri yazmanıza izin veren Cython'dur.

http://cython.org/

.pyx sonra doğal C modülü ve sarma .py modülü elde edilen derlenir. İkincisini uygulama mantığına kolayca aktarabilirsiniz.

İlgili konular