关闭

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

标签: javaAndroid-AT
551人阅读 评论(1) 收藏 举报
分类:

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指令的话,那么上述接口就可以使用了。

0
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:6190次
    • 积分:18
    • 等级:
    • 排名:千里之外
    • 原创:14篇
    • 转载:2篇
    • 译文:0篇
    • 评论:1条
    最新评论