home *** CD-ROM | disk | FTP | other *** search
- '* ------------------------------------------------------- *
- '* TXLINK.BAS *
- '* Programm zum Übertragen von Dateien zwischen zwei *
- '* Rechnern über das Nullmodem *
- '* (C) 1990 Kay Glahn & TOOLBOX *
- '* ------------------------------------------------------- *
- CLS : COLOR 15, 1
-
- ON ERROR GOTO SonstFehler
-
- Port$ = "1"
- Speed$ = "9600"
-
- Anfang:
- DO
- Maske1
- LOCATE 2, 34: PRINT " TOOLBOX-LINK "
- T$ = " TOOLBOX-LINK Version 1.0 (C)"
- T$ = T$ + " 1990 Kay Glahn & TOOLBOX"
- TextOut(T$)
- LOCATE 6, 10
- PRINT "Drücken Sie eine beliebiege Taste,";
- PRINT " um die Verbindung zum"
- LOCATE 7, 10
- PRINT "Gegenrechner mit folgenden Parametern";
- PRINT " herzustellen : "
- LOCATE 9, 10
- PRINT "Nummer der Schnittstelle : "; Port$
- LOCATE 11, 10
- PRINT "Übertragungsgeschwindigkeit : "; Speed$; " Baud"
- LOCATE 13, 10
- PRINT "Betätigen Sie die <BackStep> Taste um die";
- PRINT " Übertragungsparameter"
- LOCATE 14, 10
- PRINT "zu ändern oder <ESC> für Ende."
- DO
- A$ = INKEY$
- LOOP WHILE A$ = ""
- IF A$ = CHR$(8) THEN
- CLS
- Maske1
- LOCATE 2, 33: PRINT "Parameter ändern"
- CALL Parameter(Port$, Speed$)
- CLS
- END IF
- LOOP WHILE A$ = CHR$(8)
-
- IF A$ = CHR$(27) THEN COLOR 7, 0: CLS : END
-
- Init:
- Param$ = Port$ + ":" + Speed$
- ON ERROR GOTO VerbFehler
- OPEN "COM" + Param$ + ", N, 8, 1, rs, BIN" FOR RANDOM AS #1
- ON ERROR GOTO SonstFehler
-
- Hauptmenue:
- DO
- Maske1
- LOCATE 2, 34: PRINT " Hauptmenü "
- LOCATE 6, 10: PRINT "1. Datei empfangen"
- LOCATE 8, 10: PRINT "2. Datei senden"
- LOCATE 10, 10: PRINT "3. Sendung/Empfang"
- LOCATE 12, 10: PRINT "4. Parameter ändern"
- LOCATE 14, 10: PRINT "5. Programm beenden"
- T$ = " Geben Sie die gewünschte Zahl ein "
- TextOut (T$)
- DO
- LOCATE 18, 10: INPUT ; "Gewünschte Zahl : ", A$
- A = VAL(A$)
- LOOP WHILE A > 5 OR A < 1
- SELECT CASE A
- CASE 1
- Maske1
- LOCATE 2, 33
- PRINT "Datei empfangen"
- T$ = "Geben Sie den Zielpfad der zu empfangenden "
- T$ = T$ + "Datei ein !"
- TextOut(T$)
- DO
- LOCATE 6, 10
- INPUT; "Zielpfad : ", Pfad$
- LOOP WHILE Pfad$ = ""
- LOCATE 6, 10: PRINT STRING$(40, " ")
- T$ = " Datei wird empfangen. Bitte warten ! "
- T$ = T$ + " Abbruch mit <ESC>"
- TextOut(T$)
- Empfangen(Pfad$)
- CASE 2
- Maske1
- LOCATE 2, 33
- PRINT " Datei senden "
- T$ = "Geben Sie den Ursprungspfad der zu sendenden "
- T$ = T$ + "Datei ein !"
- TextOut(T$)
- DO
- LOCATE 6, 10
- INPUT ; "Ursprungspfad : ", Pfad$
- LOOP WHILE Pfad$ = ""
- T$ = " Geben Sie den Namen der zu sendenden Datei "
- T$ = T$ + "ein !"
- TextOut(T$)
- DO
- LOCATE 8, 10
- INPUT ; "Dateiname : ", DatName$
- LOOP WHILE DatName$ = ""
- LOCATE 6, 10: PRINT STRING$(40, " ")
- LOCATE 8, 10: PRINT STRING$(40, " ")
- T$ = " Datei wird gesendet. Bitte warten ! "
- T$ = T$ + " Abbruch mit <ESC> "
- TextOut(T$)
- CALL Senden(Pfad$, DatName$)
- CASE 3
- HandShake
- CASE 4
- Param:
- P = 1
- Maske1
- LOCATE 2, 33: PRINT "Parameter ändern"
- CALL Parameter(Port$, Speed$)
- GOTO Init
- CASE 5
- Ende = 1
- END SELECT
- LOOP WHILE Ende = 0
-
- CLOSE : COLOR 7, 0
- CLS : END
-
- DiskFehler:
- BEEP
- T$ = " Ihre Eingabe des Pfades oder des Dateinamen waren "
- T$ = T$ + "nicht korrekt !"
- TextOut (T$)
- SLEEP 5
- RESUME Hauptmenue
-
- VerbFehler:
- BEEP
- T$ = " Verbindung kann nicht hergestellt werden Parameter"
- T$ = T$ + " und Kabel überprüfen !"
- TextOut (T$)
- SLEEP 5
- IF P = 1 THEN
- RESUME Param
- ELSE
- RESUME Anfang
- END IF
-
- SonstFehler:
- BEEP
- T$ = " Genereller Fehler aufgetreten !"
- TextOut (T$)
- SLEEP 5
- RESUME
-
- '* ------------------------------------------------------- *
- '* Datei von der seriellen Schnittstelle empfangen *
- SUB Empfangen (Pfad$)
- DIM Zeich AS STRING * 1
- INPUT #1, DatName$ '* Dateinamen empfangen
- ON ERROR GOTO DiskFehler
- OPEN Pfad$ + "\" + DatName$ FOR BINARY AS #2
- ON ERROR GOTO SonstFehler
- WHILE LOC(1) < 1: WEND '* auf Zeichen warten
- Zeich = INPUT$(1, 1) '* Zeichen empfangen
- INPUT #1, LAENGE '* Dateilänge empfangen
- LOCATE 6, 10
- PRINT "Dateiname : "; DatName$
- LOCATE 8, 10
- PRINT "Dateilänge : "; LAENGE; " Byte(s)"
- FOR I = 1 TO LAENGE
- LOCATE 10, 10
- PRINT "Bereits empfangen : "; I; " Byte(s)"
- WHILE LOC(1) < 1 AND INKEY$ <> CHR$(27): WEND
- A$ = INKEY$
- IF A$ = CHR$(27) THEN EXIT FOR
- Zeich = INPUT$(1, 1) '* Zeichen empfangen
- PUT #2, I, Zeich'in Datei schreiben
- PRINT #1, Zeich; '* Zeichen zurücksenden
- NEXT I
- CLOSE 2 '* Datei schließen
- END SUB
-
- '* ------------------------------------------------------- *
- '* Direktkommunikation mit Nachbarrechner *
- SUB HandShake
- Maske2
- S1 = 3: Z1 = 5: S2 = 44: Z2 = 5
- '* Zeile und Spalte festlegen
- T$ = " Drücken Sie [ESC] um ins Hauptmenü "
- T$ = T$ + "zurückzukehren "
- TextOut(T$)
- DO
- A$ = INKEY$
- IF A$ <> "" AND A$ <> CHR$(27) AND A$ <> CHR$(8) THEN
- CALL Hsenden(A$, S1, S2, Z1, Z2)
- END IF
- IF EOF(1) = 0 THEN
- CALL Hempfangen(S1, S2, Z1, Z2)
- END IF
- LOOP WHILE A$ <> CHR$(27)
- END SUB
-
- SUB Hempfangen (S1, S2, Z1, Z2)
- B$ = INPUT$(1, 1) '* Zeichen empfangen
- LOCATE Z2, S2
- S2 = S2 + 1
- IF Z2 = 22 AND (S2 = 80 OR B$ = CHR$(13)) THEN
- '* Fenster löschen, wenn unterste Ecke erreicht
- FOR I = 4 TO 23
- LOCATE I, 44: PRINT SPACE$(35)
- '* Zeilen im Fenster löschen
- NEXT I
- LOCATE 4, 44: Z2 = 4
- END IF
- IF S2 = 80 THEN
- PRINT CHR$(13); : LOCATE , 44: S2 = 45: Z2 = Z2 + 1
- END IF
- '* Return bei Zeilenende
- IF S2 = 45 AND B$ = CHR$(13) THEN Z2 = Z2 - 1
- PRINT B$; '* Zeichen im Fenster ausgeben
- IF B$ = CHR$(13) THEN LOCATE , 44: S2 = 44: Z2 = Z2 + 1
- '* Nächste Zeile bei Return
- END SUB
-
- SUB Hsenden (A$, S1, S2, Z1, Z2)
- LOCATE Z1, S1
- S1 = S1 + 1
- IF Z1 = 22 AND (S1 = 39 OR A$ = CHR$(13)) THEN
- '* Fenster löschen, wenn unterste Ecke erreicht
- FOR I = 4 TO 23
- LOCATE I, 3: PRINT SPACE$(35)
- '* Zeilen im Fenster löschen
- NEXT I
- LOCATE 4, 3: Z1 = 4
- END IF
- IF S1 = 39 THEN
- PRINT CHR$(13); : LOCATE , 3: S1 = 4: Z1 = Z1 + 1
- END IF
- '* Return bei Zeilenende
- IF S1 = 4 AND A$ = CHR$(13) THEN Z1 = Z1 - 1
- PRINT A$; '* Zeichen im Fenster ausgeben
- IF A$ = CHR$(13) THEN LOCATE , 3: Z1 = Z1 + 1: S1 = 3
- 'Nächste Zeile bei Return
- PRINT #1, A$; '* Zeichen senden
- END SUB
-
- '* ------------------------------------------------------- *
- '* Ausgabe der ersten Bildschirmmaske *
- SUB Maske1
- CLS '* Bildschirm löschen
- LOCATE 1, 32
- PRINT CHR$(218); STRING$(16, 196); CHR$(191)
- LOCATE 2, 1
- PRINT CHR$(201); STRING$(30, 205);
- PRINT CHR$(181); SPC(16); CHR$(198);
- PRINT STRING$(30, 205); CHR$(187);
- LOCATE 3, 1
- PRINT CHR$(186); SPC(30); CHR$(192);
- PRINT STRING$(16, 196); CHR$(217);
- PRINT SPC(30); CHR$(186);
- FOR I = 1 TO 20
- PRINT CHR$(186); SPC(78); CHR$(186);
- NEXT I
- PRINT CHR$(200); STRING$(78, 205); CHR$(188);
- END SUB
-
- '* ------------------------------------------------------- *
- '* Ausgabe der zweiten Bildschirmmaske *
- SUB Maske2
- CLS
- LOCATE 1, 15
- PRINT CHR$(218); STRING$(9, 196); CHR$(191)
- LOCATE 2, 1
- PRINT CHR$(201); STRING$(13, 205); CHR$(181);
- PRINT " Sendung "; CHR$(198);
- PRINT STRING$(13, 205); CHR$(187);
- LOCATE 3, 1
- PRINT CHR$(186); SPC(13); CHR$(192);
- PRINT STRING$(9, 196); CHR$(217); SPC(13);
- PRINT CHR$(186)
- LOCATE 1, 56
- PRINT CHR$(218); STRING$(9, 196); CHR$(191)
- LOCATE 2, 42
- PRINT CHR$(201); STRING$(13, 205); CHR$(181);
- PRINT " Empfang "; CHR$(198);
- PRINT STRING$(13, 205); CHR$(187);
- LOCATE 3, 42
- PRINT CHR$(186); SPC(13); CHR$(192);
- PRINT STRING$(9, 196); CHR$(217); SPC(13);
- PRINT CHR$(186)
- FOR I = 4 TO 23: LOCATE I, 1
- PRINT CHR$(186); SPC(37); CHR$(186); SPC(2);
- PRINT CHR$(186); SPC(37); CHR$(186);
- NEXT I
- PRINT CHR$(200); STRING$(37, 205); CHR$(188);
- PRINT SPC(2); CHR$(200); STRING$(37, 205);
- PRINT CHR$(188);
- LOCATE 25, 1: COLOR 0, 7
- PRINT STRING$(80, " ");
- COLOR 7, 0
- END SUB
-
- '* ------------------------------------------------------- *
- '* Einstellen der Schnittstellenparameter *
- SUB Parameter (Port$, Speed$)
- CLOSE #1
- DO
- DO
- LOCATE 6, 8
- PRINT "1. Nummer der Schnittstelle : "; Port$; " "
- LOCATE 8, 8
- PRINT "2. Übertragungsgeschwindigkeit : ";
- PRINT Speed$; " "
- LOCATE 10, 8
- PRINT "3. Zurück ";
- T$ = " Geben Sie die Zahl des zu ändernden "
- T$ = T$ + "Parameters oder 3 für Zurück ein !"
- TextOut (T$)
- LOCATE 20, 8: PRINT STRING$(40, " ")
- LOCATE 20, 8: INPUT ; "Gewünschte Zahl : ", Zahl$
- Zahl = VAL(Zahl$)
- LOOP WHILE Zahl > 3 OR Zahl < 1
- SELECT CASE Zahl
- CASE 1
- T$ = " Geben Sie die Nummer der seriellen "
- T$ = T$ + "Schnittstelle ein !"
- TextOut (T$)
- DO
- LOCATE 20, 8: PRINT STRING$(40, " ")
- LOCATE 20, 8
- INPUT ; "Nummer der Schnittstelle : ", Port$
- LOOP WHILE Port$ = ""
- CASE 2
- T$ = " Geben Sie 75, 110, 150, 300, 600, 1200, "
- T$ = T$ + "1800, 2400, 4800 oder 9600 ein !"
- TextOut (T$)
- DO
- LOCATE 20, 8: PRINT STRING$(40, " ")
- LOCATE 20, 8
- INPUT ; "Übertragungsgeschwindigkeit : ", Speed$
- LOOP WHILE Speed$ = ""
- CASE 3
- Ende = 1
- END SELECT
- LOOP WHILE Ende = 0
- END SUB
-
- '* ------------------------------------------------------- *
- '* Senden einer Datei über die serielle Schnittstelle *
- SUB Senden (Pfad$, DatName$)
- DIM Zeich AS STRING * 1
- PRINT #1, DatName$ 'Dateinamen senden
- ON ERROR GOTO DiskFehler
- OPEN Pfad$ + "\" + DatName$ FOR BINARY AS #2
- ON ERROR GOTO SonstFehler
- LOCATE 6, 10
- PRINT "Dateiname : "; DatName$
- LOCATE 8, 10
- PRINT "Dateilänge : "; LOF(2); " Byte(s)"
- PRINT #1, LOF(2) '* Dateilänge senden
- FOR I = 1 TO LOF(2)
- LOCATE 10, 10
- PRINT "Bereits gesendet : "; I; " Byte(s)"
- GET #2, I, Zeich '* aus Datei lesen
- PRINT #1, Zeich; '* Zeichen senden
- WHILE LOC(1) < 1 AND INKEY$ <> CHR$(27): WEND
- A$ = INKEY$
- IF A$ = CHR$(27) THEN EXIT FOR
- Z$ = INPUT$(1, 1) '* Zeichen empfangen
- IF Zeich <> Z$ THEN '* Zeichen vergleichen
- T$ = " Fehler beim Übertragen. Beliebige Taste "
- T$ = T$ + "drücken."
- TextOut (T$)
- BEEP
- WHILE INKEY$ = "": WEND: EXIT SUB
- END IF
- NEXT I
- CLOSE #2
- END SUB
-
- '* ------------------------------------------------------- *
- '* Ausgabe eines Hinweises in der 25. Bildschirmzeile *
- SUB TextOut (Text$)
- LOCATE 25, 1: COLOR 15, 4
- PRINT STRING$(80, " ");
- LOCATE 25, 1: PRINT Text$;
- COLOR 15, 1
- END SUB
-
- '* ------------------------------------------------------- *
- '* Ende von TXLINK.BAS *
-