У меня проблемы со сравнением строк.
Я получаю от mqtt несколько сообщений, я хочу сохранить последнее значение для каждой темы (ключ)
Я показал соответствующие частимоего эскиза.
#define MAX_SENSORS 6
// таблица темы и значения
char sensor_data[MAX_SENSORS][2][20];
инициализация таблицы
void init() {
....
for (int i=0;i<MAX_SENSORS;i++) // initialize table
{
strcpy(sensor_data[i][0],"?");
strcpy(sensor_data[i][1],"");
}
}
Сообщение, полученное здесь
void callback(char* topic, byte* b_payload, unsigned int length) {
// Convert byte* b_payload to string
for (int i = 0; i < length; i++) {
payload[i]=(char)b_payload[i];
};
payload[length]='\0';
for (int i = 0; i < MAX_SENSORS; i++)
{
Почему это (отладочная отладка) не работает?
if (sensor_data[i][0]=="?") {
Serial.print("*");
}
Оригинал
if (sensor_data[i][0]==topic) { // Slot matching topic found
strcpy(sensor_data[i][1],payload);
Serial.printf(" Slot %d",i);
break;
} else if (sensor_data[i][0]=="?") { // Empty slot found, store topic here
strcpy(sensor_data[i][0],topic);
strcpy(sensor_data[i][1],payload);
Serial.printf(" New %d",i);
break;
}
}
Serial.println();
}
Все это, вероятно, происходит из-за того, что я запутался между строками и массивами символов?
edit Задание
strcpy(sensor_data[i][0],topic);
strcpy(sensor_data[i][1],payload);
, кажется, присваивает
concat(topic,payload) to sensor_data[i][0].