DMCCOMH.docx
《DMCCOMH.docx》由会员分享,可在线阅读,更多相关《DMCCOMH.docx(41页珍藏版)》请在冰豆网上搜索。
DMCCOMH
//Note:
IncludethisfileaferWINDOWS.H
//WINDOWS.Hmustbeincludedinyourproject
#ifndefDMCCOM_H
#defineDMCCOM_H
#ifdef__cplusplus
extern"C"{
#endif
//Commondatatypes(seeWINDOWS.H)
#ifndefFAR
#defineFAR
#endif
#ifndefNEAR
#defineNEAR
#endif
typedefshortintSHORT;
typedefshortintNEAR*PSHORT;
typedefshortintFAR*LPSHORT;
typedefunsignedshortintUSHORT;
typedefunsignedshortintNEAR*PUSHORT;
typedefunsignedshortintFAR*LPUSHORT;
#ifdefined(_WIN32)||defined(__WIN32__)
typedeflongintLONG;
#endif
typedeflongintNEAR*PLONG;
typedeflongintFAR*LPLONG;
typedefunsignedlongintULONG;
typedefunsignedlongintNEAR*PULONG;
typedefunsignedlongintFAR*LPULONG;
typedefcharCHAR;
typedefcharNEAR*PCHAR;
typedefcharFAR*LPCHAR;
typedefunsignedcharUCHAR;
typedefunsignedcharNEAR*PUCHAR;
typedefunsignedcharFAR*LPUCHAR;
typedefunsignedcharBYTE;
typedefunsignedcharNEAR*PBYTE;
typedefunsignedcharFAR*LPBYTE;
typedefvoidNEAR*PVOID;
typedefvoidFAR*LPVOID;
typedefcharFAR*PSZ;
#ifdefined(_WIN32)||defined(__WIN32__)
#defineGALILCALL__stdcall
#else
#defineGALILCALLFARPASCAL__export
#endif
#if!
defined(_WIN32)&&!
defined(__WIN32__)
#ifndefTEXT
#defineTEXT
#endif
#endif
//Controllermodelconstants
#defineDMC400TEXT("DMC-400")
#defineDMC600TEXT("DMC-600")
#defineDMC700TEXT("DMC-700")
#defineDMC1000TEXT("DMC-1000")
#defineDMC1200TEXT("DMC-1200")
#defineDMC1300TEXT("DMC-1300")
#defineDMC1410TEXT("DMC-1410")
#defineDMC1411TEXT("DMC-1411")
#defineDMC1412TEXT("DMC-1412")
#defineDMC1413TEXT("DMC-1413")
#defineDMC1414TEXT("DMC-1414")
#defineDMC1415TEXT("DMC-1415")
#defineDMC1425TEXT("DMC-1425")
#defineDMC3425TEXT("DMC-3425")
#defineDMC1416TEXT("DMC-1416")
#defineDMC1417TEXT("DMC-14x7")
#defineDMC1500TEXT("DMC-1500")
#defineDMC1600TEXT("DMC-1600")
#defineDMC1700TEXT("DMC-1700")
#defineDMC1800TEXT("DMC-1800")
#defineDMC1802TEXT("DMC-1802")
#defineDMC2000TEXT("DMC-2000")
#defineDMC2100TEXT("DMC-2100")
#defineDMC2200TEXT("DMC-2200")
#defineDMC90064TEXT("IOC-90064")
#defineMODEL_UNKNOWN0
#defineMODEL_600600
#defineMODEL_700700
#defineMODEL_10001000
#defineMODEL_12001200
#defineMODEL_13001300
#defineMODEL_14101410
#defineMODEL_14111411
#defineMODEL_14121412
#defineMODEL_14131413
#defineMODEL_14141414
#defineMODEL_14151415
#defineMODEL_14161416
#defineMODEL_14171417
#defineMODEL_15001500
#defineMODEL_16001600
#defineMODEL_17001700
#defineMODEL_18001800
#defineMODEL_18021802
#defineMODEL_20002000
#defineMODEL_21002100
#defineMODEL_22002200
#defineMODEL_900649064
#defineMODEL_USERDEFINED9999
//Generaldefines
#defineCOMMAND_SIZE80
#defineMAX_CONTROLLERS64
//Userdefinedmessagetonotifyapplicationprogramofaninterrupt
//StatusbytefromthecontrollerispassedtouserviathewParamargument
#defineWM_DMCINTERRUPT(WM_USER+128)
#defineWM_MOTIONCOMPLETE(WM_USER+129)
#defineWM_MESSAGEPENDING(WM_USER+130)
//Errors
#defineDMCNOERROR0
#defineDMCWARNING_MONITOR1
#defineDMCERROR_TIMEOUT-1
#defineDMCERROR_COMMAND-2
#defineDMCERROR_CONTROLLER-3
#defineDMCERROR_FILE-4
#defineDMCERROR_DRIVER-5
#defineDMCERROR_HANDLE-6
#defineDMCERROR_HMODULE-7
#defineDMCERROR_MEMORY-8
#defineDMCERROR_BUFFERFULL-9
#defineDMCERROR_RESPONSEDATA-10
#defineDMCERROR_DMA-11
#defineDMCERROR_ARGUMENT-12
#defineDMCERROR_DATARECORD-13
#defineDMCERROR_DOWNLOAD-14
#defineDMCERROR_FIRMWARE-15
#defineDMCERROR_CONVERSION-16
#defineDMCERROR_RESOURCE-17
#defineDMCERROR_REGISTRY-18
#defineDMCERROR_BUSY-19
#defineDMCERROR_DEVICE_DISCONNECTED-20
#defineDMCERROR_TIMEING_ERROR-21
#defineDMCERROR_WRITEBUFFER_TOO_LARGE-22
//Datatypes
typedefLONGHANDLEDMC;
typedefHANDLEDMCFAR*PHANDLEDMC;
//Constantvalues
//Constantvaluesfordatarecordaccess
#include"dmcdrc.h"
//Constantvaluesforregistrystructures
enumDMCControllerTypes
{
ControllerTypeISABus=0,//ISAorPC-104buscontroller
ControllerTypeSerial=1,//RS-232serialcontroller
ControllerTypePCIBus=2,//PCIorCompactPCIbuscontroller
ControllerTypeUSB=3,//Universalserialbuscontroller
ControllerTypeEthernet=4,//Ethernetcontroller
ControllerTypeVMEBus=5//VMEbuscontroller
};
enumDMCDeviceDrivers
{
DeviceDriverWinRT=0,//UseWinRTdevicedriver
DeviceDriverGalil=1//UseGalildevicedriver
};
enumDMCSerialHandshake
{
SerialHandshakeHardware=0,//Hardwarehandshake(RTS/CTS)
SerialHandshakeSoftware=1,//Softwarehandshake(XOn/XOff)
SerialHandshakeBoth=2//RESERVEDFORGALILUSEONLY
};
enumDMCBusIOStyle
{
DMC600IOStyle=0,//ForDMC-600,DMC-1400
DMC1000IOStyle=1,//ForDMC-1000,DMC-1200,DMC-1700,DMC-1802
DMC1600IOStyle=2//ForDMC-1600,DMC-1800
};
enumDMCInterruptStyle
{
DMC1000InterruptStyle=0,//ForDMC-1000
DMC1400InterruptStyle=1,//ForDMC-1400
DMC1700InterruptStyle=2,//ForDMC-1200,DMC-1700,DMC-1802
DMC1600InterruptStyle=3//ForDMC-1600,DMC-1800
};
enumDMCDataRecordAccess
{
DataRecordAccessNone=0,//Nodatarecordaccesscapabilityordatarecordaccessisoff
DataRecordAccessDMA=1,//UseDMAfordatarecordaccess
DataRecordAccessFIFO=2,//UseFIFOfordatarecordaccess
DataRecordAccessBoth=3,//RESERVEDFORGALILUSEONLY
DataRecordAccessQR=4//RESERVEDFORGALILUSEONLY
};
enumDMCEthernetProtocol
{
EthernetProtocolTCP=0,
EthernetProtocolUDP=1
};
enumDMCVMEBusInterface
{
VMEBusInterfaceBit3=0,
VMEBusInterfaceVMIC=1
};
//Ethernetflags
#defineETH_NO_MULTICAST0x0001//Donotopenamulti-castsession
#defineETH_UNSOLICITEDMESSAGES0x0002//Openanunsolicitedmessagesessiononsecondhandle
#defineETH_UNSOLICITEDMESSAGES_SAMEHANDLE0x0004//Openanunsolicitedmessagesessiononsamehandle
//Structures
//Structureusedtoadd/change/deleteregistryinformation
//Old-stylestructure
typedefstruct_GALILREGISTRY
{
#ifdefUNDER_CE
TCHARszModel[32];//Controllermodelstring
#else
CHARszModel[16];//Controllermodelstring
#endif
USHORTusDeviceNumber;//Devicenumber-forGaliluseonly
USHORTfDeviceDriver;//UseGalilorWinRTdevicedriver
ULONGulTimeout;//Time-outinmilliseconds
ULONGulDelay;//Delayinmicrosceonds
USHORTfControllerType;//Controllertype(ISAbus,PCIbus,serial,etc.)
USHORTusCommPort;//Serialcommunicationsport
ULONGulCommSpeed;//SerialCommunicationsspeed
USHORTfHandshake;//Serialcommunicationshandshake
USHORTusAddress;//Busaddress
USHORTusInterrupt;//Interrupt
USHORTfDataRecordAccess;//Datarecordaccesstype
USHORTusDMAChannel;//DMAchannel
USHORTusDataRecordSize;//Datarecordsize(fordatarecordaccess)
USHORTusRefreshRate;//Datarecordrefreshratein2^usRefreshRatems
USHORTusSerialNumber;//ControllerSerialNumber
#ifdefUNDER_CE
TCHARszPNPHardwareKey[128];//HardwareregistrykeyforPNPcontrollers-forGaliluseonly
#else
CHARszPNPHardwareKey[64];//HardwareregistrykeyforPNPcontrollers-forGaliluseonly
#endif
}GALILREGISTRY,FAR*PGALILREGISTRY;
//Hardwareinfo-ISAandPCIbuscommunications
typedefstruct_BUSINFO
{
USHORTusDeviceNumber;//Devicenumber-forGaliluseonly
USHORTfDeviceDriver;//UseGalilorWinRTdevicedriver
USHORTfIOStyle;//Styleofaddressingstatusregisteroncontroller
USHORTusAddress;//I/Oportaddress
USHORTfInterruptStyle;//Styleofhandlinginterruptsfromcontroller
USHORTusInterrupt;//Interrupt
USHORTfDataRecordAccess;//Datarecordaccesstype
USHORTusDMAChannel;//DMAchannel
USHORTusDataRecordSize;//Datarecordsize(fordatarecordaccess)
USHORTusRefreshRate;//Datarecordrefreshratein2^usRefreshRatems
USHORTbPNP;//Plugandplay?
(TRUE|FALSE)
USHORTusAddress2;//AlternateI/OportaddressforPCIcontrollers
USHORTusReserved1;//Reservedforfutureuse
#ifdefUNDER_CE
TCHARszPNPHardwareKey[128];//HardwareregistrykeyforPNPcontrollers-forGaliluseonly
#else
CHARszPNPHardwareKey[64];//HardwareregistrykeyforPNPcontrollers-forGaliluseonly
#endif
}BUSINFO;
//Hardwareinfo-serialcommunications
typedefstruct_SERIALINFO
{
USHORTusCommPort;//Communicationsport
ULONGulCommSpeed;//Communicationsspeed
USHORTfHandshake;//Communicationshandshake
USHORTusDeviceNumber;//Devicenumber-forGaliluseonly
USHORTusReserved1;//Reservedforfutureuse
}SERIALINFO;
//Hardwareinfo-serialcommunications
typedefstruct_WINSOCKINFO
{
ULONGulPort;//Hostportnumber-forGaliluseonly
#ifdefUNDER_CE
TCHARszIPAddress[64];//Hostnamestring
#else
CHARszIPAddress[32];//Hostnamestring
#endif
USHORTfProtocol;//UDPorTCP
ULONGfFlags;//Controlsautoopeningofmulti-castandunsolicitedmessagesessions
ULONGulReserved1;//Reservedforfutureuse
ULONGulReserved2;//Reservedforfutureuse
ULONGulReserved3;//Reservedforfutureuse
}WINSOCKINFO;
//Hardwareinfo-ISAandPCIbuscommunications
typedefstruct_VMEBUSINFO
{
USHORTusDeviceNumber;//Devicenumber-forGaliluseonly
USHORTfDeviceDriver;//UseGalilorWinRTdevicedriver
USHORTfInterface;//WhichVMEtoPCinterface
ULONGulMemoryAddress;//PhysicalmemoryaddressofVMEinterfacecard
ULONGulMemoryOffset;//OffsetinmemorytoGalilcontroller
USHORTusAddress;//I/OportaddressforVMEinterfacecard
USHORTfIOStyle;//Styleofaddressingstatusregisteroncontroller
USHORTfInterruptStyle;//Styleofhandlinginterruptsfromcontroller
USHORTus