Android平台到底能不能通过串口发送AT指令呢,急!!!

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android平台到底能不能通过串口发送AT指令呢,急!!!相关的知识,希望对你有一定的参考价值。

想在android平台上做一些向串口发at指令的操作。

首先,在java层好像没有提供和串口操作相关的api(如果有的话请指教,谢谢)

于是,想到了用JNI配合NDK的方法来实现,在底层用C/C++直接对linux的串口编程

其中必需的一步是先打开串口 fd=open( "/dev/ttyS0", O_RDWR|O_SYNC),"/dev/ttyS0"为串口文件

但是在linux下,/dev/ttyS0这个串口文件是只有root用户才有权限操作,而我们所开发的android应用程序只能作为普通用户去访问,自然不会成功的。

在PC上用模拟器调试的时候,可以以root用户身份登录到linux系统并用chmod的命令修改/dev/ttyS0的权限为所有用户可读写,命令格式是 chmod 777 /dev/ttyS0,但是在真机上用的话不可能每次都去手动先把/dev/ttyS0访问权限改了

想通过代码的方式直接修改/dev/ttyS0的访问权限或者把android应用程序自身的权限提升为root,网上看了很多方法都不能,想想也是,要是随便通过代码就能修改,那么linux和android平台还有什么安全可言,以后谁还敢用呢?高手们谁知道怎么解决这个问题呢?或者有其他方法也能实现android平台向串口发at指令也行,但是比如那些通过软件去刷机借用外力把手机刷成root的方法就不要提了,用户用你的程序之前不可能先去让他刷机的。

比较急,谢谢各位!

AT命令(Attention)在手机中,用于对modem(也就是移动模块)通过串口命令进行操作,处理与语音电话、短信和数据。

关于AT命令:

    Android系统与AT命令

    对于智能手机,AP和BP分离的情况,在AP上的系统通过串口和BP通信是个不错方式。在Android的源码中有一个内部包com.android.internal.telephony中有对AT命令的封装和解析,但这种internal的包开发者不能调用的SDK部分,可以用来封装ROM。这说明Android对AT command的方式是支持的。

    对于Android如何调用AT command

    用root登录命令行,直接对串口进行操作,如echo -e "AT\\r" > /dev/smd0

    具体的串口,不同设备会有不同,甚至不一定会提供。这种方式,开发者是可以调用的,通过Runtime.exec直接执行命令行命令,但要求是root,例如echo -e "ATD123456789;\\r" > /dev/smd0,拨打123456789的号码。

    目前最新的AT命令标准发布与2014.6.27,似乎还活得挺滋润的。但是给出的keywords是UMTS, GSM, command, terminal, LTE这说明CDMA确实很可能不是采用AT命令的方式。

参考技术A 肯定能,3G功能一般都是通过向串口发送AT命令、等待AT命令回应来实现的。追问

我现在是想自己在android上开发一个应用程序,里面要用到串口at指令的操作,不知道可行吗?权限够吗

参考技术B 持续关注
我想向楼主请教一下我现在遇到的问题。因为现在还是程序调试,关于权限的我按照楼主的方法改了,这个不管
我有一个c语言测试程序能向串口发信息,但是把C语言改成jni后,能够编译成.so文件,能够打开串口,能够返回write的返回值,但是超级终端没有显示发出的信息,而用c测试代码是能够显示发出信息的。是什么原因呢,楼主知道吗
参考技术C 肯定是可以通过串口发送的。android里面3g和模块的通信是走的这个通道;
如果你的程序必须通过mmm编译,然后在你的mk里面,修改LOCAL_CERTIFICATE参数,调整你自己程序或者编译出bin文件的权限;
参考技术D 请问楼主用的那款手机?
至于权限 用c写的话好像不存在root不roo。

ESP8089串口怎么接,AT指令发送无反应

我想知道你选择正确的COM口没有,相应的波特率调整了没有,串口操作那儿是不是红色的,这些都是基础配置,如果没问题,你是否看到模块上电后发送的一些检测数据,波特率不是76800会出现乱码的那种,如果还是没有反应,你可以换一个串口调试助手,XCOM V2.0或者去官网上下载esp8089的串口调试助手,不需要自己发指令,直接按键的那种,如果另外两种串口调试助手都能正常使用,说明你写的AT指令没有加回车 参考技术A 579437745687

以上是关于Android平台到底能不能通过串口发送AT指令呢,急!!!的主要内容,如果未能解决你的问题,请参考以下文章

ESP8089串口怎么接,AT指令发送无反应

C语言通过串口发送AT指令

MSM8953通过ADB进行AT指令操作

c#编程,通过向串口发数据的方式发送中文短信时,但中文显示乱码,如何软件解码?

手机USB接口能与电脑串口连接通讯吗

stm32串口发送正常,接受只能收到一个字符,求解,急