• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе 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
Найдите "=" и заберите из строки все что справо
Если позиция "=" не меняется то просто скопируйте часть строки
Это делается функциями над строками или над массивами байтов
Успехов в обучении
Совет получил с этим не поспоришь )) лучше бы какой то пример чтоб понять как работает но и на том спасибо будем учить мат часть ))
 
Сверху Снизу