И снова об указателях

оно мне то зачем?
пусть ТС от ваших советов мается, мож еще и это изучит

2 лайка

Можно по телетайпу. Там пятибитная система.

А можно каждый бит шифровать байтом: четный байт - бит равен 0, нечетный - бит равен 1.

Спасибо, конечно. Но для игры в карты эта система маяков (#41) не подойдет.

Тем не менее, передавать числа с плавающей точкой как текст - это хоть и очевидный, но самый неправильный способ

3 лайка

Почему? Все буквы есть, кто Вам мешает передать “валет треф”?

1 лайк

Такими взмахами можно и голову противнику расшибить. Есть дуругая система маяков: расположение пальцев на картах. Да и скрытая информация в речи. Мнемотехника, называется. Например, с помощью какого-либо высказывания (изречения) я могу передать напарнику номер купюры.

Согласен я с Вами, но другого выходя я пока не вижу.
У меня ESP01 и смартфон должны общаться межу собой по цепи: смартфон - интернет - роутер - ESP01 - Arduino UNO и обратно.
ESP01 - WebServer, Смартфон - HTTPClient.
Браузер здесь участия не принимает ВООБЩЕ.
На смартфоне я принимаю строку от WebServer-а, из которой я могу выделить то, что надо. Как получить байт на смартфон - пока не знаю. Но то, что имею - работает вполне нормально.

Ну! А говорите не подойдёт! Ещё как подходит!

Если вебсервер замешан, то без JSON не обойтись.

В смартфоне я делаю так:

// Отправляю GET-запрос и получаю ответ одной строкой.
str:=idHttp.Get('http://xx.xxx.x.xx:10200/s?s=abcdef');

Где xx.xxx.x.xx - IP-адрес.

Ответ приходит в переменную str.

А на esp как? Ответ же esp формирует.

Вот так:

#include <ESP8266WiFi.h>
#include <ESP8266WebServer.h>
char sim;
uint8_t newMACAddress[] = {0xFA, 0xEB, 0xDC, 0xCD, 0xBE, 0xAF};

const char* ssid = "ABRAKADABRA";  // SSID
const char* password = "19661117"; // пароль

ESP8266WebServer server(10200);
void setup()
{
  Serial.begin(9600);
  delay(100);

  WiFi.begin(ssid, password);
  WiFi.mode(WIFI_STA);
  wifi_set_macaddr(STATION_IF, &newMACAddress[0]);

  while (WiFi.status() != WL_CONNECTED)
  {
    delay(1000);
  }


  server.on("/s", handleSpecificArg);
  server.begin();
}

void loop()
{
  server.handleClient();    // обработка входящих запросов
}

void handleSpecificArg()
{
  Serial.println(server.arg(0)); // отправление в Arduino
  delay(250); // жду ответ от Arduino

  String stroka = "w"; // символ "w" для отладки
  if (Serial.available() > 0)
  {
    while (Serial.available() > 0)
    {
      char sim = Serial.read();
      byte simb = (byte) sim;
      if (!((simb == 10) || (simb == 13))) stroka += sim;
    }
    server.send(200, "text/plain", stroka);   // ответ
  }
  else
  {
    server.send(200, "text/plain", "Oblom"); // ответ
  }
}

Вот в свою переменную stroka “заверни” json, а на стороне ардуино после получения “разверни”.

Если б знать как это делается…

Ну по сути это тоже строка, только особенного формата.
Изучай: