Čtení dat ze simulátoru

linedem
Příspěvky: 7
Registrován: 29 bře 2020, 01:00
Reputation: 0

Čtení dat ze simulátoru

Příspěvek od linedem » 29 bře 2020, 22:39

Dobrý den.

Potřeboval bych poradit od zkušenějších lidí. Stavím trenažér lokomotivy postavený na základě simulátoru. K němu mám funkční program napsaný v pythonu, který posílá data z virtuální lokomotivy (simulátoru) na COM port. Posílá je takovým způsobem, jak je vyobrazeno na obrázcích. V konfiguračním souboru pythonovského programu se nastavují názvy pro proměnné, které má model lokomotivy. Tyto zkratky společně s přiřazenou hodnotou posílá přes sériovou linku.
Mou snahou je tyto stringy dekódovat, abych poté mohl ovládat např. kontrolky nebo měřící přístroje.
Mým prvním cílem bylo rozblikat kontrolku zároveň se simulátorem. Zkoušel jsem několik příkladových sketchů, ale ani jeden nefungoval. Přišlo mi, jako kdyby arduino nestíhalo, protože když jsem manuálně vypisoval požadovaný string, který měl kontrolku zapnout, tak to, ačkoliv hodně opožděně, fungovalo.

Děkuji za odpověď.
Přílohy
ar_forum_2.png
ar_forum_1.png

Uživatelský avatar
gilhad
Příspěvky: 779
Registrován: 07 bře 2018, 11:22
Reputation: 0

Re: Čtení dat ze simulátoru

Příspěvek od gilhad » 29 bře 2020, 23:36

Na prvni pohled - opravdu ten simulator posila behem jedne milisekundy tolik pozadavku a mnohe z nich opakovane? Pak to mozna neprojde ani tou seriovou linkou bez zaskobrtnuti (system ti to nabufferuje a posila postupne)

Arduino by melo na zadany retezec rozsvitit LED okamzite, pokud je program spravne napsany. Pokud je napsany spatne, tak mu to pochopitelne muze trvat libovolne dlouho.

linedem
Příspěvky: 7
Registrován: 29 bře 2020, 01:00
Reputation: 0

Re: Čtení dat ze simulátoru

Příspěvek od linedem » 30 bře 2020, 00:49

No všechny proměnné vypsané v konfiguraci jsou posílány cyklicky. Dá se nastavit, že se hodnoty proměnných posílají jen při změně.

Zde je ukázka z cizího díla: https://www.youtube.com/watch?v=J2LRXwgTC9g

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Čtení dat ze simulátoru

Příspěvek od ondraN » 30 bře 2020, 07:46

Standardní délka přijímacího bufferu arduina je jen 64 byte. Pokud je arduino vystaveno nějaké větší datové smršti, musí být příjem opravdu dobře napsán, protože jakmile se buffer zaplní, všechny dále přicházející znaky se ztrácí. Ideální je přijímání a zpracování v časovém interruptu, ale to je záležitost spíše pro prokročilé. Také takové obyčejné blikání LEDkou, při soustavném příjmu, se dá nějak rozumně řešit zase jen přes interrupt a nastavováním nějakého semaforu.

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Čtení dat ze simulátoru

Příspěvek od pavel1tu » 30 bře 2020, 15:25

Kolega si dělá "knipl" z joysticku s arduinem do simulátoru létáním větroněm.
Řešil tuto nálož dat zpracováním pomocí processingu, kde data přebere a pošle do Arduina jen co potřebuje a naopak.
Tak třeba toto nasměrování pomůže.

Hledej na netu, je toho spousta k různým simulátorům, i když většina je už na STM32 ....
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

linedem
Příspěvky: 7
Registrován: 29 bře 2020, 01:00
Reputation: 0

Re: Čtení dat ze simulátoru

Příspěvek od linedem » 30 bře 2020, 23:00

pavel1tu píše:
30 bře 2020, 15:25
Kolega si dělá "knipl" z joysticku s arduinem do simulátoru létáním větroněm.
Řešil tuto nálož dat zpracováním pomocí processingu, kde data přebere a pošle do Arduina jen co potřebuje a naopak.
Tak třeba toto nasměrování pomůže.

Hledej na netu, je toho spousta k různým simulátorům, i když většina je už na STM32 ....
Takže chápu li to správně, processing data na sériové lince předzpracuje a až poté je posílá do arduina?

Uživatelský avatar
pavel1tu
Příspěvky: 2054
Registrován: 26 říj 2017, 08:28
Reputation: 0
Bydliště: Trutnov
Kontaktovat uživatele:

Re: Čtení dat ze simulátoru

Příspěvek od pavel1tu » 31 bře 2020, 07:15

Včera jsem s ním mluvil v práci,
ano, zatím to má rozchozené jen s Arduinem .
Je to nějaký "jojstic" s Arduinem Leonardo,
pak chce mít tu app v processingu na přechrochtávání dat, jinak to Arduino nestíhá.
UNO, NANO, Mikro, PRO mini, DUE, ESP32S2, RPi PICO
Pavel1TU
"Správně napsaný kod lze číst jako knihu"

jankop
Příspěvky: 1029
Registrován: 06 zář 2017, 20:04
Reputation: 0
Bydliště: Brno
Kontaktovat uživatele:

Re: Čtení dat ze simulátoru

Příspěvek od jankop » 31 bře 2020, 17:47

Nejefektivnější by bylo, kdyby bylo možné trochu snížit frekvenci vysílání. Ale možností je řada. Velikost serial bufferu v Arduinu lze zvětšit, ale ani to není nutné. Tu kontrolku, to je brnkačka. Spíš by mě zajímalo, co víc za akce je požadováno?
Dokážeš zjistit, terminátory jednotlivých řádků?

ondraN
Příspěvky: 932
Registrován: 08 srp 2019, 20:01
Reputation: 0

Re: Čtení dat ze simulátoru

Příspěvek od ondraN » 31 bře 2020, 18:41

Arduino to zvládne v pohodě, ale musí se to chytře napsat, nejlépe v neustálém cyklu odebírat znak po znaku a tak s nimi pracovat. Nenechat si nacpat sériový bufer až po vrch a pak se z toho snažit něco vytahat. Pak bude snadné i to blikání a jiné detaily. Důležité je opravdu co nejrychleji odebírat znaky ze sériové linky a zpracovávat per partes (po částech). Mám třeba takhle dělané zpracování dat z GPS, která každou vteřinu vyplyvne souvislý blok cca 600byte na rychlosti 9600. Sežere to odhadem cca 20% výkonu una (tedy jenom při tom přijmu, jinak to ani není zaznamenatelné).
Problém by nastal, kdyby byl souvislý datový tok blízký k 10kb/s, ale to asi nebude.

linedem
Příspěvky: 7
Registrován: 29 bře 2020, 01:00
Reputation: 0

Re: Čtení dat ze simulátoru

Příspěvek od linedem » 31 bře 2020, 22:57

jankop píše:
31 bře 2020, 17:47
Nejefektivnější by bylo, kdyby bylo možné trochu snížit frekvenci vysílání. Ale možností je řada. Velikost serial bufferu v Arduinu lze zvětšit, ale ani to není nutné. Tu kontrolku, to je brnkačka. Spíš by mě zajímalo, co víc za akce je požadováno?
Dokážeš zjistit, terminátory jednotlivých řádků?
Co se týče požadovaných akcí, tak ovládání voltmetrů, signalizačních terčíků, kontrolek atd.
Co je myšleno terminátorem řádku?

Odpovědět

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 8 hostů