xmetal Стоп- стоп!
У нас есть цикл, в нём есть определение приёма пакета и если приняли, то куча ифов.
На данный момент заменено на switch.
Задетектили приём пакета, пошли вниз по коду, если есть, то изменили что-то в массиве, если нет, то просто сделали пробежку сверху вниз, сравнили массивы и побежали на следующий круг.
В этом цикле как бы не может быть много пакетов.
Если приняли нужный нам пакет, то сравнив у нас естественно массивы не совпали и мы выдали весь пакет целиком в порт, не важно что записали всего один бит, передали всё равно 161 байт. Ну и в буферный масив перекинули данные основного массива чтоб потом сравнивать дальше.
Так что складывание данных только из одного пакета за цикл и сравнение тоже.
Сейчас оптимизировал это свитчем и сделал сравнение только если пришёл интересующий меня пакет. В порт лететь стало меньше. Проблема ушла с кашей.
То что не ловит переодически пакеты это уже где-то с железом косяк. Даже на минимальном скетче есть потери пакетов (просто когда пакеты в консоль выводятся). После пропайки TJA, укорочения хвоста витухи в машине стало полутчше,но всё равно теряет. Видимо вместо дисплея в разъём втыкать нужно чтоб лишних проводов и скруток не было.
На этой недели проверю.
|