damaris-backends/drivers/TiePie-HS3/tiepie.cpp
2014-06-26 11:10:51 +00:00

314 lines
18 KiB
C++

/*
* C file for linking a TiePie hardware dll to the application
*/
#include "tiepie.h"
#include <windows.h>
/*
* Init / Exit
*/
INITINSTRUMENT InitInstrument = NULL;
EXITINSTRUMENT ExitInstrument = NULL;
/*
* Information retrieval
*/
GETSERIALNUMBER GetSerialNumber = NULL;
GETCALIBRATIONDATE GetCalibrationDate = NULL;
GETMAXRECORDLENGTH GetMaxRecordLength = NULL;
GETMAXSAMPLEFREQUENCY GetMaxSampleFrequency = NULL;
GETDCLEVELSTATUS GetDCLevelStatus = NULL;
GETSQUAREWAVEGENSTATUS GetSquareWaveGenStatus = NULL;
GETFUNCTIONGENSTATUS GetFunctionGenStatus = NULL;
GETFUNCGENMAXAMPLITUDE GetFuncGenMaxAmplitude = NULL;
GETAVAILABLESENSITIVITIES GetAvailableSensitivities = NULL;
GETAVAILABLERESOLUTIONS GetAvailableResolutions = NULL;
GETNRCHANNELS GetNrChannels = NULL;
/*
* Set / Get instrument status
*/
GETRESOLUTION GetResolution = NULL;
SETRESOLUTION SetResolution = NULL;
GETMEASUREMODE GetMeasureMode = NULL;
SETMEASUREMODE SetMeasureMode = NULL;
SETSENSITIVITY SetSensitivity = NULL;
GETSENSITIVITY GetSensitivity = NULL;
GETAUTORANGING GetAutoRanging = NULL;
SETAUTORANGING SetAutoRanging = NULL;
SETCOUPLING SetCoupling = NULL;
GETCOUPLING GetCoupling = NULL;
GETDCLEVEL GetDcLevel = NULL;
SETDCLEVEL SetDcLevel = NULL;
GETRECORDLENGTH GetRecordLength = NULL;
SETRECORDLENGTH SetRecordLength = NULL;
GETPOSTSAMPLES GetPostSamples = NULL;
SETPOSTSAMPLES SetPostSamples = NULL;
GETSAMPLEFREQUENCY GetSampleFrequency = NULL;
SETSAMPLEFREQUENCY SetSampleFrequency = NULL;
GETEXTERNALCLOCK GetExternalClock = NULL;
SETEXTERNALCLOCK SetExternalClock = NULL;
GETTRIGGERSOURCE GetTriggerSource = NULL;
SETTRIGGERSOURCE SetTriggerSource = NULL;
GETTRIGGERMODE GetTriggerMode = NULL;
SETTRIGGERMODE SetTriggerMode = NULL;
GETTRIGGERLEVEL GetTriggerLevel = NULL;
SETTRIGGERLEVEL SetTriggerLevel = NULL;
GETTRIGGERHYS GetTriggerHys = NULL;
SETTRIGGERHYS SetTriggerHys = NULL;
SETPXITRIGGERENABLES SetPXITriggerEnables = NULL;
GETPXITRIGGERENABLES GetPXITriggerEnables = NULL;
SETPXITRIGGERSLOPES SetPXITriggerSlopes = NULL;
GETPXITRIGGERSLOPES GetPXITriggerSlopes = NULL;
GETTRIGGERTIMEOUT GetTriggerTimeOut = NULL;
SETTRIGGERTIMEOUT SetTriggerTimeOut = NULL;
/*
*
*/
SETDIGITALOUTPUTS SetDigitalOutputs = NULL;
GETDIGITALOUTPUTS GetDigitalOutputs = NULL;
/*
* perform measurements
*/
STARTMEASUREMENT StartMeasurement = NULL;
/*
* retrieve data
*/
GETMEASUREMENTRAW GetMeasurementRaw = NULL;
GETONEMEASUREMENTRAW GetOneMeasurementRaw = NULL;
GETMEASUREMENT GetMeasurement = NULL;
GETONEMEASUREMENT GetOneMeasurement = NULL;
GETDIGITALINPUTVALUES GetDigitalInputValues = NULL;
GETONEDIGITALVALUE GetOneDigitalValue = NULL;
/*
* advanced measurements
*/
ADC_START ADC_Start = NULL;
ADC_RUNNING ADC_Running = NULL;
ADC_ABORT ADC_Abort = NULL;
ADC_TRIGGERED ADC_Triggered = NULL;
ADC_READY ADC_Ready = NULL;
ADC_FORCETRIG ADC_ForceTrig = NULL;
ADC_GETDATA ADC_GetData = NULL;
ADC_GETDATAVOLT ADC_GetDataVolt = NULL;
ADC_GETDATACH ADC_GetDataCh = NULL;
ADC_GETDATAVOLTCH ADC_GetDataVoltCh = NULL;
/*
* streaming
*/
SETRECEIVERHANDLE SetReceiverHandle = NULL;
GETMESSAGEID GetMessageID = NULL;
SETTRANSFERMODE SetTransferMode = NULL;
GETTRANSFERMODE GetTransferMode = NULL;
SETINSTRUMENTCONFIG SetInstrumentConfig = NULL;
SETSQUAREWAVEGENFREQUENCY SetSquareWaveGenFrequency = NULL;
GETSQUAREWAVEGENFREQUENCY GetSquareWaveGenFrequency = NULL;
SETFUNCGENSIGNALTYPE SetFuncGenSignalType = NULL;
GETFUNCGENSIGNALTYPE GetFuncGenSignalType = NULL;
SETFUNCGENAMPLITUDE SetFuncGenAmplitude = NULL;
GETFUNCGENAMPLITUDE GetFuncGenAmplitude = NULL;
SETFUNCGENDCOFFSET SetFuncGenDCOffset = NULL;
GETFUNCGENDCOFFSET GetFuncGenDCOffset = NULL;
SETFUNCGENSYMMETRY SetFuncGenSymmetry = NULL;
GETFUNCGENSYMMETRY GetFuncGenSymmetry = NULL;
SETFUNCGENFREQUENCY SetFuncGenFrequency = NULL;
GETFUNCGENFREQUENCY GetFuncGenFrequency = NULL;
FILLFUNCGENMEMORY FillFuncGenMemory = NULL;
SETFUNCGENOUTPUTON SetFuncGenOutputOn = NULL;
GETFUNCGENOUTPUTON GetFuncGenOutputOn = NULL;
FUNCGENBURST FuncGenBurst = NULL;
SETFUNCGENTRIGSOURCE SetFuncGenTrigSource = NULL;
GETFUNCGENTRIGSOURCE GetFuncGenTrigSource = NULL;
HINSTANCE TiePieDLL;
bool _export OpenDLL( TDeviceTypes Device )
{
/*
* Check is a dll was already opened. If so, close it and open the new one
*/
if (TiePieDLL != NULL)
{
FreeLibrary( TiePieDLL );
TiePieDLL = NULL;
} // if
/*
* select the correct DLL
*/
switch (Device)
{
case dtHandyprobe2 : TiePieDLL = LoadLibrary( "hp2.dll" );
break;
case dtHandyscope2 : TiePieDLL = LoadLibrary( "hs2.dll" );
break;
case dtHandyscope3 : TiePieDLL = LoadLibrary( "hs3.dll" );
break;
case dtHandyscope4 : TiePieDLL = LoadLibrary( "hs4.dll" );
break;
case dtHS508 : TiePieDLL = LoadLibrary( "hs508.dll" );
break;
case dtHS801 : TiePieDLL = LoadLibrary( "hs801.dll" );
break;
case dtTP112 : TiePieDLL = LoadLibrary( "tp112.dll" );
break;
case dtTP208 : TiePieDLL = LoadLibrary( "tp208.dll" );
break;
case dtTP508 : TiePieDLL = LoadLibrary( "tp508.dll" );
break;
case dtTP801 : TiePieDLL = LoadLibrary( "tp801.dll" );
break;
case dtPCI801 : TiePieDLL = LoadLibrary( "pci801.dll" );
break;
} // switch
if (TiePieDLL != NULL)
{
InitInstrument = (INITINSTRUMENT) GetProcAddress( TiePieDLL, "InitInstrument" );
ExitInstrument = (EXITINSTRUMENT) GetProcAddress( TiePieDLL, "ExitInstrument" );
GetCalibrationDate = (GETCALIBRATIONDATE) GetProcAddress( TiePieDLL, "GetCalibrationDate" );
GetSerialNumber = (GETSERIALNUMBER) GetProcAddress( TiePieDLL, "GetSerialNumber" );
GetMaxSampleFrequency = (GETMAXSAMPLEFREQUENCY) GetProcAddress( TiePieDLL, "GetMaxSampleFrequency" );
GetMaxRecordLength = (GETMAXRECORDLENGTH) GetProcAddress( TiePieDLL, "GetMaxRecordLength" );
GetDCLevelStatus = (GETDCLEVELSTATUS) GetProcAddress( TiePieDLL, "GetDCLevelStatus" );
GetSquareWaveGenStatus = (GETSQUAREWAVEGENSTATUS) GetProcAddress( TiePieDLL, "GetSquareWaveGenStatus" );
GetFunctionGenStatus = (GETFUNCTIONGENSTATUS) GetProcAddress( TiePieDLL, "GetFunctionGenStatus" );
GetFuncGenMaxAmplitude = (GETFUNCGENMAXAMPLITUDE) GetProcAddress( TiePieDLL, "GetFuncGenMaxAmplitude" );
GetAvailableResolutions = (GETAVAILABLERESOLUTIONS) GetProcAddress( TiePieDLL, "GetAvailableResolutions" );
GetAvailableSensitivities = (GETAVAILABLESENSITIVITIES) GetProcAddress( TiePieDLL, "GetAvailableSensitivities" );
GetNrChannels = (GETNRCHANNELS) GetProcAddress( TiePieDLL, "GetNrChannels" );
GetResolution = (GETRESOLUTION) GetProcAddress( TiePieDLL, "GetResolution" );
SetResolution = (SETRESOLUTION) GetProcAddress( TiePieDLL, "SetResolution" );
GetMeasureMode = (GETMEASUREMODE) GetProcAddress( TiePieDLL, "GetMeasureMode" );
SetMeasureMode = (SETMEASUREMODE) GetProcAddress( TiePieDLL, "SetMeasureMode" );
StartMeasurement = (STARTMEASUREMENT) GetProcAddress( TiePieDLL, "StartMeasurement" );
GetMeasurementRaw = (GETMEASUREMENTRAW) GetProcAddress( TiePieDLL, "GetMeasurementRaw" );
GetOneMeasurementRaw = (GETONEMEASUREMENTRAW) GetProcAddress( TiePieDLL, "GetOneMeasurementRaw" );
GetMeasurement = (GETMEASUREMENT) GetProcAddress( TiePieDLL, "GetMeasurement" );
GetOneMeasurement = (GETONEMEASUREMENT) GetProcAddress( TiePieDLL, "GetOneMeasurement" );
GetDigitalInputValues = (GETDIGITALINPUTVALUES) GetProcAddress( TiePieDLL, "GetDigitalInputValues" );
GetOneDigitalValue = (GETONEDIGITALVALUE) GetProcAddress( TiePieDLL, "GetOneDigitalValue" );
ADC_Start = (ADC_START) GetProcAddress( TiePieDLL, "ADC_Start" );
ADC_Running = (ADC_RUNNING) GetProcAddress( TiePieDLL, "ADC_Running" );
ADC_Abort = (ADC_ABORT) GetProcAddress( TiePieDLL, "ADC_Abort" );
ADC_Triggered = (ADC_TRIGGERED) GetProcAddress( TiePieDLL, "ADC_Triggered" );
ADC_Ready = (ADC_READY) GetProcAddress( TiePieDLL, "ADC_Ready" );
ADC_ForceTrig = (ADC_FORCETRIG) GetProcAddress( TiePieDLL, "ADC_ForceTrig" );
ADC_GetData = (ADC_GETDATA) GetProcAddress( TiePieDLL, "ADC_GetData" );
ADC_GetDataVolt = (ADC_GETDATAVOLT) GetProcAddress( TiePieDLL, "ADC_GetDataVolt" );
ADC_GetDataCh = (ADC_GETDATACH) GetProcAddress( TiePieDLL, "ADC_GetDataCh" );
ADC_GetDataVoltCh = (ADC_GETDATAVOLTCH) GetProcAddress( TiePieDLL, "ADC_GetDataVoltCh" );
SetReceiverHandle = (SETRECEIVERHANDLE) GetProcAddress( TiePieDLL, "SetReceiverHandle" );
GetMessageID = (GETMESSAGEID) GetProcAddress( TiePieDLL, "GetMessageID" );
SetTransferMode = (SETTRANSFERMODE) GetProcAddress( TiePieDLL, "SetTransferMode" );
GetTransferMode = (GETTRANSFERMODE) GetProcAddress( TiePieDLL, "GetTransferMode" );
GetRecordLength = (GETRECORDLENGTH) GetProcAddress( TiePieDLL, "GetRecordLength" );
SetRecordLength = (SETRECORDLENGTH) GetProcAddress( TiePieDLL, "SetRecordLength" );
GetPostSamples = (GETPOSTSAMPLES) GetProcAddress( TiePieDLL, "GetPostSamples" );
SetPostSamples = (SETPOSTSAMPLES) GetProcAddress( TiePieDLL, "SetPostSamples" );
GetSampleFrequency = (GETSAMPLEFREQUENCY) GetProcAddress( TiePieDLL, "GetSampleFrequency" );
SetSampleFrequency = (SETSAMPLEFREQUENCY) GetProcAddress( TiePieDLL, "SetSampleFrequency" );
GetExternalClock = (GETEXTERNALCLOCK) GetProcAddress( TiePieDLL, "GetExternalClock" );
SetExternalClock = (SETEXTERNALCLOCK) GetProcAddress( TiePieDLL, "SetExternalClock" );
SetSensitivity = (SETSENSITIVITY) GetProcAddress( TiePieDLL, "SetSensitivity" );
GetSensitivity = (GETSENSITIVITY) GetProcAddress( TiePieDLL, "GetSensitivity" );
GetAutoRanging = (GETAUTORANGING) GetProcAddress( TiePieDLL, "GetAutoRanging" );
SetAutoRanging = (SETAUTORANGING) GetProcAddress( TiePieDLL, "SetAutoRanging" );
SetCoupling = (SETCOUPLING) GetProcAddress( TiePieDLL, "SetCoupling" );
GetCoupling = (GETCOUPLING) GetProcAddress( TiePieDLL, "GetCoupling" );
GetDcLevel = (GETDCLEVEL) GetProcAddress( TiePieDLL, "GetDcLevel" );
SetDcLevel = (SETDCLEVEL) GetProcAddress( TiePieDLL, "SetDcLevel" );
GetTriggerSource = (GETTRIGGERSOURCE) GetProcAddress( TiePieDLL, "GetTriggerSource" );
SetTriggerSource = (SETTRIGGERSOURCE) GetProcAddress( TiePieDLL, "SetTriggerSource" );
GetTriggerMode = (GETTRIGGERMODE) GetProcAddress( TiePieDLL, "GetTriggerMode" );
SetTriggerMode = (SETTRIGGERMODE) GetProcAddress( TiePieDLL, "SetTriggerMode" );
GetTriggerLevel = (GETTRIGGERLEVEL) GetProcAddress( TiePieDLL, "GetTriggerLevel" );
SetTriggerLevel = (SETTRIGGERLEVEL) GetProcAddress( TiePieDLL, "SetTriggerLevel" );
GetTriggerHys = (GETTRIGGERHYS) GetProcAddress( TiePieDLL, "GetTriggerHys" );
SetTriggerHys = (SETTRIGGERHYS) GetProcAddress( TiePieDLL, "SetTriggerHys" );
GetPXITriggerEnables = (GETPXITRIGGERENABLES) GetProcAddress( TiePieDLL, "GetPXITriggerEnables" );
SetPXITriggerEnables = (SETPXITRIGGERENABLES) GetProcAddress( TiePieDLL, "SetPXITriggerEnables" );
GetPXITriggerSlopes = (GETPXITRIGGERSLOPES) GetProcAddress( TiePieDLL, "GetPXITriggerSlopes" );
SetPXITriggerSlopes = (SETPXITRIGGERSLOPES) GetProcAddress( TiePieDLL, "SetPXITriggerSlopes" );
GetTriggerTimeOut = (GETTRIGGERTIMEOUT) GetProcAddress( TiePieDLL, "GetTriggerTimeOut" );
SetTriggerTimeOut = (SETTRIGGERTIMEOUT) GetProcAddress( TiePieDLL, "SetTriggerTimeOut" );
SetDigitalOutputs = (SETDIGITALOUTPUTS) GetProcAddress( TiePieDLL, "SetDigitalOutputs" );
GetDigitalOutputs = (GETDIGITALOUTPUTS) GetProcAddress( TiePieDLL, "GetDigitalOutputs" );
SetSquareWaveGenFrequency = (SETSQUAREWAVEGENFREQUENCY) GetProcAddress( TiePieDLL, "SetSquareWaveGenFrequency" );
GetSquareWaveGenFrequency = (GETSQUAREWAVEGENFREQUENCY) GetProcAddress( TiePieDLL, "GetSquareWaveGenFrequency" );
SetFuncGenSignalType = (SETFUNCGENSIGNALTYPE) GetProcAddress( TiePieDLL, "SetFuncGenSignalType" );
GetFuncGenSignalType = (GETFUNCGENSIGNALTYPE) GetProcAddress( TiePieDLL, "GetFuncGenSignalType" );
SetFuncGenAmplitude = (SETFUNCGENAMPLITUDE) GetProcAddress( TiePieDLL, "SetFuncGenAmplitude" );
GetFuncGenAmplitude = (GETFUNCGENAMPLITUDE) GetProcAddress( TiePieDLL, "GetFuncGenAmplitude" );
SetFuncGenDCOffset = (SETFUNCGENDCOFFSET) GetProcAddress( TiePieDLL, "SetFuncGenDCOffset" );
GetFuncGenDCOffset = (GETFUNCGENDCOFFSET) GetProcAddress( TiePieDLL, "GetFuncGenDCOffset" );
SetFuncGenSymmetry = (SETFUNCGENSYMMETRY) GetProcAddress( TiePieDLL, "SetFuncGenSymmetry" );
GetFuncGenSymmetry = (GETFUNCGENSYMMETRY) GetProcAddress( TiePieDLL, "GetFuncGenSymmetry" );
SetFuncGenFrequency = (SETFUNCGENFREQUENCY) GetProcAddress( TiePieDLL, "SetFuncGenFrequency" );
GetFuncGenFrequency = (GETFUNCGENFREQUENCY) GetProcAddress( TiePieDLL, "GetFuncGenFrequency" );
FillFuncGenMemory = (FILLFUNCGENMEMORY) GetProcAddress( TiePieDLL, "FillFuncGenMemory" );
SetFuncGenOutputOn = (SETFUNCGENOUTPUTON) GetProcAddress( TiePieDLL, "SetFuncGenOutputOn" );
GetFuncGenOutputOn = (GETFUNCGENOUTPUTON) GetProcAddress( TiePieDLL, "GetFuncGenOutputOn" );
FuncGenBurst = (FUNCGENBURST) GetProcAddress( TiePieDLL, "FuncGenBurst" );
SetFuncGenTrigSource = (SETFUNCGENTRIGSOURCE) GetProcAddress( TiePieDLL, "SetFuncGenTrigSource" );
GetFuncGenTrigSource = (GETFUNCGENTRIGSOURCE) GetProcAddress( TiePieDLL, "GetFuncGenTrigSource" );
SetInstrumentConfig = (SETINSTRUMENTCONFIG) GetProcAddress( TiePieDLL, "SetInstrumentConfig" );
return( 1 );
} // if
else
{
return( 0 );
} // else
}; // OpenDLL
bool _export CloseDLL( void )
{
/*
* Check if a dll was opened. If so, close it and open the new one
*/
if (TiePieDLL != NULL)
{
FreeLibrary( TiePieDLL );
TiePieDLL = NULL;
return( 1 );
} // if
else
{
return( 0 );
} // else
} // CloseDLL