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
Komunikace po dvou UART najednou
Re: Komunikace po dvou UART najednou
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
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
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 9 hostů