/*.pl 84 */ /*.lw 110 */ /*浜様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様融 V 2 4 - D R I V E R D L L - I n t e r f a c e 麺様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様郵 Copyright (C) 1993 by Vision Systems GmbH, Norderstedt, Germany All rights reserved 麺様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様郵 Treiber-Routinen zur Ansteuerung von COM-Schnittstellen. Es werden max. 8 Com-Ports bedient, wobei Interrupt-Sharing und FIFOs untersttzt werden. Die Routinen arbeiten - mit einigen Einschrnkungen - auch im Polling-Mode. Als Handshake-Mglichkeiten (nur im Interrupt-Modus) stehen zur Verfgung: Output: CTS und/oder XOn/XOff Input : RTS und/oder XOn/XOff Um die Verknpfung von Code und Daten bersichtlich zu gestalten, wurde eine Object-orientierte Schreibweise gewhlt. Um jedoch das Benutzer- Interface so allgemein wie mglich zu gestalten und die Kapselung als DLL zu ermglichen, gibt es eine Schicht von Nicht-Object-orientierten Einsprngen. Die Interrupt-Routinen wurden in Assembler Inline geschrieben; es gibt keine Call-Backs zum Pascal-Teil. Da ein Rechner der AT-Klasse mit '286 oder hher vorausgesetzt wird, werden '286er Befehle benutzt und das Vorhandensein von 2 kaskadierten Interrupt- Controllern vorausgesetzt. Das Modul V24DRV.INC ist selbst nicht kompilier-fhig sondern mu von einem Pascal-Programm, einer Pascal-Unit oder einer Protected-Mode Library included werden. Dabei sind folgende Coompiler Defines zu setzen: DLL : zur Erzeugung einer Protected Mode DLL USEDLL : zur Erzeugung einer Interface Unit, die die DLL aufruft TSR : zur Erzeugung eines TSRs USETSR : zur Erzeugung einer Interface Unit, die das TSR aufruft 麺様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様郵 19.Oct.93 WW: 1st release. Author: Winfried Wolf 19.Nov.93 WW: Interrupt Sharing 24.Mar.94 WK: Auslagerung der DIRECT-Routinen nach V24DRV.SRC 14.Apr.94 WK: Umsetzung DLL-Interface (EXPORTs) nach C-Header 藩様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様様夕 */ #ifndef __V24DLL_H__ #define __V24DLL_H__ #include "tpascal.h" /* line control register parameter: */ #define lp5Bits 0x00 #define lp6Bits 0x01 #define lp7Bits 0x02 #define lp8Bits 0x03 #define lp1Stop 0x00 #define lp2Stop 0x04 #define lpNone 0x00 #define lpEven 0x18 #define lpOdd 0x08 /* modem control register parameter: */ #define mpDTR 0x01 #define mpRTS 0x02 /* interrupt driver status: */ #define isMSCint 0x01 #define isTXEint 0x02 #define isRXRint 0x04 #define isLSCint 0x08 #define isInpOvr 0x10 /* handshake parameter: */ #define hsNone 0x00 #define hsInDTR 0x01 #define hsInRTS 0x02 #define hsInXOn 0x04 #define hsOutCTS 0x10 #define hsOutDSR 0x20 #define hsOutXOn 0x40 /* modem control parameter: */ #define mcDTROn 0x01 #define mcDTROff 0x02 #define mcRTSOn 0x04 #define mcRTSOff 0x08 /* UART classification and test flags */ #define uaScratch 0x01 #define uaFifo 0x02 #define uaLoop 0x04 #define uaAFR 0x08 #define uaCompat 0x10 #ifdef __cplusplus extern "C" { #endif #ifndef USEDLL Boolean TPASCAL Set_IntVect (Byte Int) ; #endif Boolean TPASCAL Init_V24 (Byte ComNum, Word aPortAddr, Byte anInt, Integer IBSiz, Integer OBSiz); Procedure TPASCAL Exit_V24 (Byte ComNum); Byte TPASCAL IntLog (Byte ComNum); Procedure TPASCAL Set_BaudRate (Byte ComNum, LongInt BR); Procedure TPASCAL Set_BaudDivisor (Byte ComNum, LongInt BD); Integer TPASCAL SendBuffer (Byte ComNum, Pointer Buf,Integer Cnt); Integer TPASCAL RecvBuffer (Byte ComNum, Pointer Buf,Integer Cnt); Procedure TPASCAL Set_LineParam (Byte ComNum, Byte LP); Procedure TPASCAL ClearInpBuffer (Byte ComNum); Procedure TPASCAL ClearOutBuffer (Byte ComNum); Integer TPASCAL Get_InpUsed (Byte ComNum); Integer TPASCAL Get_OutFree (Byte ComNum); Byte TPASCAL Get_MSR (Byte ComNum); Byte TPASCAL Get_LSR (Byte ComNum); Byte TPASCAL Get_MCR (Byte ComNum); Procedure TPASCAL Set_Handshake (Byte ComNum,Byte HS); Procedure TPASCAL Set_MCR (Byte ComNum,Byte Lines); Byte TPASCAL Uart_Class (Byte ComNum); Boolean TPASCAL All_Sent (Byte ComNum); #ifdef __cplusplus } #endif #endif // __V24DLL_H__