无法读取所有响应 AT 命令

cannot read all response AT Command

我应该怎么做才能读取来自 AT 命令的所有响应,我已经创建了一种方法来在 class SendAtCommand.java 中发送 AT 命令,但它总是给我一些空白结果,这是我的代码:

public String sendCommand(String cmd, CommPortIdentifier portX) throws UnsupportedCommOperationException, IOException, PortInUseException {
            String result="kosong";
            SerialPort port = null;
            try {
                port = (SerialPort) portX.open("Wavecom", 5000); // Wait max. 10 sec. to acquire port
            } catch (PortInUseException e) {
                System.err.println("Port already in use: " + e);
                System.exit(0);
            }
            try {
                port.setSerialPortParams(
                115200,
                SerialPort.DATABITS_8,
                SerialPort.STOPBITS_1,
                SerialPort.PARITY_NONE);
            } catch (Exception e) {
                System.out.println(e.toString());
            }
            BufferedReader is = null;
            PrintStream os = null;

            try {
                is = new BufferedReader(new InputStreamReader(port.getInputStream()));

                } catch (IOException e) {
                System.err.println("Can't open input stream");
                is = null;
            }
            try {
                os = new PrintStream(port.getOutputStream(), true);
            } catch (IOException e) {
                System.err.println("Can't open output stream");
                is = null;
            }
            os.print(cmd);
            os.print("\n\r");
            String respon;
            try {
             Thread.sleep(1000);//asal 3000
             } catch (InterruptedException ex) {
             Logger.getLogger(ThreadConsloe.class.getName()).log(Level.SEVERE, null, ex);
            }
            try {                
              while ((respon = is.readLine())!=null) {                

                result=is.readLine();
                try {
                Thread.sleep(1500);//asal 3000
                } catch (InterruptedException ex) {
                Logger.getLogger(ThreadConsloe.class.getName()).log(Level.SEVERE, null, ex);
                } 
                if(result.contains("\n")){
//                result.rep    
                }
                System.out.println("result "+result);                
                }
                } catch (IOException e) 
                {
                System.err.println("Can't recieve input signals");
                }              
            port.close();

            return result;

    }

我正在尝试使用上述方法发送 AT 命令,如下所示:

CommPortIdentifier port = CommPortIdentifier.getPortIdentifier("COM15");
          SendAtCommand sendX = new SendAtCommand();
          String provMenu= sendX.sendCommand("AT+STGI=0", port);

AT+STGI=0 的结果(超级终端输出)应该如下所示:

AT+STGI=0
+STGI: "i-SEV Menu"
+STGI: 1,3,"Isi Ulang",0
+STGI: 2,3,"Transfer",0
+STGI: 3,3,"Optional",0

使用我的代码的结果(java 输出)是:

result 
result +STGI: "i-SEV Menu"
result +STGI: 1,3,"Transfer",0
result 
result 

我认为原因是您执行了两次 readLine,但只打印了一次。应该是:

        while ((result = is.readLine()) != null) {
            try {

(reason 改为 result 变量)