Arduino字符串解析问题

时间:2018-07-16 13:12:25

标签: c++ string windows parsing arduino

我有一个问题,我正在从PC C ++应用程序通过Visual Studio应用程序发送具有这种结构的一些数据:

puerto1.WriteLine(rpm + ";" + gea + ":" + speed + ";;" + fuel + "::" + boost + ";;;" + rtemp + ":::" + atemp + ";;;;" + gas + "::::" + brk + ";;;;;");

然后在Arduino上,我用9个不同的字符串解析它,当我想在屏幕上显示它时,它会报告附加图片的问题。 有时它可以正常工作,但是几天前它就停止了正常工作,并且还没有恢复正常工作,它应该像下面这样独立打印字符串: XXX XXX XXX XXX XXX 不喜欢图片。

Arduino代码:

#include <UTFTGLUE.h>
UTFTGLUE myGLCD(0, A2, A1, A3, A4, A0);
extern uint8_t BigFont[];
String command;

String part1;
String part2;
String part3;
String part4;
String part5;
String part6;
String part7;
String part8;
String part9;

void setup() {
  Serial.begin(9600);
  myGLCD.InitLCD();
  myGLCD.setFont(BigFont);
  myGLCD.clrScr();

  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(0, 0, 0);
  myGLCD.print("RPMs", 1, 10);
  myGLCD.print("Gear", 1, 40);
  myGLCD.print("Speed", 1, 70);
  myGLCD.print("Fuel", 1, 100);
  myGLCD.print("Boost", 1, 130);
  myGLCD.print("Asphalt Temp", 1, 160);
  myGLCD.print("Air Temp", 1, 190);
  myGLCD.print("Gas", 1, 220);
  myGLCD.print("Brake", 1, 250);
  myGLCD.print("Engine Brake", 1, 280);
}

void loop() {
  if (Serial.available()) {
    char c = Serial.read();

    if (c == '\n') {
      parseCommand(command);
      command = "";
    } else {
      command += c;
    }

  }

  myGLCD.setColor(255, 255, 255);
  myGLCD.setBackColor(0, 0, 0);

  myGLCD.printNumI(val1, 5, 20);
  myGLCD.print(part2, 5, 50);
  myGLCD.printNumI(val3, 5, 80);
  myGLCD.print(part4, 5, 110);
  myGLCD.print(part5, 5, 140);
  myGLCD.print(part6, 5, 170);
  myGLCD.print(part7, 5, 200);
  myGLCD.print(part8, 5, 230);
  myGLCD.print(part9, 5, 260);
  myGLCD.print(part10, 5, 290);
}

void parseCommand(String com) {

  part1 = com.substring(0, com.indexOf(";"));
  part2 = com.substring(com.indexOf(";") + 1, com.indexOf(":"));
  part3 = com.substring(com.indexOf(":") + 1, com.indexOf(";;"));
  part4 = com.substring(com.indexOf(";;") + 2, com.indexOf("::"));
  part5 = com.substring(com.indexOf("::") + 2, com.indexOf(";;;"));
  part6 = com.substring(com.indexOf(";;;") + 3, com.indexOf(":::"));
  part7 = com.substring(com.indexOf(":::") + 3, com.indexOf(";;;;"));
  part8 = com.substring(com.indexOf(";;;;") + 4, com.indexOf("::::"));
  part9 = com.substring(com.indexOf("::::") + 4, com.indexOf(";;;;;"));

  int val1 = part1.toInt();
  int val3 = part3.toInt();

}

problem image

0 个答案:

没有答案