Ребята добрый день!
Подскажите пожалуйста почему на стороне приемника я не могу принять.
я думаю что ошибка именно в отправлении. код не мой. разобраться не получается.
у меня явно какие то проблемы с 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,
Добро пожаловать на форум.
Ваш вопрос явно не дотягивает до уровня “Программирования”, поэтому я перенес его в “Песочницу”
Что касается сути проблемы - ваша структура:
не содержит строки, а только указатель на строку. Когда вы отправляете структуру на другой контроллер, вы опять же отправляете не саму строку, а только указатель, а строка остается на передатчике.Поэтому ничего удивительного, что на приемнике вы этой строки не видите.
Ваш нужно пересылать сам строковый массив. И структура тут, скорее, лишняя.
Кроме этого, в коде есть и другие ошибки. Например, классические строки так “складывать” нельзя: