Komunikace po dvou UART najednou

Odpovědět
DavidBN
Příspěvky: 2
Registrován: 14 říj 2018, 19:45
Reputation: 0

Komunikace po dvou UART najednou

Příspěvek od DavidBN » 14 říj 2018, 19:59

Dobrý den,
mám Arduino Mega a potřebuji:
K UART2 je připojeno zařízení, které náhodně posílá asi 30 znaků dlouhý řetězec. Někdy pošle jeden za minutu, někdy může přijít třeba 10 zpráv s rozestupem 1 s.
Tato data potřebuji načíst a odesílat je pomocí GSM modulu na internet. Vlastní odesílání (UART1) na server mi pomocí AT příkazů funguje, odeslání jednoho řetězce ale trvá několik sekund (navázání spojení se severem, odeslání dat, ukončení spojení).
Problém, kde potřebuji poradit: Jak zajistit, abych při odesílání dat (pomocí UART1) na GSM nepřišel o nějakou příchozí zprávu (UART2)? Je mi jasné, že musím použít nějaký buffer, do kterého příchozí zprávy ukládat, ale není mi moc jasné, jak zajistit při odesílání dat vlastní příjem na jiném portu.

Díky za rady

David

Wojta
Příspěvky: 184
Registrován: 22 črc 2017, 16:39
Reputation: 0

Re: Komunikace po dvou UART najednou

Příspěvek od Wojta » 15 říj 2018, 07:31

Ahoj,
přesně na tohle se používá SerialX.available().
Ten vrátí počet bytů na sériové lince které můžeš přečíst. Pokud tedy něco přijde, je logicky SerialX.available()>0 takže můžeš použít smyčku while(SerialX available>0) a v ní data číst a zapisovat do bufferu. Tohle by ti snad mělo stačit na všechno. To X samozřejmě nahradíš číslem portu.
Něco víc o funkci je tady: https://www.arduino.cc/en/Serial/Available

Odpovědět

Kdo je online

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