2011-08-18 12 views
2

我正在使用具有USB接口的壓力感應牀墊。該製造商爲Windows提供USB設備驅動程序,以及用C++編寫的具有請求數據和設置參數功能的API。使用Python訪問USB硬件(帶有本地C++ API的壓力傳感器矩陣)使用Python

目前,我無法直接使用此傳感器測試某些Python數據可視化腳本,不得不要求我的同事爲我編寫文本記錄器,然後使用Python離線讀取此信息。

另外,我無法使用Linux所用的傳感器,因爲沒有用於Linux的驅動程序,我不知道從哪裏開始,以「黑客」傳感器,這就是爲什麼我問:

「如果我試圖直接用Python讀取這個傳感器的數據,也許在Linux中,我應該先做什麼或先讀?」

編輯:該設備有一個FTDI驅動程序(FTD2XX.dll),如果它有幫助。

任何幫助將是非常歡迎

回答

3

賠率是相當不錯的它是一個HID設備,在這種情況下,你大概可以開始寫一個用戶空間的Linux驅動程序使用它爲libhid。首先從這一點開始,將枚舉樹,爲您提供有關其功能的信息。 (lsusb -vvvExample

如果做不到這一點,你可以使用libusb在Linux(和其他平臺太這些天)寫一個用戶空間的驅動程序仍。您需要使用something like usbsnoopreal hardware equivalent來查看官方驅動程序在與設備通話並模仿該設備時的功能。

從python方面來說,你可以使用SWIG來爲現有的C++ API生成一個相當不錯的包裝,相對於開發一個完全自定義的驅動程序來說尤其如此。

更新:

如果它是一個FTDI設備那麼它可能是一個簡單得多的工作。根據供應商和產品ID顯示的內容,它可能會自動與Linux中的FTDI驅動程序一起工作,從而爲您提供USB串行端口。如果沒有這個模塊的參數 - vendorproduct,我相信你可以用它來聲明除了它已知的pid/vid組合之外的其他設備。從那裏你可以嘗試用不同的設置打開串口設備。幸運的是,它可能已經定期發送狀態信息。

如果不是你想嘗試發現官方軟件發送的東西,讓它開始播放。你又回到了嗅探領域,但我認爲在串行層可能會有這樣的事情,而不是Windows的USB層(儘管我不能指出任何名稱)。您也可以通過試圖讓他們的庫使用軟件模擬串行端口而不是FTDI設備並查看它寫入的內容來學習。

+0

非常完整的答案,我將不得不花費時間來理解這一切,因爲我對C. +1不熟悉! – heltonbiker

+0

我寫了一個簡單的HID設備的用戶空間驅動程序。將嘗試挖掘出來。儘管如此,我仍然建議在現有代碼中使用swig來覆蓋真正低層次的東西! – Flexo

+0

http://packages.debian.org/sid/python-hid如果直接進入HID路徑,則跳過C端。現在找不到我的微不足道的例子,我認爲它在工作中的個人電腦上關閉了。 – Flexo

1

該FTDI芯片有一個Linux驅動程序。只需到FTDI網站下載它。該驅動程序創建一個虛擬串行端口。你可以使用PySerial來與它接口。

太糟糕了,我沒有早點看到帖子!

+0

恩,我非常感謝你的回答!不幸的是,我們已經把這個項目放在了很長的時間裏,除此之外,我正在學習用C#編程:o) – heltonbiker