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
Arduino UART读取数据突然出现数据_Arduino_Serial Port_Interrupt_Uart_Teensy - Fatal编程技术网

Arduino UART读取数据突然出现数据

Arduino UART读取数据突然出现数据,arduino,serial-port,interrupt,uart,teensy,Arduino,Serial Port,Interrupt,Uart,Teensy,我试图写一个代码,从串行读取字符串来校准我的项目,但我丢失了数据。我希望程序在数据来自串行端口时触发中断。我编写的以下代码效率不高。我可能会在编程过程中错过一些命令。你能帮助我吗?谢谢 void loop(){ String msg=Serial.read(); //Read Sensor //Read Sensor //Read Sensor delay(1000); } 我查了很多资料。许多人建议使用投票。我想使用中断。我不能100%确定这是正确的,但来自串行的数据不是

我试图写一个代码,从串行读取字符串来校准我的项目,但我丢失了数据。我希望程序在数据来自串行端口时触发中断。我编写的以下代码效率不高。我可能会在编程过程中错过一些命令。你能帮助我吗?谢谢

void loop(){
  String msg=Serial.read();
  //Read Sensor
  //Read Sensor
  //Read Sensor
  delay(1000);
}


我查了很多资料。许多人建议使用投票。我想使用中断。

我不能100%确定这是正确的,但来自串行的数据不是字符串

您需要的是字符数组:

int bufferLength = Serial.available();
char msg[bufferLength];
Serial.readBytes(msg, bufferLength);

我不是100%确定这是正确的,但来自串行的数据不是字符串

您需要的是字符数组:

int bufferLength = Serial.available();
char msg[bufferLength];
Serial.readBytes(msg, bufferLength);

串行已被中断驱动。它通过中断进入缓冲区。如果缺少字符,则会出现不同的问题。你不需要任何额外的中断。这不好用。最终会出现顺序问题。新手喜欢认为中断可以解决他们糟糕的代码,但这并不是一个好的答案。我建议你在阅读之前检查Serial.available,看看是否有什么东西需要阅读。关于arduino的串行数据,有很多很棒的教程。谷歌“Robin2串行输入基础”,并阅读了他在arduino.ccSerial上的线程,该线程已经是中断驱动的。它通过中断进入缓冲区。如果缺少字符,则会出现不同的问题。你不需要任何额外的中断。这不好用。最终会出现顺序问题。新手喜欢认为中断可以解决他们糟糕的代码,但这并不是一个好的答案。我建议你在阅读之前检查Serial.available,看看是否有什么东西需要阅读。关于arduino的串行数据,有很多很棒的教程。谷歌“Robin2串行输入基础”,并在arduino.cc上阅读他的帖子