Portál AbcLinuxu, 2. května 2025 01:08
Vlákno bylo přesunuto do samostatné diskuse.
Osobně jsem se na tohle vykašlal a delší propoje jsem vyřešil nákupem routříků s OpenWRT a roztaháním ethernetu, který je oddělený trafíčky defaultně, a případný výstup na RS-485 dělám až na druhé straně. Cenově to vyjde podobněUrčitě bude záležet na tom, kolik kusů toho děláte (tj. kdy úspora na těch routerech zaplatí práci), ale když mluvíte o těch trafíčkách, tak mě napadá FSK modulace - digitální signál přes ta trafíčka neproleze, ale sinusovka by měla. Akorát mě teď nenapadá, jak řešit ten bias do klidového stavu
V mnoha zařízeních když zavoláte write na sériák, tak se to jenom vloží do fronty a write hned vrátí a vysílání ještě běží. Potřebujete třeba udělat flush.Nedávno jsem zrovna psal něco, co komunikovalo po sériáku, v Ruby. Dopracoval jsem se k tomu, že při odvysílání zprávy se vypočítá čas, kdy je odeslání hotové, a podle toho se pak posílá dál. Oproti MCU, které udělá interrupt, když má volno v 1B velkém bufferu, docela pakárna. Na druhou stranu je to na straně PC a v Ruby, takže tam si můžu dělat a ladit, co chci. Teda skoro. Narazil jsem na to, že se mezi zařízeními "náhodně" rozpadá časování, takže mi to přecházelo do chybového stavu (timeouty, nesedlo pořadí zpráv a tak) a přestalo se to dít, když jsem vypnul ladící výstupy na terminál. Počítač (nebo Ruby) prostě nestíhal komunikovat po sériáku a zároveň kreslit do konzole hromadu textu.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.