簡體   English   中英

Rasperry pi上的Libusb問題

[英]Libusb issue on Rasperry pi

我正在編寫一個通過libusb與磁條閱讀器通信的應用程序。 在ubuntu 14.04中它可以正常工作,但是在pi rasperry中,當我執行相同的代碼時,會顯示此錯誤:

libusb:錯誤[reap_for_handle]失敗失敗-1 errno = 14 libusb:錯誤[handle_events]后端handle_events失敗,錯誤為-1 libusb:錯誤[sync_transfer_wait_for_completion] libusb_handle_events失敗:LIBUSB_ERROR_IO,取消傳輸並重試,

當他嘗試讀取具有以下功能的端口所傳信息時,就會發生這種情況:

u_char * answer ={'\0'};
u_char epAdress;
epAdress=0x81;
r=libusb_bulk_transfer(dev_handle,epAdress,answer,sizeof(answer),&actual, 0);

端點0x81是一個IN端點(即設備到主機),因為方向位(最高有效位)為1,這意味着您要將數據從設備移到answer

問題是u_char * answer = {'\\0'}執行標量初始化,並且等效於uchar * answer = '\\0' ,實際上等同於uchar * answer = 0

顯然,寫入內存位置0將是無效的。 我很驚訝它可以在Ubuntu上運行,也許編譯器設法優化了該寫入。 您應該寫的是u_char answer[] = {'\\0'} ,它將執行數組初始化。 然后,當您將answer傳遞給libusb_bulk_transfer ,數組類型將衰減為指向數組開頭的指針類型。

已經解決了該問題,這是從默認存儲庫安裝的libusb版本的錯誤。我所做的是下載它的最新版本並將其編譯到樹莓派中,並且一切正常。

這是[ http://www.linuxfromscratch.org/blfs/view/cvs/general/libusb.html]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM