【无标题】Java代码实现AP向CP侧发送AT指令

本文介绍了如何使用Java通过/dev/TTY22设备通道向CP模块发送AT指令,并详细讲解了指令格式、权限要求及异常处理过程。重点展示了文件I/O操作和结果解析部分。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原文:Java代码实现AP向CP侧发送AT指令 - 开发者知识库

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值