Передача данных

Ребята добрый день!
Подскажите пожалуйста почему на стороне приемника я не могу принять.
я думаю что ошибка именно в отправлении. код не мой. разобраться не получается.
у меня явно какие то проблемы с String и const char * Pack; только я не могу разобраться
Помогите если не трудно .

// структура данных посылки
struct SendData {
const char * Pack;
 byte crc;  // байт контрольной суммы
};

SendData Send;



byte crc8(String stringData) {
 int len = stringData.length();
 int i = 0;
 byte crc = 0x00;
 //Serial.print("(0:" + stringData + ")\n");
 while (len--) {
   byte extract;
   extract = (byte) stringData.charAt(i++);
   for (byte tempI = 8; tempI; tempI--) {
     byte sum = (crc ^ extract) & 0x01;
     crc >>= 1;
     if (sum) {
       crc ^= 0x8C;
     }
     extract >>= 1;
   }
 }
 return crc;
}



SendData Send;
Send.Pack=ssid+"_"+password+"_"+urlpost+"_"+enablurlpost+"_"+urlposteverysec+"_"+restarteverysecfailpost+"_"+enablrestarteverysecfailpost+"_"


// расчёт CRC (без последнего байта)
byte crc = crc8((Send.Pack));

Send.crc = crc;
// пакуем в посыfлку

Serial2.write((byte*)&Send, sizeof(Send));
//USB,

Добро пожаловать на форум.
Ваш вопрос явно не дотягивает до уровня “Программирования”, поэтому я перенес его в “Песочницу”

Что касается сути проблемы - ваша структура:

не содержит строки, а только указатель на строку. Когда вы отправляете структуру на другой контроллер, вы опять же отправляете не саму строку, а только указатель, а строка остается на передатчике.Поэтому ничего удивительного, что на приемнике вы этой строки не видите.

Ваш нужно пересылать сам строковый массив. И структура тут, скорее, лишняя.

Кроме этого, в коде есть и другие ошибки. Например, классические строки так “складывать” нельзя:

1 лайк

Наверное, переменная длина приемлема, просто под строку память нужно выделять отдельно.

 String s =  Send.Pack; // 
Serial.print(s);
Serial.write(Send.crc);

Так???

Спасибо большое ребята. Действительно указатель. Я решил вопрос

обычно пишут - я решил вопрос так: (тут код) )))

нет
Если размер строки не фиксирован, желательно включить в структуру поле длины.

Использованный вариант строки (String) - объект, у которого можно узнать его длину.