RXTX无法接收输入信号

时间:2015-09-14 03:55:42

标签: java rxtx

需要帮助,..如何使用RXTX发送AT命令和读取响应,以前我使用javax.comm并且我的代码运行得很好,但我无法使用RXTX接收信号,我已阅读此链接{{ 3}}但我不知道如何用它来发送AT命令,这是我的代码:

public class SendAtCommand {

    Enumeration portIdentifiers = CommPortIdentifier.getPortIdentifiers();
    private int indexNya;

    public String sendCommand(String cmd, CommPortIdentifier portX) throws UnsupportedCommOperationException, IOException, PortInUseException {
        while (true) {
            try {
                Thread.sleep(3000);
            } catch (InterruptedException ex) {
                Logger.getLogger(SendAtCommand.class.getName()).log(Level.SEVERE, null, ex);
            }

            if (portX == null) {
                System.err.println("Could not find serial port ");
                System.exit(0);
            }

            SerialPort port = null;
            try {
                port = (SerialPort) portX.open("Wavecom", 10000); // 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("\r\n");
            os.flush();
            try {

                cmd = is.readLine();
                cmd=is.readLine();
                cmd=is.readLine();
                os.flush();
                System.out.println(cmd);

            } catch (IOException e) 
            {
                System.err.println("Can't recieve input signals");
            }
            port.close();

            return cmd;
        }
    }

    public static void main(String[] args) throws NoSuchPortException, IOException, PortInUseException {
        SendAtCommand sendX = new SendAtCommand();
        try {
              CommPortIdentifier port = CommPortIdentifier.getPortIdentifier("COM16");           
                String countSms = sendX.sendCommand("AT+CIMI", port);

        } catch (UnsupportedCommOperationException ex) {
            Logger.getLogger(SendAtCommand.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
}

当我printStackTrace()时收到此错误消息:

java.io.IOException: Underlying input stream returned zero bytes
    at sun.nio.cs.StreamDecoder.readBytes(StreamDecoder.java:287)
    at sun.nio.cs.StreamDecoder.implRead(StreamDecoder.java:325)
    at sun.nio.cs.StreamDecoder.read(StreamDecoder.java:177)
    at java.io.InputStreamReader.read(InputStreamReader.java:184)
    at java.io.BufferedReader.fill(BufferedReader.java:154)
    at java.io.BufferedReader.readLine(BufferedReader.java:317)
    at java.io.BufferedReader.readLine(BufferedReader.java:382)
    at mobodmt.SendAtCommand.sendCommand(SendAtCommand.java:84)
    at mobodmt.SendAtCommand.main(SendAtCommand.java:108)

0 个答案:

没有答案