【问题标题】:Arduino + Proccesing code error “disabling_serialevent()”Arduino +处理代码错误“禁用serialevent()”
【发布时间】:2017-03-06 05:19:19
【问题描述】:

我的代码有一些问题,我可以运行它,因为我总是收到此错误消息

错误,为 COM3 null 禁用 serialEvent()

import processing.serial.*;
Serial port;
String c = " ";
String d = " ";
String data = " ";
PFont font;
int index = 0;

void setup() {
    size(2024, 1024);
    port = new Serial(this, "COM3", 9600);

    port.bufferUntil('.');
    font = loadFont("run.vlw");
    textFont(font, 60);
}

void draw() {
    background(150, 50, 200);
    fill(46, 20, 2);
    text(c, 70, 175);
    fill(46, 20, 2);
    text(d, 70, 215);
}

void serialEvent(Serial port) {
    data = port.readStringUntil('.');
    data = data.substring(0, data.length() - 1);
    index = data.indexOf(",");
    c = data.substring(0, index);
    d = data.substring(index + 1, data.length());
}

我是这方面的新手,如果我犯了大错,请见谅。

【问题讨论】:

  • COM 端口是否正确?也许尝试Serial.list()[0] 作为端口?此外,stackoverflow.com/a/26225342/5296568 建议您将代码封装在 serialEvent 中的 try-catch 中,以便您注意到任何运行时错误。您的 serialEvent 函数中似乎抛出了异常。

标签: java arduino serial-port processing


【解决方案1】:

您的serialEvent() 代码不处理异常。您对串行数据的处理可能包含错误,随后导致未处理的StringIndexOutOfBoundsException,因此程序崩溃。可以肯定的是,我们需要了解通过COM3 传输的实际数据。 所以这里有两个建议:

  1. 将整个代码放在serialEvent() 中的try/catch 块中,并打印出异常的堆栈跟踪。这应该会为您提供有关导致崩溃的原因的更多提示。
  2. 编辑您的问题并添加 Arduino 串行监视器输出的 sn-p。

还不能发表评论,所以我必须发布这个作为答案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-30
    • 1970-01-01
    相关资源
    最近更新 更多