Quelltext /~heha/mb-iwp/HBM/usbhbm.zip/S8_dll.h

/* Copyright		: Hottinger Baldwin Messtechnik GmbH
File name		: S8_DLL.H
Project			: driver for Spider8
Language		: Visual C
Operating system	: MS Windows 95
DLL's			: SPIDER32.DLL INTFAC32.DLL PAPO32.DLL
*** M O D U L E	  H I S T O R Y ******************************************
 970201	Snit	1. implementation
+141105	heha	tabsize=8 etc.
*/
#pragma once

/*************************************************************************
  Declaration of the constants
*************************************************************************/
#define S8_MaxDevice	8	// max. number of devices
#define S8_MaxChanPerDev 10	// max. number of plug-ins of a device
#define S8_MaxChannels	(S8_MaxChanPerDev * S8_MaxDevice)
				// max. number of channels of a system
/*************************************************************************
  overflow measured value (no IEEE denormal numbers are used)
*************************************************************************/
#define S8_NotANumber	-1E+38F
#define S8_HWOverflow	-1E+38F
#define S8_NHWOverflow	-1E+37F
#define S8_NSWOverflow	-1E+36F
#define S8_PHWOverflow	1E+37F
#define S8_PSWOverflow	1E+36F

/*************************************************************************
  device mode (online or offline)
*************************************************************************/
#define S8_Online	0
#define S8_Offline	1

/*************************************************************************
  port number
*************************************************************************/
#define PORT_GPIB	0
#define PORT_COM1	1
#define PORT_COM2	2
#define PORT_LPT1	90
#define PORT_LPT2	91
#define PORT_USB	200

/*************************************************************************
  parallel port mode
*************************************************************************/
#define NibbleMode	1
#define Bit8Mode	2
#define ByteMode	3
#define EPPMode		4

/*************************************************************************
  what-mask for S8_GetChanSettings, S8_GetChanInfo,
  S8_GetPsbleChanSettings, S8_LoadChanSettings
*************************************************************************/
#define S8_CS_All	0xFFFF
#define S8_CS_NennVal	0x0001
#define S8_CS_ChanType  0x0002
#define S8_CS_SerNum	0x0004
#define S8_CS_Name	0x0008
#define S8_CS_IsActive  0x0010
#define S8_CS_Mode	0x0020
#define S8_CS_MRange	0x0040
#define S8_CS_Unit	0x0080
#define S8_CS_MeasValue 0x0100
#define S8_CS_TareValue 0x0200
#define S8_CS_Filter	0x0400
#define S8_CS_DigIO	0x0800

/*************************************************************************
  what-mask for S8_GetDevSettings, S8_GetDevInfo,
  S8_GetPsbleDevSettings, S8_LoadDevSettings
*************************************************************************/
#define S8_DS_All	0xFFFF
#define S8_DS_NumChan	0x0001
#define S8_DS_MeasRate  0x0002
#define S8_DS_FilterT	0x0004
#define S8_DS_FilterF	0x0008
#define S8_DS_SerNum	0x0010
#define S8_DS_SWVers	0x0020
#define S8_DS_DevName	0x0040
#define S8_DS_Mode	0x0080

/*************************************************************************
'* ASF filter characteristics
*************************************************************************/
#define IDS_MiWert	140	// calculation of average value
#define IDS_Butw	141	// butterworth: best frequency response
#define IDS_Bess	142	// bessel: best course over time

/*************************************************************************
'* AFS filter selection
*************************************************************************/
#define IDS_VarF	148	// adjustable filter
#define IDS_FixF	149	// fixed filter

/*************************************************************************
'* ASA transducer type
*************************************************************************/
#define IDS_VoBr	350	// full bridge
#define IDS_HaBr	351	// half bridge
#define IDS_DCVo	420	// dc voltage
#define IDS_DCAm	421	// dc current
#define IDS_ThmJ	450	// thermocouple J
#define IDS_ThmK	451	// thermocouple K
#define IDS_ThmT	452	// thermocouple T
#define IDS_ThmS	453	// thermocouple S
#define IDS_Resi	475	// resistor
#define IDS_PT100	501	// Pt100
#define IDS_PT500	502	// Pt500
#define IDS_PT1000	503	// Pt1000
#define IDS_ThmI	510	// internal temperature
#define IDS_Flanke	520	// signal edges
#define IDS_FuR		521	// signal edges and direction
#define IDS_2P1F	522	// two phase, single edge
#define IDS_2P2F	523	// two phase, twin edge
#define IDS_Cnt		525	// continuous counter
#define IDS_DigIO16	528 

/*************************************************************************
'* ASA measure range
*************************************************************************/
#define IDS_3mV		700	// 3 mV/V
#define IDS_12mV	701	// 12 mV/V
#define IDS_125mV	702	// 125 mV/V
#define IDS_500mV	703	// 500 mV/V
#define IDS_0V1		710	// 0,1 V
#define IDS_1V0		711	// 1 V
#define IDS_10V0	712	// 10 V
#define IDS_20mA	720	// 20 mA
#define IDS_200mA	721	// 200 mA
#define IDS_0KO4	730	// 400 Ohm
#define IDS_4KO0	731	// 4000 Ohm
#define IDS_F1MHz	740	// 1 MHz
#define IDS_F0MHz1	741	// 100 kHz
#define IDS_F10kHz	742	// 10 kHz
#define IDS_F1kHz	743	// 1 kHz
#define IDS_F0kHz1	744	// 100 Hz
#define IDS_T10ms	750	// 10 ms
#define IDS_T100ms	751	// 100 ms
#define IDS_T1s		752	// 1 s
#define IDS_T10s	753	// 10 s
#define IDS_T100s	754	// 100 s
#define IDS_Count	760	// counter
#define IDS_Cd100	761	// counter / 100
#define IDS_Bit1	765
#define IDS_Temp	770

/*************************************************************************
'* ASF filter frequency
*************************************************************************/
#define IDS_F0Hz10	914	// 0,1 Hz
#define IDS_F0Hz25	918	// 0,25 Hz
#define IDS_F0Hz50	921	// 0,5 Hz
#define IDS_F1Hz00	927	// 1 Hz
#define IDS_F2Hz50	932	// 2,5 Hz
#define IDS_F005Hz	935	// 5 Hz
#define IDS_F010Hz	941	// 10 Hz
#define IDS_F020Hz	945	// 20 Hz
#define IDS_F040Hz	948	// 40 Hz
#define IDS_F075Hz	952	// 75 Hz
#define IDS_F150Hz	957	// 150 Hz
#define IDS_F300Hz	960	// 300 Hz
#define IDS_F600Hz	964	// 600 Hz
#define IDS_F1KHz2	971	// 1200 Hz

/*************************************************************************
'* port
*************************************************************************/
#define IDS_RS232	1301	// RS 232
#define IDS_IE1284	1304	// printer port

/*************************************************************************
'* BDR baud rate
*************************************************************************/
#define IDS_600Bd	1404	// 600 Baud
#define IDS_1KBd2	1405	// 1200 Baud
#define IDS_2KBd4	1406	// 2400 Baud
#define IDS_4KBd8	1407	// 4800 Baud
#define IDS_9KBd6	1408	// 9600 Baud
#define IDS_19KBd2	1410	// 19200 Baud
#define IDS_38KBd4	1412	// 38400 Baud
#define IDS_57KBd6	1414	// 57600 Baud
#define IDS_115KBd	1416	// 115200 Baud

/*************************************************************************
'* AID plug-in type
*************************************************************************/
#define IDS_S8isno	5050	// no plug-in
#define IDS_S8TFmF	5051	// TF channel on mother board (0 or 1)
#define IDS_S8TFoF	5052	// TF channel on mother board (2 or 3)
#define IDS_S8SR55	5053	// TF module SR55
#define IDS_S8SR01	5054	// DC module SR01
#define IDS_S8DigIO	5055	// digital I/O
#define IDS_S8HChan	5056	// auxiliary channel

/*************************************************************************
'* DTR trigger mode
*************************************************************************/
#define IDS_MGETr	6000	// measured value > trigger level
#define IDS_MLETr	6001	// measured value < trigger level
#define IDS_pEdge	6002	// positive edge
#define IDS_nEdge	6003	// negative edge

/*************************************************************************
'* MSV measuring mode
*************************************************************************/
#define IDS_sofort	6100	// immediat
#define IDS_TRG		6101	// TRG command
#define IDS_ExtTr	6102	// external trigger
#define IDS_IntTr	6103	// internal trigger

/*************************************************************************
'* ACT active channel
*************************************************************************/
#define IDS_Pass	6200	// channel disabled
#define IDS_MeAkt	6201	// measure enabled
#define IDS_NuAkt	6202	// tare enabled
#define IDS_MeUNu	6203	// tare and measure enabled
#define IDS_MesAnz	6210	// measure disabled, tare not changed
#define IDS_TarAnz	6211	// tare disabled. measure not changed

/*************************************************************************
'* ICR measuring rate
*************************************************************************/
#define IDS_M1Hz	6300	// 1 Hz
#define IDS_M2Hz	6301	// 2 Hz
#define IDS_M5Hz	6302	// 5 Hz
#define IDS_M10Hz	6303	// 10 Hz
#define IDS_M25Hz	6304	// 25 Hz
#define IDS_M50Hz	6305	// 50 Hz
#define IDS_M60Hz	6306	// 60 Hz
#define IDS_M75Hz	6307	// 75 Hz
#define IDS_M100Hz	6308	// 100 Hz
#define IDS_M150Hz	6309	// 150 Hz
#define IDS_M200Hz	6310	// 200 Hz
#define IDS_M300Hz	6311	// 300 Hz
#define IDS_M400Hz	6312	// 400 Hz
#define IDS_M600Hz	6313	// 600 Hz
#define IDS_M800Hz	6314	// 800 Hz
#define IDS_M1KHz2	6315	// 1200 Hz
#define IDS_M1KHz6	6316	// 1600 Hz
#define IDS_M2KHz4	6317	// 2400 Hz
#define IDS_M3KHz2	6318	// 3200 Hz
#define IDS_M4KHz8	6319	// 4800 Hz
#define IDS_M9KHz6	6320	// 9600 Hz

/*************************************************************************
'* EST error numbers from spider8
*************************************************************************/
#define IDS_NoErr	0	// no error
#define IDS_Err_Reset	10000	// Spider in reset mode
#define IDS_Err_Trans	10001	// communication error, parity...
#define IDS_Err_SysFail	10002	// system error
#define IDS_Err_UnknIn	10003	// unknown instruction
#define IDS_Err_WrParms	10004	// wrong number of parameters
#define IDS_Err_ParOutL	10005	// wrong parameter value
#define IDS_Err_fgNIO	10006	// error because of filter frequency
#define IDS_Err_AmpOvr	10007	// amplifier overflow
#define IDS_Err_InsNIO	10008	// instruction not executable
#define IDS_Err_OMB	10009	// error during OMB
#define IDS_Err_ChanSel	10010	// wrong channel selection
#define IDS_Err_Measure	10011	// error during measurement
#define IDS_Err_Trig	10012	// error when trigger
#define IDS_Err_MeasRng	10013	// wrong measuring range
#define IDS_Err_Tar	10014	// error during tare
#define IDS_Err_Flashup	10020	// spider8 during flash update

/*************************************************************************
'* warning numbers from spider8
*************************************************************************/
#define IDS_Err_fgNFI	10021	// filter frequency
#define IDS_Err_TarNS	10022	// tare status

/*************************************************************************
'* error numbers from spider8.dll
*************************************************************************/
#define S8_Err_NoErr	0	// no error
#define S8_Err_FOpen	-10	// error during open file
#define S8_Err_SetPos	-12	// error during set file position
#define S8_Err_FRead	-13	// error during file read
#define S8_Err_FWrite	-14	// error during file write
#define S8_Err_BadFile  -15	// bad file
#define S8_Err_BadVersion -16	// bad file version

#define S8_NoMem	-100	// not enough memory (RAM)
#define S8_NoResource	-102	// resource not found
#define S8_WrongWhat	-103	// wrong What-par. during settings
#define S8_NotSetUnit	-104	// you cannot set the unit
#define S8_ParOutLimits -105	// invalid parameter
#define S8_NotSetNumChan -106	// you can't set the num. of chans
#define S8_NotSetMode	-107	// you can't set the mode
#define S8_ErrTimo	-108	// timeout
#define S8_ErrMeas	-109	// measure status was different to 6
#define S8_ErrNoChan	-110	// no channel active
#define S8_WrongChan	-111	// invalid channel number
#define S8_ErrEST	-112	// error during S8_GetErrorStatus
#define S8_ErrGPCS	-113	// error during S8_GetPsbleChanSettings
#define S8_WrongFtype	-114	// invalid file type

/*************************************************************************
'* error numbers from interfac.dll
*************************************************************************/
#define ERR_PORT_OPEN_FAILED	-1
#define ERR_BUILD_DCB_FAILED	-2
#define ERR_SETPORT_FAILED	-3
#define ERR_PORT_NOT_OPEN	-4
#define ERR_PORT_ALREADY_OPEN	-5
#define ERR_PORT_CLOSE_FAILED	-6
#define ERR_PORT_NOT_AVAILABLE  -7
#define ERR_BUFF_ALLOC_FAILED	-8
#define ERR_INVALID_PORT	-9
#define ERR_TIMO		-10
#define ERR_RECV_BUFF_EXCEEDED	-11
#define ERR_WRITEPORT_FAILED	-12
#define ERR_OVERRUN		-13
#define ERR_OPEN_LOGFILE	-20
#define ERR_WRITE_LOGFILE	-21

#define SERIAL_ERR_RECVBUFF_OVER 0x0001	// input buffer overflow
#define SERIAL_ERR_OVERRUN	0x0002	// overrun error
#define SERIAL_ERR_PARITY	0x0004
#define SERIAL_ERR_FRAME	0x0008
#define SERIAL_ERR_BREAK	0x0010
#define SERIAL_ERR_TXFULL	0x0100	// output queue full

#define GPIB_ERR	0x8000
#define GPIB_ERR_TIMO	6	// I/O aborted on timeout
#define GPIB_ERR_EDVR	0	// no driver, no device
#define GPIB_ERR_ENOL	2	// no listener

/*************************************************************************
  Declaration of export functions
*************************************************************************/

EXTERN_C long WINAPI S8_ACQRead(	// sends "OMB?<Num>"
 long	Num,		// number of measured values per channel (max. 3000)
 long	Timeout,	// timeout in ms
 float	*MWBuf);	// buffer for the measured values; be shure, that declared big enough
  
EXTERN_C long WINAPI S8_ACQSetup(	// sends "ACT<Chan[i]>,1" <Num> times
 long	Num,		// number of channels in the following list
 long	*Chans);	// list of channels, which will be measured

EXTERN_C long WINAPI S8_ACQStart(	// sends "MSV<Num>,1,<TrgMode>,1"
 long	Num,		// number of measured values per channel
			// 0 == continuous measurement
 long	MeasRate,	// See "ICR" IDS_Mxxx constants
			// -1 == do not change the current measuring rate
 long	TrgMode,	// See "MSV" trigger mode constants
			// All following parameters are only used when TrgMode == IDS_IntTr
 long	TrgChan,	// trigger source channel
 float	TrgLevel,	// trigger level in current unit
 long	TrgEdge,	// trigger edge "DTR"
 long	PreTrg);	// number of measured values before trigger event

EXTERN_C long WINAPI S8_ACQStop(void);	// sends "STP"

EXTERN_C long WINAPI S8_CloseDevice(void);

EXTERN_C long WINAPI S8_ClosePort(void);

EXTERN_C long WINAPI S8_DoSelfTest(	// UNIMPLEMENTED!
 long	*ErrorStatus,	// error status
 long	*ErrorNum,	// error number
 char	*ErrorText);    // error text
  
EXTERN_C long WINAPI S8_DoTara(void);

EXTERN_C long WINAPI S8_GetChanSettings(	// sends "ASA?<LChan>" or similar
 long	LChan,		// channel number
 long	What,		// type of settings; look at S8_CS_...-values
 void	*Value);	// setting value; the possible values depend on the type of settings

EXTERN_C long WINAPI S8_GetDevSettings(
 long	What,		// type of settings; look at S8_DS_...-values
 void	*Value);	// setting value; the possible values depend on the type of settings

EXTERN_C long WINAPI S8_GetErrorStatus(void);	// sends "EST?"

EXTERN_C long WINAPI S8_GetIndexString(
 long	Index,		// index number
 char	*IString);	// string to the index number

EXTERN_C long WINAPI S8_GetPsbleChanSettings(
 long	LChan,		// channel number
 long	All,		// unused
 long	What,		// type of settings; look at S8_CS_...-values
 void	*Value);	// setting value

EXTERN_C long WINAPI S8_GetPsbleDevSettings(
 long	All,		// not in use
 long	What,		// type of settings; look at S8_CS_...-values
 void	*Value);	// setting value

EXTERN_C long WINAPI S8_GetVersion(
 char *Vers);		// DLL-version string

EXTERN_C long WINAPI S8_InitAll(
 long	Port,		// port number; look at PORT_...-numbers
 long	Mode);		// interface mode
			// GPIB: --> no effect
			// COM1/2: --> "BDR" baud rate
			// LPT1/2: --> parallel port mode
			// USB: --> unused (no support for multiple USB connections??)
  
EXTERN_C long WINAPI S8_LoadChanSettings(
 long	LChan,		// channel number
 long	What);		// type of settings; look at S8_CS_...-values

EXTERN_C long WINAPI S8_LoadDevSettings(
 long	What);		// type of settings; look at S8_DS_...-values

EXTERN_C long WINAPI S8_MeasOneVal(void);

EXTERN_C long WINAPI S8_OpenDevice(
 long	Mode,		// device mode; look at device mode numbers
 long	*NumChan);	// number of channels; only when mode  S8_Offline

EXTERN_C long WINAPI S8_OpenPort(
 long	Port,		// port number; look at PORT_...-numbers
 long	Baudrate,	// baud rate or parallel port mode
			// Port  PORT_GPIB --> no effect
			// Port  PORT_COM1 --> BDR baud rate
			// Port  PORT_COM2 --> BDR baud rate
			// Port  PORT_LPT1 --> parallel port mode
			// Port  PORT_LPT2 --> parallel port mode
 char	*Parity,	// parity; must be "e" for spider8
 long	DataBits,	// number of data bits; must be 8 for spider8
 long	StopBits, 	// number of stop bits; must be 1 for spider8
 long	RecBuff);	// size of receive buffer

EXTERN_C long WINAPI S8_ReadPort(
 long	Count,		// number of desired bytes
 long	Term,		// character, which terminates the data
 long	*Status,	// status after transmission
 char	*Buffer,	// buffer for input data
 long	*BytesRead);	// really transmitted data bytes

EXTERN_C long WINAPI S8_ReadSettings(
 char	*FileName,	// name of file
 long	FileType);	// type of file: 0 == binary

EXTERN_C long WINAPI S8_SaveChanSettings(
 long	LChan,		// channel number
 long	What);		// type of settings; look at S8_CS_...-values

EXTERN_C long WINAPI S8_SaveDevSettings(
 long	What);		// type of settings; look at S8_DS_...-values

EXTERN_C long WINAPI S8_SetChanSettings(
 long	LChan,		// channel number
 long	What,		// type of settings; look at S8_CS_...-values
 void	*Value);	// setting value

EXTERN_C long WINAPI S8_SetDevSettings(
 long	What,		// type of settings; look at S8_DS_...-values
 void	*Value);	// setting value

EXTERN_C long WINAPI S8_TareSetup(
 long	Num,		// number of channels in the following list
 long	*Chans);	// list of channels, which will be tared

EXTERN_C long WINAPI S8_Trigger(void);

EXTERN_C long WINAPI S8_WritePort(
 char	*Buffer);	// buffer for writing data

EXTERN_C long WINAPI S8_WriteSettings(
 char	*FileName,	// name of file
 long	FileType);	// type of file
			// 0 --> binary
			// 1 --> ASCII (but you cannot read it with S8_ReadSettings)
Vorgefundene Kodierung: ASCII (7 bit)2