• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Problem z publikowaniem danych do brokera mqtt [SOLVED]
#1
Panowie,
mam problem z publikacją danych z software serialu do brokera mqtt, a mianowicie publikuje tylko pierwsze dwa bajty zamiast sześciu. Podejrzewam, że jest to wynikiem tego, że trzeci bajt to "0" w DEC.
Paczka bajtów w serial monitorze wygląda następująco 33,22,0,0,12 natomiast do brokera dolatuje tylko 33 i 22.
Proszę o pomoc
Kod:
if (swSerial.available())
  {
   lastCharTime = millis();
   charBuff[charCount] = swSerial.read();
    charCount++;
    if (charCount == 6)
    {
      Serial.print("R: ");
      for (int i = 0; i < 5; i++)
      {
        Serial.print(charBuff[i], DEC);
        Serial.print(",");
      }
      Serial.println(charBuff[5], DEC);
      mqttClient.publish("topic/diagnostic", (char *)charBuff);
      charCount = 0;
    }
  }
 
Odpowiedź
#2
Najwyraźniej MQTT traktuje to jak napis/litery i 0 traktuje jako jego koniec. Zresztą z nazewnictwa zmiennych wynika, że Ty też. Zamień sobie bajty na napis i tak je wysyłaj.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
Problem rozwiązany

char data[13];
memset(data, 0, sizeof(data));
for (int i = 0; i < sizeof(charBuff); i++)
{
sprintf(&data[i * 2], "%02X", charBuff[i]);
}
data[13] = '\0';
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości