Mam złą wiadomość dla użytkowników win2000/XP - DOSowe programy takie jak Norton Commander czy InterLnk nie będą poprawnie pracować w tych systemach. Jeśli chcesz połączyć komputer pracujący pod DOSem z kompem z win2000/XP, masz do dyspozycji jedynie terminale i "Bezpośrednie Połączenie Kablowe". Jedynym znanym mi programem umożliwiającym prostą wymianę plików pod Windowsami jest Windows Commander. Jeśli jego prostota okaże się niewystarczająca proponuję zestawić Bezpośrednie połączenie kablowe i skorzystać z opcji udostępniania plików.
Umożliwia dostęp do zasobów dyskowych drugiego komputera. Można skopiować przenieść lub usunąć dowolny plik/katalog. Widoczne są wszystkie dyski komputera pracującego w trybie biernym. Odpalanie wygląda tak:
Na obu komputerach wybieramy opcję połącz:
Informujemy komputer, do którego portu podłączony jest kabel. Wybieramy tryb pracy (na jednym komputerze aktywny,na drugim bierny):
Pojawia się okienko informujące o oczekiwaniu na połączenie...
A po nim:
Na komputerze "aktywny":
Na komputerze "bierny":
Jeśli po oczekiwaniu na połączenie pojawi komunikat:
...wtedy trzeba sprawdzić kable, zresetować komputer, wypróbować inne porty (do wyboru mamy zazwyczaj 2), przetestować wszystkie warianty, sprawdzić przy pomocy np. starej myszki działanie portów, sprawdzić poprawność połączeń śledzia z kartą I/O (albo płytą główną), zobaczyć co na temat COMów ma do powiedzenia jakiś program diagnostyczny np. MSD itd. Co prawda NC jakoś działa pod WINdą, ale zalecam uruchamianie go pod DOSem - w czasie startu systemu: F8 i "wiersz poleceń" (w przypadku takich programów jak NC WINda ma swoje kaprysy i nie zawsze pozwala się dobrać im do COMów).
Umożliwia swobodny dostęp do dysków i drukarek komputera - serwera pracującego w trybie biernym z poziomu komputera klienta z zainstalowanym sterownikiem.
Na komputerze-serwerze odpalamy program INTERSVR (uwaga: nie da się go uruchomić pod WINdą, jedyne co można zrobić to nacisnąć przy starcie systemu F8 i wybrać "wiersz poleceń") Na komputerze-kliencie dodajemy do pliku CONFIG.SYS linijkę:
DEVICE=C:\DOS\INTERLNK.EXE
gdzie C:\DOS to lokalizacja (ścieżka dostępu) do pliku INTERLNK.EXE. Następnie restartujemy komputer.
Po restarcie klient i serwer same się odnajdą (oba programy skanują wszystkie porty). Na komputerze-kliencie pojawią się nowe dyski (udostępniane przez serwer), do których bedzie możliwy dostęp także pod WINDOWSem (ale troche wolny).
Umożliwiają przesyłanie tekstów (np. prymitywne "czatowanie") i plików - wtedy odpalamy terminale na obu komputerach. Dzięki nim możliwa jest także praca zdalna, odbieranie i wysyłanie danych tekstowych z/do programów pracujących na drugim komputerze - wtedy na jednym komputerze odpalamy terminal a na drugim wydajemy spacjalna komendę z linii poleceń DOSa/WINdy - o tym za chwilę. Konfiguracja HyperTerminala wygląda tak:
Odpalamy skrót do folderu HyperTerminal: start/programy/akcesoria/komunikacja/HyperTerminal, a następnie program HyperTrm. Wpsujemy nazwę połączenia i wybieramy mu ikonkę.
Wybieramy port (do którego podłączony jest kabel) na liście "połącz używając":
Ustalamy parametry transmisji: prędkość wg. uznania (np. do pracy zdalnej pod DOSem max 9600), bity danych 8, brak parzystości i bity stopu 1. Sterowanie przepływem w przypadku 3-żyłowego kabla nie może być ustawione na sprzęt lub RTS/CTS (term95) - wysyłanie/odbiór nie będzie wtedy możliwy.
Rezultat końcowy: na drugim komputerze w linii poleceń została wydana komenda:ver > com2
W programie Term95 z Nortona Commandera sprawa wygląda podobnie. Uruchamiamy program komendą: term95 lub w NC naciskamy kolejno:F9,o,t. Przechodzimy do menu "Ustawienia" i wybieramy opcję "Łącze". Można to zrobić myszką lub sekwencją Alt+P. Ustawiamy parametry transmisji.
Tu akurat zachciało mi się pokazać jak sformatować dyskietkę umieszczoną w stacji 5,25" mojego starego kochanego 386SX, wydając komendę format a: na terminalu odpalonym na moim nowym nabytku. Aby to było możliwe, wcześniej na swojej 386tce musiałem wydać komendę ctty com2.
W Windowsie 2000/XP, a być może i w starszych jest dostępna opcja Klawisze szeregowe. Po jej uaktywnieniu znaki odbierane z wskazanego w ustawieniach portu szeregowego są traktowane równoznacznie z odpowiadającymi im klawiszom na klawiaturze, a więc wysyłanie znaków do portu przy pomocy podłączonego terminala (którym może być np. odbiornik IR połączony z mikrokontrolerem tłumaczącym sygnały IR na znaki) daje taki sam efekt jak naciskanie klawiszy na lokalnej klawiaturze. Opcję włączamy przechodząc kolejno: Panel sterowania > Opcje ułatwień dostępu > Ogólne
zaznaczamy opcję "Obsluga urządzeń funkcji KlawszeSzeregowe" i wchodzimy w ustawienia celem określenia portu i prędkości. Aby poznać możliwości tej opcji proponuję uruchomić notatnik i wysłać coś do portu np. plik tekstowy - odbierane znaki będą "wklejane" do notatnika.
Urządzenie o nazwie COMn, gdzie n to numer portu (1..4), traktujemy jak nazwę pliku. Przykładowe komendy wydawane w wierszu poleceń:
Na uwagę zasługuje polecenie ctty umożliwiające zmianę konsoli z urządzenia CON (klawiatura przy pisaniu, monitor przy czytaniu) na inne urządzenie systemowe np. port szeregowy COMn, czyli zdalną pracę. Aby zdalnie popracować na odległym komputerze trzeba w wierszu poleceń wydać komendę ctty comn (n-numer portu), a na swoim odpalić terminal. Przykład takiej pracy był wcześniej. Na koniec ważna uwaga: parametry portu, do którego będziemy wysyłać dane poleceniami DOSu ustala się komendą mode. np. mode com2:9600,n,8,1,p. ustala prędkość transmisji portu na 9600bps. Można ją np. umieścić w pliku autoexec.bat .
Przyjęto pewien standard jeśli chodzi o parametry transmisji przez COMy, którego trzeba sie trzymać:
Jak napisać program do "czatowania"?
Być może kiedyś znajdzie się tu kurs programowania portów szeregowych pod DOS, a tymczasem zamieszczam dwie wersje prostego programu do czatowania przez RS232C w QBasicu:
adr = &H3F8 'com1predkosc = 1200 'ustalenie parametrow transmisji OUT adr + 3, INP(adr + 3) OR 128 OUT adr + 1, (115200 / predkosc) / 256 'predkosc OUT adr, (115200 / predkosc) AND 255 OUT adr + 3, INP(adr + 3) AND NOT 128 'N,8,1 OUT adr + 3, 3 OR 0 OR 0 OUT adr + 4, 3 'DTR i RTS="1"- niektore programy tego wymagaja PRINT : PRINT DO IF INP(adr + 5) AND 1 THEN COLOR 14: PRINT CHR$(INP(adr)); 'wyswietl co przyszlo i$ = INKEY$ 'czy cos wcisniete? IF i$ = CHR$(27) THEN OUT adr + 4, 0: END 'ESC - koniec IF LEN(i$) = 1 THEN 'jesli inny znak ASCII - wyslij COLOR 15: PRINT i$; DO: LOOP UNTIL INP(adr + 5) AND &H20 'czekaj az sie zwolni buf OUT adr, ASC(i$) 'wyslij END IF LOOP
Albo inaczej: tym razem korzystając z funkcji I/O i komunikacji asynchronicznej wbudowanych w Qbasic:
numerCOM% = 2 bpsCOM% = 1200 nazwa$ = "COM" + LTRIM$(STR$(numerCOM%)) + ":" + LTRIM$(STR$(bpsCOM%)) + ",N,8,1,CD0,CS0,DS0,OP0,RS,TB2048,RB2048" 'wyjasnienie w/w stringa w Helpie do QBasica, patrz: "OPEN COM" OPEN nazwa$ FOR RANDOM AS #1 COM(numerCOM%) ON 'Wlaczenie obslugi zdarzen ON COM(numerCOM%) GOSUB ComHandler 'Pojawienie sie znaku powoduje skok do ComHandler DO c$ = INKEY$ IF c$ <> "" THEN COLOR 2: PRINT c$; : PRINT #1, c$; 'wysyla znak i wysw. na ekranie LOOP UNTIL c$ = CHR$(27) 'ESC konczy dzialanie progr. COM(numerCOM%) OFF CLOSE #1 END ComHandler: 'wyswietla znak, ktory przypelzl do COMa COLOR 10 PRINT INPUT$(1, #1); RETURN
Jak widać na przykładzie, polecenia takie jak PRINT, czy INPUT stosowane do obsługi plików i klawiatury / monitora, można także zastosować do obsługi portu szeregowego.
Osobiście sprawdzałem tylko DOOM2 - działał na 3-żyłowym kablu przy prędkości 19200 (minimalna 9600) , podobnie powinno być z większością gier. Wszystko co działa przez zwykły modem powinno działać przez null-modem, a jeśli wymagają sieci to można ją postawić w oparciu o kabel szeregowy lub równoległy (Bezpośrednie połączenie kablowe w Windowsie).
Jego wykorzystanie w komunikacji warto rozważyć ze względu na kilkakrotnie większy transfer niż w przypadku portu szeregowego. Dzieje się tak dzięki temu, że dane są wysyłane w 4-bitowych porcjach. W przeciwieństwie do łącza szeregowego, łącze równoległe obciąża procesor w 100% ponieważ cały protokół komunikacyjny jest realizowany programowo. Dlatego nie polecam łącza równoległego w systemach wielozadaniowych jak Windows. Liczba programów potrafiących korzystać z portu równoległego nie jest aż tak liczna. Część z nich była wymieniona wyżej. Poniżej zamieszczam schemat kabelka, z którego korzystają wszystkie znane mi programy łącznie ze sterownikami do PLIPa (Paralell Line IP).
D0->ERROR 2 - 15 15 - 2 D1->SLCT 3 - 13 13 - 3 D2->PAPOUT 4 - 12 12 - 4 D3->ACK 5 - 10 10 - 5 D4->BUSY 6 - 11 11 - 6 SLCTIN 17 - 17 GROUND 25 - 25 Pozostałych pinów nie łączyć!
Kabelek taki można kupić w sklepie albo na giełdzie, a na upartego zrobić samemu.
Powyższy opis i uwagi dotyczą połączenia w trybie SPP. Warto dodać, że istnieją rozwiązania wykorzystujące port równoległy w trybie ECP z DMA, nieobciążające procesora i zapewniające transfer rzędu 700KB/s. Kabel łączący jest jednak trochę bardziej skomplikowany, a oprogramowania jest mniej.