Пн мар 04, 2019 05:24:35
int16_t recv = w5500.getRXReceivedSize(_sock);
uint16_t ptr = w5500.readSnRX_RD(_sock);
uint8_t sz_msg = 0;
if(recv >= 2) {
uint8_t head[2];
w5500.read_data(_sock, ptr, head, 2);
ptr += 2;
sz_msg = head[1];
message = new char[sz_msg + 1];
w5500.read_data(_sock, ptr, (uint8_t*)message, sz_msg);
ptr += sz_msg;
message[sz_msg] = 0;
w5500.writeSnRX_RD(_sock, ptr);
w5500.execCmdSn(_sock, Sock_RECV);
} //else // здесь пока ничего не сделал, но все сообщения более 2 б, это точно
return sz_msg;
Пн мар 04, 2019 21:54:15
Вт мар 05, 2019 08:41:07
Это кольцевой буфер... он никогда не освободится)) https://ru.wikipedia.org/wiki/Кольцевой_буфер
Вт мар 05, 2019 09:30:19
Scaarj писал(а):При работе в паре с микроконтроллером-подписчиком видимо не долетают/не успевают обрабатываться пакеты с ACK.
Scaarj писал(а):Есть внутрений ACK указатель, который сдвигается на место Sn_TX_WR в случае подтверждения и вот он видимо не двигается.
Вт мар 05, 2019 12:34:51
Вт мар 05, 2019 13:44:25
Вт мар 26, 2019 04:30:06
Пт фев 21, 2020 13:08:24