Я экспериментировал с мостом 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('/')
устраняет ошибку.И правильный номер отображается.