Sziasztok!
Adott egy kijelző vezérlő, ami LAN kapcsolaton fogad UDP adatokat, és ez alapján jeleníthető meg rajt képtartalom.
Fejlesztés során Linux alól teszteltem és nem tapasztaltam problémát vele, de érdekes jelenséget tapasztaltunk egy másik programból, Windows alól kezelve.
Küldés során be lehet tenni némi extra késleltetést az adatküldésbe és a dologhoz hozzátartozik, hogy a felbontás miatt az RGB színadatok átküldése és a mikrokontroller / hálózat limitje okán több csomagban kell az adatokat átküldeni, ami előtt és után amúgy egy kijelzés tiltás/engedélyezési kérés is történik, amíg a buffert tölti.
Azt tapasztaltuk, hogy adott gépről indítva bizonyos adatküldési késleltetéssel - nevezzük 80-nak - gyakorlatilag jól működik a vezérlés (egyszer-egyszer ugrik be furcsa kép), de más késleltetéssel - nevezzük 20-nak - szinte az összes kép szétesik.
Másik gépről küldve viszont utóbbi késleltetéssel - nevezzük 20-nak - is gyakorlatilag tökéletesen átjön a képtartalom, csak egyszer-egyszer ugrik be furcsán a kép akár több perc elteltével.
Minden újraküldéskor egy számláló is fut a képernyőn (a Windowsos program által írva), ezen is látható, hogy a képfrissítési sebesség valóban jobb a 20-as értéknél.
Az első gépen Windows 7 fut és régebbi, kétmagos eszköz, a második gépen, ha jól tudom, Windows 10 van és modernebb / gyorsabb gép.
A használt protokoll az első adatcsomag által a kijelzést a 0,0 koordinátától kezdi, az összes többi adat az ellenőrzéseket leszámítva a sorban következő koordinátára érkezik.
Azt nem néztük még, hogy egy másik, a rendszerben leprogramozott protokollal, amiben a kezdő koordináta is megadható, szintén jelentkezik-e a fenti jelenség.
Az a gyanúm, hogy előfordulhat, hogy esetleg gépen belül más sorrendben megy ki Windows alól az adott UDP csomag, vagy összevár a rendszer több adatcsomagot, és azokat "tömbösítve", egymást követően adja ki.
Tesztelés során Linux alól azt tapasztaltam, hogy azért egy 1 ms-os várakozást érdemes betenni a csomagok közé, hogy stabilan átjöjjön az összes adat.
Ugye ez azért mégiscsak egy mikrokontroller, aminek van egy adott hosszúságú buffere, amibe az adatcsomag érkezik, és ebből van n darab, amibe a sorban álló kérések érkeznek.
A leginkább az gondolkoztatott el, hogy valamiért a lassabb gépen volt látványos a jelenség, míg a gyorsabb gépről egész szépen működött minden, emiatt talán nem a mikrokontroller oldalán lesz sorrendprobléma, valószínűbbnek tűnik, hogy vagy a Windows kever rajt, vagy összevár többet és túl gyorsan követik egymást ezek a csomagok.
Fontos, hogy a gép és kijelző között komolyabb hálózati eszköz (routing) nem volt, bár valami switch-féle igen.
Van esetleg itt valakinek tapasztalata / tudomása arról, hogyan kezeli a Windows ezeket a csomagokat a háttérben?
Esetleg van valami konfigurációs / registry opció, ami befolyással lehet a viselkedésére?
Esetleges ötleteiteket előre is köszönöm.