• Система автоматизации с открытым исходным кодом на базе 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);
}
 
Сверху Снизу