home *** CD-ROM | disk | FTP | other *** search
- {//////////////////////////////////////////////////////////////////////////////
- /// ///
- /// Turbo-Pascal Multi-Tasking Subsystem V2.10 ///
- /// V24-Pipe-Device Testprogramm ///
- /// ///
- /// (c) Christian Philipps Software-Technik, Moers ///
- /// im April 1990 ///
- /// ///
- /// Dieses System erfordert Turbo-Pascal V5.x ///
- /// sowie das Multi-Tasking Subsystem V2.10 ///
- /// ///
- //////////////////////////////////////////////////////////////////////////////}
-
- PROGRAM V24PipeTest;
-
- {$I-,R-,S-,D-,F-,V-,B-,N-,L- }
-
- {Achtung! Dieses Programm verwendet standardmäßig COM2 in einer internen
- Prüfschleife. Es ist nicht garantiert, daß es auf allen Rech-
- nern lauffähig ist.
- }
-
- USES Dos, Crt, CpMulti, V24, V24Pipe;
-
- CONST MCR = 4;
-
- VAR ComBase : ARRAY[Com1..Com2] OF WORD absolute $40:0;
- Ende : Boolean;
- PutStopped : Pointer;
-
- {-----------------------------------------------------------------------------}
-
- {$F+}
- PROCEDURE V24GetTask(P:Pointer);
-
- VAR Data : Char;
-
- BEGIN
- Read(AuxIn,Data);
- WHILE Not Ende AND (IoResult=0) DO
- BEGIN
- Write(Data);
- Read(AuxIn,Data);
- END;
- END;
-
- PROCEDURE V24PutTask(P:Pointer);
-
- BEGIN
- REPEAT
- Write(AuxOut,'<XYZ>');
- UNTIl Ende;
- SemSignal(P);
- END;
- {$F-}
-
- {-----------------------------------------------------------------------------}
-
- PROCEDURE StartIt(B:BaudType);
-
- VAR TaskNo, TaskNo1 : TaskNoType;
- C : Char;
-
- BEGIN
- ClrScr;
- Writeln('Ende mit Return');
- Ende := False;
- OpenAux(Com2,B,none,d8,s1,2048);
- PORT[ComBase[Com2]+MCR] := $1B; {Set RTS,DTR,OUT2,Loop}
- SemClear(PutStopped);
- TaskNo := CreateTask(V24GetTask,NIL,Pri_User,500);
- TaskNo1 := CreateTask(V24PutTask,PutStopped,Pri_User,500);
- REPEAT
- WHILE NOT Keypressed DO
- Sleep(1);
- C := ReadKey;
- Ende := C = #13;
- UNTIL Ende;
- SemWait(PutStopped);
- CloseAux(TaskNo);
- DumpTaskTable;
- Writeln('Weiter mit Return...');
- Readln;
- END;
-
- {-----------------------------------------------------------------------------}
-
- BEGIN
- IF CreateSem(PutStopped) <> Sem_OK
- THEN BEGIN
- Writeln('Fehler bei CreateSem');
- Halt(1);
- END;
- Writeln('9600 Baud');
- Sleep(Seconds(1));
- Startit(b9600);
- Writeln('19200 Baud');
- Sleep(Seconds(1));
- StartIt(b19200);
- Writeln('38400 Baud');
- Sleep(Seconds(1));
- StartIt(b38400);
- Writeln('57600 Baud');
- Sleep(Seconds(1));
- StartIt(b57600);
- Writeln('115200 Baud');
- Sleep(Seconds(1));
- StartIt(b115200);
- END.