/***************************************************************************
|
|
Title: dprotlib.h
|
|
Version: 1.00
|
|
Date: 04/15/1993
|
|
Author(s): Ed Lay
|
|
----------------------------------------------------------------------------
|
|
Change log:
|
|
Date Rev Who Description
|
--------- ----- ----- --------------------------------------------
|
07/14/1993 DES Modified for Windows 'CNC' DLL.
|
06/06/1994 EBL Changed functions for Dual Binary Rot Buffers
|
07/06/1995 DES Modified for WIN32 and USERDLL.
|
05/18/1997 EBL Changes for Expression( Now a two PASS conversion )
|
|
***************************************************************************/
|
|
#ifndef _DPROTLIB_H
|
#define _DPROTLIB_H
|
|
#include <stdio.h>
|
#include "resource.h"
|
|
|
#define DPRTOKENMAX 125 // Maximume number of TOKENS in a Line of ASCII code
|
#define DPRCMDMAX 150 // Two times the maximum number of PMAC commands in a line
|
#define HOST_INDEX_T 0x1054
|
#define HOST_INDEX_P 0x07F4
|
|
enum Dpr_Bin_Rot_Errors {
|
DprOk = 0,
|
DprBufBsy = 1, // DPR Rotary Buffer is Busy
|
DprEOF = 2, // DPR Rotary Buffer End of File detected
|
};
|
|
///////////////////////////////////////////////////////////////////////////
|
// ROT BUFFER Command Union
|
typedef union
|
{
|
USHORT word_data[2 *DPRCMDMAX + 4];
|
DWORD long_data[DPRCMDMAX + 2];
|
__int64 data64[DPRCMDMAX / 2 + 1];
|
|
} PMAC_BIN_RB_CMD, *PPMAC_BIN_RB_CMD ;
|
|
///////////////////////////////////////////////////////////////////////////
|
// DPR BIN ROT ASCII to Binary Token convert structure
|
struct dprbcnvt {
|
int token;
|
double data;
|
int code1;
|
int code2;
|
DWORD ldata;
|
}; // 18 bytes
|
|
//***************** Strings ***********************************
|
#define SABS "ABS"
|
#define SACOS "ACOS"
|
#define SADIS "ADIS\xD0\xCC\xC1\xC3\xC5" // ADISPLACE'
|
#define SAROT "AROT\xC1\xD4\xC5" //'AROTATE'
|
#define SASIN "ASIN"
|
#define SATAN "ATAN"
|
#define SATAN2 "ATAN2"
|
#define SBSTART "\x42\xCC\xCF\xC3\xCB\xA0START" // 'BLOCK START'
|
#define SBSTOP "\x42\xCC\xCF\xC3\xCB\xA0STOP" // 'BLOCK STOP'
|
#define SCC "CC"
|
#define SCCR "CCR"
|
#define SCIR "CIR\xC3\xCC\xC5" // 'CIRCLE'
|
#define SCALL "CALL"
|
#define SCOS "COS"
|
#define SDWELL "DWE\xCC\xCC" // DWELL
|
#define SDELAY "\x44\xC5\x4C\xC1\x59" // DELAY
|
#define SDISPLC "DIS\xC1\xC2\xCC\xC5\xA0\x50\x4C\x43" // 'DISABLE PLC'
|
#define SDISPLCC "DIS\xC1\xC2\xCC\xC5\xA0\x50\x4C\x43\x43" // 'DISABLE PLCC'
|
#define SENAPLC "ENA\xC2\xCC\xC5\xA0\x50\x4C\x43" // 'ENABLE PLC'
|
#define SENAPLCC "ENA\xC2\xCC\xC5\xA0\x50\x4C\x43\x43" // 'ENABLE PLCC'
|
#define SEXP "EXP"
|
#define SFRAX "FRAX"
|
#define SHOME "\x48\xCF\x4D\xC5" // "HOME"
|
#define SHOMEZ "\x48\xCF\x4D\xC5\x5A" // " HOMEZ"
|
#define SINC "INC"
|
#define SIDIS "IDI\x53\xD0\xCC\xC1\xC3\xC5" // "IDISPLACE"
|
#define SIROT "IROT\xC1\xD4\xC5" // 'IROTATE'
|
#define SIF "IF"
|
#define SINT "INT"
|
#define SLINEAR "LIN\xC5\xC1\xD2" // 'LINEAR'
|
#define SLN "LN"
|
//#define SLSTART "L\xCF\xCF\xCB\xC1\xC8\xC5\xC1\xC4\xA0START"
|
//#define SLSTOP "L\xCF\xCF\xCB\xC1\xC8\xC5\xC1\xC4\xA0STOP"
|
#define SNORM "\x4E\xCF\x52\x4D\xC1\xCC" // 'NORMAL'
|
#define SPREL "PRELUDE"
|
#define SPVT "PVT"
|
#define SPSET "PSET"
|
#define SRAPID "\x52\xC1\x50\xC9\x44" // 'RAPID'
|
#define SSPLINE "SPLINE"
|
#define SSTOP "STOP"
|
#define SSIN "SIN"
|
#define SSQRT "SQRT"
|
#define STAN "TAN"
|
#define STSEL "TSE\x4C\xC5\xC3\xD4" // 'TSELECT'
|
#define STINIT "TINIT"
|
#define STA "TA"
|
#define STS "TS"
|
#define STM "TM"
|
#define SWAIT "WAIT"
|
#define SWHILE "WHILE"
|
|
//***************** Integer Max Values ***********************************
|
|
#define AROTMAX 1015L
|
#define ADISMAX 1021L
|
#define CCMAX 2L
|
#define CIRMAX 2L
|
#define IDISMAX 1021L
|
#define IROTMAX 1015L
|
#define SPLINEMAX 1L
|
#define TSELMAX 5L
|
#define PRELMAX 1024L
|
|
//***************** Axis Mask Values ***********************************
|
|
#define RM 1L
|
#define AM 2L
|
#define BM 8L
|
#define CM 32L
|
#define UM 128L
|
#define VM 512L
|
#define WM 2048L
|
#define XM 8192L
|
#define YM 32768L
|
#define ZM 131072L
|
#define ALLM AM+BM+CM+XM+YM+ZM+UM+VM+WM
|
|
//****************************************************************************
|
//
|
// Function Return codes for DPRstrcnvt, DPRpack_??, DPRstrtod, DPRmtrnum,
|
// DPRplcnum, DPRaxisnum
|
//
|
//****************************************************************************
|
|
///////////////////////////////////////////////////////////////////////////
|
// Functions
|
#ifdef __cplusplus
|
extern "C" {
|
#endif
|
|
// DPR Binary rotary buffer functions
|
// Initialization/shutdown
|
BOOL CALLBACK PmacDPRGetRotBufInfo(DWORD dwDevice,DWORD bufnum,struct rotbuf *pDPRrotbf);
|
void CALLBACK PmacDPRSetRotBufInfo(DWORD dwDevice,DWORD bufnum,struct rotbuf *pDPRRotBuf);
|
SHORT CALLBACK PmacDPRRotBufInit( DWORD dwDevice, USHORT bufnum );
|
SHORT CALLBACK PmacDPRRotBufRemove( DWORD dwDevice, USHORT bufnum );
|
SHORT CALLBACK PmacDPRRotBufChange( DWORD dwDevice, USHORT bufnum, USHORT new_size );
|
void CALLBACK PmacDPRRotBufClr( DWORD dwDevice, UINT bufnum );
|
SHORT CALLBACK PmacDPRRotBuf( DWORD dwDevice, BOOL on );
|
int CALLBACK PmacDPRBufLast( DWORD dwDevice );
|
|
// Transfer functions
|
SHORT CALLBACK PmacDPRAsciiStrToBinary( DWORD dwDevice, PCHAR inpstr, PPMAC_BIN_RB_CMD pBinary);
|
SHORT CALLBACK PmacDPRrotputEx( DWORD dwDevice,int num_put,LPDWORD rotdat,int bufnum,BOOL bSendImmediate,PCHAR inpstr);
|
SHORT CALLBACK PmacDPRAsciiStrToRotEx( DWORD dwDevice, PCHAR inpstr, USHORT bufnum,BOOL bSendRemaining );
|
SHORT CALLBACK PmacDPRAsciiStrToRotA( DWORD dwDevice, PCHAR inpstr, USHORT bufnum );
|
SHORT CALLBACK PmacDPRSendBinaryCommandA( DWORD dwDevice, PCHAR inpstr, USHORT bufnum );
|
SHORT CALLBACK PmacDPRAsciiStrToBinaryFileA( DWORD dwDevice, PCHAR inpstr, FILE * outfile );
|
|
SHORT CALLBACK PmacDPRAsciiStrToRotW( DWORD dwDevice, PWCHAR inpstr, USHORT bufnum );
|
SHORT CALLBACK PmacDPRSendBinaryCommandW( DWORD dwDevice, PWCHAR inpstr, USHORT bufnum );
|
SHORT CALLBACK PmacDPRAsciiStrToBinaryFileW( DWORD dwDevice, PWCHAR inpstr, FILE * outfile );
|
|
|
SHORT CALLBACK PmacDPRAsciiFileToRot( DWORD dwDevice, FILE * inpfile, USHORT bufnum );
|
SHORT CALLBACK PmacDPRBinaryFileToRot( DWORD dwDevice, FILE * inpfile, USHORT bufnum );
|
SHORT CALLBACK PmacDPRAsciiToBinaryFile( DWORD dwDevice, FILE * inpfile, FILE * outfile );
|
SHORT CALLBACK PmacDPRBinaryToRot( DWORD dwDevice, WORD * inpbinptr, WORD * *outbinptr, WORD bufnum );
|
|
// Packing/compiling functions
|
int DPRpack_0A( int code1, double data );
|
int DPRpack_0B( int code1, int code2, double data );
|
int DPRpack_1A( int code1, int code2, unsigned long data );
|
int DPRpack_1B( int code1, int code2, unsigned long data );
|
int DPRpack_1C( int code1, unsigned long data );
|
int DPRpack_1D( DWORD dwDevice, int code1, int code2, unsigned long data );
|
int DPRpack_1E( DWORD dwDevice, int code1, int code2, unsigned long data );
|
int DPRpack_1F( int code1, int code2 );
|
int DPRpack_2( int code1, int code2, int data1, double data );
|
|
int DPRstrcmp( char *instr, char *instrc, char **endptr );
|
int DPRstrtod( char *instr, double *ddata, char **endptr );
|
int DPRcmdend( char *instr );
|
int DPRmtrnum( DWORD dwDevice, unsigned long *retmask, char *instr, char **endptr );
|
int DPRplcnum( char *instr, unsigned long *retmask, char **endptr );
|
int DPRaxisnum( char *instr, unsigned long *retmask, char **endptr );
|
int DPRstrcnvt( DWORD dwDevice, char *instr, struct dprbcnvt *pmc_cmd );
|
int CALLBACK DPRrotput( int num_put, LPDWORD rotdat, int bufnum );
|
int DPRTokentoBin( DWORD dwDevice, struct dprbcnvt *dprtoknptr );
|
//-------------------------------------------------------------------------
|
//-------------------------------------------------------------------------
|
//
|
// Variable Background Buffer Functions
|
// Initialization
|
long CALLBACK PmacDPRVarBufInit( DWORD dwDevice, long new_num_entries, PLONG addrarray );
|
long CALLBACK PmacDPRVarBufInitEx( DWORD dwDevice, long new_num_entries, PLONG addrarray, PUINT addrtype );
|
BOOL CALLBACK PmacDPRVarBufRemove( DWORD dwDevice, long h );
|
BOOL CALLBACK PmacDPRVarBufChange( DWORD dwDevice, long handle, long new_num_entries, long *addrarray );
|
BOOL CALLBACK PmacDPRVarBufChangeEx( DWORD dwDevice, long handle, long new_num_entries, long *addrarray, PUINT addrtype );
|
BOOL CALLBACK PmacDPRVarBufRead( DWORD dwDevice, long h, long entry_num, PLONG long_2 );
|
long CALLBACK PmacDPRGetVBGAddress( DWORD dwDevice, long h, long entry_num );
|
|
long CALLBACK PmacDPRGetVBGNumEntries( DWORD dwDevice, long h );
|
long CALLBACK PmacDPRGetVBGDataOffset( DWORD dwDevice, long h );
|
long CALLBACK PmacDPRGetVBGAddrOffset( DWORD dwDevice, long h );
|
|
// Both
|
UINT CALLBACK PmacDPRGetVBGServoTimer( DWORD dwDevice );
|
UINT CALLBACK PmacDPRGetVBGStartAddr( DWORD dwDevice );
|
int CALLBACK PmacDPRGetVBGTotalEntries( DWORD dwDevice );
|
|
int CALLBACK PmacDPRWriteBuffer( DWORD dwDevice, int num_entries,
|
struct VBGWFormat * the_data );
|
#ifdef __cplusplus
|
}
|
#endif
|
|
#ifdef UNICODE
|
#define PmacDPRAsciiStrToRot PmacDPRAsciiStrToRotW
|
#define PmacDPRSendBinaryCommand PmacDPRSendBinaryCommandW
|
#define PmacDPRAsciiStrToBinaryFile PmacDPRAsciiStrToBinaryFileW
|
#else
|
#define PmacDPRAsciiStrToRot PmacDPRAsciiStrToRotA
|
#define PmacDPRSendBinaryCommand PmacDPRSendBinaryCommandA
|
#define PmacDPRAsciiStrToBinaryFile PmacDPRAsciiStrToBinaryFileA
|
#endif // !UNICODE
|
|
#endif
|