Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/arduino/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JVM关闭时出现Java结果255错误_Java_Arduino - Fatal编程技术网

JVM关闭时出现Java结果255错误

JVM关闭时出现Java结果255错误,java,arduino,Java,Arduino,我编写了一个Java代码,通过COM端口使用RXTX库从arduino接收数据。当Java在控制台中接收并打印它时,如果arduino突然删除,则JVM关闭,错误为Java结果255。如何捕捉错误。当arduino突然删除时,应打印“设备已删除” 串行端口生成的其他几种事件类型,您可以尝试检测,看看arudino断开连接时是否会发生。不幸的是,看起来没有DTR事件,它可能是出现问题的最佳指示器,但是SerialPort类确实有一个isDTR()方法。你可以定期检查,如果这是错误的,那么可能意味着

我编写了一个Java代码,通过COM端口使用RXTX库从arduino接收数据。当Java在控制台中接收并打印它时,如果arduino突然删除,则JVM关闭,错误为Java结果255。如何捕捉错误。当arduino突然删除时,应打印“设备已删除”


串行端口生成的其他几种事件类型,您可以尝试检测,看看arudino断开连接时是否会发生。不幸的是,看起来没有DTR事件,它可能是出现问题的最佳指示器,但是SerialPort类确实有一个isDTR()方法。你可以定期检查,如果这是错误的,那么可能意味着你已经失去了与arduino的连接。您可以在单独的线程中进行检查,或者在每个CTS更改事件中进行检查

            serialPort.notifyOnDataAvailable(true);
            serialPort.notifyOnCTS(true);

...

            switch (oEvent.getEventType()) {
                case SerialPortEvent.DATA_AVAILABLE:
                    if (input == null) {
                        input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
                    }
                    String inputLine = input.readLine();
                    System.out.println(inputLine);
                    break;

                case SerialPortEvent.CTS:
                    if (!serialPort.isDTR()) {
                      // do something
                    }
                    break;

                default:
                    break;
            }
不过,使用一个只检查DTR状态的小型工作线程可能是一个更好的解决方案

            serialPort.notifyOnDataAvailable(true);
            serialPort.notifyOnCTS(true);

...

            switch (oEvent.getEventType()) {
                case SerialPortEvent.DATA_AVAILABLE:
                    if (input == null) {
                        input = new BufferedReader(new InputStreamReader(serialPort.getInputStream()));
                    }
                    String inputLine = input.readLine();
                    System.out.println(inputLine);
                    break;

                case SerialPortEvent.CTS:
                    if (!serialPort.isDTR()) {
                      // do something
                    }
                    break;

                default:
                    break;
            }