home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / pascal / das_buch / remote / partest.pas < prev    next >
Encoding:
Pascal/Delphi Source File  |  1993-08-06  |  2.9 KB  |  115 lines

  1. (* ====================================================== *)
  2. (*                     PARTEST.PAS                        *)
  3. (*           Test der paralellen Schnittstelle            *)
  4. (*         (c) 1993 Ralf Hensmann & DMV-Verlag            *)
  5. (* ====================================================== *)
  6. {$A+,B-,D+,E+,F-,G-,I+,L+,N-,O-,P-,Q-,R-,S+,T-,V+,X+,Y+}
  7. {$M 16384,0,655360}
  8.  
  9. PROGRAM ParTest;
  10.  
  11. USES Printer, Crt, ParData, ParCRC;
  12.  
  13. TYPE
  14.   String4 = STRING[4];
  15.  
  16. VAR
  17.   hAdr : WORD;
  18.   hs   : String4;
  19.  
  20.   FUNCTION HexW(w : WORD) : String4;
  21.   CONST
  22.     hs : ARRAY [0..15] OF CHAR = '0123456789ABCDEF';
  23.   BEGIN
  24.     HexW[0] := #4;
  25.     HexW[1] := hs[Hi(w) SHR 4];
  26.     HexW[2] := hs[Hi(w) AND $F];
  27.     HexW[3] := hs[Lo(w) SHR 4];
  28.     HexW[4] := hs[Lo(w) AND $F];
  29.   END;
  30.  
  31.   FUNCTION HexB(w : BYTE) : String4;
  32.   CONST
  33.     hs : ARRAY [0..15] OF CHAR = '0123456789ABCDEF';
  34.   BEGIN
  35.     HexB[0] := #2;
  36.     HexB[1] := hs[w SHR 4];
  37.     HexB[2] := hs[w AND $F];
  38.   END;
  39.  
  40.   FUNCTION GetHex(s : String4) : WORD;
  41.   VAR
  42.     hw, w : WORD;
  43.     i     : BYTE;
  44.   BEGIN
  45.     w := 0;
  46.     FOR i := 1 TO Length(s) DO BEGIN
  47.       hw   := 0;
  48.       s[i] := UpCase(s[i]);
  49.       IF (s[i] >= '0') AND (s[i] <= '9') THEN
  50.         hw := Ord(s[i]) - BYTE('0')
  51.       ELSE IF (s[i] >= 'A') AND (s[i] <= 'F') THEN
  52.         hw := Ord(s[i]) - BYTE('A') + 10;
  53.       w := w SHL 4 + hw;
  54.     END;
  55.     GetHex := w;
  56.   END;
  57.  
  58. TYPE
  59.   bArray = ARRAY [0..65024] OF BYTE;
  60.  
  61. VAR
  62.   Buf0, Buffer : ^bArray;
  63.   i, qs, j2    : WORD;
  64.   j            : LongInt;
  65.  
  66. BEGIN
  67.   New(Buf0);
  68.   New(Buffer);
  69.   WriteLn(HexW(GetLPTAdress(1)),'  ',HexW(GetLPTAdress(2)));
  70.   Write('Adresse der Schnittstelle : ');
  71.   hs := '3bc';
  72.   ReadLn(hs);
  73.   Delay(1000);
  74.   hAdr := GetHex(hs);
  75.   RandSeed := $102040AA;
  76.   UnitInit(hAdr);
  77.   SetKbdWatchdog;
  78.   WriteLn('Start');
  79.   IF ParamStr(1) = 'send' THEN BEGIN
  80.     StartSend;
  81.     IF ParaResult = UserBreak THEN Halt;
  82.     WriteLn('Synchronisation (senden) beendet ',
  83.              BYTE(transfermode));
  84.     FOR i := 0 TO 65535 DO BEGIN
  85.       WriteLn(i);
  86.       SendCRCBuf(i, 2);
  87.       IF ParaResult = UserBreak THEN
  88.         WriteLn('Übertragungsfehler');
  89.     END;
  90.     WriteLn('Übertragung beendet');
  91.   END ELSE IF ParamStr(1) = 'receive' THEN BEGIN
  92.     StartReceive;
  93.     IF ParaResult = UserBreak THEN Halt;
  94.     WriteLn('Synchronisation (empfangen) beendet ',
  95.             BYTE(transfermode));
  96.     FOR i := 0 TO 65535 DO BEGIN
  97.       ReceiveCRCBuf(j, 2);
  98.       IF j <> i THEN Write(i:3);
  99.       IF ParaResult = UserBreak THEN
  100.         WriteLn('Übertragungsfehler');
  101.     END;
  102.     WriteLn('Übertragung beendet');
  103.   END ELSE BEGIN
  104.     WriteLn('Usage: PARTEST [send|receive]');
  105.     Halt;
  106.   END;
  107.   IF transfermode = Transfer4 THEN
  108.     WriteLn('4-Bit Transfer-Leitung')
  109.   ELSE
  110.     WriteLn('8-Bit-Transfer-Leitung');
  111.   ClrKbdWatchdog;
  112. END.
  113. (* ====================================================== *)
  114. (*                 Ende von PARTEST.PAS                   *)
  115.