Zebrałem garść informacji dotyczącą transmisji danych miedzy komputerami PC za pośrednictwem portu szeregowego. Tutaj zostanie omówiona strona sprzętowa czyli jak zrobić kabelki lub czym je zastąpić.
9 pin(DB9) | 25 pin(DB25) | Kierunek przepływu danych: | 25 pin(DB25) | 9 pin(DB9) |
---|---|---|---|---|
pin 5 | pin 7 | GND <==> GND | pin 7 | pin 5 |
pin 3 | pin 2 | TxD ==> RxD | pin 3 | pin 2 |
pin 7 | pin 4 | RTS ==> CTS | pin 5 | pin 8 |
pin 6 | pin 6 | DSR<== DTR | pin 20 | pin 4 |
pin 2 | pin 3 | RxD <== TxD | pin 2 | pin 3 |
pin 8 | pin 5 | CTS <== RTS | pin 4 | pin 7 |
pin 4 | pin 20 | DTR ==> DSR | pin 6 | pin 6 |
Wtyk DB25 | Wtyk DB9 | Sygnał | Opis | Funkcja |
---|---|---|---|---|
1 | - | GND | Chassis Ground | masa |
2 | 3 | TxD | Transmit Data | wyjście |
3 | 2 | RxD | Receive Data | wejście |
4 | 7 | RTS | Request to Send | wyjście |
5 | 8 | CTS | Clear to Send | wejście |
6 | 6 | DSR | Data Set Ready | wejście |
7 | 5 | GND | Signal Ground | masa |
8 | 1 | DCD | Carrier Detect | wejście |
20 | 4 | DTR | Data Terminal Ready | wyjście |
22 | 9 | RI | Ring Indicator | wejście |
Schemat pełnego kabla "null modem" był zamieszczony wcześniej w postaci tabeli. Do przesyłania danych w jedną stronę wystarczą nawet 2 żyły! Można się o tym przekonać wykonując kabel wg. poniższego schematu i odpalając programy terminalowe na obu komputerach. W obu programach ustalamy taką samą prędkość. Na terminalu komputera "nadawanie" wprowadzamy znaki, które powinny być wyświetlane na ekranie terminala komputera "odbiór":
Poniżej zamieszczam schemat 3-żyłowego kabla do transmisji w obie strony. Oprócz terminali potrafią z niego korzystać takie programy jak NC, INTERSVR, LapLink, gry w rodzaju DOOMa itd. Najlepiej wykonać go wykorzystując zwykły ekranowany kabel stereo (2 żyły w ekranie). Ekran łączymy wtedy z masą (5):
Jest jeszcze wersja, bardziej zaawansowana, kabla 3-żyłowego, polegająca na wykonaniu kilku zwor we wtykach. Zwory RTS(7) z CTS(8) oraz DCD(1),DSR(6) z DTR(4) przydają się przy oszukiwaniu funkcji DOSa związanych z COMami (np. praca zdalna) oraz oszukiwaniem np. DialUp Networking z WINdy. Uwaga: są gry i programy, które nie dadzą się oszukać i potrafią chodzić tylko na kablu 7-żyłowym.
Jeśli masz 2 komputery, które chcesz spiąć jak najmniejszym kosztem to nie kupuj kart sieciowych, 25-żyłowego kabla równoległego, 7-żyłowego kabla "null-modem", tylko kup dwie żeńskie wtyczki DB9 z obudowami, pare metrów kabla stereo (nawet tego po 50 gr za metr) i zlutuj wszystko wg wariantu 2 lub 3.
Sterowanie przepływem (handshaking) to sygnalizacja gotowości do odbioru. Modem może sygnalizować, że chwilowo nie chce przyjmować danych, podobnie komputer. Metody są dwie:
Obie metody obsługują zdecydowanie wszystkie programy. W przypadku transmisji full duplex (minimum 3 żyły) oddzielną linią biegną dane z lokalnego komputera do odległego komputera (lub modemu), a oddzielną w odwrotnym kierunku. W takim wypadku sterowanie przepływem jest zbyteczne, no chyba że komputer (modem) nie nadąża z odbieraniem znaków, ale tę kwestię tu pomijamy.
Są sytuacje, w których jest niezbędne:
Gdy zachodzi potrzeba skorzystania z handshakingu przy łączności half duplex, trzeba zbudować układ zabraniający transmisji (przez podanie "0" na linię CTS) gdy wykryje, że komputer odległy rozpoczął ją pierwszy.
Trzy albo dwie żyły (transmisja jednokierunkowa) da się zastąpić ukladem "nadajnik - odbiornik", wykorzystując do transmisji fale radiowe lub wiązkę lasera. Kiedyś zbudowałem prosty układ do transmisji jednokierunkowej (po zdublowaniu elementów możliwa jest także dwukierunkowa) wykorzystujący jako medium wiązkę lasera. Układ w zależności od oświetlenia panującego w otoczeniu i skupienia wiązki umożliwiał transfer 4800 - 9600 bps a przy optymalnych warunkach nawet 19200! Poniżej zamieszczam schematy nadajnika i odbiornika:
Jak widać układ jest bardzo prosty. Jedynym trudnym do zdobycia elementem może być latarka laserowa. Ja swoją kupiłem na stadionie dziesięciolecia w W-wie za jedyne 10zł. Nie zalecam grzebania wewnątrz latarki bo jest to urządzenie dosyć delikatne. Przystosowanie jej do pracy polega jedynie na zwarciu wyłącznika przy pomocy spinacza do bielizny i podłączeniu przewodów. Tu sposobów jest wiele, ale najlepiej wyposażyć się w przewody zakończone malutkimi klipsami, "minus" wetknąć w środek, a "plus" przypiąć gdzieś na obudowie no i sprawdzić przy pomocy bateryjki czy wszystko "łączy". Tranzystor T1 i towarzyszące mu elementy najlepiej zamknąć w obudowie wtyku. Podobnie można uczynić z R3. Zasada działania jest prosta: pojawienie "1" na TxD zapala latarkę. Oświetlony fototranzystor (dowolny typ) zwiera wyjście DTR z wejściem RxD (na kompie-odbiorcy). Oczywiście warunkiem poprawnej pracy odbiornika jest obecność stanu "1" na wyjściu DTR. Zazwyczaj programy terminalowe ustawiają je na "1", ale jeśli jest inaczej - trzeba to zrobić samemu np. przy pomocy mojego programu do monitorowania stanu portu. Rezystor R3 wpływa na czułość odbiornika. W zależności od potrzeb można go zmniejszyć (ale tak, aby silne światło nie spowodowało przeciążenia linii DTR lub fototranzystora - prąd w obwodzie DTR nie może przekroczyć 4-5mA), zwiększyć albo pominąć.
Uruchomienie należy rozpocząć od odpalenia na obu komputerach programów terminalowych i ustawienia w nich takich samych parametrów transmisji. Na początek 150bps. Potencjometrem R2 trzeba ustawić prąd spoczynkowy latarki na minimalny. Następnie trzymając jakąś literkę na klawiaturze komputera - nadawcy wycelować wiązkę w fototranzystor tak aby na ekranie komputera - odbiorcy pojawiała się owa literka. Laser powinien wtedy migać. Jeśli wszystko jest ok to zwiększamy prędkość transmisji i znów próbujemy. Jeśli coś nie działa to zazwyczaj wina leży po stronie odbiornika np. zbyt duża czułość. Najlepiej próby przeprowadzać wieczorem, gdy jest już ciemno. Napięcie na wyprowadzeniu RxD (2) względem masy (5) odbiornika przy nieoświetlonym fototranzystorze nie powinno przekraczać 1-1.5V natomiast po oświetleniu co najmniej 2V. Zanim zbudujesz powyższy układ, warto "potrenować" na jego przewodowym odpowiedniku, którego schemat zamieszczam poniżej:
Wstępnie można je przeprowadzać używając tylko jednego komputera. Możemy np. nadajnik podłączyć do jednego portu, a odbiornik do drugiego i odpalić 2 terminale. Można także wykorzystać tylko jeden port (nadawanie łączymy z linią TxD a odbiór z RxD). Wysyłane znaki będą wtedy "wracały" do portu.
Fototranzystor jest elementem wolnym, a do poprawnej pracy w roli klucza wymaga skutecznego oświetlenia. Aby ominąć te niedogodności, proponuję zastosowanie fotodiody zintegrowanej ze wzmacniaczem np. OPT101.