Arduino Polska Forum

Pełna wersja: Problem z publikowaniem danych do brokera mqtt [SOLVED]
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
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;
    }
  }
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.
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';