Печать серийных сообщений на консоль - PullRequest
0 голосов
/ 15 октября 2018

Я пытаюсь получить вывод Arduino в моей Java-программе.Я думаю, что у меня это почти работает, но это дает серьезную ошибку.При запуске моего кода программа показывает части строк, отправляемых Arduino.Между тем он также дает много таких строк:

com.fazecast.jSerialComm.SerialPortTimeoutException: The read operation timed out before any data was returned.

Это мои классы:

package Serial;

    import com.fazecast.jSerialComm.SerialPort;
    import com.fazecast.jSerialComm.SerialPortDataListener;
    import com.fazecast.jSerialComm.SerialPortEvent;

    import java.io.*;

    public class SerialCom implements SerialPortDataListener {

        private SerialPort sp;

        private static final String portName = "COM3";
        private BufferedReader input;


        public void initialize() {

            SerialPort sp = SerialPort.getCommPort(portName);

            if (sp.openPort()) {
                System.out.println("Arduino - Connected");
            } else {
                System.out.println("Arduino - Missing");
                return;
            }

            try {
                // set port parameters
                sp.setComPortParameters(9600, 8, 1, 0);
                // open the streams
                input = new BufferedReader(new InputStreamReader(sp.getInputStream()));
                // add event listeners
                sp.addDataListener(this);
            } catch (Exception e) {
                System.err.println(e.toString());
            }
        }

        public synchronized void close() {
            if (sp != null) {
                sp.removeDataListener();
                sp.closePort();
            }
        }


        public int getListeningEvents() {
            return sp.LISTENING_EVENT_DATA_AVAILABLE;
        }

        public synchronized void serialEvent(SerialPortEvent serialPortEvent) {
            if (serialPortEvent.getEventType() == sp.LISTENING_EVENT_DATA_AVAILABLE) {
                try {
                    String inputLine;
                    if (input.ready()) {
                        inputLine = input.readLine();
                        System.out.println(inputLine);
                    }

                } catch (Exception e) {
                    System.err.println(e.toString());
                }
            }
        }
    }

Main:

package Main;

    import Serial.SerialCom;

    public class Main {
        public static void main(String [] args){

            SerialCom serialCom = new SerialCom();
            serialCom.initialize();
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...