home *** CD-ROM | disk | FTP | other *** search
Text File | 1993-04-14 | 21.7 KB | 1,116 lines |
- {
- ════════════════════════════════════════════════════════════════════════════
-
- Visionix Serial Communictions Unit (VSER)
- Copyright 1991,92,93 Visionix
- ALL RIGHTS RESERVED
-
- ────────────────────────────────────────────────────────────────────────────
-
- revision history in reverse chronological order:
-
- Initials Date Comment
-
- ──────── ──────── ────────────────────────────────────────────────────────
-
- lpg 03/16/93 Added Source Documentation
-
- mep 02/11/93 Cleaned up code for beta release
-
- jrt 02/08/93 Sync with beta 0.12 release
-
- jrt 11/21/92 Sync with beta 0.08
-
- jrt 09/01/92 First logged revision.
-
- ────────────────────────────────────────────────────────────────────────────
- }
-
- Unit VSer;
-
-
- Uses
-
- VTypes,
- VSerLow;
-
- {────────────────────────────────────────────────────────────────────────────}
-
- Const
-
- sfct_None = 0;
- sfct_RtsCts = 1;
- sfct_XonXoff = 2;
-
-
- {-----------------}
- { TError Messages }
- {-----------------}
-
- ser_None = 0;
- ser_NoMemAvail = 1;
- ser_NoWrite = 2;
-
-
- {------------------}
- { Status Bit Flags }
- {------------------}
-
- sbf_MSRctsDelta = 0; { Clear To Send changed }
- { Delta clear to send (not reliable) }
-
- sbf_MSRdsrDelta = 1; { Data Set Ready changed }
- { Delta data set ready (not reliable) }
-
- sbf_MSRriDelta = 2; { Ring Indicate changed }
- { Delta data carrier detect (not reliable) }
-
- sbf_MSRcdDelta = 3; { Carrier Detect changed }
- { always set to 1 upon return (DUMMY DCD) }
-
- sbf_MSRcts = 4; { Clear To Send }
- { CTS - DCE sets - do not xmit until true }
-
- sbf_MSRdsr = 5; { Data Set Ready }
- { DSR - modem is ready to be used }
-
- sbf_MSRri = 6; { Ring Indicate }
- { RI - only on during active voltage signal }
-
- sbf_MSRcd = 7; { Carrier Detect }
- { DCD - data carrier detect }
-
- sbf_LSRRcvReady = 8; { Received data ready }
- { RDA - input data is available in buffer }
-
- sbf_LSROverrun = 9; { OverRun error }
- { OVRN - the input buffer has been overrun }
-
- sbf_LSRParity = 10; { Parity error }
- { Reserved (Parity error in BIOS INT 14h) }
-
- sbf_LSRFrame = 11; { Framing error }
- { Reserved (Framing error in BIOS INT 14h) }
-
- sbf_LSRBreak = 12; { Break detected }
- { Reserved (Break detect in BIOS INT 14h) }
-
- sbf_LSRXhReady = 13; { Transmit hold register empty }
- { THRE - room is available in output buffer }
-
- sbf_LSRXsReady = 14; { Transmit shift register empty }
- { TSRE - output buffer is empty }
-
- sbf_LSRTimeout = 15; { Timeout (software implemented). If true, }
- { then none of the above 15 bits are valid. }
-
- sbf_DTRReady = 16; { Data terminal ready }
- { DTR - used as off-hook. }
-
- sbf_RTSReady = 17; { Request to send }
- { RTS - DTE sets - use when data to xmit }
-
- Type
-
- TSerHandle = ^TSerChan;
-
- TError = LONGINT;
-
- {────────────────────────────────────────────────────────────────────────────}
- {────────────────────────────────────────────────────────────────────────────}
-
- {================}
- { Serial Channel }
- {================}
-
- Procedure VSerGetCaps( Caps : PSerCaps );
-
-
- Function VSerChanNew( Flags : WORD;
- Var ChanHandle : TSerHandle ) : TError;
-
- Procedure VSerChanDispose( ChanHandle : TSerHandle ) ;
-
-
-
- {=======================}
- { Serial Channel Driver }
- {=======================}
-
- Function VSerDriverNew( Chan : TSerHandle;
- Proc : TSerDriverProc;
- DriverInfo : Pointer ) : TError;
-
- Procedure VSerDriverDispose( Handle : TSerHandle ) ;
-
-
-
- {========================}
- { Serial Channel Control }
- {========================}
-
- Function VSerActivatePort( Chan : TSerHandle;
- CommParam : PCommParam ) : TError;
-
- Function VSerDeActivatePort( Chan : TSerHandle;
- CommParam : PCommParam ) : TError;
-
- Function VSerGetCommParam( Chan : TSerHandle;
- CommParam : PCommParam ) : TError;
-
- Function VSerSetCommParam( Chan : TSerHandle;
- CommParam : PCommParam ) : TError;
- {--------------}
- { Flow Control }
- {--------------}
-
- Function VSerGetFlowConType( Chan : TSerHandle ) : INTEGER;
-
- Function VSerSetFlowConType( Chan : TSerHandle;
- FlowConType : INTEGER ) : TError;
-
- Function VSerTurnSendOn( Chan : TSerHandle ) : TError;
-
- Function VSerTurnSendOff( Chan : TSerHandle ) : TError;
-
- Function VserTurnReceiveOn( Chan : TSerHandle ) : TError;
-
- Function VSerTurnReceiveOff( Chan : TSerHandle ) : TError;
-
- {--------------}
- { Break Signal }
- {--------------}
-
- Function VSerTurnBreakOn( Chan : TSerHandle ) : TError;
-
- Function VSerTurnBreakOff( Chan : TSerHandle ) : TError;
-
- Function VSerBreak( Chan : TSerHandle;
- BreakLen : LONGINT ) : TError;
- {---------------------}
- { Data Terminal Ready }
- {---------------------}
-
- Function VSerTurnDTROn( Chan : TSerHandle ) : TError;
-
- Function VSerTurnDTROff( Chan : TSerHandle ) : TError;
-
- {----------------}
- { Channel Status }
- {----------------}
-
- Function VSerGetStatus( Chan : TSerHandle ) : LONGINT;
-
- Function VSerChanStatus( Chan : TSerHandle;
- Bit : BYTE ) : BOOLEAN;
-
-
- Function VSerCarrier( Chan : TSerHandle ) : BOOLEAN;
-
- Function VSerRing( Chan : TSerHandle ) : BOOLEAN;
-
- Function VSerInAvail( Chan : TSerHandle ) : BOOLEAN;
-
- Function VSerInFull( Chan : TSerHandle ) : BOOLEAN;
-
- Function VSerOutReady( Chan : TSerHandle ) : BOOLEAN;
-
- Function VSerOutEmpty( Chan : TSerHandle ) : BOOLEAN;
-
- {----------------}
- { Buffer Control }
- {----------------}
-
- Function VSerFlushOutBuff( Chan : TSerHandle ) : TError;
-
- Function VSerPurgeOutBuff( Chan : TSerHandle ) : TError;
-
- Function VSerPurgeInBuff( Chan : TSerHandle ) : TError;
-
-
-
- {==============}
- { Serial Event }
- {==============}
- (*
- Procedure VSerEventProcNew( Chan : TSerHandle;
- Proc : TSerEventProc;
- EventMask : WORD;
- ProcInfo : Pointer;
- Var ProcHandle : TSerHandle ) : TError;
-
- Procedure VSerEventProcOff( ProcHandle : TSerHandle );
-
- Procedure VSerEventProcOn( ProcHandle : TSerHandle );
-
- Procedure VSerEventProcDispose( ProcHandle : TSerHandle );
- *)
-
-
-
- {====================}
- { Serial Channel I/O }
- {====================}
-
- Procedure VSerWriteCh( Chan : TSerHandle;
- OutCh : CHAR );
-
-
- Function VSerWriteChEx( Chan : TSerHandle;
- OutCh : CHAR ) : TError;
-
- Function VSerWriteBlock( Chan : TSerHandle;
- BuffSize : LONGINT;
- BuffPtr : Pointer;
- Var XFerCount : LONGINT ) : TError;
-
- Function VSerWriteSt( Chan : TSerHandle;
- S : STRING ) : TError;
-
- Function VSerReadCh( Chan : TSerHandle ) : CHAR;
-
- Function VSerReadChEx( Chan : TSerHandle;
- Var Ch : CHAR ) : TError;
-
- Function VSerReadBlock( Chan : TSerHandle;
- BuffSize : LONGINT;
- BuffPtr : Pointer;
- Var XFerCount : LONGINT ) : TError;
-
- {────────────────────────────────────────────────────────────────────────────}
- {────────────────────────────────────────────────────────────────────────────}
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Procedure VSerGetCaps( Caps : PSerCaps );
-
- [PARAMETERS]
-
- Caps Pointer to ?
-
- [RETURNS]
-
- (None)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerChanNew( Flags : WORD;
- Var ChanHandle : TSerHandle ) : TError;
-
- [PARAMETERS]
-
- Flags ?
- ChanHandle ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Procedure VSerChanDispose( ChanHandle : TSerHandle ) ;
-
- [PARAMETERS]
-
- ChanHandle ?
-
- [RETURNS]
-
- (None)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerDriverNew( Chan : TSerHandle;
- Proc : TSerDriverProc;
- DriverInfo : Pointer ) : TError;
-
- [PARAMETERS]
-
- Chan ?
- Proc Pointer to Serial Device Driver Procedure
- DriverInfo Pointer to Device Driver Information
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Procedure VSerDriverDispose( Handle : TSerHandle ) ;
-
- [PARAMETERS]
-
- Handle ?
-
- [RETURNS]
-
- (None)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerActivatePort( Chan : TSerHandle;
- CommParam : PCommParam ) : TError;
-
- [PARAMETERS]
-
- Chan ?
- CommParam ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerDeActivatePort( Chan : TSerHandle;
- CommParam : PCommParam ) : TError;
-
- [PARAMETERS]
-
- Chan ?
- CommParam ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerGetCommParam( Chan : TSerHandle;
- CommParam : PCommParam ) : TError;
-
- [PARAMETERS]
-
- Chan ?
- CommParam ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerSetCommParam( Chan : TSerHandle;
- CommParam : PCommParam ) : TError;
-
- [PARAMETERS]
-
- Chan ?
- CommParam ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerGetFlowConType( Chan : TSerHandle ) : INTEGER;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerSetFlowConType( Chan : TSerHandle;
- FlowConType : INTEGER ) : TError;
-
- [PARAMETERS]
-
- Chan ?
- FlowconType ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerTurnSendOn( Chan : TSerHandle ) : TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerTurnSendOff( Chan : TSerHandle ) : TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VserTurnReceiveOn( Chan : TSerHandle ) : TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerTurnReceiveOff( Chan : TSerHandle ) : TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerTurnBreakOn( Chan : TSerHandle ) : TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerTurnBreakOff( Chan : TSerHandle ) : TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerBreak( Chan : TSerHandle;
- BreakLen : LONGINT ) : TError;
-
- [PARAMETERS]
-
- Chan ?
- BreakLen ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerTurnDTROn( Chan : TSerHandle ) : TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerTurnDTROff( Chan : TSerHandle ) : TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerGetStatus( Chan : TSerHandle ) : LONGINT;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerChanStatus( Chan : TSerHandle;
- Bit : BYTE ) : BOOLEAN;
-
- [PARAMETERS]
-
- Chan ?
- Bit ?
-
- [RETURNS]
-
- Whether the ....
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerCarrier( Chan : TSerHandle ) : BOOLEAN;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- Whether a Carrier has been Established (TRUE=Carrier Established)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerRing( Chan : TSerHandle ) : BOOLEAN;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- Whether the ? is Ringing (TRUE=Ringing)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerInAvail( Chan : TSerHandle ) : BOOLEAN;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- Whether the ? is Available (TRUE=Available)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerInFull( Chan : TSerHandle ) : BOOLEAN;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- Whether the ? is Full (TRUE=Full)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerOutReady( Chan : TSerHandle ) : BOOLEAN;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- Whether the ? is Ready (TRUE=Ready)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerOutEmpty( Chan : TSerHandle ) : BOOLEAN;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- Whether the ? is Empty (TRUE=Empty)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerFlushOutBuff( Chan : TSerHandle ): TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerPurgeOutBuff( Chan : TSerHandle ): TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerPurgeInBuff( Chan : TSerHandle ): TError;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Procedure VSerWriteCh( Chan : TSerHandle;
- OutCh : CHAR );
-
- [PARAMETERS]
-
- Chan ?
- OutCh Character to Write
-
- [RETURNS]
-
- (None)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerWriteChEx( Chan : TSerHandle;
- OutCh : CHAR ) : TError;
-
- [PARAMETERS]
-
- Chan ?
- OutCh Character to Write
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerWriteBlock( Chan : TSerHandle;
- BuffSize : LONGINT;
- BuffPtr : Pointer;
- Var XFerCount : LONGINT ): TError;
-
- [PARAMETERS]
-
- Chan ?
- BuffSize Data Buffer Size
- BuffPtr Pointer to Data Buffer
- XFerCount VAR Returned Number of Bytes Written
-
- [RETURNS]
-
- Function : ?
- (VAR : [XFerCount] Number of Bytes Written)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerWriteSt( Chan : TSerHandle;
- S : STRING ): TError;
-
- [PARAMETERS]
-
- Chan ?
- S String to Write
-
- [RETURNS]
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerReadCh( Chan : TSerHandle ): CHAR;
-
- [PARAMETERS]
-
- Chan ?
-
- [RETURNS]
-
- Character Read
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerReadChEx( Chan : TSerHandle;
- Var Ch : CHAR ): TError;
-
- [PARAMETERS]
-
- Chan ?
- Ch VAR Returned Character Read
-
- [RETURNS]
-
- Function : ?
- (VAR : [Ch] Character Read)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-
- ──────────────────────────────────────────────────────────────────────────────
-
-
- [FUNCTION]
-
- Function VSerReadBlock( Chan : TSerHandle;
- BuffSize : LONGINT;
- BuffPtr : Pointer;
- Var XFerCount : LONGINT ): TError;
-
- [PARAMETERS]
-
- Chan ?
- BuffSize Data Buffer Size
- BuffPtr Pointer to Data Buffer
- XFerCount VAR Returned Number of Bytes Transfered
-
- [RETURNS]
-
- Function : ?
- (VAR : [XFerCount] Number of Bytes Transfered)
-
- [DESCRIPTION]
-
- [SEE-ALSO]
-
- [EXAMPLE]
-
-