2017-10-17 145 views
0

我開發了一個Android應用程序,它連接到外部USB設備以發送和接收消息。啓用DTR/DTE的USB通信

我跟着官方Android主機USB API,這裏的指導方針(以及其他一些SO帖): https://developer.android.com/guide/topics/connectivity/usb/host.html

一切正常,除了一兩件事: 看來,外部USB設備當我的應用程序沒有連接時發送數據,導致它的USB緩衝區溢出 - 這會停止設備。

根據設備製造商的解決方案將是啓用DTR/DTE(我不得不承認我真的不明白它是什麼)。但是,這顯然會使他們能夠檢查我的應用程序是否正在偵聽,然後才發送它們的數據。

那麼,你能分享一個代碼示例如何在Android的USB連接上啓用DTR/DTE嗎?

更新:

經過一些搜索,似乎我需要使用UsbDeviceConnection.controlTransfer方法 - 但我不知道的參數應該是什麼。

+0

你在談論一個USB轉串口適配器,對不對?你如何得到一個更好的,當緩衝區溢出時不會「停止」的?填滿緩衝區是USB-to-serial適配器必須準備好的正常情況,如果你的設備無法處理它,那麼它是有缺陷的。我懷疑適配器是否正常,你只是遇到了一個軟件問題,比如當你的應用程序啓動時你可能需要刷新RX緩衝區,這樣你最終不會將舊數據讀入應用程序。根據您提供的信息級別,很難說出正確的解決方案。 –

+0

感謝大衛,這是我的第一個想法 - USB設備應該處理緩衝區填充問題 - 但是,我仍然在尋找一種方法來解決這個從Android方面 – Daniel

+0

@DavidGrayson:我怎麼沖洗RX緩衝區,請你分享一下代碼嗎? – Daniel

回答