Мост, кажется, теряет данные при вызове функции - PullRequest
0 голосов
/ 13 апреля 2019

Я экспериментировал с мостом Arduino Yún и заметил, что при вставке client.readStringUntil('/'); в выделенную функцию мост теряет оставшиеся данные.

Я использую Arduino IDE 1.8.9 на Mac

Ниже кода, содержащего ошибку

//include + setup function skipped
void loop() {
  delay(50); // Poll every 50ms

  // Get clients coming from server
  BridgeClient client = server.accept();

  // Skip if there is no client
  if (!client) {
     return;
  }
  // Process request
  processRequest(client);

  // Close connection and free resources.
  client.stop();
}

void processRequest(BridgeClient client) {
  String someText = getString(client);
  client.print(F("Text read: "));
  client.println(someText);
  int someNumber = client.parseInt();
  client.print(F("Number read: "));
  client.println(someNumber);
}

String getString(BridgeClient client){
  return client.readStringUntil('/');
}

В веб-браузере я использую следующий URL http://arduino.local/arduino/fade/300.В результате браузер показывает

Text read: fade
Number read: 0

. После исследования доступное количество байтов client.available() уменьшается после 0 после вызова функции getString().

Как ни странно, заменяя getString() вызов с client.readStringUntil('/') устраняет ошибку.И правильный номер отображается.

...