Сравнение двух массивов

akefa
Offline
Зарегистрирован: 29.05.2015

Есть скетч который принимает данные через wifi от клиента и по нужной команде должен повернуть серву.

#include "ESP8266.h"

uint32_t len;
uint8_t buffer[128] = {0};
uint8_t mux_id = 0xFF;
ESP8266 wifi(Serial2);

void setup(void)
{
    Serial.begin(9600);
    //Serial.begin(115200);
    Serial.print("setup begin\r\n");
      
    if (wifi.setOprToStationSoftAP()) {
        Serial.print("to station + softap ok\r\n");
    } else {
        Serial.print("to station + softap err\r\n");
    }
    if (wifi.enableMUX()) {
        Serial.print("multiple ok\r\n");
    } else {
        Serial.print("multiple err\r\n");
    }
    if (wifi.startTCPServer(8090)) {
        Serial.print("start tcp server ok\r\n");
    } else {
        Serial.print("start tcp server err\r\n");
    }
}
 
void loop(void) {
    len = wifi.recv(&mux_id, buffer, sizeof(buffer), 100);
    if (len > 0) {
        for(uint32_t i = 0; i < len; i++) {
           Serial.print((char)buffer[i]);
        }
    }
}
В мониторе все работает, строки приходят и правильно отображаются, например "right", каким образом возможно сделать так, если пришла команда "right" то повернуть серво мотор на 90 ?
Araris
Offline
Зарегистрирован: 09.11.2012

Почитайте про strcmp().

int val = strcmp((char *) buffer, "right"); 

akefa
Offline
Зарегистрирован: 29.05.2015

Решил проблему другим путем. Спасибо за Ваш ответ, тоже пригодился.

Заменил все на string

Message += (String)(char)buffer[i]; 

if (Message.indexOf("light_on") >=0) {
      Serial.print("onLight");
      digitalWrite(13, HIGH);
    } else if (Message.indexOf("light_off") >=0) {
      Serial.print("offLight");
      digitalWrite(13, LOW);  
    }