使用serialEvent输出字符串

时间:2018-10-15 17:47:39

标签: java serial-port

让我之前的代码正常工作,该类将Arduino的串行数据打印到控制台。接下来我想要的是serialEvent返回一个String,因此可以将它与main方法中的switch语句一起使用。

班级:

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);
                sp.setComPortTimeouts(SerialPort.TIMEOUT_READ_SEMI_BLOCKING, 0, 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 void close() {
            if (sp != null) {
                sp.removeDataListener();
                sp.closePort();
            }
        }


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

        public synchronized void serialEvent(SerialPortEvent serialPortEvent) {
            if (serialPortEvent.getEventType() == SerialPort.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());
                }
            }
        }
    }

主要:

 package Main;

    import Serial.SerialCom;

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

            SerialCom serialCom = new SerialCom();
            serialCom.initialize();
        }
    }

因此在该类中,将有一个switch语句,该语句根据Arduino的Strings做某些事情。

0 个答案:

没有答案