Leonid
Это то, что в мире сейчас творится
Max
это что такое?
Эмпирическое наблюдение. "Не стоит приписывать злому умыслу то, что можно объяснить банальной глупостью."
Slava
почитал 3 минуты, суть понял
Slava
Ruslan
ну, если понаблюдать, другого вывода не видно
Max
В среднем по больнице - да. Но нельзя исключать комбинаций.
iҚØN🐾🐾
https://github.com/rampa069/ZX-ESPectrum
iҚØN🐾🐾
Не, wii это другой проект вроде
Vladimir (Mirivlad)
Не, wii это другой проект вроде
форк от рампы. в т.ч. с поддержкой sd карты, эмулем AY, поддержкой z80 и tap формата. и это именно форк.
iҚØN🐾🐾
Ясно. Было бы прикольно посмотреть)
iҚØN🐾🐾
Спс
iҚØN🐾🐾
Видео прикольное, все подробно описывается)
https://www.youtube.com/watch?v=ROthljwC5OA
Александр
ребята кому не трудно - можете посмотреть почему я не могу отправить пакет( не понимаю
Александр
// структура данных посылки
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,
Александр
могу отправить скетч целиком. скетч компилируется
Serg
Serg
Передавай правильную длину посылки
Александр
byte crc8(String stringData) и byte crc = crc8((Send.Pack)); - const char * так вообще можно?
Александр
это все работает если я передаю только цифры. когда в структуре например не строчка а число
Serg
Sizeof (char *) - это 2 байта. Скорее всего. Никогда не мерял на esp. Введи в дебаг и посмотри
Serg
Serg
Александр
Александр
ничего не понимаю.
Александр
почему пустой пакет
Александр
хотя я показываю что в нутри есть данные когда формирую строчку
Александр
Александр
так я собрать не могу
Александр
потому что ни String
Serg
Send убери. Сначала понять надо, строка у тебя сформирована или нет
Александр
String ssid="";
String password="";
String mqttserver="";
String mqttport="0";
String mqttuserid="";
String mqttusername="";
String mqttpassword="";
String urlpost="";
String enablurlpost="";
String urlposteverysec="";
String restarteverysecfailpost="";
String enablrestarteverysecfailpost="";
Александр
ок
Serg
Александр
Александр
хм)
Александр
заработало. через доп переменную
Александр
а почему сразу не работало я так и не понял
Александр
Александр
приходит какая то каша
Александр
принимаю вот так
void loop() {
// put your main code here, to run repeatedly:
if (Serial2.readBytes((byte*)&Send, sizeof(Send))) { // читаем дату
byte crc =Send.crc;
Serial.println(Send.Pack);
}
}
Александр
// структура данных посылки
struct SendData {
const char * Pack;
byte crc; // байт контрольной суммы
};
SendData Send;
Александр
даже ему подкинул приемнику по умолчанию те же данные что и отправляю. все равно какая то ерунда
Serg
Serial2 - это кто?
Александр
UART2 аппаратный
Александр
Serial - это UART0
Александр
попробую для начала передать через println("123"); и там принять как текст по символьно. проверить вообще связь
Mr.Mait
Serg
Serg
Потрать немного времени, разберись, что такое указатели, что они хранят в своем значении, что такое операция взятия адреса &
Александр
Mr.Mait
У тебя получается так. Когда передаешь структуру, то ты начинаешь с его адреса, но грубо говоря методе write не понимает что в структуре есть ещё один указатель с текстом на другую область памяти
Александр
если так отправлять и принимать то все приходит
Александр
может быть нужно добавит timeout
Александр
на приемнике. я же целиком не принял данные
Александр
сейчас верну как было+паузу
Александр
Serial.setTimeout()
Александр
имею ввижу
Александр
на приемнике
Serg
Serg
Тяжело с телефона смотреть
Serg
Структура с указателем на строку в памяти предстпвоена как 2 (или 4) байта адреса, с которого начинается строка. Следом сразу идёт crc. 1 байта. Когда начинаешь передавать адрес структуры (это у тебя было верно), передаешь значение указателя (то есть адрес первого символа строки) + байт crc + мусор из памяти
Александр
Александр
Александр
я не понимаю пока
Serg
я не понимаю пока
Набери меня сегодня после 19мск. Если не разбноешься. Голосом проще объяснить
Serg
5 минут хватит
Александр
я получается передаю 1 байт данных+сrc 1 бат. вместо норм данных
Александр
ну даже не данные а только указатель
Serg
Serg
Mr.Mait
пытаюсь переварить но я не такой профи как Вы
Тогда советую пока оставить структуру и по отдельности передавать. А по теме советую почитать - указатели, структуры, как работает sizeof для структур и указателей, выравнивание структур и ещё POD(простая структура данных)