Pytanie: Konwersja danych na RS232
Masz problem? Zapytaj na forum elektroda.pl
From: "Piotrek" <saciuk_at_nospam_poczta.onet.pl>
Subject: Pytanie: Konwersja danych na RS232
Date: Sat, 29 Dec 2001 14:49:15 +0100
Witam!
Mam następujący problem z ASYNCHRONICZNYM przesyłaniem danych przez RS232:
1. Jedno urządzenie wysyła/odbiera znaki 9-bitowo (taki 9 bitowy bajt ;-) )
2. Drugie urządzenie wysyła/odbiera znaki 8-bitowo
Znam dokładnie wartość 9. bitu w każdym znaku. W jaki sposób można zbudować
konwerter który pozwala komunikować się tym urządzeniom - dla tego
8-bitowego dopisuje odpowiednio 9. bit a dla 9-bitowego obcina 9 bit każdego
znaku? Czy ma ktoś jakiś pomysł?
Z góry dziękuję za pomoc.
Piotrek
saciuk_at_nospam_poczta.onet.pl
From: "Andy" <anok_at_nospam_ceti.pl>
Subject: Re: Pytanie: Konwersja danych na RS232
Date: Sat, 29 Dec 2001 16:28:34 +0100
Użytkownik "Piotrek" <saciuk_at_nospam_poczta.onet.pl> napisał w wiadomości
news:a0khls$4qt$1_at_nospam_news.tpi.pl...
Witam!
Mam następujący problem z ASYNCHRONICZNYM przesyłaniem danych przez RS232:
1. Jedno urządzenie wysyła/odbiera znaki 9-bitowo (taki 9 bitowy bajt
;-) )
2. Drugie urządzenie wysyła/odbiera znaki 8-bitowo
Znam dokładnie wartość 9. bitu w każdym znaku. W jaki sposób można
zbudować
konwerter który pozwala komunikować się tym urządzeniom - dla tego
8-bitowego dopisuje odpowiednio 9. bit a dla 9-bitowego obcina 9 bit
każdego
znaku? Czy ma ktoś jakiś pomysł?
...
no pewnie najprosciej to na kontrolerze co ma dwa
UART'y sprzetowe
odpoweidnie je konfigurujesz
i piszesz program, ktory przepisuje bajt z jednego do drugiego
troche trudniej ale tez sie da, jesli wystarczajaco szybki kontoler
wzgledem predkosci transmisji,
na kontolerze co ma jeden UART sprzetowy a drugi mozna zrobic programowo
albo w razie potrzeby oba zrobic programowo
mozna tez pewnie na jakims CPLD
w ostatecznosci jakby ktos mial duzo samozaparcia
to na TTL'ach :-)
Andrzej
From: "Greg S." <greg_sz_at_nospam_dsuper.net>
Subject: Re: Pytanie: Konwersja danych na RS232
Date: Sat, 29 Dec 2001 18:32:14 -0500
Użytkownik "Piotrek" :.
...problem z ASYNCHRONICZNYM przesyłaniem danych przez RS232:
1. Jedno urządzenie wysyła/odbiera znaki 9-bitowo (taki 9 bitowy bajt
2. Drugie urządzenie wysyła/odbiera znaki 8-bitowo
Z PCta mozesz wy
uslac 9-ty bit piszac do UARTu ze masz albo parzystosc parzysta lub nieparzyzta.
Troche to upierdliwe ale da sie zrobic. Z kazdum znakiem obliczasz sobie bit
parzystosci i nieparzystosci i sprawdzasz ktory co odpowiada jako 9-ty bit i
wtedy ustwiasz parzystosc ODD (nieparzysta) albo EVEN (przysta) .
Natomiast przy odbiorze nie jestem pewien ale przeksperymentuj.
Powinno dyc tal ze jak odbierze taki 9bitoy znak to Ci powie albo ze parzystosc
jest dobra albo zla a znak bedzie do przeczytania. I znowy przez obliczenia
dojdzies czy odebrales 1 czy 0.
Oczywiscie ustawienie UARTa jest 8 bitow danych +1 bit parzystosci.
Musisz pracowac w trybie 16450 a nie 16550 bo nie mozesz uzywac buforowania bo
odbierajac nastepny bajt stracisz informacje o "parzystosci" poprzedniego.
Powodzenia