Nowe posty

Autor Wątek: serial port  (Przeczytany 3289 razy)

eternith

  • Gość
serial port
« dnia: 2012-04-11, 20:10:58 »
witam,

jak sprawdzić czy wszystkie znaki ostały wysłane.

pozdrawiam

Offline Robert

  • Administrator
  • Guru
  • *****
  • Wiadomości: 2516
    • Zobacz profil
serial port
« Odpowiedź #1 dnia: 2012-04-11, 21:55:31 »
Porównać
Zanim popełnisz grafomaństwo: 1 | 2 | 3
Baza RPM Jak szukać informacji

eternith

  • Gość
serial port
« Odpowiedź #2 dnia: 2012-04-12, 07:33:31 »
co porównać??

może bardziej sprecyzuje o co mi chodzi.
chcę sterować linią RTS - zapalać ją podczas wysłania danych przez serial.

czyli wygląda to tak:

zapalam RTS
write(port, buffer, iles_danych)
gaszę RTS  <- ale w tym momencie nie mam jeszcze pewności że już wszystko się wysłało z bufora UART.

i przy wysłaniy większej ilości danych widzę na led`ach, że RTS już gaśnie a dane sa jeszcze wysyłane.

Poszukuje jakiejś metody aby sprawdzić czy wszystkie dane z bufora UART zostały wysłane.

Offline vanhelzing

  • Users
  • Prawie jak Guru
  • ****
  • Wiadomości: 314
    • Zobacz profil
serial port
« Odpowiedź #3 dnia: 2012-04-12, 17:52:40 »
Dawno tego nie robiłem i nie mam pewności, czy Ci to zadziała.

Sprawdź:
ioctl (fd, TIOCOUTQ, &bytes)
żeby sprawdzić ilość danych w buforze,

lub

int tcdrain(int fd);
żeby wymusić oczekiwanie, aż wszystkie dane zostaną przesłane.

Ksanderon

  • Gość
serial port
« Odpowiedź #4 dnia: 2012-04-14, 21:38:51 »
możesz też jeśli ci zależy na pewności wysłać crc i jakoś zareagować gdy się nie zgadza.