Java代码实现AP向CP侧发送AT指令

原创 2016年05月30日 20:27:19

AT指令是什么本文就不再阐述了,有兴趣的小伙伴可以在网上搜索一下。
背景:通过设备通道比如:/dev/TTY22,来发送AT指令,实际上就是向该设备通道去写,读数据,已达到控制CP模块的目的。
步入正题:

public static boolean sendAtCmd(String fileName,String atcmd){
          boolean atResult = false;//at指令的返回结果
          Log.i(TAG, "fileName = " + fileName + ", atcmd = " + atcmd);
          try {
            BufferedWriter atWriter = new BufferedWriter(new FileWriter(fileName));
            atWriter.write(atcmd, 0, atcmd.getBytes().length);
            atWriter.flush();
            atWriter.close();
            atWriter = null;
            //以上是往fileName该通道写入AT指令

            //下面来读取该通道里的AT指令返回结果
            BufferedReader atReader = new BufferedReader(new FileReader(fileName));
            String readAtString = null;
            char[] cReaderBuffer = new char[255];
            int read_len = 0;
            while(canRun){
                read_len = atReader.read(cReaderBuffer, 0, cReaderBuffer.length-1);
                Log.i(TAG, "read_len = " + read_len);
                if(read_len > 0){
                    if(null == readAtString){
                        readAtString = String.copyValueOf(cReaderBuffer, 0, read_len);
                    }else{
                        readAtString = readAtString + String.copyValueOf(cReaderBuffer, 0, read_len);
                    }
                    Log.i(TAG, "readAtString = " + readAtString);
                    if(readAtString.indexOf("\r\nOK\r\n")>=0){
                        atResult = true ;
                        break;
                    }else if (readAtString.indexOf("ERROR")>=0){
                        atResult = false ;
                        break;
                    }
                }
            }
            atReader.close();
            atReader = null ;

        }catch (FileNotFoundException e2) {
            Log.e(TAG,"FileNotFoundException :" + fileName);
            atResult = false ;
        } catch (IOException e) {
            atResult = false ;
            e.printStackTrace();
        }
          return atResult;
      }

需要注意的是:At指令的格式要正确比如:”AT+CFUN = 8 \r”,后面的”\r”必须要加。另外,由于是访问设备的通道,所以必须要有系统权限才可以,否则会出现FileNotFoundException 异常,所以要在AndroidManifest.xml文件中加入:android:sharedUserId=”android.uid.system”属性。
至此所有步骤已经完毕,如果你的通道可以正常的读写At指令的话,那么上述接口就可以使用了。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

随笔:关于AT命令

AT命令(Attention)在手机中,用于对modem(也就是移动模块)通过串口命令进行操作,处理与语音电话、短信和数据。 AT命令的用途 在N年前的一个涉及MeeGo的项目,MeeGo采用of...

java代码实现发送邮件

java代码实现发送邮件

Java代码实现SMS短信发送功能

使用中国建网提供的SMS短信平台实现,登录http://sms.webchinese.cn/reg.shtml注册后,可以免费获得3条彩信和5条短信的使用。具体代码如下: /* *...

全java代码实现Spring与ActiveMQ整合

关于其他的配置就不做介绍了,这里主要介绍Spring与ActiveMQ整合部分的配置 在ApplicationConfig.java中添加如下代码://配置ConnectionFactory ...

JAVA代码实现MD5加密算法

拿来就能用的md5加密算法。为了实现数据的安全性,尤其是保证用户的密码不被丢失,我们常常要对用户数据进行加密,MD5是不错的选择,MD5单向加密,不可逆转。 String password = "12...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)