2012-09-28 31 views
2

我想給android應用程序/服務訪問本地串行端口(UART RS-232)。當我說native時,我的意思是一個真正的UART,而不是一個USB到串口加密狗。我可以從終端(連接到4個本機串口之一)看到它們。它表明內核已經處理了低層次的東西。在Android上訪問本地串行端口

# ls -l /dev 
crw-rw-rw- system system 204, 67 2010-01-01 07:00 s3c2410_serial3 
crw-rw-rw- system system 204, 66 2010-01-01 07:00 s3c2410_serial2 
crw-rw-rw- system radio 204, 65 2010-01-01 07:00 s3c2410_serial1 
crw-rw-rw- system system 204, 64 2010-01-01 07:00 s3c2410_serial0 

我用薑餅。我已將Android移植到配有S5PV210處理器的平臺上。我完全控制了內核和權限。我已經修改了很多東西(蜂窩,觸摸屏,LCD面板尺寸等),包括init.rc文件。

如何從Android APK與這些設備通話?正如你可以看到「s3c2410_serial1」來自用戶「radio」,因爲我從薑餅源代碼獲得的原始系統在該串口上有一個GPRS模塊。在init.rc中很容易改變。但這只是證明我們至少可以訪問Android系統上的本機串行端口。

的應用程序或服務將不再需要在波特率或任何花哨的東西給APK控制。我只想發送和接收字符。內核可以設置默認波特率,我對此感到滿意。我甚至不需要控制RTS/CTS。

任何暗示讚賞。

+0

剛剛得到一個朋友建議把它當作Java中的文件與文件打開,關閉等,我還從谷歌搜索發現,在Github上一些源代碼:https://github.com/liquidware/android_serialmonitor似乎接近到我想要做的事情。如果這是一個很好的解決方案,我會查看它併發布。 –

+0

Liquidware代碼需要導入「com.liquidware.amberserial.app.R」,我無法在任何地方找到它。它看起來像是他們的android平臺的一部分,但不是標準的。我找不到任何地方,或者我錯過了一些東西 –

回答

1

我找到了一種方法。它似乎適用於任何類型的設備,因爲它只是將設備作爲文件訪問。請參閱鏈接android-serialport-api。它適用於任何類型的/ dev/...在mhy case中,我必須安裝NDK並通過所有的驅動程序才能正常工作。在C中有一段代碼設置波特率。實際上,開放和關閉都是在C中實現的,其餘的都是標準的android java。