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
Serial port Arduino和处理代码错误“;禁用“U serialevent()”;_Serial Port_Arduino_Processing - Fatal编程技术网

Serial port Arduino和处理代码错误“;禁用“U serialevent()”;

Serial port Arduino和处理代码错误“;禁用“U serialevent()”;,serial-port,arduino,processing,Serial Port,Arduino,Processing,在断断续续地处理应用程序时,我面临以下错误,有时它工作得很好 错误,正在为COM2禁用serialEvent() 空的 代码如下: Arduino's: void setup() { Serial.begin(9600); } void loop() { int sensorValue1 = analogRead(A0); int sensorValue2 = analogRead(A1); Serial.print(sensorValue1); Serial.wr

在断断续续地处理应用程序时,我面临以下错误,有时它工作得很好

错误,正在为COM2禁用serialEvent()

空的

代码如下:

Arduino's:

    void setup() {
  Serial.begin(9600);
}

void loop() {
  int sensorValue1 = analogRead(A0);
  int sensorValue2 = analogRead(A1);
  Serial.print(sensorValue1);
  Serial.write("-");
  Serial.println(sensorValue2);
  delay(1);
}
处理程序:

 import processing.serial.*;
 
 Serial myPort;        // The serial port
 void setup () {
 size(1043, 102);
 background(255);
 myPort = new Serial(this, Serial.list()[1], 9600);
 println(Serial.list());
 myPort.bufferUntil('\n');
 }
 
 void draw () {
 // everything happens in the serialEvent()
 }
 
 void serialEvent (Serial myPort) {
 background(255);
 String inString = myPort.readStringUntil('\n');
 if (inString != null) {
 inString = trim(inString);
// String inByte = inString;
 int[] inStr = int(split(inString,'-'));
 println(inStr);

fill(0);
rect(10,2,inStr[0],46);

rect(10,52,inStr[1],46);

fill(255);
rect(400,14,245,21); 

fill(0);
textAlign(CENTER);
textSize(14);
text("1st value: "+inStr[0]+" 2nd value: "+inStr[1],width/2,30);
 }
 }
当我删除以下部分代码时,应用程序运行良好

fill(0);
rect(10,2,inStr[0],46);

rect(10,52,inStr[1],46);

fill(255);
rect(400,14,245,21); 

fill(0);
textAlign(CENTER);
textSize(14);
text("1st value: "+inStr[0]+" 2nd value: "+inStr[1],width/2,30);
我正在使用Win7,处理版本2.2.1和Arduino版本1.0.5-r2


我对所有串行通信内容都是新手。

您必须在try-catch中围绕serialEvent方法主体:

void serialEvent (Serial myPort) {

  try {
    ...
    your code
    ...
  }
  catch(RuntimeException e) {
    e.printStackTrace();
  }

}

serialEvent实现可能引发了异常。

您必须在try catch中包围serialEvent方法主体:

void serialEvent (Serial myPort) {

  try {
    ...
    your code
    ...
  }
  catch(RuntimeException e) {
    e.printStackTrace();
  }

}

serialEvent实现可能引发了异常。

您必须在try catch中包围serialEvent方法主体:

void serialEvent (Serial myPort) {

  try {
    ...
    your code
    ...
  }
  catch(RuntimeException e) {
    e.printStackTrace();
  }

}

serialEvent实现可能引发了异常。

您必须在try catch中包围serialEvent方法主体:

void serialEvent (Serial myPort) {

  try {
    ...
    your code
    ...
  }
  catch(RuntimeException e) {
    e.printStackTrace();
  }

}

serialEvent实现可能引发异常。

将代码放入draw()函数中,只需使用serialEvent()更改变量的值(记住初始化它们)

将inStr设为全局变量,您可以定义其长度并用0初始化它

应该是这样的:

import processing.serial.*;

Serial myPort;        // The serial port
int[] inStr = {0,0};

void setup () {
  size(1043, 102);
  background(255);
  myPort = new Serial(this, Serial.list()[1], 9600);
  println(Serial.list());
  myPort.bufferUntil('\n');
}

void draw () {
  fill(0);
  rect(10,2,inStr[0],46);

  rect(10,52,inStr[1],46);

  fill(255);
  rect(400,14,245,21); 

  fill(0);
  textAlign(CENTER);
  textSize(14);
  text("1st value: "+inStr[0]+" 2nd value: "+inStr[1],width/2,30);  
}

void serialEvent (Serial myPort) {
  String inString = myPort.readStringUntil('\n');
  if (inString != null) {
    inString = trim(inString);
    inStr = int(split(inString,'-'));
    println(inStr);
  }
}

以后尽量不要使用serialEvent来完成draw()的工作。

将代码放入draw()函数中,只需使用serialEvent()来更改变量的值(记住初始化它们)

将inStr设为全局变量,您可以定义其长度并用0初始化它

应该是这样的:

import processing.serial.*;

Serial myPort;        // The serial port
int[] inStr = {0,0};

void setup () {
  size(1043, 102);
  background(255);
  myPort = new Serial(this, Serial.list()[1], 9600);
  println(Serial.list());
  myPort.bufferUntil('\n');
}

void draw () {
  fill(0);
  rect(10,2,inStr[0],46);

  rect(10,52,inStr[1],46);

  fill(255);
  rect(400,14,245,21); 

  fill(0);
  textAlign(CENTER);
  textSize(14);
  text("1st value: "+inStr[0]+" 2nd value: "+inStr[1],width/2,30);  
}

void serialEvent (Serial myPort) {
  String inString = myPort.readStringUntil('\n');
  if (inString != null) {
    inString = trim(inString);
    inStr = int(split(inString,'-'));
    println(inStr);
  }
}

以后尽量不要使用serialEvent来完成draw()的工作。

将代码放入draw()函数中,只需使用serialEvent()来更改变量的值(记住初始化它们)

将inStr设为全局变量,您可以定义其长度并用0初始化它

应该是这样的:

import processing.serial.*;

Serial myPort;        // The serial port
int[] inStr = {0,0};

void setup () {
  size(1043, 102);
  background(255);
  myPort = new Serial(this, Serial.list()[1], 9600);
  println(Serial.list());
  myPort.bufferUntil('\n');
}

void draw () {
  fill(0);
  rect(10,2,inStr[0],46);

  rect(10,52,inStr[1],46);

  fill(255);
  rect(400,14,245,21); 

  fill(0);
  textAlign(CENTER);
  textSize(14);
  text("1st value: "+inStr[0]+" 2nd value: "+inStr[1],width/2,30);  
}

void serialEvent (Serial myPort) {
  String inString = myPort.readStringUntil('\n');
  if (inString != null) {
    inString = trim(inString);
    inStr = int(split(inString,'-'));
    println(inStr);
  }
}

以后尽量不要使用serialEvent来完成draw()的工作。

将代码放入draw()函数中,只需使用serialEvent()来更改变量的值(记住初始化它们)

将inStr设为全局变量,您可以定义其长度并用0初始化它

应该是这样的:

import processing.serial.*;

Serial myPort;        // The serial port
int[] inStr = {0,0};

void setup () {
  size(1043, 102);
  background(255);
  myPort = new Serial(this, Serial.list()[1], 9600);
  println(Serial.list());
  myPort.bufferUntil('\n');
}

void draw () {
  fill(0);
  rect(10,2,inStr[0],46);

  rect(10,52,inStr[1],46);

  fill(255);
  rect(400,14,245,21); 

  fill(0);
  textAlign(CENTER);
  textSize(14);
  text("1st value: "+inStr[0]+" 2nd value: "+inStr[1],width/2,30);  
}

void serialEvent (Serial myPort) {
  String inString = myPort.readStringUntil('\n');
  if (inString != null) {
    inString = trim(inString);
    inStr = int(split(inString,'-'));
    println(inStr);
  }
}
以后尽量不要使用serialEvent来完成draw()的工作

突出显示的部分是:

if (q.length==2) {

          print(q[0]);  // Acceltoroll print
          print(q[1]);  // Gyrotoroll print

          num=float(q[0]);  // Converts and prints float
          yPos = height/2 - num;
          num=float(q[1]);  // Converts and prints float
          zPos = height/2 - num;
          redraw();             //-- Melynek a végén van a redraw() parancs, mely egyszer lefutattaja a draw()-ban lévő részt.
}
这会解决你的问题。问题是,如果缓冲区已满并开始覆盖数据,q[1]可能不存在

只需将代码粘贴到notepad++即可获得更好的视图

突出显示的部分是:

if (q.length==2) {

          print(q[0]);  // Acceltoroll print
          print(q[1]);  // Gyrotoroll print

          num=float(q[0]);  // Converts and prints float
          yPos = height/2 - num;
          num=float(q[1]);  // Converts and prints float
          zPos = height/2 - num;
          redraw();             //-- Melynek a végén van a redraw() parancs, mely egyszer lefutattaja a draw()-ban lévő részt.
}
这会解决你的问题。问题是,如果缓冲区已满并开始覆盖数据,q[1]可能不存在

只需将代码粘贴到notepad++即可获得更好的视图

突出显示的部分是:

if (q.length==2) {

          print(q[0]);  // Acceltoroll print
          print(q[1]);  // Gyrotoroll print

          num=float(q[0]);  // Converts and prints float
          yPos = height/2 - num;
          num=float(q[1]);  // Converts and prints float
          zPos = height/2 - num;
          redraw();             //-- Melynek a végén van a redraw() parancs, mely egyszer lefutattaja a draw()-ban lévő részt.
}
这会解决你的问题。问题是,如果缓冲区已满并开始覆盖数据,q[1]可能不存在

只需将代码粘贴到notepad++即可获得更好的视图

突出显示的部分是:

if (q.length==2) {

          print(q[0]);  // Acceltoroll print
          print(q[1]);  // Gyrotoroll print

          num=float(q[0]);  // Converts and prints float
          yPos = height/2 - num;
          num=float(q[1]);  // Converts and prints float
          zPos = height/2 - num;
          redraw();             //-- Melynek a végén van a redraw() parancs, mely egyszer lefutattaja a draw()-ban lévő részt.
}
这会解决你的问题。问题是,如果缓冲区已满并开始覆盖数据,q[1]可能不存在


只需将代码粘贴到记事本++即可获得更好的视图。

您删除的代码,用于控制TFT屏幕,您的系统上是否有TFT屏幕?您删除的代码,用于控制TFT屏幕,您的系统上是否有TFT屏幕?您删除的代码,用于控制TFT屏幕,您的系统上有TFT scren吗?您删除的代码,用于控制TFT屏幕,您的系统上有TFT scren吗?e.printStactTrace()应该是e.printStackTrace()e.printStactTrace()应该是e.printStackTrace()e.printStactTrace()应该是e.printStackTrace()e.printStackTrace()应该是e.printStackTrace()