Portál AbcLinuxu, 5. května 2025 09:20

Dotaz: Obsluha sériového portu v C

genius2000.log avatar 30.4.2015 19:44 genius2000.log | skóre: 10 | blog: poznamky_linuxaka
Obsluha sériového portu v C
Přečteno: 361×
Odpovědět | Admin
Zdravím všechny.

Mám dotaz: Na Raspberry Pi si hraju s RS-485 přes převodník MAX485, kde je třeba řídit směr komunikace. Zatím to dělám tak, že nastavím GPIO pin na logickou 1, odešlu přes funkci write (int __fd, const void *__buf, size_t __n) data, spím přes usleep několik milisekund něž se data odešlou a pak nastavuju pin zpátky na logickou nulu.

Dá se v C zjistit, že sériový port už odeslal všechna data z bufferu? Odesílám vždy jen pár bajtů dat.
djhanz.cz - music is my life.
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.5.2015 16:08 Zmije
Rozbalit Rozbalit vše Re: Obsluha sériového portu v C
Odpovědět | | Sbalit | Link | Blokovat | Admin
Nevim jestli to funguje na malině, ale v Linuxu by to mělo jít poolingem
while(1) {
  ioctl(fd, TIOCSRGETLSR, &fl);
  if(!(fl & TIOCSER_TEMT)) break;
}
2.5.2015 20:04 T.O.M. | skóre: 22 | blog: T.O.M.'s blog | Ostrava
Rozbalit Rozbalit vše Re: Obsluha sériového portu v C
Odpovědět | | Sbalit | Link | Blokovat | Admin

Na tohle se běžně používá tcdrain.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.