home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / library / dos / multtsk / cpmult / demo / v24ptest.pas < prev   
Encoding:
Pascal/Delphi Source File  |  1990-04-07  |  3.1 KB  |  110 lines

  1. {//////////////////////////////////////////////////////////////////////////////
  2. ///                                                                         ///
  3. ///              Turbo-Pascal Multi-Tasking Subsystem V2.10                 ///
  4. ///                    V24-Pipe-Device Testprogramm                         ///
  5. ///                                                                         ///
  6. ///             (c) Christian Philipps Software-Technik, Moers              ///
  7. ///                            im April 1990                                ///
  8. ///                                                                         ///
  9. ///                Dieses System erfordert Turbo-Pascal V5.x                ///
  10. ///                sowie das Multi-Tasking Subsystem V2.10                  ///
  11. ///                                                                         ///
  12. //////////////////////////////////////////////////////////////////////////////}
  13.  
  14. PROGRAM V24PipeTest;
  15.  
  16. {$I-,R-,S-,D-,F-,V-,B-,N-,L- }
  17.  
  18. {Achtung!  Dieses Programm verwendet standardmäßig COM2 in einer internen
  19.            Prüfschleife. Es ist nicht garantiert, daß es auf allen Rech-
  20.            nern lauffähig ist.
  21. }
  22.  
  23. USES Dos, Crt, CpMulti, V24, V24Pipe;
  24.  
  25. CONST  MCR          = 4;
  26.  
  27. VAR ComBase      : ARRAY[Com1..Com2] OF WORD absolute $40:0;
  28.     Ende         : Boolean;
  29.     PutStopped   : Pointer;
  30.  
  31. {-----------------------------------------------------------------------------}
  32.  
  33. {$F+}
  34. PROCEDURE V24GetTask(P:Pointer);
  35.  
  36. VAR  Data : Char;
  37.  
  38. BEGIN
  39.   Read(AuxIn,Data);
  40.   WHILE Not Ende AND (IoResult=0) DO
  41.   BEGIN
  42.     Write(Data);
  43.     Read(AuxIn,Data);
  44.   END;
  45. END;
  46.  
  47. PROCEDURE V24PutTask(P:Pointer);
  48.  
  49. BEGIN
  50.   REPEAT
  51.     Write(AuxOut,'<XYZ>');
  52.   UNTIl Ende;
  53.   SemSignal(P);
  54. END;
  55. {$F-}
  56.  
  57. {-----------------------------------------------------------------------------}
  58.  
  59. PROCEDURE StartIt(B:BaudType);
  60.  
  61. VAR  TaskNo, TaskNo1 : TaskNoType;
  62.      C               : Char;
  63.  
  64. BEGIN
  65.   ClrScr;
  66.   Writeln('Ende mit Return');
  67.   Ende := False;
  68.   OpenAux(Com2,B,none,d8,s1,2048);
  69.   PORT[ComBase[Com2]+MCR] := $1B;                    {Set RTS,DTR,OUT2,Loop}
  70.   SemClear(PutStopped);
  71.   TaskNo  := CreateTask(V24GetTask,NIL,Pri_User,500);
  72.   TaskNo1 := CreateTask(V24PutTask,PutStopped,Pri_User,500);
  73.   REPEAT
  74.     WHILE NOT Keypressed DO
  75.       Sleep(1);
  76.     C := ReadKey;
  77.     Ende := C = #13;
  78.   UNTIL Ende;
  79.   SemWait(PutStopped);
  80.   CloseAux(TaskNo);
  81.   DumpTaskTable;
  82.   Writeln('Weiter mit Return...');
  83.   Readln;
  84. END;
  85.  
  86. {-----------------------------------------------------------------------------}
  87.  
  88. BEGIN
  89.   IF CreateSem(PutStopped) <> Sem_OK
  90.      THEN BEGIN
  91.             Writeln('Fehler bei CreateSem');
  92.             Halt(1);
  93.           END;
  94.   Writeln('9600 Baud');
  95.   Sleep(Seconds(1));
  96.   Startit(b9600);
  97.   Writeln('19200 Baud');
  98.   Sleep(Seconds(1));
  99.   StartIt(b19200);
  100.   Writeln('38400 Baud');
  101.   Sleep(Seconds(1));
  102.   StartIt(b38400);
  103.   Writeln('57600 Baud');
  104.   Sleep(Seconds(1));
  105.   StartIt(b57600);
  106.   Writeln('115200 Baud');
  107.   Sleep(Seconds(1));
  108.   StartIt(b115200);
  109. END.
  110.