将基于uart的C程序移植到android上,有什么好方法吗?

将基于uart的C程序移植到android上,有什么好方法吗?,android,android-ndk,java-native-interface,uart,Android,Android Ndk,Java Native Interface,Uart,我需要把一个C程序移植到android上。C程序是基于uart的。我设法使用NDK编译器构建了这个程序,但当它在android中运行时,对uart/dev/ttyACM0的访问被拒绝。 因此,有几种方法可以做到这一点: 1将C程序作为一个整体构建,支持android系统并允许其访问uart。使用一些IPC方法允许android应用程序与此C程序进行对话。可能吗 2使用android USB/cdc acm接口,将C程序构建为NDK原生库,并由java调用。它需要重构C程序,因为它不是作为模块设计

我需要把一个C程序移植到android上。C程序是基于uart的。我设法使用NDK编译器构建了这个程序,但当它在android中运行时,对uart/dev/ttyACM0的访问被拒绝。 因此,有几种方法可以做到这一点: 1将C程序作为一个整体构建,支持android系统并允许其访问uart。使用一些IPC方法允许android应用程序与此C程序进行对话。可能吗

2使用android USB/cdc acm接口,将C程序构建为NDK原生库,并由java调用。它需要重构C程序,因为它不是作为模块设计的。问题是C程序将调用基于Java的uart接口。java可以为C本机调用JNI,然后再为C本机调用JavaUART部分吗


还有其他选择吗

首先确保您可以在Android和您的设备之间实现基本通信,例如通过USB主机模式和在应用程序中实现CDC/ACM代码。然后,您可以决定是否要将C代码移植到java,对其进行调整,以便可以在线程中调用重新命名的main,但要确保有办法重置进程静态,或者将其作为一个独特的进程运行。您应该能够使用一对管道或unix域套接字作为串行端口的代理,只需稍作更改,特别是如果您可以硬编码线路设置-波特率等。谢谢Chris,是的,我通过USB连接在android和MCU之间获得了基本的CDC/ACM通信。问题是,这种方法需要在android系统上生根,因为它需要访问/dev/ttyACM0。因此,更灵活的方法是使用android USB驱动程序执行UART部分,但将C代码的其余部分构建为本机库。问题是,它可能需要javaUI调用本机C,然后本机C调用Javauart代码。我是Android新手,不知道该怎么做。