//============================================================================== // // Title : NIIMAQdx.h // Created : 1403685834 seconds after 1/1/1970 12:00:00 UTC // Copyright : © Copyright 2006, National Instruments Corporation, All rights reserved // Purpose : Include file for NI-IMAQdx library support. // //============================================================================== #ifndef ___niimaqdx_h___ #define ___niimaqdx_h___ #ifdef __cplusplus extern "C" { #endif #if !defined(niimaqdx_types) #define niimaqdx_types #ifdef _CVI_ #pragma EnableLibraryRuntimeChecking #endif //============================================================================== // Typedefs //============================================================================== #ifndef _NI_uInt8_DEFINED_ #define _NI_uInt8_DEFINED_ typedef unsigned char uInt8; #endif #ifndef _NI_uInt16_DEFINED_ #define _NI_uInt16_DEFINED_ typedef unsigned short int uInt16; #endif #ifndef _NI_uInt32_DEFINED_ #define _NI_uInt32_DEFINED_ #if defined(_MSC_VER) typedef unsigned long uInt32; #elif __GNUC__ #if __x86_64__ typedef unsigned int uInt32; #else typedef unsigned long uInt32; #endif #endif #endif #ifndef _NI_uInt64_DEFINED_ #define _NI_uInt64_DEFINED_ #if defined(_MSC_VER) || _CVI_ >= 700 typedef unsigned __int64 uInt64; #elif __GNUC__ typedef unsigned long long uInt64; #endif #endif #ifndef _NI_Int8_DEFINED_ #define _NI_Int8_DEFINED_ typedef char Int8; #endif #ifndef _NI_Int16_DEFINED_ #define _NI_Int16_DEFINED_ typedef short int Int16; #endif #ifndef _NI_Int32_DEFINED_ #define _NI_Int32_DEFINED_ #if defined(_MSC_VER) typedef long Int32; #elif __GNUC__ #if __x86_64__ typedef int Int32; #else typedef long Int32; #endif #endif #endif #ifndef _NI_Int64_DEFINED_ #define _NI_Int64_DEFINED_ #if defined(_MSC_VER) || _CVI_ >= 700 typedef __int64 Int64; #elif __GNUC__ typedef long long int Int64; #endif #endif #ifndef _NI_float32_DEFINED_ #define _NI_float32_DEFINED_ typedef float float32; #endif #ifndef _NI_float64_DEFINED_ #define _NI_float64_DEFINED_ typedef double float64; #endif #ifndef TRUE #define TRUE (1L) #endif #ifndef FALSE #define FALSE (0L) #endif #ifndef _NI_GUIDHNDL_DEFINED typedef uInt32 GUIHNDL; #endif #if (defined(_MSC_VER) || defined(_CVI_)) #ifndef _NI_FUNC_DEFINED #define NI_FUNC __stdcall #endif #ifndef _NI_FUNCC_DEFINED #define NI_FUNCC __cdecl #endif #elif defined(__GNUC__) #ifndef _NI_FUNC_DEFINED #define NI_FUNC #endif #ifndef _NI_FUNCC_DEFINED #define NI_FUNCC #endif #endif #ifndef _NI_bool32_DEFINED_ #define _NI_bool32_DEFINED_ typedef uInt32 bool32; #endif #ifndef _NI_IMAQdxSession_DEFINED_ #define _NI_IMAQdxSession_DEFINED_ typedef uInt32 IMAQdxSession; #endif #define IMAQDX_MAX_API_STRING_LENGTH 512 //============================================================================== // Forward Declare Data Structures //============================================================================== typedef struct Image_struct Image; //============================================================================== // Error Codes Enumeration //============================================================================== typedef enum IMAQdxError_enum { IMAQdxErrorSuccess = 0x0, // Success IMAQdxErrorSystemMemoryFull = 0xBFF69000, // Not enough memory IMAQdxErrorInternal, // Internal error IMAQdxErrorInvalidParameter, // Invalid parameter IMAQdxErrorInvalidPointer, // Invalid pointer IMAQdxErrorInvalidInterface, // Invalid camera session IMAQdxErrorInvalidRegistryKey, // Invalid registry key IMAQdxErrorInvalidAddress, // Invalid address IMAQdxErrorInvalidDeviceType, // Invalid device type IMAQdxErrorNotImplemented, // Not implemented IMAQdxErrorCameraNotFound, // Camera not found IMAQdxErrorCameraInUse, // Camera is already in use. IMAQdxErrorCameraNotInitialized, // Camera is not initialized. IMAQdxErrorCameraRemoved, // Camera has been removed. IMAQdxErrorCameraRunning, // Acquisition in progress. IMAQdxErrorCameraNotRunning, // No acquisition in progress. IMAQdxErrorAttributeNotSupported, // Attribute not supported by the camera. IMAQdxErrorAttributeNotSettable, // Unable to set attribute. IMAQdxErrorAttributeNotReadable, // Unable to get attribute. IMAQdxErrorAttributeOutOfRange, // Attribute value is out of range. IMAQdxErrorBufferNotAvailable, // Requested buffer is unavailable. IMAQdxErrorBufferListEmpty, // Buffer list is empty. Add one or more buffers. IMAQdxErrorBufferListLocked, // Buffer list is already locked. Reconfigure acquisition and try again. IMAQdxErrorBufferListNotLocked, // No buffer list. Reconfigure acquisition and try again. IMAQdxErrorResourcesAllocated, // Transfer engine resources already allocated. Reconfigure acquisition and try again. IMAQdxErrorResourcesUnavailable, // Insufficient transfer engine resources. IMAQdxErrorAsyncWrite, // Unable to perform asychronous register write. IMAQdxErrorAsyncRead, // Unable to perform asychronous register read. IMAQdxErrorTimeout, // Timeout. IMAQdxErrorBusReset, // Bus reset occurred during a transaction. IMAQdxErrorInvalidXML, // Unable to load camera's XML file. IMAQdxErrorFileAccess, // Unable to read/write to file. IMAQdxErrorInvalidCameraURLString, // Camera has malformed URL string. IMAQdxErrorInvalidCameraFile, // Invalid camera file. IMAQdxErrorGenICamError, // Unknown Genicam error. IMAQdxErrorFormat7Parameters, // For format 7: The combination of speed, image position, image size, and color coding is incorrect. IMAQdxErrorInvalidAttributeType, // The attribute type is not compatible with the passed variable type. IMAQdxErrorDLLNotFound, // The DLL could not be found. IMAQdxErrorFunctionNotFound, // The function could not be found. IMAQdxErrorLicenseNotActivated, // License not activated. IMAQdxErrorCameraNotConfiguredForListener, // The camera is not configured properly to support a listener. IMAQdxErrorCameraMulticastNotAvailable, // Unable to configure the system for multicast support. IMAQdxErrorBufferHasLostPackets, // The requested buffer has lost packets and the user requested an error to be generated. IMAQdxErrorGiGEVisionError, // Unknown GiGE Vision error. IMAQdxErrorNetworkError, // Unknown network error. IMAQdxErrorCameraUnreachable, // Unable to connect to the camera. IMAQdxErrorHighPerformanceNotSupported, // High performance acquisition is not supported on the specified network interface. Connect the camera to a network interface running the high performance driver. IMAQdxErrorInterfaceNotRenamed, // Unable to rename interface. Invalid or duplicate name specified. IMAQdxErrorNoSupportedVideoModes, // The camera does not have any video modes which are supported. IMAQdxErrorSoftwareTriggerOverrun, // Software trigger overrun. IMAQdxErrorTestPacketNotReceived, // The system did not receive a test packet from the camera. The packet size may be too large for the network configuration or a firewall may be enabled. IMAQdxErrorCorruptedImageReceived, // The camera returned a corrupted image. IMAQdxErrorCameraConfigurationHasChanged, // The camera did not return an image of the correct type it was configured for previously. IMAQdxErrorCameraInvalidAuthentication, // The camera is configured with password authentication and either the user name and password were not configured or they are incorrect. IMAQdxErrorUnknownHTTPError, // The camera returned an unknown HTTP error. IMAQdxErrorKernelDriverUnavailable, // Unable to attach to the kernel mode driver. IMAQdxErrorPixelFormatDecoderUnavailable, // No decoder available for selected pixel format. IMAQdxErrorFirmwareUpdateNeeded, // The acquisition hardware needs a firmware update before it can be used. IMAQdxErrorFirmwareUpdateRebootNeeded, // The firmware on the acquisition hardware has been updated and the system must be rebooted before use. IMAQdxErrorLightingCurrentOutOfRange, // The requested current level from the lighting controller is not possible. IMAQdxErrorUSB3VisionError, // Unknown USB3 Vision error. IMAQdxErrorInvalidU3VUSBDescriptor, // The camera has a USB descriptor that is incompatible with the USB3 Vision specification. IMAQdxErrorU3VInvalidControlInterface, // The USB3 Vision control interface is not implemented or is invalid on this camera. IMAQdxErrorU3VControlInterfaceError, // There was an error from the control interface of the USB3 Vision camera. IMAQdxErrorU3VInvalidEventInterface, // The USB3 Vision event interface is not implemented or is invalid on this camera. IMAQdxErrorU3VEventInterfaceError, // There was an error from the event interface of the USB3 Vision camera. IMAQdxErrorU3VInvalidStreamInterface, // The USB3 Vision stream interface is not implemented or is invalid on this camera. IMAQdxErrorU3VStreamInterfaceError, // There was an error from the stream interface of the USB3 Vision camera. IMAQdxErrorU3VUnsupportedConnectionSpeed, // The USB connection speed is not supported by the camera. Check whether the camera is plugged into a USB 2.0 port instead of a USB 3.0 port. If so, verify that the camera supports this use case. IMAQdxErrorU3VInsufficientPower, // The USB3 Vision camera requires more current than can be supplied by the USB port in use. IMAQdxErrorU3VInvalidMaxCurrent, // The U3V_MaximumCurrentUSB20_mA registry value is not valid for the connected USB3 Vision camera. IMAQdxErrorBufferIncompleteData, // The requested buffer has incomplete data and the user requested an error to be generated. IMAQdxErrorCameraAcquisitionConfigFailed, // The camera returned an error starting the acquisition. IMAQdxErrorCameraClosePending, // The camera still has outstanding references and will be closed when these operations complete. IMAQdxErrorSoftwareFault, // An unexpected software error occurred. IMAQdxErrorCameraPropertyInvalid, // The value for an invalid camera property was requested. IMAQdxErrorJumboFramesNotEnabled, // Jumbo frames are not enabled on the host. Maximum packet size is 1500 bytes. IMAQdxErrorBayerPixelFormatNotSelected, // This operation requires that the camera has a Bayer pixel format selected. IMAQdxErrorGuard = 0xFFFFFFFF, } IMAQdxError; //============================================================================== // Bus Type Enumeration //============================================================================== typedef enum IMAQdxBusType_enum { IMAQdxBusTypeFireWire = 0x31333934, IMAQdxBusTypeEthernet = 0x69707634, IMAQdxBusTypeSimulator = 0x2073696D, IMAQdxBusTypeDirectShow = 0x64736877, IMAQdxBusTypeIP = 0x4950636D, IMAQdxBusTypeSmartCam2 = 0x53436132, IMAQdxBusTypeUSB3Vision = 0x55534233, IMAQdxBusTypeUVC = 0x55564320, IMAQdxBusTypeGuard = 0xFFFFFFFF, } IMAQdxBusType; //============================================================================== // Camera Control Mode Enumeration //============================================================================== typedef enum IMAQdxCameraControlMode_enum { IMAQdxCameraControlModeController, IMAQdxCameraControlModeListener, IMAQdxCameraControlModeGuard = 0xFFFFFFFF, } IMAQdxCameraControlMode; //============================================================================== // Buffer Number Mode Enumeration //============================================================================== typedef enum IMAQdxBufferNumberMode_enum { IMAQdxBufferNumberModeNext, IMAQdxBufferNumberModeLast, IMAQdxBufferNumberModeBufferNumber, IMAQdxBufferNumberModeGuard = 0xFFFFFFFF, } IMAQdxBufferNumberMode; //============================================================================== // Plug n Play Event Enumeration //============================================================================== typedef enum IMAQdxPnpEvent_enum { IMAQdxPnpEventCameraAttached, IMAQdxPnpEventCameraDetached, IMAQdxPnpEventBusReset, IMAQdxPnpEventGuard = 0xFFFFFFFF, } IMAQdxPnpEvent; //============================================================================== // Bayer Pattern Enumeration //============================================================================== typedef enum IMAQdxBayerPattern_enum { IMAQdxBayerPatternNone, IMAQdxBayerPatternGB, IMAQdxBayerPatternGR, IMAQdxBayerPatternBG, IMAQdxBayerPatternRG, IMAQdxBayerPatternHardware, IMAQdxBayerPatternGuard = 0xFFFFFFFF, } IMAQdxBayerPattern; //============================================================================== // Bayer Decode Algorithm Enumeration //============================================================================== typedef enum IMAQdxBayerAlgorithm_enum { IMAQdxBayerAlgorithmBilinear, IMAQdxBayerAlgorithmVNG, IMAQdxBayerAlgorithmGuard = 0xFFFFFFFF, } IMAQdxBayerAlgorithm; //============================================================================== // Output Image Types -- Values match Vision Development Module image types //============================================================================== typedef enum IMAQdxOutputImageType_enum { IMAQdxOutputImageTypeU8 = 0, IMAQdxOutputImageTypeI16 = 1, IMAQdxOutputImageTypeU16 = 7, IMAQdxOutputImageTypeRGB32 = 4, IMAQdxOutputImageTypeRGB64 = 6, IMAQdxOutputImageTypeAuto = 0x7FFFFFFF, IMAQdxOutputImageTypeGuard = 0xFFFFFFFF, } IMAQdxOutputImageType; //============================================================================== // Controller Destination Mode Enumeration //============================================================================== typedef enum IMAQdxDestinationMode_enum { IMAQdxDestinationModeUnicast, IMAQdxDestinationModeBroadcast, IMAQdxDestinationModeMulticast, IMAQdxDestinationModeGuard = 0xFFFFFFFF, } IMAQdxDestinationMode; //============================================================================== // Attribute Type Enumeration //============================================================================== typedef enum IMAQdxAttributeType_enum { IMAQdxAttributeTypeU32, IMAQdxAttributeTypeI64, IMAQdxAttributeTypeF64, IMAQdxAttributeTypeString, IMAQdxAttributeTypeEnum, IMAQdxAttributeTypeBool, IMAQdxAttributeTypeCommand, IMAQdxAttributeTypeBlob, IMAQdxAttributeTypeGuard = 0xFFFFFFFF, } IMAQdxAttributeType; //============================================================================== // Value Type Enumeration //============================================================================== typedef enum IMAQdxValueType_enum { IMAQdxValueTypeU32, IMAQdxValueTypeI64, IMAQdxValueTypeF64, IMAQdxValueTypeString, IMAQdxValueTypeEnumItem, IMAQdxValueTypeBool, IMAQdxValueTypeDisposableString, IMAQdxValueTypeGuard = 0xFFFFFFFF, } IMAQdxValueType; //============================================================================== // Interface File Flags Enumeration //============================================================================== typedef enum IMAQdxInterfaceFileFlags_enum { IMAQdxInterfaceFileFlagsConnected = 0x1, IMAQdxInterfaceFileFlagsDirty = 0x2, IMAQdxInterfaceFileFlagsGuard = 0xFFFFFFFF, } IMAQdxInterfaceFileFlags; //============================================================================== // Overwrite Mode Enumeration //============================================================================== typedef enum IMAQdxOverwriteMode_enum { IMAQdxOverwriteModeGetOldest = 0x0, IMAQdxOverwriteModeFail = 0x2, IMAQdxOverwriteModeGetNewest = 0x3, IMAQdxOverwriteModeGuard = 0xFFFFFFFF, } IMAQdxOverwriteMode; //============================================================================== // Incomplete Buffer Mode Enumeration //============================================================================== typedef enum IMAQdxIncompleteBufferMode_enum { IMAQdxIncompleteBufferModeIgnore, IMAQdxIncompleteBufferModeFail, IMAQdxIncompleteBufferModeGuard = 0xFFFFFFFF, } IMAQdxIncompleteBufferMode; //============================================================================== // Lost Packet Mode Enumeration //============================================================================== typedef enum IMAQdxLostPacketMode_enum { IMAQdxLostPacketModeIgnore, IMAQdxLostPacketModeFail, IMAQdxLostPacketModeGuard = 0xFFFFFFFF, } IMAQdxLostPacketMode; //============================================================================== // Attribute Visibility Enumeration //============================================================================== typedef enum IMAQdxAttributeVisibility_enum { IMAQdxAttributeVisibilitySimple = 0x00001000, IMAQdxAttributeVisibilityIntermediate = 0x00002000, IMAQdxAttributeVisibilityAdvanced = 0x00004000, IMAQdxAttributeVisibilityGuard = 0xFFFFFFFF, } IMAQdxAttributeVisibility; //============================================================================== // Stream Channel Mode Enumeration //============================================================================== typedef enum IMAQdxStreamChannelMode_enum { IMAQdxStreamChannelModeAutomatic, IMAQdxStreamChannelModeManual, IMAQdxStreamChannelModeGuard = 0xFFFFFFFF, } IMAQdxStreamChannelMode; //============================================================================== // Pixel Signedness Enumeration //============================================================================== typedef enum IMAQdxPixelSignedness_enum { IMAQdxPixelSignednessUnsigned, IMAQdxPixelSignednessSigned, IMAQdxPixelSignednessHardware, IMAQdxPixelSignednessGuard = 0xFFFFFFFF, } IMAQdxPixelSignedness; //============================================================================== // USB Connection Speed Enumeration //============================================================================== typedef enum IMAQdxUSBConnectionSpeed_enum { IMAQdxUSBConnectionSpeedLow = 1, IMAQdxUSBConnectionSpeedFull = 2, IMAQdxUSBConnectionSpeedHigh = 4, IMAQdxUSBConnectionSpeedSuper = 8, IMAQdxUSBConnectionSpeedGuard = 0xFFFFFFFF, } IMAQdxUSBConnectionSpeed; //============================================================================== // CVI Structures //============================================================================== #pragma pack(push, 4) //============================================================================== // Camera Information Structure //============================================================================== typedef struct IMAQdxCameraInformation_struct { uInt32 Type; uInt32 Version; uInt32 Flags; uInt32 SerialNumberHi; uInt32 SerialNumberLo; IMAQdxBusType BusType; char InterfaceName[IMAQDX_MAX_API_STRING_LENGTH]; char VendorName[IMAQDX_MAX_API_STRING_LENGTH]; char ModelName[IMAQDX_MAX_API_STRING_LENGTH]; char CameraFileName[IMAQDX_MAX_API_STRING_LENGTH]; char CameraAttributeURL[IMAQDX_MAX_API_STRING_LENGTH]; } IMAQdxCameraInformation; //============================================================================== // Camera File Structure //============================================================================== typedef struct IMAQdxCameraFile_struct { uInt32 Type; uInt32 Version; char FileName[IMAQDX_MAX_API_STRING_LENGTH]; } IMAQdxCameraFile; //============================================================================== // Attribute Information Structure //============================================================================== typedef struct IMAQdxAttributeInformation_struct { IMAQdxAttributeType Type; bool32 Readable; bool32 Writable; char Name[IMAQDX_MAX_API_STRING_LENGTH]; } IMAQdxAttributeInformation; //============================================================================== // Enumeration Item Structure //============================================================================== typedef struct IMAQdxEnumItem_struct { uInt32 Value; uInt32 Reserved; char Name[IMAQDX_MAX_API_STRING_LENGTH]; } IMAQdxEnumItem; //============================================================================== // Camera Information Structure //============================================================================== typedef IMAQdxEnumItem IMAQdxVideoMode; #pragma pack(pop) //============================================================================== // Callbacks //============================================================================== typedef uInt32 (NI_FUNC *FrameDoneEventCallbackPtr)(IMAQdxSession id, uInt32 bufferNumber, void* callbackData); typedef uInt32 (NI_FUNC *PnpEventCallbackPtr)(IMAQdxSession id, IMAQdxPnpEvent pnpEvent, void* callbackData); typedef void (NI_FUNC *AttributeUpdatedEventCallbackPtr)(IMAQdxSession id, const char* name, void* callbackData); #endif //niimaqdx_types //============================================================================== // Attributes //============================================================================== #define IMAQdxAttributeBaseAddress "CameraInformation::BaseAddress" // Read only. Gets the base address of the camera registers. #define IMAQdxAttributeBusType "CameraInformation::BusType" // Read only. Gets the bus type of the camera. #define IMAQdxAttributeModelName "CameraInformation::ModelName" // Read only. Returns the model name. #define IMAQdxAttributeSerialNumberHigh "CameraInformation::SerialNumberHigh" // Read only. Gets the upper 32-bits of the camera 64-bit serial number. #define IMAQdxAttributeSerialNumberLow "CameraInformation::SerialNumberLow" // Read only. Gets the lower 32-bits of the camera 64-bit serial number. #define IMAQdxAttributeVendorName "CameraInformation::VendorName" // Read only. Returns the vendor name. #define IMAQdxAttributeHostIPAddress "CameraInformation::HostIPAddress" // Read only. Returns the host adapter IP address. #define IMAQdxAttributeIPAddress "CameraInformation::IPAddress" // Read only. Returns the IP address. #define IMAQdxAttributePrimaryURLString "CameraInformation::PrimaryURLString" // Read only. Gets the camera's primary URL string. #define IMAQdxAttributeSecondaryURLString "CameraInformation::SecondaryURLString" // Read only. Gets the camera's secondary URL string. #define IMAQdxAttributeAcqInProgress "StatusInformation::AcqInProgress" // Read only. Gets the current state of the acquisition. TRUE if acquiring; otherwise FALSE. #define IMAQdxAttributeLastBufferCount "StatusInformation::LastBufferCount" // Read only. Gets the number of transferred buffers. #define IMAQdxAttributeLastBufferNumber "StatusInformation::LastBufferNumber" // Read only. Gets the last cumulative buffer number transferred. #define IMAQdxAttributeLostBufferCount "StatusInformation::LostBufferCount" // Read only. Gets the number of lost buffers during an acquisition session. #define IMAQdxAttributeLostPacketCount "StatusInformation::LostPacketCount" // Read only. Gets the number of lost packets during an acquisition session. #define IMAQdxAttributeRequestedResendPackets "StatusInformation::RequestedResendPacketCount" // Read only. Gets the number of packets requested to be resent during an acquisition session. #define IMAQdxAttributeReceivedResendPackets "StatusInformation::ReceivedResendPackets" // Read only. Gets the number of packets that were requested to be resent during an acquisition session and were completed. #define IMAQdxAttributeHandledEventCount "StatusInformation::HandledEventCount" // Read only. Gets the number of handled events during an acquisition session. #define IMAQdxAttributeLostEventCount "StatusInformation::LostEventCount" // Read only. Gets the number of lost events during an acquisition session. #define IMAQdxAttributeBayerGainB "AcquisitionAttributes::Bayer::GainB" // Sets/gets the white balance gain for the blue component of the Bayer conversion. #define IMAQdxAttributeBayerGainG "AcquisitionAttributes::Bayer::GainG" // Sets/gets the white balance gain for the green component of the Bayer conversion. #define IMAQdxAttributeBayerGainR "AcquisitionAttributes::Bayer::GainR" // Sets/gets the white balance gain for the red component of the Bayer conversion. #define IMAQdxAttributeBayerPattern "AcquisitionAttributes::Bayer::Pattern" // Sets/gets the Bayer pattern to use. #define IMAQdxAttributeStreamChannelMode "AcquisitionAttributes::Controller::StreamChannelMode" // Gets/sets the mode for allocating a FireWire stream channel. #define IMAQdxAttributeDesiredStreamChannel "AcquisitionAttributes::Controller::DesiredStreamChannel" // Gets/sets the stream channel to manually allocate. #define IMAQdxAttributeFrameInterval "AcquisitionAttributes::FrameInterval" // Read only. Gets the duration in milliseconds between successive frames. #define IMAQdxAttributeIgnoreFirstFrame "AcquisitionAttributes::IgnoreFirstFrame" // Gets/sets the video delay of one frame between starting the camera and receiving the video feed. #define IMAQdxAttributeOffsetX "OffsetX" // Gets/sets the left offset of the image. #define IMAQdxAttributeOffsetY "OffsetY" // Gets/sets the top offset of the image. #define IMAQdxAttributeWidth "Width" // Gets/sets the width of the image. #define IMAQdxAttributeHeight "Height" // Gets/sets the height of the image. #define IMAQdxAttributePixelFormat "PixelFormat" // Gets/sets the pixel format of the source sensor. #define IMAQdxAttributePacketSize "PacketSize" // Gets/sets the packet size in bytes. #define IMAQdxAttributePayloadSize "PayloadSize" // Gets/sets the frame size in bytes. #define IMAQdxAttributeSpeed "AcquisitionAttributes::Speed" // Gets/sets the transfer speed in Mbps for a FireWire packet. #define IMAQdxAttributeShiftPixelBits "AcquisitionAttributes::ShiftPixelBits" // Gets/sets the alignment of 16-bit cameras. Downshift the pixel bits if the camera returns most significant bit-aligned data. #define IMAQdxAttributeSwapPixelBytes "AcquisitionAttributes::SwapPixelBytes" // Gets/sets the endianness of 16-bit cameras. Swap the pixel bytes if the camera returns little endian data. #define IMAQdxAttributeOverwriteMode "AcquisitionAttributes::OverwriteMode" // Gets/sets the overwrite mode, used to determine acquisition when an image transfer cannot be completed due to an overwritten internal buffer. #define IMAQdxAttributeTimeout "AcquisitionAttributes::Timeout" // Gets/sets the timeout value in milliseconds, used to abort an acquisition when the image transfer cannot be completed within the delay. #define IMAQdxAttributeVideoMode "AcquisitionAttributes::VideoMode" // Gets/sets the video mode for a camera. #define IMAQdxAttributeBitsPerPixel "AcquisitionAttributes::BitsPerPixel" // Gets/sets the actual bits per pixel. For 16-bit components, this represents the actual bit depth (10-, 12-, 14-, or 16-bit). #define IMAQdxAttributePixelSignedness "AcquisitionAttributes::PixelSignedness" // Gets/sets the signedness of the pixel. For 16-bit components, this represents the actual pixel signedness (Signed, or Unsigned). #define IMAQdxAttributeReserveDualPackets "AcquisitionAttributes::ReserveDualPackets" // Gets/sets if dual packets will be reserved for a very large FireWire packet. #define IMAQdxAttributeReceiveTimestampMode "AcquisitionAttributes::ReceiveTimestampMode" // Gets/sets the mode for timestamping images received by the driver. #define IMAQdxAttributeActualPeakBandwidth "AcquisitionAttributes::AdvancedEthernet::BandwidthControl::ActualPeakBandwidth" // Read only. Returns the actual maximum peak bandwidth the camera will be configured to use. #define IMAQdxAttributeDesiredPeakBandwidth "AcquisitionAttributes::AdvancedEthernet::BandwidthControl::DesiredPeakBandwidth" // Gets/sets the desired maximum peak bandwidth the camera should use. #define IMAQdxAttributeDestinationMode "AcquisitionAttributes::AdvancedEthernet::Controller::DestinationMode" // Gets/Sets where the camera is instructed to send the image stream. #define IMAQdxAttributeDestinationMulticastAddress "AcquisitionAttributes::AdvancedEthernet::Controller::DestinationMulticastAddress" // Gets/Sets the multicast address the camera should send data in multicast mode. #define IMAQdxAttributeEventsEnabled "AcquisitionAttributes::AdvancedEthernet::EventParameters::EventsEnabled" // Gets/Sets if events will be handled. #define IMAQdxAttributeMaxOutstandingEvents "AcquisitionAttributes::AdvancedEthernet::EventParameters::MaxOutstandingEvents" // Gets/Sets the maximum number of outstanding events to queue. #define IMAQdxAttributeTestPacketEnabled "AcquisitionAttributes::AdvancedEthernet::TestPacketParameters::TestPacketEnabled" // Gets/Sets whether the driver will validate the image streaming settings using test packets prior to an acquisition #define IMAQdxAttributeTestPacketTimeout "AcquisitionAttributes::AdvancedEthernet::TestPacketParameters::TestPacketTimeout" // Gets/Sets the timeout for validating test packet reception (if enabled) #define IMAQdxAttributeMaxTestPacketRetries "AcquisitionAttributes::AdvancedEthernet::TestPacketParameters::MaxTestPacketRetries" // Gets/Sets the number of retries for validating test packet reception (if enabled) #define IMAQdxAttributeChunkDataDecodingEnabled "AcquisitionAttributes::ChunkDataDecoding::ChunkDataDecodingEnabled" // Gets/Sets whether the driver will decode any chunk data in the image stream #define IMAQdxAttributeChunkDataDecodingMaxElementSize "AcquisitionAttributes::ChunkDataDecoding::MaximumChunkCopySize" // Gets/Sets the maximum size of any single chunk data element that will be made available #define IMAQdxAttributeLostPacketMode "AcquisitionAttributes::AdvancedEthernet::LostPacketMode" // Gets/sets the behavior when the user extracts a buffer that has missing packets. #define IMAQdxAttributeMemoryWindowSize "AcquisitionAttributes::AdvancedEthernet::ResendParameters::MemoryWindowSize" // Gets/sets the size of the memory window of the camera in kilobytes. Should match the camera's internal buffer size. #define IMAQdxAttributeResendsEnabled "AcquisitionAttributes::AdvancedEthernet::ResendParameters::ResendsEnabled" // Gets/sets if resends will be issued for missing packets. #define IMAQdxAttributeResendThresholdPercentage "AcquisitionAttributes::AdvancedEthernet::ResendParameters::ResendThresholdPercentage" // Gets/sets the threshold of the packet processing window that will trigger packets to be resent. #define IMAQdxAttributeResendBatchingPercentage "AcquisitionAttributes::AdvancedEthernet::ResendParameters::ResendBatchingPercentage" // Gets/sets the percent of the packet resend threshold that will be issued as one group past the initial threshold sent in a single request. #define IMAQdxAttributeMaxResendsPerPacket "AcquisitionAttributes::AdvancedEthernet::ResendParameters::MaxResendsPerPacket" // Gets/sets the maximum number of resend requests that will be issued for a missing packet. #define IMAQdxAttributeResendResponseTimeout "AcquisitionAttributes::AdvancedEthernet::ResendParameters::ResendResponseTimeout" // Gets/sets the time to wait for a resend request to be satisfied before sending another. #define IMAQdxAttributeNewPacketTimeout "AcquisitionAttributes::AdvancedEthernet::ResendParameters::NewPacketTimeout" // Gets/sets the time to wait for new packets to arrive in a partially completed image before assuming the rest of the image was lost. #define IMAQdxAttributeMissingPacketTimeout "AcquisitionAttributes::AdvancedEthernet::ResendParameters::MissingPacketTimeout" // Gets/sets the time to wait for a missing packet before issuing a resend. #define IMAQdxAttributeResendTimerResolution "AcquisitionAttributes::AdvancedEthernet::ResendParameters::ResendTimerResolution" // Gets/sets the resolution of the packet processing system that is used for all packet-related timeouts. //============================================================================== // Functions //============================================================================== IMAQdxError NI_FUNC IMAQdxSnap(IMAQdxSession id, Image* image); IMAQdxError NI_FUNC IMAQdxConfigureGrab(IMAQdxSession id); IMAQdxError NI_FUNC IMAQdxGrab(IMAQdxSession id, Image* image, bool32 waitForNextBuffer, uInt32* actualBufferNumber); IMAQdxError NI_FUNC IMAQdxSequence(IMAQdxSession id, Image* images[], uInt32 count); IMAQdxError NI_FUNC IMAQdxDiscoverEthernetCameras(const char* address, uInt32 timeout); IMAQdxError NI_FUNC IMAQdxEnumerateCameras(IMAQdxCameraInformation cameraInformationArray[], uInt32* count, bool32 connectedOnly); IMAQdxError NI_FUNC IMAQdxResetCamera(const char* name, bool32 resetAll); IMAQdxError NI_FUNC IMAQdxOpenCamera(const char* name, IMAQdxCameraControlMode mode, IMAQdxSession* id); IMAQdxError NI_FUNC IMAQdxCloseCamera(IMAQdxSession id); IMAQdxError NI_FUNC IMAQdxConfigureAcquisition(IMAQdxSession id, bool32 continuous, uInt32 bufferCount); IMAQdxError NI_FUNC IMAQdxStartAcquisition(IMAQdxSession id); IMAQdxError NI_FUNC IMAQdxGetImage(IMAQdxSession id, Image* image, IMAQdxBufferNumberMode mode, uInt32 desiredBufferNumber, uInt32* actualBufferNumber); IMAQdxError NI_FUNC IMAQdxGetImageData(IMAQdxSession id, void* buffer, uInt32 bufferSize, IMAQdxBufferNumberMode mode, uInt32 desiredBufferNumber, uInt32* actualBufferNumber); IMAQdxError NI_FUNC IMAQdxStopAcquisition(IMAQdxSession id); IMAQdxError NI_FUNC IMAQdxUnconfigureAcquisition(IMAQdxSession id); IMAQdxError NI_FUNC IMAQdxEnumerateVideoModes(IMAQdxSession id, IMAQdxVideoMode videoModeArray[], uInt32* count, uInt32* currentMode); IMAQdxError NI_FUNC IMAQdxEnumerateAttributes(IMAQdxSession id, IMAQdxAttributeInformation attributeInformationArray[], uInt32* count, const char* root); IMAQdxError NI_FUNC IMAQdxGetAttribute(IMAQdxSession id, const char* name, IMAQdxValueType type, void* value); IMAQdxError NI_FUNCC IMAQdxSetAttribute(IMAQdxSession id, const char* name, IMAQdxValueType type, ...); IMAQdxError NI_FUNC IMAQdxGetAttributeMinimum(IMAQdxSession id, const char* name, IMAQdxValueType type, void* value); IMAQdxError NI_FUNC IMAQdxGetAttributeMaximum(IMAQdxSession id, const char* name, IMAQdxValueType type, void* value); IMAQdxError NI_FUNC IMAQdxGetAttributeIncrement(IMAQdxSession id, const char* name, IMAQdxValueType type, void* value); IMAQdxError NI_FUNC IMAQdxGetAttributeType(IMAQdxSession id, const char* name, IMAQdxAttributeType* type); IMAQdxError NI_FUNC IMAQdxIsAttributeReadable(IMAQdxSession id, const char* name, bool32* readable); IMAQdxError NI_FUNC IMAQdxIsAttributeWritable(IMAQdxSession id, const char* name, bool32* writable); IMAQdxError NI_FUNC IMAQdxEnumerateAttributeValues(IMAQdxSession id, const char* name, IMAQdxEnumItem list[], uInt32* size); IMAQdxError NI_FUNC IMAQdxGetAttributeTooltip(IMAQdxSession id, const char* name, char* tooltip, uInt32 length); IMAQdxError NI_FUNC IMAQdxGetAttributeUnits(IMAQdxSession id, const char* name, char* units, uInt32 length); IMAQdxError NI_FUNC IMAQdxRegisterFrameDoneEvent(IMAQdxSession id, uInt32 bufferInterval, FrameDoneEventCallbackPtr callbackFunction, void* callbackData); IMAQdxError NI_FUNC IMAQdxRegisterPnpEvent(IMAQdxSession id, IMAQdxPnpEvent event, PnpEventCallbackPtr callbackFunction, void* callbackData); IMAQdxError NI_FUNC IMAQdxWriteRegister(IMAQdxSession id, uInt32 offset, uInt32 value); IMAQdxError NI_FUNC IMAQdxReadRegister(IMAQdxSession id, uInt32 offset, uInt32* value); IMAQdxError NI_FUNC IMAQdxWriteMemory(IMAQdxSession id, uInt32 offset, const char* values, uInt32 count); IMAQdxError NI_FUNC IMAQdxReadMemory(IMAQdxSession id, uInt32 offset, char* values, uInt32 count); IMAQdxError NI_FUNC IMAQdxGetErrorString(IMAQdxError error, char* message, uInt32 messageLength); IMAQdxError NI_FUNC IMAQdxWriteAttributes(IMAQdxSession id, const char* filename); IMAQdxError NI_FUNC IMAQdxReadAttributes(IMAQdxSession id, const char* filename); IMAQdxError NI_FUNC IMAQdxResetEthernetCameraAddress(const char* name, const char* address, const char* subnet, const char* gateway, uInt32 timeout); IMAQdxError NI_FUNC IMAQdxEnumerateAttributes2(IMAQdxSession id, IMAQdxAttributeInformation attributeInformationArray[], uInt32* count, const char* root, IMAQdxAttributeVisibility visibility); IMAQdxError NI_FUNC IMAQdxGetAttributeVisibility(IMAQdxSession id, const char* name, IMAQdxAttributeVisibility* visibility); IMAQdxError NI_FUNC IMAQdxGetAttributeDescription(IMAQdxSession id, const char* name, char* description, uInt32 length); IMAQdxError NI_FUNC IMAQdxGetAttributeDisplayName(IMAQdxSession id, const char* name, char* displayName, uInt32 length); IMAQdxError NI_FUNC IMAQdxDispose(void* buffer); IMAQdxError NI_FUNC IMAQdxRegisterAttributeUpdatedEvent(IMAQdxSession id, const char* name, AttributeUpdatedEventCallbackPtr callbackFunction, void* callbackData); IMAQdxError NI_FUNC IMAQdxEnumerateAttributes3(IMAQdxSession id, IMAQdxAttributeInformation attributeInformationArray[], uInt32* count, const char* root, IMAQdxAttributeVisibility visibility); #ifdef __cplusplus } #endif #endif // ___niimaqdx_h___