String atComm="at+cclk?";
      outputStream.write(atComm.getBytes());
      outputStream.flush();
      int ch=0;
      while (ch != -1) {
ch = inputStream.read();
inputBuffer.append((char)ch);
System.out.println(inputBuffer.toString());
if (ch == -1) {
break;
}
      }
      
为什么输出结果始终是"at+cclk?",任何命令都是这样.串口设备打开正常.
      

解决方案 »

  1.   

    会一样吗?import java.io.*;public class Test {

    public static void main(String[] args) throws IOException
    {              
    StringBuffer inputBuffer = new StringBuffer();
    OutputStream outputStream = new ByteArrayOutputStream();

    String atComm="at+cclk?";
    outputStream.write(atComm.getBytes());
    outputStream.flush();

    // 接收流
    InputStream  inputStream = new  ByteArrayInputStream(((ByteArrayOutputStream)outputStream).toByteArray());

    int ch=inputStream.read();
    while (ch != -1) 
    {
    inputBuffer.append((char)ch);
    System.out.println(inputBuffer.toString());

    ch = inputStream.read(); 
    }
    }
    }运行如下:
    F:\>javac Test.javaF:\>java Test
    a
    at
    at+
    at+c
    at+cc
    at+ccl
    at+cclk
    at+cclk?
      

  2.   

    PS:改成为楼主的
    int ch=0;
    while (ch != -1) 
    {
    ch = inputStream.read();
    inputBuffer.append((char)ch);
    System.out.println(inputBuffer.toString());

    if (ch == -1) 
    {
    break;
    }  
    }也不会出现打印一样的情况,和上面结果类似,只是多了一个:
    at+cclk??(这个原因很简单,查看代码便知)
      

  3.   

    我的意思是,用"at+cclk?\n"这个命令取出串口设备(CDMA Modem)的时间,但是取出来的结果却是你发的命令.表是命令未被串口设备执行,而被堆积在串口.
      

  4.   

    String atComm="at+cclk?\n";
          outputStream.write(atComm.getBytes());
          outputStream.flush();
          int ch= inputStream.read();
          while (ch != -1) {
                inputBuffer.append((char)ch);
                ch = inputStream.read();
          }
          System.out.println(inputBuffer.toString());
    在段代码在GSM Modem中的正确输出结果应该为"2005/12/31,15:01:21"
    可是在CDMA Modem中的输出结果却变成了"at+ccld?"
      

  5.   

    问题已解决
    将"at+cclk?\n "换成"at+cclk?"+(char)13便OK啦