• Уважаемые посетители сайта esp8266.ru!
    Мы отказались от размещения рекламы на страницах форума для большего комфорта пользователей.
    Вы можете оказать посильную поддержку администрации форума. Данные средства пойдут на оплату услуг облачных провайдеров для сайта esp8266.ru
  • Система автоматизации с открытым исходным кодом на базе esp8266/esp32 микроконтроллеров и приложения IoT Manager. Наша группа в Telegram

Решено Отправка данных с датчика на другую ардуину

Com731

New member
Привет, нужна помощь. Есть два комплекта iskra neo + troyka WIFI (леонардо и esp8266). На одной tcp сервер а на второй клиент. Я шлю с клиента данные о температуре с датчика, но на сервере получаю кракозябры.
Код:
uint8_t buffer[128] = {};
    static uint8_t mux_id = 2;
     unsigned long currentMillis = millis();
    thermometer.read();
   if(currentMillis - previousMillis > interval){
    wifi.createTCP(mux_id, HOST_NAME, HOST_PORT);
    previousMillis = currentMillis;
    Serial.println(thermometer.getTemperatureC());
    uint8_t hello[] = {thermometer.getTemperatureC()} ;
    wifi.send(mux_id, (uint8_t*)hello, strlen(hello));
        Serial.println("send ok");
Код:
 uint8_t mux_id;
  uint32_t len = wifi.recv(&mux_id, buffer, sizeof(buffer), 100);
   Serial.write(buffer,len);
    if (len > 0) {
        Serial.print("Status:[");
        Serial.print(wifi.getIPStatus().c_str());
        Serial.println("]");
       
        Serial.print("Received from :");
        Serial.print(mux_id);
        Serial.print("[");
       
            Serial.write(buffer,len);
       
        Serial.print("]\r\n");
upload_2019-2-7_18-2-37.png
 

CodeNameHawk

Moderator
Команда форума
Код:
    uint8_t hello[] = {thermometer.getTemperatureC()} ;
    wifi.send(mux_id, (uint8_t*)hello, strlen(hello));
Вы посылаете переменную типа uint8_t , а на приемной стороне принимаете как текст.

Попробуйте преобразовать переменную в текст, а затем отослать.
 

Юрий Ботов

Moderator
Команда форума
Вы массиву byte (uint8_t) присваиваете float ... "uint8_t hello[] = {thermometer.getTemperatureC()} ;" да еще и в скобках :)
 

Com731

New member
Код:
    uint8_t hello[] = {thermometer.getTemperatureC()} ;
    wifi.send(mux_id, (uint8_t*)hello, strlen(hello));
Вы посылаете переменную типа uint8_t , а на приемной стороне принимаете как текст.

Попробуйте преобразовать переменную в текст, а затем отослать.
Я правильно понимаю, преобразование из float в текст выглядит так?
Код:
String s;
float a;
void setup() {
  a = 25.77;
  Serial.begin(9600);
}
void loop()
{
  s = "S0_"+String(a);
  Serial.println(s);
  delay(100);
}
 
Сверху Снизу