Stránka 1 z 1

RS485 na Linuxu

Napsal: 11 úno 2017, 20:43
od JirkaRCK
Zdravím,
rád bych se zeptal, zdali jste někdy na Linuxu používali TTL UART nebo RS232 přes převodník na RS485 a jak jste případně u převodníku řešili ovládání binárního výstupu pro flow-control. Zkoušel jsem čekat, až funkce ioctl(TIOCOUTQ) vrátí 0 prvků v bufferu sériové linky, ale zřejmě tu jde o softwarový buffer jádra, nikoliv o TX buffer portu, jelikož se takto několik posledních znaků neodešle i poté, co je už prázdný. Další možnost je pevně daná anebo z baud ratu a počtu znaků spočítaná delay. To mi však přijde jako velice neefektivní cesta...

Existuje tedy nějaká možnost, jak v Linuxu efektivně zjistit, zdali je dokončen transmitt a linka se může přepnout pro příjem? Neexistuje případně i nějaký automatický režim 232ky, kdy k tomuto účelu slouží některý z handshake pinů portu?

Napsal: 11 úno 2017, 22:31
od Zmije
Třeba takto

Kód: Vybrat vše

int status;
char buf[20];

// flow ctrl

write(fd, buf, sizeof(buf));
while (1)
{
  ioctl(fd, TIOCSERGETLSR, &status);
  if (status & TIOCSER_TEMT)
    break;

  usleep(100);
}
// flow ctrl

Napsal: 11 úno 2017, 22:54
od JirkaRCK
Díky moc, vyzkouším.

Napsal: 11 úno 2017, 23:57
od JirkaRCK
Tak potvrzuji, že registr, který radil Zmije, funguje perfektně. Díky moc za radu! 8-)

Ještě bych měl menší dotaz, tak trochu offtopic, doporučili byste někdo nějakou dobrou literaturu, případně seriál na webu, který se C pro Linux z hlediska přistupování k hardwaru, embedded aplikací atd hlouběji zabývá? Rád bych se o tom dozvěděl více.

Napsal: 12 úno 2017, 00:23
od Zmije
Bohužel, nenapadá mě konkrétní literatura, od věci by nebylo třeba Jádro systému Linux, ale je to spíš ryze ze sw. pohledu. Co se týče embeded, tak nejlépe studovat projekty kolem Raspberry Pi, případně dalších desek. Pak samozřejmě ruzná how to, miniseriály a diskuse rozeseté po Internetu.

Napsal: 12 úno 2017, 12:09
od berk
Ahoj,

zadej do googlu:
Raspberry Pi Hardware Reference PDF

Myslím že je to kniha kterou hledáš (popis hw příslušenství a příklady v c).