• Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Нужна помощь Разбор строки на 2 переменные

Виктор_1966

New member
Доброго времени суть проэкта такова есть модуль ESP-12 и 16 портовый шим, управление из программы Roboremo .
Получаю строку которую "servo=3251" нужно разложить на 2 переменные "servo" это команда
число это данные команды.
Не кидайте тапками занимаюсь программированием недавно вот учусь на игрушках ))
скетч прилагаю что работает :
Код:
#include <Wire.h>
#include <Adafruit_PWMServoDriver.h>
#include <ESP8266WiFi.h>
#include <WiFiClient.h>

const char *ssid = "LEBHHER";                               // логин сети
const char *password = "12345678";                          // пароль сети
IPAddress ip(192, 168, 4, 1);                               // Ip адресс сети
IPAddress netmask(255, 255, 255, 0);                        // маска сети
const int port = 80;                                        // порт
Adafruit_PWMServoDriver pwm = Adafruit_PWMServoDriver();
#define Smin  200 // this is the 'minimum' pulse length count (out of 4096)
#define Smax  400 // this is the 'maximum' pulse length count (out of 4096)
WiFiServer server(port);
WiFiClient client;
char cmd[20];
int cmdIndex;
unsigned long lastCmdTime = 60000;
unsigned long aliveSentTime = 0;

void setup() {
  delay(1000);
  Serial.begin(115200);
  WiFi.softAPConfig(ip, ip, netmask); 
  WiFi.softAP(ssid, password);
  server.begin();
  Serial.println("ESP8266 RC receiver 1.1 powered by RoboRemo");
  Serial.println((String)"SSID: " + ssid + "  PASS: " + password);
  Serial.println((String)"RoboRemo app must connect to " + ip.toString() + ":" + port);
  pwm.begin();
  pwm.setPWMFreq(50);
  cmdIndex = 0;
}

void loop() {
  if(!client.connected()) {
    client = server.available();
    return;
  }
  if(client.available()) {
    char c = client.read();
      if(c=='\n') { cmd[cmdIndex] = 0; cmdIndex = 0; }
      else { cmd[cmdIndex] = c;
      if(cmdIndex<19) cmdIndex++; }
    Serial.println(cmd);
  }
    /*if(millis() - aliveSentTime > 500) { // отправка сигнала 'ON' при соединении с RoboRemo
    client.write("alive 1\n");           // (для светодиода должен быть установлен id "alive")
    aliveSentTime = millis();            // если соединение потеряно сигнал будет 'OFF'
  }**/
}
 

Виктор_1966

New member
Найдите "=" и заберите из строки все что справо
Если позиция "=" не меняется то просто скопируйте часть строки
Это делается функциями над строками или над массивами байтов
Успехов в обучении
Совет получил с этим не поспоришь )) лучше бы какой то пример чтоб понять как работает но и на том спасибо будем учить мат часть ))
 
Сверху Снизу