在Android上访问本机串口

Access native serial port on Android(在Android上访问本机串口)
本文介绍了在Android上访问本机串口的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想授予 android 应用程序/服务对本机串行端口 (UART RS-232) 的访问权限.当我说本机时,我指的是真正的 UART,而不是 USB 转串行加密狗.我可以从终端看到它们(连接到 4 个本机串行端口之一).它表明内核已经处理了低级的东西.

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 

我用姜饼.我已将 Android 移植到具有 S5PV210 处理器的平台上.我完全控制内核和权限.我已经修改了很多东西(蜂窝、触摸屏、LCD 面板尺寸等),包括 init.rc 文件.

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.

如何通过 Android APK 与这些设备通信?如您所见,s3c2410_serial1"来自用户radio",因为我获取 Gingerbread 源代码的原始系统在该串行端口上有一个 GPRS 模块.在 init.rc 中很容易更改.但这只是证明我们至少可以访问 Android 系统上的本机串行端口.

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.

应用程序或服务不需要控制 APK 的波特率或任何花哨的东西.我只想发送和接收字符.内核可以设置默认波特率,我对此很满意.我什至不需要控制 RTS/CTS.

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.

感谢任何提示.

推荐答案

我找到了办法.它似乎适用于任何类型的设备,因为它只是将设备作为文件访问.请参阅链接 android-serialport-api.它适用于任何类型的/dev/... 在我的情况下,我必须安装 NDK 并通过所有的 hooplas 才能让它工作.在 C 语言中有一段代码用于设置波特率.其实open和close都是用C实现的,剩下的都是标准的android java.

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.

这篇关于在Android上访问本机串口的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How to target newer versions in .gitlab-ci.yml using auto devops (java 11 instead of 8 and Android 31 instead of 29)(如何在.gitlab-ci.yml中使用自动开发工具(Java 11而不是8,Android 31而不是29)瞄准较新的版本)
Android + coreLibraryDesugaring: which Java 11 APIs can I expect to work?(Android+core LibraryDesugering:我可以期待哪些Java 11API能够工作?)
How to render something in an if statement React Native(如何在If语句中呈现某些内容Reaction Native)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)
Using Firebase Firestore in offline only mode(在仅脱机模式下使用Firebase FiRestore)
Crash on Google Play Pre-Launch Report: java.lang.NoSuchMethodError(Google Play发布前崩溃报告:java.lang.NoSuchMethodError)