Reputation: 1398
I want to give android application/service access to native serial port (UART RS-232). When I say native, I mean a real UART not a USB to serial dongle. I can see them from the terminal (connected to one of the 4 native serial port). It shows that kernel already takes care of the low level stuff.
# 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
I use Gingerbread. I have ported Android to my platform which has a S5PV210 processor on. I have full control of the kernel and the permissions. I already modified a lot of things (cellular, touchscreen, LCD panel size etc) including the init.rc file.
How can I talk to those devices from an Android APK? As you can see "s3c2410_serial1" is from user "radio" because the original system I took the Gingerbread source code from had a GPRS module on that serial port. It's easy to change in the init.rc. But that just prove we can access a native serial port on an Android system, at least.
The applications or services will not need to control over the baud rate or any fancy stuff to the APK. I just want to send and receive characters. The kernel can set a default baudrate and I'm happy with that. I don't even need control over RTS/CTS.
any hint is appreciated.
Upvotes: 6
Views: 19346
Reputation: 1398
I found a way. It seems to work for any kind of device because it just access the devices as a file. See the link android-serialport-api. It works for any kind of /dev/... In mhy case I had to install the NDK and go through all the hooplas to get it to work. There is a piece of code done in C where it sets the baud rate. In fact, the open and close are implemented in C the rest is all standard android java.
Upvotes: 4