串口双向通信Java Comm API

时间:2015-02-20 14:18:06

标签: java inputstream outputstream java-communication-api

Hello Guys我有以下问题。 我有一个扫描仪,我用命令和接收一些线路。 到目前为止,我尝试使用超级终端完美运行。但现在我需要在我的程序中使用这些行,所以我设置了Java Comm API和RXTX(仅仅因为我无法使用Comm API)。

我已经在论坛上阅读了很多内容,但我无法将其付诸实践。

我的意思是只有3个零件。 首先,我设置了Port,InputStream和OutputStream,它工作正常。

    portList = CommPortIdentifier.getPortIdentifiers();
    int i;
    while (portList.hasMoreElements()) {
        portId = (CommPortIdentifier) portList.nextElement();
        if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                 if (portId.getName().equals("COM3")) {
           // if (portId.getName().equals("/dev/term/a")) {

    try {
                    serialPort = (SerialPort)
                        portId.open("SimpleWriteApp", 2000);
                } catch (PortInUseException e) {System.out.println(e);}
                try {
                    outputStream = serialPort.getOutputStream();
                    inputStream = serialPort.getInputStream();
                } catch (IOException e) {System.out.println(e);}
                try {
                    serialPort.setSerialPortParams(9600,
                        SerialPort.DATABITS_8,
                        SerialPort.STOPBITS_1,
                        SerialPort.PARITY_NONE);
                    serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_XONXOFF_IN);

                } catch (UnsupportedCommOperationException e) {System.out.println(e);}

然后我想用outputStream.write发送一个命令(" xYZ" .getByteS()); 我应该也应该工作。 但后来我无法得到回复。

响应应该如下所示 02349234235883 NOK 但它只是卡住了。 代码看起来像这样

                            try {               
                    System.out.println(messageString);
                    outputStream.write(messageString.getBytes());
                    BufferedReader portReader = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
                    String line = portReader.readLine();
                    System.out.println(line);


                    if (inputStream != null) inputStream.close();
                    if (outputStream != null) outputStream.close();
                    if (serialPort != null) serialPort.close();
                } catch (IOException e) {System.out.println(e);}    
有人能帮帮我吗? 非常感谢您的努力

1 个答案:

答案 0 :(得分:0)

感谢您的帮助。 问题是添加串行事件和发送命令之间的时间不够。在我将线程设置为休眠一些秒后,我得到了响应没有问题。