Arduino не может найти подстроку в строке в полученном последовательном тексте с устройства - PullRequest
1 голос
/ 06 июля 2019

Я настраиваю отправку позиции GPS с Android на Arduino, чтобы Arduino следовал за телефоном Android. Я получаю строку из Android и, кажется, правильно ее получаю и получаю правильную длину, но не могу найти идентификатор ("Lon" или "Lat") из строки.

Я получаю строку из Android, я помещаю массив полученных байтов в массив, я преобразовываю массив в строку и проверяю ее, чтобы проверить, является ли она строкой, и проверял длину строки и все это кажется законным, но я не могу определить, находится ли мой идентификатор в строке для извлечения данных.

#include <SoftwareSerial.h>
// Example 2 - Receive with an end-marker

const byte numChars = 32;
char receivedChars[numChars];   // an array to store the received data
String mlong;
String mlat;
long mlong_val;
long mlat_val;
String temp_mlat_val;
String temp_mlong_val;
String temp_str;
boolean newData = false;

SoftwareSerial BT_Serial(10, 11);

void setup() {
      Serial.begin(9600);
      Serial.println("Bluetooth receive 003");
      BT_Serial.begin(9600);
}

void loop() {
    recvWithEndMarker();
    showNewData();
}

void recvWithEndMarker() {
    static byte ndx = 0;
    char endMarker = '\n';
    char rc;

    while (BT_Serial.available() > 0 && newData == false) {
        rc = BT_Serial.read();

        if (rc != endMarker) {
            receivedChars[ndx] = rc;
            ndx++;
            if (ndx >= numChars) {
                ndx = numChars - 1;
            }
        }
        else {
            receivedChars[ndx] = '\0'; // terminate the string
            ndx = 0;
            newData = true;
        }
    }
}

void showNewData() {
    if (newData == true) {
        Serial.print("This just in ... ");
        Serial.println(receivedChars);
        String temp_str = receivedChars;      
        Serial.print("This is the string, I hope ");
        Serial.println(temp_str);
        unsigned int lastStringLength = temp_str.length();
        Serial.print("This is the length of the string, I hope ");
        Serial.println(lastStringLength);
        if (temp_str.substring(lastStringLength) == "Lat"){
          Serial.println("Lat");
          }
        else {Serial.println("After looking for Lat, not found");
        }  
        newData = false;
    }
}

void loop() {
  // Set up a String:
  String stringOne = "Content-Type: text/html";
  Serial.println(stringOne);

  // substring(index) looks for the substring from the index position to the end:
  if (stringOne.substring(19) == "html") {
    Serial.println("It's an html file");
  }
  // you can also look for a substring in the middle of a string:
  if (stringOne.substring(14, 18) == "text") {
    Serial.println("It's a text-based file");
  }

попытался это заменить их строку моей строкой в ​​моем коде

 if (newData == true) {
    Serial.print("This just in ... ");
    temp_str = "Lat12.34567";
    Serial.print("This is the string, I hope ");
    Serial.println(temp_str);
    unsigned int lastStringLength = temp_str.length();
    Serial.print("This is the length of the string, I hope ");
    Serial.println(lastStringLength);
    if (temp_str.substring(lastStringLength) == "Lat"){
      Serial.println("Lat");
      }
    else {Serial.println("After looking for Lat, not found");
    }  
    newData = false;

и он не работает только со строкой, а не с Android

Ожидается, что просто выведите «Lat», если идентификатор «Lat» находится в строке, он не печатает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...