first commit
This commit is contained in:
commit
f61a9394ec
64
CMakeLists.txt
Normal file
64
CMakeLists.txt
Normal file
@ -0,0 +1,64 @@
|
||||
cmake_minimum_required(VERSION 3.24)
|
||||
|
||||
PROJECT(lidar_camera)
|
||||
|
||||
set(CMAKE_SOURCE_DIR "./")
|
||||
|
||||
|
||||
message(STATUS "========================")
|
||||
message(STATUS ${CMAKE_SYSTEM_NAME})
|
||||
message(STATUS ${CMAKE_SYSTEM_PROCESSOR})
|
||||
message(STATUS "========================")
|
||||
|
||||
|
||||
find_package(OpenCV 4.10)
|
||||
if(NOT OpenCV_FOUND)
|
||||
message(FATAL_ERROR "OpenCV > 4.10 not found.")
|
||||
endif()
|
||||
MESSAGE(${OpenCV_VERSION})
|
||||
|
||||
# 检测操作系统和架构
|
||||
if(CMAKE_SYSTEM_NAME STREQUAL "Linux")
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
|
||||
set(PLATFORM "linux/x64")
|
||||
elseif(CMAKE_SYSTEM_PROCESSOR STREQUAL "aarch64")
|
||||
set(PLATFORM "linux/aarch64")
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported architecture on Linux")
|
||||
endif()
|
||||
elseif(CMAKE_SYSTEM_NAME STREQUAL "Windows")
|
||||
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
|
||||
set(PLATFORM "windows/x64")
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported architecture on Windows")
|
||||
endif()
|
||||
else()
|
||||
message(FATAL_ERROR "Unsupported operating system")
|
||||
endif()
|
||||
|
||||
# 输出当前系统和架构
|
||||
message(STATUS "operating system: ${PLATFORM}")
|
||||
|
||||
SET(CMAKE_RUNTIME_OUTPUT_DIRECTORY "${CMAKE_SOURCE_DIR}/output/")
|
||||
|
||||
INCLUDE_DIRECTORIES(
|
||||
"/include"
|
||||
"/usr/include"
|
||||
)
|
||||
# LINK_DIRECTORIES(
|
||||
# "/opt/HuarayTech/MVviewer/lib"
|
||||
# "/opt/HuarayTech/MVviewer/bin"
|
||||
# )
|
||||
|
||||
aux_source_directory(${CMAKE_SOURCE_DIR}/ SRCLIST)
|
||||
|
||||
add_executable(${PROJECT_NAME} ${SRCLIST})
|
||||
target_link_libraries(${PROJECT_NAME} dl)
|
||||
target_link_libraries(${PROJECT_NAME} pthread)
|
||||
target_link_libraries(${PROJECT_NAME} "/lib" ${OpenCV_LIBS})
|
||||
|
||||
add_library(CameraDriver MODULE ${SRCLIST})
|
||||
target_link_libraries(CameraDriver dl)
|
||||
target_link_libraries(CameraDriver pthread)
|
||||
target_link_libraries(CameraDriver "/lib" ${OpenCV_LIBS})
|
||||
|
1174
CameraDriver.cpp
Normal file
1174
CameraDriver.cpp
Normal file
File diff suppressed because it is too large
Load Diff
99
CameraDriver.h
Normal file
99
CameraDriver.h
Normal file
@ -0,0 +1,99 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#ifndef _WIN32
|
||||
#include <unistd.h>
|
||||
#include <pthread.h>
|
||||
#include <dlfcn.h>
|
||||
#endif // !_WIN32
|
||||
#include "IMVApi.h"
|
||||
#include "IMVDefines.h"
|
||||
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
extern "C"{
|
||||
|
||||
#define MONO_CHANNEL_NUM 1
|
||||
#define RGB_CHANNEL_NUM 3
|
||||
#define BGR_CHANNEL_NUM 3
|
||||
|
||||
#define sleep(ms) usleep(1000 * ms)
|
||||
|
||||
typedef const char* (IMV_CALL * DLL_GetVersion) ();
|
||||
typedef int (IMV_CALL * DLL_EnumDevices) (OUT IMV_DeviceList *pDeviceList, IN unsigned int interfaceType);
|
||||
typedef int (IMV_CALL * DLL_EnumDevicesByUnicast) (OUT IMV_DeviceList *pDeviceList, IN const char* pIpAddress);
|
||||
typedef int (IMV_CALL * DLL_CreateHandle) (OUT IMV_HANDLE* handle, IN IMV_ECreateHandleMode mode, IN void* pIdentifier);
|
||||
typedef int (IMV_CALL * DLL_DestroyHandle) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_GetDeviceInfo) (IN IMV_HANDLE handle, OUT IMV_DeviceInfo *pDevInfo);
|
||||
typedef int (IMV_CALL * DLL_Open) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_OpenEx) (IN IMV_HANDLE handle, IN IMV_ECameraAccessPermission accessPermission);
|
||||
typedef bool (IMV_CALL * DLL_IsOpen) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_Close) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_GIGE_ForceIpAddress) (IN IMV_HANDLE handle, IN const char* pIpAddress, IN const char* pSubnetMask, IN const char* pGateway);
|
||||
typedef int (IMV_CALL * DLL_GIGE_GetAccessPermission) (IN IMV_HANDLE handle, IMV_ECameraAccessPermission* pAccessPermission);
|
||||
typedef int (IMV_CALL * DLL_GIGE_SetAnswerTimeout) (IN IMV_HANDLE handle, IN unsigned int timeout);
|
||||
typedef int (IMV_CALL * DLL_DownLoadGenICamXML) (IN IMV_HANDLE handle, IN const char* pFullFileName);
|
||||
typedef int (IMV_CALL * DLL_SaveDeviceCfg) (IN IMV_HANDLE handle, IN const char* pFullFileName);
|
||||
typedef int (IMV_CALL * DLL_LoadDeviceCfg) (IN IMV_HANDLE handle, IN const char* pFullFileName, OUT IMV_ErrorList* pErrorList);
|
||||
typedef int (IMV_CALL * DLL_WriteUserPrivateData) (IN IMV_HANDLE handle, IN void* pBuffer, IN_OUT unsigned int* pLength);
|
||||
typedef int (IMV_CALL * DLL_ReadUserPrivateData) (IN IMV_HANDLE handle, OUT void* pBuffer, IN_OUT unsigned int* pLength);
|
||||
typedef int (IMV_CALL * DLL_WriteUARTData) (IN IMV_HANDLE handle, IN void* pBuffer, IN_OUT unsigned int* pLength);
|
||||
typedef int (IMV_CALL * DLL_ReadUARTData) (IN IMV_HANDLE handle, OUT void* pBuffer, IN_OUT unsigned int* pLength);
|
||||
typedef int (IMV_CALL * DLL_SubscribeConnectArg) (IN IMV_HANDLE handle, IN IMV_ConnectCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_SubscribeParamUpdateArg) (IN IMV_HANDLE handle, IN IMV_ParamUpdateCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_SubscribeStreamArg) (IN IMV_HANDLE handle, IN IMV_StreamCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_SubscribeMsgChannelArg) (IN IMV_HANDLE handle, IN IMV_MsgChannelCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_SetBufferCount) (IN IMV_HANDLE handle, IN unsigned int nSize);
|
||||
typedef int (IMV_CALL * DLL_ClearFrameBuffer) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_GIGE_SetInterPacketTimeout) (IN IMV_HANDLE handle, IN unsigned int nTimeout);
|
||||
typedef int (IMV_CALL * DLL_GIGE_SetSingleResendMaxPacketNum) (IN IMV_HANDLE handle, IN unsigned int maxPacketNum);
|
||||
typedef int (IMV_CALL * DLL_GIGE_SetMaxLostPacketNum) (IN IMV_HANDLE handle, IN unsigned int maxLostPacketNum);
|
||||
typedef int (IMV_CALL * DLL_StartGrabbing) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_StartGrabbingEx) (IN IMV_HANDLE handle, IN uint64_t maxImagesGrabbed, IN IMV_EGrabStrategy strategy);
|
||||
typedef bool (IMV_CALL * DLL_IsGrabbing) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_StopGrabbing) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_AttachGrabbing) (IN IMV_HANDLE handle, IN IMV_FrameCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_GetFrame) (IN IMV_HANDLE handle, OUT IMV_Frame* pFrame, IN unsigned int timeoutMS);
|
||||
typedef int (IMV_CALL * DLL_ReleaseFrame) (IN IMV_HANDLE handle, IN IMV_Frame* pFrame);
|
||||
typedef int (IMV_CALL * DLL_CloneFrame) (IN IMV_HANDLE handle, IN IMV_Frame* pFrame, OUT IMV_Frame* pCloneFrame);
|
||||
typedef int (IMV_CALL * DLL_GetChunkDataByIndex) (IN IMV_HANDLE handle, IN IMV_Frame* pFrame, IN unsigned int index, OUT IMV_ChunkDataInfo *pChunkDataInfo);
|
||||
typedef int (IMV_CALL * DLL_GetStatisticsInfo) (IN IMV_HANDLE handle, OUT IMV_StreamStatisticsInfo* pStreamStatsInfo);
|
||||
typedef int (IMV_CALL * DLL_ResetStatisticsInfo) (IN IMV_HANDLE handle);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsAvailable) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsReadable) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsWriteable) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsStreamable) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsValid) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef int (IMV_CALL * DLL_GetIntFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT int64_t* pIntValue);
|
||||
typedef int (IMV_CALL * DLL_GetIntFeatureMin) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT int64_t* pIntValue);
|
||||
typedef int (IMV_CALL * DLL_GetIntFeatureMax) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT int64_t* pIntValue);
|
||||
typedef int (IMV_CALL * DLL_GetIntFeatureInc) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT int64_t* pIntValue);
|
||||
typedef int (IMV_CALL * DLL_SetIntFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN int64_t intValue);
|
||||
typedef int (IMV_CALL * DLL_GetDoubleFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT double* pDoubleValue);
|
||||
typedef int (IMV_CALL * DLL_GetDoubleFeatureMin) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT double* pDoubleValue);
|
||||
typedef int (IMV_CALL * DLL_GetDoubleFeatureMax) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT double* pDoubleValue);
|
||||
typedef int (IMV_CALL * DLL_SetDoubleFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN double doubleValue);
|
||||
typedef int (IMV_CALL * DLL_GetBoolFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT bool* pBoolValue);
|
||||
typedef int (IMV_CALL * DLL_SetBoolFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN bool boolValue);
|
||||
typedef int (IMV_CALL * DLL_GetEnumFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT uint64_t* pEnumValue);
|
||||
typedef int (IMV_CALL * DLL_SetEnumFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN uint64_t enumValue);
|
||||
typedef int (IMV_CALL * DLL_GetEnumFeatureSymbol) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT IMV_String* pEnumSymbol);
|
||||
typedef int (IMV_CALL * DLL_SetEnumFeatureSymbol) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN const char* pEnumSymbol);
|
||||
typedef int (IMV_CALL * DLL_GetEnumFeatureEntryNum) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT unsigned int* pEntryNum);
|
||||
typedef int (IMV_CALL * DLL_GetEnumFeatureEntrys) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT IMV_EnumEntryList* pEnumEntryList);
|
||||
typedef int (IMV_CALL * DLL_GetStringFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT IMV_String* pStringValue);
|
||||
typedef int (IMV_CALL * DLL_SetStringFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN const char* pStringValue);
|
||||
typedef int (IMV_CALL * DLL_ExecuteCommandFeature) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef int (IMV_CALL * DLL_PixelConvert) (IN IMV_HANDLE handle, IN_OUT IMV_PixelConvertParam* pstPixelConvertParam);
|
||||
typedef int (IMV_CALL * DLL_OpenRecord) (IN IMV_HANDLE handle, IN IMV_RecordParam *pstRecordParam);
|
||||
typedef int (IMV_CALL * DLL_InputOneFrame) (IN IMV_HANDLE handle, IN IMV_RecordFrameInfoParam *pstRecordFrameInfoParam);
|
||||
typedef int (IMV_CALL * DLL_CloseRecord) (IN IMV_HANDLE handle);
|
||||
|
||||
|
||||
int camera_init();
|
||||
int camera_start(int epx_time = 12 * 10000);
|
||||
int camera_stop();
|
||||
int camera_cap(void** data, int& w, int& h, int time_out);
|
||||
|
||||
}
|
798
CameraPublisher.cpp.bak
Normal file
798
CameraPublisher.cpp.bak
Normal file
@ -0,0 +1,798 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <pthread.h>
|
||||
#include <dlfcn.h>
|
||||
#include "IMVApi.h"
|
||||
#include "IMVDefines.h"
|
||||
|
||||
#include <opencv2/opencv.hpp>
|
||||
#include <opencv2/core.hpp>
|
||||
|
||||
extern "C"{
|
||||
|
||||
#define MONO_CHANNEL_NUM 1
|
||||
#define RGB_CHANNEL_NUM 3
|
||||
#define BGR_CHANNEL_NUM 3
|
||||
|
||||
#define sleep(ms) usleep(1000 * ms)
|
||||
|
||||
typedef const char* (IMV_CALL * DLL_GetVersion) ();
|
||||
typedef int (IMV_CALL * DLL_EnumDevices) (OUT IMV_DeviceList *pDeviceList, IN unsigned int interfaceType);
|
||||
typedef int (IMV_CALL * DLL_EnumDevicesByUnicast) (OUT IMV_DeviceList *pDeviceList, IN const char* pIpAddress);
|
||||
typedef int (IMV_CALL * DLL_CreateHandle) (OUT IMV_HANDLE* handle, IN IMV_ECreateHandleMode mode, IN void* pIdentifier);
|
||||
typedef int (IMV_CALL * DLL_DestroyHandle) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_GetDeviceInfo) (IN IMV_HANDLE handle, OUT IMV_DeviceInfo *pDevInfo);
|
||||
typedef int (IMV_CALL * DLL_Open) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_OpenEx) (IN IMV_HANDLE handle, IN IMV_ECameraAccessPermission accessPermission);
|
||||
typedef bool (IMV_CALL * DLL_IsOpen) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_Close) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_GIGE_ForceIpAddress) (IN IMV_HANDLE handle, IN const char* pIpAddress, IN const char* pSubnetMask, IN const char* pGateway);
|
||||
typedef int (IMV_CALL * DLL_GIGE_GetAccessPermission) (IN IMV_HANDLE handle, IMV_ECameraAccessPermission* pAccessPermission);
|
||||
typedef int (IMV_CALL * DLL_GIGE_SetAnswerTimeout) (IN IMV_HANDLE handle, IN unsigned int timeout);
|
||||
typedef int (IMV_CALL * DLL_DownLoadGenICamXML) (IN IMV_HANDLE handle, IN const char* pFullFileName);
|
||||
typedef int (IMV_CALL * DLL_SaveDeviceCfg) (IN IMV_HANDLE handle, IN const char* pFullFileName);
|
||||
typedef int (IMV_CALL * DLL_LoadDeviceCfg) (IN IMV_HANDLE handle, IN const char* pFullFileName, OUT IMV_ErrorList* pErrorList);
|
||||
typedef int (IMV_CALL * DLL_WriteUserPrivateData) (IN IMV_HANDLE handle, IN void* pBuffer, IN_OUT unsigned int* pLength);
|
||||
typedef int (IMV_CALL * DLL_ReadUserPrivateData) (IN IMV_HANDLE handle, OUT void* pBuffer, IN_OUT unsigned int* pLength);
|
||||
typedef int (IMV_CALL * DLL_WriteUARTData) (IN IMV_HANDLE handle, IN void* pBuffer, IN_OUT unsigned int* pLength);
|
||||
typedef int (IMV_CALL * DLL_ReadUARTData) (IN IMV_HANDLE handle, OUT void* pBuffer, IN_OUT unsigned int* pLength);
|
||||
typedef int (IMV_CALL * DLL_SubscribeConnectArg) (IN IMV_HANDLE handle, IN IMV_ConnectCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_SubscribeParamUpdateArg) (IN IMV_HANDLE handle, IN IMV_ParamUpdateCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_SubscribeStreamArg) (IN IMV_HANDLE handle, IN IMV_StreamCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_SubscribeMsgChannelArg) (IN IMV_HANDLE handle, IN IMV_MsgChannelCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_SetBufferCount) (IN IMV_HANDLE handle, IN unsigned int nSize);
|
||||
typedef int (IMV_CALL * DLL_ClearFrameBuffer) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_GIGE_SetInterPacketTimeout) (IN IMV_HANDLE handle, IN unsigned int nTimeout);
|
||||
typedef int (IMV_CALL * DLL_GIGE_SetSingleResendMaxPacketNum) (IN IMV_HANDLE handle, IN unsigned int maxPacketNum);
|
||||
typedef int (IMV_CALL * DLL_GIGE_SetMaxLostPacketNum) (IN IMV_HANDLE handle, IN unsigned int maxLostPacketNum);
|
||||
typedef int (IMV_CALL * DLL_StartGrabbing) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_StartGrabbingEx) (IN IMV_HANDLE handle, IN uint64_t maxImagesGrabbed, IN IMV_EGrabStrategy strategy);
|
||||
typedef bool (IMV_CALL * DLL_IsGrabbing) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_StopGrabbing) (IN IMV_HANDLE handle);
|
||||
typedef int (IMV_CALL * DLL_AttachGrabbing) (IN IMV_HANDLE handle, IN IMV_FrameCallBack proc, IN void* pUser);
|
||||
typedef int (IMV_CALL * DLL_GetFrame) (IN IMV_HANDLE handle, OUT IMV_Frame* pFrame, IN unsigned int timeoutMS);
|
||||
typedef int (IMV_CALL * DLL_ReleaseFrame) (IN IMV_HANDLE handle, IN IMV_Frame* pFrame);
|
||||
typedef int (IMV_CALL * DLL_CloneFrame) (IN IMV_HANDLE handle, IN IMV_Frame* pFrame, OUT IMV_Frame* pCloneFrame);
|
||||
typedef int (IMV_CALL * DLL_GetChunkDataByIndex) (IN IMV_HANDLE handle, IN IMV_Frame* pFrame, IN unsigned int index, OUT IMV_ChunkDataInfo *pChunkDataInfo);
|
||||
typedef int (IMV_CALL * DLL_GetStatisticsInfo) (IN IMV_HANDLE handle, OUT IMV_StreamStatisticsInfo* pStreamStatsInfo);
|
||||
typedef int (IMV_CALL * DLL_ResetStatisticsInfo) (IN IMV_HANDLE handle);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsAvailable) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsReadable) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsWriteable) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsStreamable) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef bool (IMV_CALL * DLL_FeatureIsValid) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef int (IMV_CALL * DLL_GetIntFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT int64_t* pIntValue);
|
||||
typedef int (IMV_CALL * DLL_GetIntFeatureMin) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT int64_t* pIntValue);
|
||||
typedef int (IMV_CALL * DLL_GetIntFeatureMax) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT int64_t* pIntValue);
|
||||
typedef int (IMV_CALL * DLL_GetIntFeatureInc) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT int64_t* pIntValue);
|
||||
typedef int (IMV_CALL * DLL_SetIntFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN int64_t intValue);
|
||||
typedef int (IMV_CALL * DLL_GetDoubleFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT double* pDoubleValue);
|
||||
typedef int (IMV_CALL * DLL_GetDoubleFeatureMin) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT double* pDoubleValue);
|
||||
typedef int (IMV_CALL * DLL_GetDoubleFeatureMax) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT double* pDoubleValue);
|
||||
typedef int (IMV_CALL * DLL_SetDoubleFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN double doubleValue);
|
||||
typedef int (IMV_CALL * DLL_GetBoolFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT bool* pBoolValue);
|
||||
typedef int (IMV_CALL * DLL_SetBoolFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN bool boolValue);
|
||||
typedef int (IMV_CALL * DLL_GetEnumFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT uint64_t* pEnumValue);
|
||||
typedef int (IMV_CALL * DLL_SetEnumFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN uint64_t enumValue);
|
||||
typedef int (IMV_CALL * DLL_GetEnumFeatureSymbol) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT IMV_String* pEnumSymbol);
|
||||
typedef int (IMV_CALL * DLL_SetEnumFeatureSymbol) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN const char* pEnumSymbol);
|
||||
typedef int (IMV_CALL * DLL_GetEnumFeatureEntryNum) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT unsigned int* pEntryNum);
|
||||
typedef int (IMV_CALL * DLL_GetEnumFeatureEntrys) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT IMV_EnumEntryList* pEnumEntryList);
|
||||
typedef int (IMV_CALL * DLL_GetStringFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, OUT IMV_String* pStringValue);
|
||||
typedef int (IMV_CALL * DLL_SetStringFeatureValue) (IN IMV_HANDLE handle, IN const char* pFeatureName, IN const char* pStringValue);
|
||||
typedef int (IMV_CALL * DLL_ExecuteCommandFeature) (IN IMV_HANDLE handle, IN const char* pFeatureName);
|
||||
typedef int (IMV_CALL * DLL_PixelConvert) (IN IMV_HANDLE handle, IN_OUT IMV_PixelConvertParam* pstPixelConvertParam);
|
||||
typedef int (IMV_CALL * DLL_OpenRecord) (IN IMV_HANDLE handle, IN IMV_RecordParam *pstRecordParam);
|
||||
typedef int (IMV_CALL * DLL_InputOneFrame) (IN IMV_HANDLE handle, IN IMV_RecordFrameInfoParam *pstRecordFrameInfoParam);
|
||||
typedef int (IMV_CALL * DLL_CloseRecord) (IN IMV_HANDLE handle);
|
||||
|
||||
|
||||
|
||||
// ***********开始: 这部分处理与SDK操作相机无关,用于显示设备列表 ***********
|
||||
// ***********BEGIN: These functions are not related to API call and used to display device info***********
|
||||
// 数据帧回调函数
|
||||
// Data frame callback function
|
||||
static void onGetFrame(IMV_Frame* pFrame, void* pUser)
|
||||
{
|
||||
if (pFrame == NULL)
|
||||
{
|
||||
printf("pFrame is NULL\n");
|
||||
return;
|
||||
}
|
||||
|
||||
printf("Get frame blockId = %llu\n", pFrame->frameInfo.blockId);
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static void displayDeviceInfo(IMV_DeviceList deviceInfoList)
|
||||
{
|
||||
IMV_DeviceInfo* pDevInfo = NULL;
|
||||
unsigned int cameraIndex = 0;
|
||||
char vendorNameCat[11];
|
||||
char cameraNameCat[16];
|
||||
|
||||
// 打印Title行
|
||||
// Print title line
|
||||
printf("\nIdx Type Vendor Model S/N DeviceUserID IP Address \n");
|
||||
printf("------------------------------------------------------------------------------\n");
|
||||
|
||||
for (cameraIndex = 0; cameraIndex < deviceInfoList.nDevNum; cameraIndex++)
|
||||
{
|
||||
pDevInfo = &deviceInfoList.pDevInfo[cameraIndex];
|
||||
// 设备列表的相机索引 最大表示字数:3
|
||||
// Camera index in device list, display in 3 characters
|
||||
printf("%-3d", cameraIndex + 1);
|
||||
|
||||
// 相机的设备类型(GigE,U3V,CL,PCIe)
|
||||
// Camera type
|
||||
switch (pDevInfo->nCameraType)
|
||||
{
|
||||
case typeGigeCamera:printf(" GigE");break;
|
||||
case typeU3vCamera:printf(" U3V ");break;
|
||||
case typeCLCamera:printf(" CL ");break;
|
||||
case typePCIeCamera:printf(" PCIe");break;
|
||||
default:printf(" ");break;
|
||||
}
|
||||
|
||||
// 制造商信息 最大表示字数:10
|
||||
// Camera vendor name, display in 10 characters
|
||||
if (strlen(pDevInfo->vendorName) > 10)
|
||||
{
|
||||
memcpy(vendorNameCat, pDevInfo->vendorName, 7);
|
||||
vendorNameCat[7] = '\0';
|
||||
strcat(vendorNameCat, "...");
|
||||
printf(" %-10.10s", vendorNameCat);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf(" %-10.10s", pDevInfo->vendorName);
|
||||
}
|
||||
|
||||
// 相机的型号信息 最大表示字数:10
|
||||
// Camera model name, display in 10 characters
|
||||
printf(" %-10.10s", pDevInfo->modelName);
|
||||
|
||||
// 相机的序列号 最大表示字数:15
|
||||
// Camera serial number, display in 15 characters
|
||||
printf(" %-15.15s", pDevInfo->serialNumber);
|
||||
|
||||
// 自定义用户ID 最大表示字数:15
|
||||
// Camera user id, display in 15 characters
|
||||
if (strlen(pDevInfo->cameraName) > 15)
|
||||
{
|
||||
memcpy(cameraNameCat, pDevInfo->cameraName, 12);
|
||||
cameraNameCat[12] = '\0';
|
||||
strcat(cameraNameCat, "...");
|
||||
printf(" %-15.15s", cameraNameCat);
|
||||
}
|
||||
else
|
||||
{
|
||||
printf(" %-15.15s", pDevInfo->cameraName);
|
||||
}
|
||||
|
||||
// GigE相机时获取IP地址
|
||||
// IP address of GigE camera
|
||||
if (pDevInfo->nCameraType == typeGigeCamera)
|
||||
{
|
||||
printf(" %s", pDevInfo->DeviceSpecificInfo.gigeDeviceInfo.ipAddress);
|
||||
}
|
||||
|
||||
printf("\n");
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
static char* trim(char* pStr)
|
||||
{
|
||||
char* pDst = pStr;
|
||||
char* pTemStr = NULL;
|
||||
|
||||
if (pDst != NULL)
|
||||
{
|
||||
pTemStr = pDst + strlen(pStr) - 1;
|
||||
while (*pDst == ' ')
|
||||
{
|
||||
pDst++;
|
||||
}
|
||||
while ((pTemStr > pDst) && (*pTemStr == ' '))
|
||||
{
|
||||
*pTemStr-- = '\0';
|
||||
}
|
||||
}
|
||||
return pDst;
|
||||
}
|
||||
|
||||
static int isInputValid(char* pInpuStr)
|
||||
{
|
||||
char numChar;
|
||||
char* pStr = pInpuStr;
|
||||
while (*pStr != '\0')
|
||||
{
|
||||
numChar = *pStr;
|
||||
if ((numChar > '9') || (numChar < '0'))
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
pStr++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
static unsigned int selectDevice(unsigned int cameraCnt)
|
||||
{
|
||||
char inputStr[256];
|
||||
char* pTrimStr;
|
||||
int inputIndex = -1;
|
||||
int ret = -1;
|
||||
char* find = NULL;
|
||||
|
||||
printf("\nPlease input the camera index: ");
|
||||
while (1)
|
||||
{
|
||||
memset(inputStr, 0, sizeof(inputStr));
|
||||
fgets(inputStr, sizeof(inputStr), stdin);
|
||||
|
||||
// 清空输入缓存
|
||||
// clear flush
|
||||
fflush(stdin);
|
||||
|
||||
// fgets比gets多吃一个换行符号,取出换行符号
|
||||
// fgets eats one more line feed symbol than gets, and takes out the line feed symbol
|
||||
find = strchr(inputStr, '\n');
|
||||
if (find) { *find = '\0'; }
|
||||
|
||||
pTrimStr = trim(inputStr);
|
||||
ret = isInputValid(pTrimStr);
|
||||
if (ret == 0)
|
||||
{
|
||||
inputIndex = atoi(pTrimStr);
|
||||
// 输入的序号从1开始
|
||||
// Input index starts from 1
|
||||
inputIndex -= 1;
|
||||
if ((inputIndex >= 0) && (inputIndex < (int)cameraCnt))
|
||||
{
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
printf("Input invalid! Please input the camera index: ");
|
||||
}
|
||||
return (unsigned int)inputIndex;
|
||||
}
|
||||
|
||||
// ***********结束: 这部分处理与SDK操作相机无关,用于显示设备列表 ***********
|
||||
// ***********END: These functions are not related to API call and used to display device info***********
|
||||
static int setSoftTriggerConf(void* libHandle, IMV_HANDLE devHandle)
|
||||
{
|
||||
int ret = IMV_OK;
|
||||
// 获取设置触发源为软触发函数地址
|
||||
DLL_SetEnumFeatureSymbol DLLSetEnumFeatureSymbol = (DLL_SetEnumFeatureSymbol)dlsym(libHandle, "IMV_SetEnumFeatureSymbol");
|
||||
if (NULL == DLLSetEnumFeatureSymbol)
|
||||
{
|
||||
printf("Get IMV_SetEnumFeatureSymbol address failed!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 设置触发源为软触发
|
||||
// Set trigger source to Software
|
||||
ret = DLLSetEnumFeatureSymbol(devHandle, "TriggerSource", "Software");
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Set triggerSource value failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 设置触发器
|
||||
// Set trigger selector to FrameStart
|
||||
ret = DLLSetEnumFeatureSymbol(devHandle, "TriggerSelector", "FrameStart");
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Set triggerSelector value failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 设置触发模式
|
||||
// Set trigger mode to On
|
||||
ret = DLLSetEnumFeatureSymbol(devHandle, "TriggerMode", "On");
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Set triggerMode value failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
// Image convert
|
||||
static int imageConvert(void* libHandle, IMV_HANDLE devHandle, IMV_Frame frame, IMV_EPixelType convertFormat)
|
||||
{
|
||||
IMV_PixelConvertParam stPixelConvertParam;
|
||||
unsigned char* pDstBuf = NULL;
|
||||
unsigned int nDstBufSize = 0;
|
||||
int ret = IMV_OK;
|
||||
FILE* hFile = NULL;
|
||||
const char* pFileName = NULL;
|
||||
const char* pConvertFormatStr = NULL;
|
||||
|
||||
// 获取设置触发源为软触发函数地址
|
||||
DLL_PixelConvert DLLPixelConvert = (DLL_PixelConvert)dlsym(libHandle, "IMV_PixelConvert");
|
||||
if (NULL == DLLPixelConvert)
|
||||
{
|
||||
printf("Get IMV_PixelConvert address failed!\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
switch (convertFormat)
|
||||
{
|
||||
case gvspPixelRGB8:
|
||||
nDstBufSize = sizeof(unsigned char) * frame.frameInfo.width * frame.frameInfo.height * 3;
|
||||
pFileName = (const char*)"convertRGB8.bmp";
|
||||
pConvertFormatStr = (const char*)"RGB8";
|
||||
break;
|
||||
|
||||
case gvspPixelBGR8:
|
||||
nDstBufSize = sizeof(unsigned char) * frame.frameInfo.width * frame.frameInfo.height * 3;
|
||||
pFileName = (const char*)"convertBGR8.bmp";
|
||||
pConvertFormatStr = (const char*)"BGR8";
|
||||
break;
|
||||
case gvspPixelBGRA8:
|
||||
nDstBufSize = sizeof(unsigned char) * frame.frameInfo.width * frame.frameInfo.height * 4;
|
||||
pFileName = (const char*)"convertBGRA8.bmp";
|
||||
pConvertFormatStr = (const char*)"BGRA8";
|
||||
break;
|
||||
case gvspPixelMono8:
|
||||
default:
|
||||
nDstBufSize = sizeof(unsigned char) * frame.frameInfo.width * frame.frameInfo.height;
|
||||
pFileName = (const char*)"convertMono8.bmp";
|
||||
pConvertFormatStr = (const char*)"Mono8";
|
||||
break;
|
||||
}
|
||||
|
||||
pDstBuf = (unsigned char*)malloc(nDstBufSize);
|
||||
if (NULL == pDstBuf)
|
||||
{
|
||||
printf("malloc pDstBuf failed!\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
// 图像转换成BGR8
|
||||
// convert image to BGR8
|
||||
memset(&stPixelConvertParam, 0, sizeof(stPixelConvertParam));
|
||||
stPixelConvertParam.nWidth = frame.frameInfo.width;
|
||||
stPixelConvertParam.nHeight = frame.frameInfo.height;
|
||||
stPixelConvertParam.ePixelFormat = frame.frameInfo.pixelFormat;
|
||||
stPixelConvertParam.pSrcData = frame.pData;
|
||||
stPixelConvertParam.nSrcDataLen = frame.frameInfo.size;
|
||||
stPixelConvertParam.nPaddingX = frame.frameInfo.paddingX;
|
||||
stPixelConvertParam.nPaddingY = frame.frameInfo.paddingY;
|
||||
stPixelConvertParam.eBayerDemosaic = demosaicNearestNeighbor;
|
||||
stPixelConvertParam.eDstPixelFormat = convertFormat;
|
||||
stPixelConvertParam.pDstBuf = pDstBuf;
|
||||
stPixelConvertParam.nDstBufSize = nDstBufSize;
|
||||
|
||||
|
||||
ret = DLLPixelConvert(devHandle, &stPixelConvertParam);
|
||||
if (IMV_OK == ret)
|
||||
{
|
||||
printf("image convert to %s successfully! nDstDataLen (%u)\n",
|
||||
pConvertFormatStr, stPixelConvertParam.nDstBufSize);
|
||||
|
||||
cv::Mat im(stPixelConvertParam.nHeight, stPixelConvertParam.nWidth, CV_8UC3, stPixelConvertParam.pDstBuf);
|
||||
|
||||
// // for test
|
||||
// // 内参矩阵
|
||||
// cv::Mat cameraMatrix = (cv::Mat_<double>(3, 3) << 11057.154, 0, 4538.85, 0, 11044.943, 3350.918, 0, 0, 1);
|
||||
// // 设置畸变系数
|
||||
// cv::Mat distCoeffs = (cv::Mat_<double>(1, 5) << 0.311583980, -14.5864013, -0.00630134677, -0.00466401902, 183.662957);
|
||||
// // 准备输出图像
|
||||
// cv::Mat undistortedImg;
|
||||
// // 使用cv::undistort函数进行校正
|
||||
// cv::undistort(im, undistortedImg, cameraMatrix, distCoeffs);
|
||||
|
||||
|
||||
cv::imwrite("/home/caowei/catkin_ws/output.png", im);
|
||||
cv::imwrite("output.png", im);
|
||||
|
||||
// hFile = fopen(pFileName, "wb");
|
||||
// if (hFile != NULL)
|
||||
// {
|
||||
// fwrite((void*)pDstBuf, 1, stPixelConvertParam.nDstBufSize, hFile);
|
||||
// fclose(hFile);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// // 如果打开失败,请用root权限执行
|
||||
// // If opefailed, Run as root
|
||||
// printf("Open file (%s) failed!\n", pFileName);
|
||||
// }
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("image convert to %s failed! ErrorCode[%d]\n", pConvertFormatStr, ret);
|
||||
}
|
||||
|
||||
if (pDstBuf)
|
||||
{
|
||||
free(pDstBuf);
|
||||
pDstBuf = NULL;
|
||||
}
|
||||
|
||||
return IMV_OK;
|
||||
}
|
||||
|
||||
static void sendToRos(IMV_Frame frame)
|
||||
{
|
||||
IMV_FlipImageParam stFlipImageParam;
|
||||
unsigned int nChannelNum = 0;
|
||||
int ret = IMV_OK;
|
||||
FILE* hFile = NULL;
|
||||
|
||||
memset(&stFlipImageParam, 0, sizeof(stFlipImageParam));
|
||||
|
||||
if (gvspPixelBGR8 == frame.frameInfo.pixelFormat)
|
||||
{
|
||||
stFlipImageParam.pSrcData = frame.pData;
|
||||
stFlipImageParam.nSrcDataLen = frame.frameInfo.width * frame.frameInfo.height * BGR_CHANNEL_NUM;
|
||||
stFlipImageParam.ePixelFormat = frame.frameInfo.pixelFormat;
|
||||
nChannelNum = BGR_CHANNEL_NUM;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("image convert to BGR8 failed! ErrorCode[%d]\n", ret);
|
||||
}
|
||||
|
||||
// 向ros发送/image消息
|
||||
do
|
||||
{
|
||||
|
||||
} while (false);
|
||||
|
||||
}
|
||||
|
||||
|
||||
int main()
|
||||
{
|
||||
int ret = IMV_OK;
|
||||
unsigned int cameraIndex = 0;
|
||||
IMV_HANDLE devHandle = NULL;
|
||||
void* libHandle = NULL;
|
||||
DLL_DestroyHandle DLLDestroyHandle = NULL;
|
||||
IMV_Frame frame;
|
||||
|
||||
// 加载SDK库
|
||||
// Load SDK library
|
||||
libHandle = dlopen("libMVSDK.so", RTLD_LAZY);
|
||||
if (NULL == libHandle)
|
||||
{
|
||||
printf("Load MVSDKmd.dll library failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取发现设备接口函数地址
|
||||
// Get discover camera interface address
|
||||
DLL_EnumDevices DLLEnumDevices = (DLL_EnumDevices)dlsym(libHandle, "IMV_EnumDevices");
|
||||
if (NULL == DLLEnumDevices)
|
||||
{
|
||||
printf("Get IMV_EnumDevices address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取创建设备句柄接口函数地址
|
||||
// Get create Device Handle interface address
|
||||
DLL_CreateHandle DLLCreateHandle = (DLL_CreateHandle)dlsym(libHandle, "IMV_CreateHandle");
|
||||
if (NULL == DLLCreateHandle)
|
||||
{
|
||||
printf("Get IMV_CreateHandle address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取销毁设备句柄接口函数地址
|
||||
// Get destroy Device Handle interface address
|
||||
DLLDestroyHandle = (DLL_DestroyHandle)dlsym(libHandle, "IMV_DestroyHandle");
|
||||
if (NULL == DLLDestroyHandle)
|
||||
{
|
||||
printf("Get IMV_DestroyHandle address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取打开相机接口函数地址
|
||||
// Get open camera interface address
|
||||
DLL_Open DLLOpen = (DLL_Open)dlsym(libHandle, "IMV_Open");
|
||||
if (NULL == DLLOpen)
|
||||
{
|
||||
printf("Get IMV_Open address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取注册数据帧回调接口函数地址
|
||||
// Get register data frame callback interface address
|
||||
DLL_AttachGrabbing DLLAttachGrabbing = (DLL_AttachGrabbing)dlsym(libHandle, "IMV_AttachGrabbing");
|
||||
if (NULL == DLLAttachGrabbing)
|
||||
{
|
||||
printf("Get IMV_AttachGrabbing address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取开始拉流接口函数地址
|
||||
// Get start grabbing interface address
|
||||
DLL_StartGrabbing DLLStartGrabbing = (DLL_StartGrabbing)dlsym(libHandle, "IMV_StartGrabbing");
|
||||
if (NULL == DLLStartGrabbing)
|
||||
{
|
||||
printf("Get IMV_StartGrabbing address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取停止拉流接口函数地址
|
||||
// Get stop grabbing interface address
|
||||
DLL_StopGrabbing DLLStopGrabbing = (DLL_StopGrabbing)dlsym(libHandle, "IMV_StopGrabbing");
|
||||
if (NULL == DLLStopGrabbing)
|
||||
{
|
||||
printf("Get IMV_StopGrabbing address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取
|
||||
|
||||
// 获取关闭相机接口函数地址
|
||||
// Get close camera interface address
|
||||
DLL_Close DLLClose = (DLL_Close)dlsym(libHandle, "IMV_Close");
|
||||
if (NULL == DLLClose)
|
||||
{
|
||||
printf("Get IMV_Close address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 获取获取一帧图像函数地址
|
||||
DLL_GetFrame DLLGetFrame = (DLL_GetFrame)dlsym(libHandle, "IMV_GetFrame");
|
||||
if (NULL == DLLGetFrame)
|
||||
{
|
||||
printf("Get IMV_GetFrame address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
DLL_ReleaseFrame DLLReleaseFrame = (DLL_ReleaseFrame)dlsym(libHandle, "IMV_ReleaseFrame");
|
||||
if (NULL == DLLReleaseFrame)
|
||||
{
|
||||
printf("Get IMV_ReleaseFrame address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
DLL_ClearFrameBuffer DLLClearFrameBuffer = (DLL_ClearFrameBuffer)dlsym(libHandle, "IMV_ClearFrameBuffer");
|
||||
if (NULL == DLLClearFrameBuffer)
|
||||
{
|
||||
printf("Get IMV_ClearFrameBuffer address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
DLL_ExecuteCommandFeature DLLExecuteCommandFeature = (DLL_ExecuteCommandFeature)dlsym(libHandle, "IMV_ExecuteCommandFeature");
|
||||
if (NULL == DLLExecuteCommandFeature)
|
||||
{
|
||||
printf("Get IMV_ExecuteCommandFeature address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
DLL_SetIntFeatureValue DLLSetIntFeatureValue = (DLL_SetIntFeatureValue)dlsym(libHandle, "IMV_SetIntFeatureValue");
|
||||
if (NULL == DLLSetIntFeatureValue)
|
||||
{
|
||||
printf("Get IMV_SetIntFeatureValue address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
DLL_SetDoubleFeatureValue DLLSetDoubleFeatureValue = (DLL_SetDoubleFeatureValue)dlsym(libHandle, "IMV_SetDoubleFeatureValue");
|
||||
if (NULL == DLLSetDoubleFeatureValue)
|
||||
{
|
||||
printf("Get IMV_SetDoubleFeatureValue address failed!\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
////////////////////// 检查接口结束
|
||||
// 发现设备
|
||||
// discover camera
|
||||
IMV_DeviceList deviceInfoList;
|
||||
ret = DLLEnumDevices(&deviceInfoList, interfaceTypeAll);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Enumeration devices failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (deviceInfoList.nDevNum < 1)
|
||||
{
|
||||
printf("no camera\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 打印相机基本信息(序号,类型,制造商信息,型号,序列号,用户自定义ID,IP地址)
|
||||
// Print camera info (Index, Type, Vendor, Model, Serial number, DeviceUserID, IP Address)
|
||||
|
||||
displayDeviceInfo(deviceInfoList);
|
||||
// 选择需要连接的相机
|
||||
// Select one camera to connect to
|
||||
// cameraIndex = selectDevice(deviceInfoList.nDevNum);
|
||||
cameraIndex = 0; // 第一个相机
|
||||
|
||||
// 创建设备句柄
|
||||
// Create Device Handle
|
||||
ret = DLLCreateHandle(&devHandle, modeByIndex, (void*)&cameraIndex);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Create devHandle failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 打开相机
|
||||
ret = DLLOpen(devHandle);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Open camera failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 设置软触发模式
|
||||
ret = setSoftTriggerConf(libHandle, devHandle);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("setSoftTriggerConf failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
ret = DLLSetIntFeatureValue(devHandle, "Width", 9344);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Set feature value Width failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = DLLSetIntFeatureValue(devHandle, "Height", 7000);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Set feature value Height failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = DLLSetIntFeatureValue(devHandle, "OffsetX", 0);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Set feature value OffsetX failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
ret = DLLSetIntFeatureValue(devHandle, "OffsetY", 0);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Set feature value OffsetY failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 设置属性值曝光
|
||||
// Set feature value
|
||||
ret = DLLSetDoubleFeatureValue(devHandle, "ExposureTime", 12*10000);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Set feature value failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// // 非多线程,不需要注册回调
|
||||
// // 注册数据帧回调函数
|
||||
// // Register data frame callback function
|
||||
// ret = DLLAttachGrabbing(devHandle, onGetFrame, NULL);
|
||||
// if (IMV_OK != ret)
|
||||
// {
|
||||
// printf("Attach grabbing failed! ErrorCode[%d]\n", ret);
|
||||
// return 0;
|
||||
// }
|
||||
|
||||
// 开始拉流
|
||||
// Start grabbing
|
||||
ret = DLLStartGrabbing(devHandle);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Start grabbing failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/////////////////////////获取一帧图像////////////////////////////
|
||||
|
||||
// 清除帧数据缓存
|
||||
// Clear frame buffer
|
||||
ret = DLLClearFrameBuffer(devHandle);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Clear frame buffer failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
// 执行软触发
|
||||
// Execute soft trigger
|
||||
ret = DLLExecuteCommandFeature(devHandle, "TriggerSoftware");
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Execute TriggerSoftware failed! ErrorCode[%d]\n", ret);
|
||||
return ret;
|
||||
}
|
||||
|
||||
sleep(2000);
|
||||
// 获取一帧图像, TIMEOUT 5000ms
|
||||
ret = DLLGetFrame(devHandle, &frame, 5000);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Get frame failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
printf("width %d\n", frame.frameInfo.width);
|
||||
printf("Height %d\n", frame.frameInfo.height);
|
||||
|
||||
ret = imageConvert(libHandle, devHandle, frame, gvspPixelBGR8);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("imageConvert failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
// printf("11111111111111\n", ret);
|
||||
// cv::Mat im(frame.frameInfo.width, frame.frameInfo.height, CV_8UC3, frame.pData);
|
||||
// cv::imwrite("/home/caowei/catkin_ws/output.png", im);
|
||||
// cv::imwrite("output.png", im);
|
||||
// printf("22222222222222\n", ret);
|
||||
// // 向ros送 /image消息
|
||||
// sendToRos(frame);
|
||||
|
||||
// 释放图像缓存
|
||||
ret = DLLReleaseFrame(devHandle, &frame);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Release frame failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
////////////////////////////////////////////////////////////////
|
||||
|
||||
// // 取图2秒
|
||||
// // get frame 2 seconds
|
||||
// sleep(2000);
|
||||
|
||||
// 停止拉流
|
||||
// Stop grabbing
|
||||
ret = DLLStopGrabbing(devHandle);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Stop grabbing failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 关闭相机
|
||||
// Close camera
|
||||
ret = DLLClose(devHandle);
|
||||
if (IMV_OK != ret)
|
||||
{
|
||||
printf("Close camera failed! ErrorCode[%d]\n", ret);
|
||||
return 0;
|
||||
}
|
||||
|
||||
// 销毁设备句柄
|
||||
// Destroy Device Handle
|
||||
if (NULL != devHandle)
|
||||
{
|
||||
// 销毁设备句柄
|
||||
// Destroy Device Handle
|
||||
DLLDestroyHandle(devHandle);
|
||||
}
|
||||
|
||||
if (NULL != libHandle)
|
||||
{
|
||||
dlclose(libHandle);
|
||||
}
|
||||
|
||||
printf("end...\n");
|
||||
// getchar();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
811
IMVDefines.h
Normal file
811
IMVDefines.h
Normal file
@ -0,0 +1,811 @@
|
||||
#ifndef __IMV_DEFINES_H__
|
||||
#define __IMV_DEFINES_H__
|
||||
|
||||
#ifdef WIN32
|
||||
typedef __int64 int64_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#ifndef IN
|
||||
#define IN ///< \~chinese 输入型参数 \~english Input param
|
||||
#endif
|
||||
|
||||
#ifndef OUT
|
||||
#define OUT ///< \~chinese 输出型参数 \~english Output param
|
||||
#endif
|
||||
|
||||
#ifndef IN_OUT
|
||||
#define IN_OUT ///< \~chinese 输入/输出型参数 \~english Input/Output param
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
typedef char bool;
|
||||
#define true 1
|
||||
#define false 0
|
||||
#endif
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 错误码
|
||||
/// \~english
|
||||
/// \brief Error code
|
||||
#define IMV_OK 0 ///< \~chinese 成功,无错误 \~english Successed, no error
|
||||
#define IMV_ERROR -101 ///< \~chinese 通用的错误 \~english Generic error
|
||||
#define IMV_INVALID_HANDLE -102 ///< \~chinese 错误或无效的句柄 \~english Error or invalid handle
|
||||
#define IMV_INVALID_PARAM -103 ///< \~chinese 错误的参数 \~english Incorrect parameter
|
||||
#define IMV_INVALID_FRAME_HANDLE -104 ///< \~chinese 错误或无效的帧句柄 \~english Error or invalid frame handle
|
||||
#define IMV_INVALID_FRAME -105 ///< \~chinese 无效的帧 \~english Invalid frame
|
||||
#define IMV_INVALID_RESOURCE -106 ///< \~chinese 相机/事件/流等资源无效 \~english Camera/Event/Stream and so on resource invalid
|
||||
#define IMV_INVALID_IP -107 ///< \~chinese 设备与主机的IP网段不匹配 \~english Device's and PC's subnet is mismatch
|
||||
#define IMV_NO_MEMORY -108 ///< \~chinese 内存不足 \~english Malloc memery failed
|
||||
#define IMV_INSUFFICIENT_MEMORY -109 ///< \~chinese 传入的内存空间不足 \~english Insufficient memory
|
||||
#define IMV_ERROR_PROPERTY_TYPE -110 ///< \~chinese 属性类型错误 \~english Property type error
|
||||
#define IMV_INVALID_ACCESS -111 ///< \~chinese 属性不可访问、或不能读/写、或读/写失败 \~english Property not accessible, or not be read/written, or read/written failed
|
||||
#define IMV_INVALID_RANGE -112 ///< \~chinese 属性值超出范围、或者不是步长整数倍 \~english The property's value is out of range, or is not integer multiple of the step
|
||||
#define IMV_NOT_SUPPORT -113 ///< \~chinese 设备不支持的功能 \~english Device not supported function
|
||||
|
||||
#define IMV_MAX_DEVICE_ENUM_NUM 100 ///< \~chinese 支持设备最大个数 \~english The maximum number of supported devices
|
||||
#define IMV_MAX_STRING_LENTH 256 ///< \~chinese 字符串最大长度 \~english The maximum length of string
|
||||
#define IMV_MAX_ERROR_LIST_NUM 128 ///< \~chinese 失败属性列表最大长度 \~english The maximum size of failed properties list
|
||||
|
||||
typedef void* IMV_HANDLE; ///< \~chinese 设备句柄 \~english Device handle
|
||||
typedef void* IMV_FRAME_HANDLE; ///< \~chinese 帧句柄 \~english Frame handle
|
||||
|
||||
/// \~chinese
|
||||
///枚举:接口类型
|
||||
/// \~english
|
||||
///Enumeration: interface type
|
||||
typedef enum _IMV_EInterfaceType
|
||||
{
|
||||
interfaceTypeGige = 0x00000001, ///< \~chinese 网卡接口类型 \~english NIC type
|
||||
interfaceTypeUsb3 = 0x00000002, ///< \~chinese USB3.0接口类型 \~english USB3.0 interface type
|
||||
interfaceTypeCL = 0x00000004, ///< \~chinese CAMERALINK接口类型 \~english Cameralink interface type
|
||||
interfaceTypePCIe = 0x00000008, ///< \~chinese PCIe接口类型 \~english PCIe interface type
|
||||
interfaceTypeAll = 0x00000000, ///< \~chinese 忽略接口类型 \~english All types interface type
|
||||
interfaceInvalidType = 0xFFFFFFFF ///< \~chinese 无效接口类型 \~english Invalid interface type
|
||||
}IMV_EInterfaceType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:设备类型
|
||||
/// \~english
|
||||
///Enumeration: device type
|
||||
typedef enum _IMV_ECameraType
|
||||
{
|
||||
typeGigeCamera = 0, ///< \~chinese GIGE相机 \~english GigE Vision Camera
|
||||
typeU3vCamera = 1, ///< \~chinese USB3.0相机 \~english USB3.0 Vision Camera
|
||||
typeCLCamera = 2, ///< \~chinese CAMERALINK 相机 \~english Cameralink camera
|
||||
typePCIeCamera = 3, ///< \~chinese PCIe相机 \~english PCIe Camera
|
||||
typeUndefinedCamera = 255 ///< \~chinese 未知类型 \~english Undefined Camera
|
||||
}IMV_ECameraType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:创建句柄方式
|
||||
/// \~english
|
||||
///Enumeration: Create handle mode
|
||||
typedef enum _IMV_ECreateHandleMode
|
||||
{
|
||||
modeByIndex = 0, ///< \~chinese 通过已枚举设备的索引(从0开始,比如 0, 1, 2...) \~english By index of enumerated devices (Start from 0, such as 0, 1, 2...)
|
||||
modeByCameraKey, ///< \~chinese 通过设备键"厂商:序列号" \~english By device's key "vendor:serial number"
|
||||
modeByDeviceUserID, ///< \~chinese 通过设备自定义名 \~english By device userID
|
||||
modeByIPAddress, ///< \~chinese 通过设备IP地址 \~english By device IP address.
|
||||
}IMV_ECreateHandleMode;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:访问权限
|
||||
/// \~english
|
||||
///Enumeration: access permission
|
||||
typedef enum _IMV_ECameraAccessPermission
|
||||
{
|
||||
accessPermissionOpen = 0, ///< \~chinese GigE相机没有被连接 \~english The GigE vision device isn't connected to any application.
|
||||
accessPermissionExclusive, ///< \~chinese 独占访问权限 \~english Exclusive Access Permission
|
||||
accessPermissionControl, ///< \~chinese 非独占可读访问权限 \~english Non-Exclusive Readbale Access Permission
|
||||
accessPermissionControlWithSwitchover, ///< \~chinese 切换控制访问权限 \~english Control access with switchover enabled.
|
||||
accessPermissionUnknown = 254, ///< \~chinese 无法确定 \~english Value not known; indeterminate.
|
||||
accessPermissionUndefined ///< \~chinese 未定义访问权限 \~english Undefined Access Permission
|
||||
}IMV_ECameraAccessPermission;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:抓图策略
|
||||
/// \~english
|
||||
///Enumeration: grab strartegy
|
||||
typedef enum _IMV_EGrabStrategy
|
||||
{
|
||||
grabStrartegySequential = 0, ///< \~chinese 按到达顺序处理图片 \~english The images are processed in the order of their arrival
|
||||
grabStrartegyLatestImage = 1, ///< \~chinese 获取最新的图片 \~english Get latest image
|
||||
grabStrartegyUpcomingImage = 2, ///< \~chinese 等待获取下一张图片(只针对GigE相机) \~english Waiting for next image(GigE only)
|
||||
grabStrartegyUndefined ///< \~chinese 未定义 \~english Undefined
|
||||
}IMV_EGrabStrategy;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:流事件状态
|
||||
/// \~english
|
||||
/// Enumeration:stream event status
|
||||
typedef enum _IMV_EEventStatus
|
||||
{
|
||||
streamEventNormal = 1, ///< \~chinese 正常流事件 \~english Normal stream event
|
||||
streamEventLostFrame = 2, ///< \~chinese 丢帧事件 \~english Lost frame event
|
||||
streamEventLostPacket = 3, ///< \~chinese 丢包事件 \~english Lost packet event
|
||||
streamEventImageError = 4, ///< \~chinese 图像错误事件 \~english Error image event
|
||||
streamEventStreamChannelError = 5, ///< \~chinese 取流错误事件 \~english Stream channel error event
|
||||
streamEventTooManyConsecutiveResends = 6, ///< \~chinese 太多连续重传 \~english Too many consecutive resends event
|
||||
streamEventTooManyLostPacket = 7 ///< \~chinese 太多丢包 \~english Too many lost packet event
|
||||
}IMV_EEventStatus;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:图像转换Bayer格式所用的算法
|
||||
/// \~english
|
||||
/// Enumeration:alorithm used for Bayer demosaic
|
||||
typedef enum _IMV_EBayerDemosaic
|
||||
{
|
||||
demosaicNearestNeighbor, ///< \~chinese 最近邻 \~english Nearest neighbor
|
||||
demosaicBilinear, ///< \~chinese 双线性 \~english Bilinear
|
||||
demosaicEdgeSensing, ///< \~chinese 边缘检测 \~english Edge sensing
|
||||
demosaicNotSupport = 255, ///< \~chinese 不支持 \~english Not support
|
||||
}IMV_EBayerDemosaic;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:事件类型
|
||||
/// \~english
|
||||
/// Enumeration:event type
|
||||
typedef enum _IMV_EVType
|
||||
{
|
||||
offLine, ///< \~chinese 设备离线通知 \~english device offline notification
|
||||
onLine ///< \~chinese 设备在线通知 \~english device online notification
|
||||
}IMV_EVType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:视频格式
|
||||
/// \~english
|
||||
/// Enumeration:Video format
|
||||
typedef enum _IMV_EVideoType
|
||||
{
|
||||
typeVideoFormatAVI = 0, ///< \~chinese AVI格式 \~english AVI format
|
||||
typeVideoFormatNotSupport = 255 ///< \~chinese 不支持 \~english Not support
|
||||
}IMV_EVideoType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:图像翻转类型
|
||||
/// \~english
|
||||
/// Enumeration:Image flip type
|
||||
typedef enum _IMV_EFlipType
|
||||
{
|
||||
typeFlipVertical, ///< \~chinese 垂直(Y轴)翻转 \~english Vertical(Y-axis) flip
|
||||
typeFlipHorizontal ///< \~chinese 水平(X轴)翻转 \~english Horizontal(X-axis) flip
|
||||
}IMV_EFlipType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:顺时针旋转角度
|
||||
/// \~english
|
||||
/// Enumeration:Rotation angle clockwise
|
||||
typedef enum _IMV_ERotationAngle
|
||||
{
|
||||
rotationAngle90, ///< \~chinese 顺时针旋转90度 \~english Rotate 90 degree clockwise
|
||||
rotationAngle180, ///< \~chinese 顺时针旋转180度 \~english Rotate 180 degree clockwise
|
||||
rotationAngle270, ///< \~chinese 顺时针旋转270度 \~english Rotate 270 degree clockwise
|
||||
}IMV_ERotationAngle;
|
||||
|
||||
#define IMV_GVSP_PIX_MONO 0x01000000
|
||||
#define IMV_GVSP_PIX_RGB 0x02000000
|
||||
#define IMV_GVSP_PIX_COLOR 0x02000000
|
||||
#define IMV_GVSP_PIX_CUSTOM 0x80000000
|
||||
#define IMV_GVSP_PIX_COLOR_MASK 0xFF000000
|
||||
|
||||
// Indicate effective number of bits occupied by the pixel (including padding).
|
||||
// This can be used to compute amount of memory required to store an image.
|
||||
#define IMV_GVSP_PIX_OCCUPY1BIT 0x00010000
|
||||
#define IMV_GVSP_PIX_OCCUPY2BIT 0x00020000
|
||||
#define IMV_GVSP_PIX_OCCUPY4BIT 0x00040000
|
||||
#define IMV_GVSP_PIX_OCCUPY8BIT 0x00080000
|
||||
#define IMV_GVSP_PIX_OCCUPY12BIT 0x000C0000
|
||||
#define IMV_GVSP_PIX_OCCUPY16BIT 0x00100000
|
||||
#define IMV_GVSP_PIX_OCCUPY24BIT 0x00180000
|
||||
#define IMV_GVSP_PIX_OCCUPY32BIT 0x00200000
|
||||
#define IMV_GVSP_PIX_OCCUPY36BIT 0x00240000
|
||||
#define IMV_GVSP_PIX_OCCUPY48BIT 0x00300000
|
||||
|
||||
/// \~chinese
|
||||
///枚举:图像格式
|
||||
/// \~english
|
||||
/// Enumeration:image format
|
||||
typedef enum _IMV_EPixelType
|
||||
{
|
||||
// Undefined pixel type
|
||||
gvspPixelTypeUndefined = -1,
|
||||
|
||||
// Mono Format
|
||||
gvspPixelMono1p = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY1BIT | 0x0037),
|
||||
gvspPixelMono2p = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY2BIT | 0x0038),
|
||||
gvspPixelMono4p = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY4BIT | 0x0039),
|
||||
gvspPixelMono8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x0001),
|
||||
gvspPixelMono8S = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x0002),
|
||||
gvspPixelMono10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0003),
|
||||
gvspPixelMono10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0004),
|
||||
gvspPixelMono12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0005),
|
||||
gvspPixelMono12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0006),
|
||||
gvspPixelMono14 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0025),
|
||||
gvspPixelMono16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0007),
|
||||
|
||||
// Bayer Format
|
||||
gvspPixelBayGR8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x0008),
|
||||
gvspPixelBayRG8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x0009),
|
||||
gvspPixelBayGB8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x000A),
|
||||
gvspPixelBayBG8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x000B),
|
||||
gvspPixelBayGR10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x000C),
|
||||
gvspPixelBayRG10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x000D),
|
||||
gvspPixelBayGB10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x000E),
|
||||
gvspPixelBayBG10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x000F),
|
||||
gvspPixelBayGR12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0010),
|
||||
gvspPixelBayRG12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0011),
|
||||
gvspPixelBayGB12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0012),
|
||||
gvspPixelBayBG12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0013),
|
||||
gvspPixelBayGR10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0026),
|
||||
gvspPixelBayRG10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0027),
|
||||
gvspPixelBayGB10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0028),
|
||||
gvspPixelBayBG10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0029),
|
||||
gvspPixelBayGR12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x002A),
|
||||
gvspPixelBayRG12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x002B),
|
||||
gvspPixelBayGB12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x002C),
|
||||
gvspPixelBayBG12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x002D),
|
||||
gvspPixelBayGR16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x002E),
|
||||
gvspPixelBayRG16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x002F),
|
||||
gvspPixelBayGB16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0030),
|
||||
gvspPixelBayBG16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0031),
|
||||
|
||||
// RGB Format
|
||||
gvspPixelRGB8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0014),
|
||||
gvspPixelBGR8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0015),
|
||||
gvspPixelRGBA8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY32BIT | 0x0016),
|
||||
gvspPixelBGRA8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY32BIT | 0x0017),
|
||||
gvspPixelRGB10 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0018),
|
||||
gvspPixelBGR10 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0019),
|
||||
gvspPixelRGB12 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x001A),
|
||||
gvspPixelBGR12 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x001B),
|
||||
gvspPixelRGB16 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0033),
|
||||
gvspPixelRGB10V1Packed = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY32BIT | 0x001C),
|
||||
gvspPixelRGB10P32 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY32BIT | 0x001D),
|
||||
gvspPixelRGB12V1Packed = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY36BIT | 0X0034),
|
||||
gvspPixelRGB565P = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0035),
|
||||
gvspPixelBGR565P = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0X0036),
|
||||
|
||||
// YVR Format
|
||||
gvspPixelYUV411_8_UYYVYY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY12BIT | 0x001E),
|
||||
gvspPixelYUV422_8_UYVY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x001F),
|
||||
gvspPixelYUV422_8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0032),
|
||||
gvspPixelYUV8_UYV = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0020),
|
||||
gvspPixelYCbCr8CbYCr = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x003A),
|
||||
gvspPixelYCbCr422_8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x003B),
|
||||
gvspPixelYCbCr422_8_CbYCrY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0043),
|
||||
gvspPixelYCbCr411_8_CbYYCrYY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY12BIT | 0x003C),
|
||||
gvspPixelYCbCr601_8_CbYCr = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x003D),
|
||||
gvspPixelYCbCr601_422_8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x003E),
|
||||
gvspPixelYCbCr601_422_8_CbYCrY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0044),
|
||||
gvspPixelYCbCr601_411_8_CbYYCrYY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY12BIT | 0x003F),
|
||||
gvspPixelYCbCr709_8_CbYCr = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0040),
|
||||
gvspPixelYCbCr709_422_8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0041),
|
||||
gvspPixelYCbCr709_422_8_CbYCrY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0045),
|
||||
gvspPixelYCbCr709_411_8_CbYYCrYY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY12BIT | 0x0042),
|
||||
|
||||
// RGB Planar
|
||||
gvspPixelRGB8Planar = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0021),
|
||||
gvspPixelRGB10Planar = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0022),
|
||||
gvspPixelRGB12Planar = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0023),
|
||||
gvspPixelRGB16Planar = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0024),
|
||||
|
||||
//BayerRG10p和BayerRG12p格式,针对特定项目临时添加,请不要使用
|
||||
//BayerRG10p and BayerRG12p, currently used for specific project, please do not use them
|
||||
gvspPixelBayRG10p = 0x010A0058,
|
||||
gvspPixelBayRG12p = 0x010c0059,
|
||||
|
||||
//mono1c格式,自定义格式
|
||||
//mono1c, customized image format, used for binary output
|
||||
gvspPixelMono1c = 0x012000FF,
|
||||
|
||||
//mono1e格式,自定义格式,用来显示连通域
|
||||
//mono1e, customized image format, used for displaying connected domain
|
||||
gvspPixelMono1e = 0x01080FFF
|
||||
}IMV_EPixelType;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 字符串信息
|
||||
/// \~english
|
||||
/// \brief String information
|
||||
typedef struct _IMV_String
|
||||
{
|
||||
char str[IMV_MAX_STRING_LENTH]; ///< \~chinese 字符串.长度不超过256 \~english Strings and the maximum length of strings is 255.
|
||||
}IMV_String;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief GigE网卡信息
|
||||
/// \~english
|
||||
/// \brief GigE interface information
|
||||
typedef struct _IMV_GigEInterfaceInfo
|
||||
{
|
||||
char description[IMV_MAX_STRING_LENTH]; ///< \~chinese 网卡描述信息 \~english Network card description
|
||||
char macAddress[IMV_MAX_STRING_LENTH]; ///< \~chinese 网卡Mac地址 \~english Network card MAC Address
|
||||
char ipAddress[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备Ip地址 \~english Device ip Address
|
||||
char subnetMask[IMV_MAX_STRING_LENTH]; ///< \~chinese 子网掩码 \~english SubnetMask
|
||||
char defaultGateWay[IMV_MAX_STRING_LENTH]; ///< \~chinese 默认网关 \~english Default GateWay
|
||||
char chReserved[5][IMV_MAX_STRING_LENTH]; ///< 保留 \~english Reserved field
|
||||
}IMV_GigEInterfaceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief USB接口信息
|
||||
/// \~english
|
||||
/// \brief USB interface information
|
||||
typedef struct _IMV_UsbInterfaceInfo
|
||||
{
|
||||
char description[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口描述信息 \~english USB interface description
|
||||
char vendorID[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口Vendor ID \~english USB interface Vendor ID
|
||||
char deviceID[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口设备ID \~english USB interface Device ID
|
||||
char subsystemID[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口Subsystem ID \~english USB interface Subsystem ID
|
||||
char revision[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口Revision \~english USB interface Revision
|
||||
char speed[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口speed \~english USB interface speed
|
||||
char chReserved[4][IMV_MAX_STRING_LENTH]; ///< 保留 \~english Reserved field
|
||||
}IMV_UsbInterfaceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief GigE设备信息
|
||||
/// \~english
|
||||
/// \brief GigE device information
|
||||
typedef struct _IMV_GigEDeviceInfo
|
||||
{
|
||||
/// \~chinese
|
||||
/// 设备支持的IP配置选项\n
|
||||
/// value:4 相机只支持LLA\n
|
||||
/// value:5 相机支持LLA和Persistent IP\n
|
||||
/// value:6 相机支持LLA和DHCP\n
|
||||
/// value:7 相机支持LLA、DHCP和Persistent IP\n
|
||||
/// value:0 获取失败
|
||||
/// \~english
|
||||
/// Supported IP configuration options of device\n
|
||||
/// value:4 Device supports LLA \n
|
||||
/// value:5 Device supports LLA and Persistent IP\n
|
||||
/// value:6 Device supports LLA and DHCP\n
|
||||
/// value:7 Device supports LLA, DHCP and Persistent IP\n
|
||||
/// value:0 Get fail
|
||||
unsigned int nIpConfigOptions;
|
||||
/// \~chinese
|
||||
/// 设备当前的IP配置选项\n
|
||||
/// value:4 LLA处于活动状态\n
|
||||
/// value:5 LLA和Persistent IP处于活动状态\n
|
||||
/// value:6 LLA和DHCP处于活动状态\n
|
||||
/// value:7 LLA、DHCP和Persistent IP处于活动状态\n
|
||||
/// value:0 获取失败
|
||||
/// \~english
|
||||
/// Current IP Configuration options of device\n
|
||||
/// value:4 LLA is active\n
|
||||
/// value:5 LLA and Persistent IP are active\n
|
||||
/// value:6 LLA and DHCP are active\n
|
||||
/// value:7 LLA, DHCP and Persistent IP are active\n
|
||||
/// value:0 Get fail
|
||||
unsigned int nIpConfigCurrent;
|
||||
unsigned int nReserved[3]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
char macAddress[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备Mac地址 \~english Device MAC Address
|
||||
char ipAddress[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备Ip地址 \~english Device ip Address
|
||||
char subnetMask[IMV_MAX_STRING_LENTH]; ///< \~chinese 子网掩码 \~english SubnetMask
|
||||
char defaultGateWay[IMV_MAX_STRING_LENTH]; ///< \~chinese 默认网关 \~english Default GateWay
|
||||
char protocolVersion[IMV_MAX_STRING_LENTH]; ///< \~chinese 网络协议版本 \~english Net protocol version
|
||||
/// \~chinese
|
||||
/// Ip配置有效性\n
|
||||
/// Ip配置有效时字符串值"Valid"\n
|
||||
/// Ip配置无效时字符串值"Invalid On This Interface"
|
||||
/// \~english
|
||||
/// IP configuration valid\n
|
||||
/// String value is "Valid" when ip configuration valid\n
|
||||
/// String value is "Invalid On This Interface" when ip configuration invalid
|
||||
char ipConfiguration[IMV_MAX_STRING_LENTH];
|
||||
char chReserved[6][IMV_MAX_STRING_LENTH]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
}IMV_GigEDeviceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief Usb设备信息
|
||||
/// \~english
|
||||
/// \brief Usb device information
|
||||
typedef struct _IMV_UsbDeviceInfo
|
||||
{
|
||||
bool bLowSpeedSupported; ///< \~chinese true支持,false不支持,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool bFullSpeedSupported; ///< \~chinese true支持,false不支持,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool bHighSpeedSupported; ///< \~chinese true支持,false不支持,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool bSuperSpeedSupported; ///< \~chinese true支持,false不支持,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool bDriverInstalled; ///< \~chinese true安装,false未安装,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool boolReserved[3]; ///< \~chinese 保留
|
||||
unsigned int Reserved[4]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
char configurationValid[IMV_MAX_STRING_LENTH]; ///< \~chinese 配置有效性 \~english Configuration Valid
|
||||
char genCPVersion[IMV_MAX_STRING_LENTH]; ///< \~chinese GenCP 版本 \~english GenCP Version
|
||||
char u3vVersion[IMV_MAX_STRING_LENTH]; ///< \~chinese U3V 版本号 \~english U3v Version
|
||||
char deviceGUID[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备引导号 \~english Device guid number
|
||||
char familyName[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备系列号 \~english Device serial number
|
||||
char u3vSerialNumber[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备序列号 \~english Device SerialNumber
|
||||
char speed[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备传输速度 \~english Device transmission speed
|
||||
char maxPower[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备最大供电量 \~english Maximum power supply of device
|
||||
char chReserved[4][IMV_MAX_STRING_LENTH]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
}IMV_UsbDeviceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 设备通用信息
|
||||
/// \~english
|
||||
/// \brief Device general information
|
||||
typedef struct _IMV_DeviceInfo
|
||||
{
|
||||
IMV_ECameraType nCameraType; ///< \~chinese 设备类别 \~english Camera type
|
||||
int nCameraReserved[5]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
char cameraKey[IMV_MAX_STRING_LENTH]; ///< \~chinese 厂商:序列号 \~english Camera key
|
||||
char cameraName[IMV_MAX_STRING_LENTH]; ///< \~chinese 用户自定义名 \~english UserDefinedName
|
||||
char serialNumber[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备序列号 \~english Device SerialNumber
|
||||
char vendorName[IMV_MAX_STRING_LENTH]; ///< \~chinese 厂商 \~english Camera Vendor
|
||||
char modelName[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备型号 \~english Device model
|
||||
char manufactureInfo[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备制造信息 \~english Device ManufactureInfo
|
||||
char deviceVersion[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备版本 \~english Device Version
|
||||
char cameraReserved[5][IMV_MAX_STRING_LENTH]; ///< \~chinese 保留 \~english Reserved field
|
||||
union
|
||||
{
|
||||
IMV_GigEDeviceInfo gigeDeviceInfo; ///< \~chinese Gige设备信息 \~english Gige Device Information
|
||||
IMV_UsbDeviceInfo usbDeviceInfo; ///< \~chinese Usb设备信息 \~english Usb Device Information
|
||||
}DeviceSpecificInfo;
|
||||
|
||||
IMV_EInterfaceType nInterfaceType; ///< \~chinese 接口类别 \~english Interface type
|
||||
int nInterfaceReserved[5]; ///< \~chinese 保留 \~english Reserved field
|
||||
char interfaceName[IMV_MAX_STRING_LENTH]; ///< \~chinese 接口名 \~english Interface Name
|
||||
char interfaceReserved[5][IMV_MAX_STRING_LENTH]; ///< \~chinese 保留 \~english Reserved field
|
||||
union
|
||||
{
|
||||
IMV_GigEInterfaceInfo gigeInterfaceInfo; ///< \~chinese GigE网卡信息 \~english Gige interface Information
|
||||
IMV_UsbInterfaceInfo usbInterfaceInfo; ///< \~chinese Usb接口信息 \~english Usb interface Information
|
||||
}InterfaceInfo;
|
||||
}IMV_DeviceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 加载失败的属性信息
|
||||
/// \~english
|
||||
/// \brief Load failed properties information
|
||||
typedef struct _IMV_ErrorList
|
||||
{
|
||||
unsigned int nParamCnt; ///< \~chinese 加载失败的属性个数 \~english The count of load failed properties
|
||||
IMV_String paramNameList[IMV_MAX_ERROR_LIST_NUM]; ///< \~chinese 加载失败的属性集合,上限128 \~english Array of load failed properties, up to 128
|
||||
}IMV_ErrorList;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 设备信息列表
|
||||
/// \~english
|
||||
/// \brief Device information list
|
||||
typedef struct _IMV_DeviceList
|
||||
{
|
||||
unsigned int nDevNum; ///< \~chinese 设备数量 \~english Device Number
|
||||
IMV_DeviceInfo* pDevInfo; ///< \~chinese 设备息列表(SDK内部缓存),最多100设备 \~english Device information list(cached within the SDK), up to 100
|
||||
}IMV_DeviceList;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 连接事件信息
|
||||
/// \~english
|
||||
/// \brief connection event information
|
||||
typedef struct _IMV_SConnectArg
|
||||
{
|
||||
IMV_EVType event; ///< \~chinese 事件类型 \~english event type
|
||||
unsigned int nReserve[10]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
}IMV_SConnectArg;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 参数更新事件信息
|
||||
/// \~english
|
||||
/// \brief Updating parameters event information
|
||||
typedef struct _IMV_SParamUpdateArg
|
||||
{
|
||||
bool isPoll; ///< \~chinese 是否是定时更新,true:表示是定时更新,false:表示非定时更新 \~english Update periodically or not. true:update periodically, true:not update periodically
|
||||
unsigned int nReserve[10]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
unsigned int nParamCnt; ///< \~chinese 更新的参数个数 \~english The number of parameters which need update
|
||||
IMV_String* pParamNameList; ///< \~chinese 更新的参数名称集合(SDK内部缓存) \~english Array of parameter's name which need to be updated(cached within the SDK)
|
||||
}IMV_SParamUpdateArg;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 流事件信息
|
||||
/// \~english
|
||||
/// \brief Stream event information
|
||||
typedef struct _IMV_SStreamArg
|
||||
{
|
||||
unsigned int channel; ///< \~chinese 流通道号 \~english Channel no.
|
||||
uint64_t blockId; ///< \~chinese 流数据BlockID \~english Block ID of stream data
|
||||
uint64_t timeStamp; ///< \~chinese 时间戳 \~english Event time stamp
|
||||
IMV_EEventStatus eStreamEventStatus; ///< \~chinese 流事件状态码 \~english Stream event status code
|
||||
unsigned int status; ///< \~chinese 事件状态错误码 \~english Status error code
|
||||
unsigned int nReserve[9]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
}IMV_SStreamArg;
|
||||
|
||||
/// \~chinese
|
||||
/// 消息通道事件ID列表
|
||||
/// \~english
|
||||
/// message channel event id list
|
||||
#define IMV_MSG_EVENT_ID_EXPOSURE_END 0x9001
|
||||
#define IMV_MSG_EVENT_ID_FRAME_TRIGGER 0x9002
|
||||
#define IMV_MSG_EVENT_ID_FRAME_START 0x9003
|
||||
#define IMV_MSG_EVENT_ID_ACQ_START 0x9004
|
||||
#define IMV_MSG_EVENT_ID_ACQ_TRIGGER 0x9005
|
||||
#define IMV_MSG_EVENT_ID_DATA_READ_OUT 0x9006
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 消息通道事件信息
|
||||
/// \~english
|
||||
/// \brief Message channel event information
|
||||
typedef struct _IMV_SMsgChannelArg
|
||||
{
|
||||
unsigned short eventId; ///< \~chinese 事件Id \~english Event id
|
||||
unsigned short channelId; ///< \~chinese 消息通道号 \~english Channel id
|
||||
uint64_t blockId; ///< \~chinese 流数据BlockID \~english Block ID of stream data
|
||||
uint64_t timeStamp; ///< \~chinese 时间戳 \~english Event timestamp
|
||||
unsigned int nReserve[8]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
unsigned int nParamCnt; ///< \~chinese 参数个数 \~english The number of parameters which need update
|
||||
IMV_String* pParamNameList; ///< \~chinese 事件相关的属性名列集合(SDK内部缓存) \~english Array of parameter's name which is related(cached within the SDK)
|
||||
}IMV_SMsgChannelArg;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief Chunk数据信息
|
||||
/// \~english
|
||||
/// \brief Chunk data information
|
||||
typedef struct _IMV_ChunkDataInfo
|
||||
{
|
||||
unsigned int chunkID; ///< \~chinese ChunkID \~english ChunkID
|
||||
unsigned int nParamCnt; ///< \~chinese 属性名个数 \~english The number of paramNames
|
||||
IMV_String* pParamNameList; ///< \~chinese Chunk数据对应的属性名集合(SDK内部缓存) \~english ParamNames Corresponding property name of chunk data(cached within the SDK)
|
||||
}IMV_ChunkDataInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 帧图像信息
|
||||
/// \~english
|
||||
/// \brief The frame image information
|
||||
typedef struct _IMV_FrameInfo
|
||||
{
|
||||
uint64_t blockId; ///< \~chinese 帧Id(仅对GigE/Usb/PCIe相机有效) \~english The block ID(GigE/Usb/PCIe camera only)
|
||||
unsigned int status; ///< \~chinese 数据帧状态(0是正常状态) \~english The status of frame(0 is normal status)
|
||||
unsigned int width; ///< \~chinese 图像宽度 \~english The width of image
|
||||
unsigned int height; ///< \~chinese 图像高度 \~english The height of image
|
||||
unsigned int size; ///< \~chinese 图像大小 \~english The size of image
|
||||
IMV_EPixelType pixelFormat; ///< \~chinese 图像像素格式 \~english The pixel format of image
|
||||
uint64_t timeStamp; ///< \~chinese 图像时间戳(仅对GigE/Usb/PCIe相机有效) \~english The timestamp of image(GigE/Usb/PCIe camera only)
|
||||
unsigned int chunkCount; ///< \~chinese 帧数据中包含的Chunk个数(仅对GigE/Usb相机有效) \~english The number of chunk in frame data(GigE/Usb Camera Only)
|
||||
unsigned int paddingX; ///< \~chinese 图像paddingX(仅对GigE/Usb/PCIe相机有效) \~english The paddingX of image(GigE/Usb/PCIe camera only)
|
||||
unsigned int paddingY; ///< \~chinese 图像paddingY(仅对GigE/Usb/PCIe相机有效) \~english The paddingY of image(GigE/Usb/PCIe camera only)
|
||||
unsigned int recvFrameTime; ///< \~chinese 图像在网络传输所用的时间(单位:微秒,非GigE相机该值为0) \~english The time taken for the image to be transmitted over the network(unit:us, The value is 0 for non-GigE camera)
|
||||
unsigned int nReserved[19]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
}IMV_FrameInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 帧图像数据信息
|
||||
/// \~english
|
||||
/// \brief Frame image data information
|
||||
typedef struct _IMV_Frame
|
||||
{
|
||||
IMV_FRAME_HANDLE frameHandle; ///< \~chinese 帧图像句柄(SDK内部帧管理用) \~english Frame image handle(used for managing frame within the SDK)
|
||||
unsigned char* pData; ///< \~chinese 帧图像数据的内存首地址 \~english The starting address of memory of image data
|
||||
IMV_FrameInfo frameInfo; ///< \~chinese 帧信息 \~english Frame information
|
||||
unsigned int nReserved[10]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
}IMV_Frame;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief PCIE设备统计流信息
|
||||
/// \~english
|
||||
/// \brief PCIE device stream statistics information
|
||||
typedef struct _IMV_PCIEStreamStatsInfo
|
||||
{
|
||||
unsigned int imageError; ///< \~chinese 图像错误的帧数 \~english Number of images error frames
|
||||
unsigned int lostPacketBlock; ///< \~chinese 丢包的帧数 \~english Number of frames lost
|
||||
unsigned int nReserved0[10]; ///< \~chinese 预留 \~english Reserved field
|
||||
|
||||
unsigned int imageReceived; ///< \~chinese 正常获取的帧数 \~english Number of frames acquired
|
||||
double fps; ///< \~chinese 帧率 \~english Frame rate
|
||||
double bandwidth; ///< \~chinese 带宽(Mbps) \~english Bandwidth(Mbps)
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved field
|
||||
}IMV_PCIEStreamStatsInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief U3V设备统计流信息
|
||||
/// \~english
|
||||
/// \brief U3V device stream statistics information
|
||||
typedef struct _IMV_U3VStreamStatsInfo
|
||||
{
|
||||
unsigned int imageError; ///< \~chinese 图像错误的帧数 \~english Number of images error frames
|
||||
unsigned int lostPacketBlock; ///< \~chinese 丢包的帧数 \~english Number of frames lost
|
||||
unsigned int nReserved0[10]; ///< \~chinese 预留 \~english Reserved field
|
||||
|
||||
unsigned int imageReceived; ///< \~chinese 正常获取的帧数 \~english Number of images error frames
|
||||
double fps; ///< \~chinese 帧率 \~english Frame rate
|
||||
double bandwidth; ///< \~chinese 带宽(Mbps) \~english Bandwidth(Mbps)
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved field
|
||||
}IMV_U3VStreamStatsInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief Gige设备统计流信息
|
||||
/// \~english
|
||||
/// \brief Gige device stream statistics information
|
||||
typedef struct _IMV_GigEStreamStatsInfo
|
||||
{
|
||||
unsigned int nReserved0[10]; ///< \~chinese 预留 \~english Reserved field
|
||||
|
||||
unsigned int imageError; ///< \~chinese 图像错误的帧数 \~english Number of image error frames
|
||||
unsigned int lostPacketBlock; ///< \~chinese 丢包的帧数 \~english Number of frames lost
|
||||
unsigned int nReserved1[4]; ///< \~chinese 预留 \~english Reserved field
|
||||
unsigned int nReserved2[5]; ///< \~chinese 预留 \~english Reserved field
|
||||
|
||||
unsigned int imageReceived; ///< \~chinese 正常获取的帧数 \~english Number of frames acquired
|
||||
double fps; ///< \~chinese 帧率 \~english Frame rate
|
||||
double bandwidth; ///< \~chinese 带宽(Mbps) \~english Bandwidth(Mbps)
|
||||
unsigned int nReserved[4]; ///< \~chinese 预留 \~english Reserved field
|
||||
}IMV_GigEStreamStatsInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 统计流信息
|
||||
/// \~english
|
||||
/// \brief Stream statistics information
|
||||
typedef struct _IMV_StreamStatisticsInfo
|
||||
{
|
||||
IMV_ECameraType nCameraType; ///< \~chinese 设备类型 \~english Device type
|
||||
|
||||
union
|
||||
{
|
||||
IMV_PCIEStreamStatsInfo pcieStatisticsInfo; ///< \~chinese PCIE设备统计信息 \~english PCIE device statistics information
|
||||
IMV_U3VStreamStatsInfo u3vStatisticsInfo; ///< \~chinese U3V设备统计信息 \~english U3V device statistics information
|
||||
IMV_GigEStreamStatsInfo gigeStatisticsInfo; ///< \~chinese Gige设备统计信息 \~english GIGE device statistics information
|
||||
};
|
||||
}IMV_StreamStatisticsInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 枚举属性的枚举值信息
|
||||
/// \~english
|
||||
/// \brief Enumeration property 's enumeration value information
|
||||
typedef struct _IMV_EnumEntryInfo
|
||||
{
|
||||
uint64_t value; ///< \~chinese 枚举值 \~english Enumeration value
|
||||
char name[IMV_MAX_STRING_LENTH]; ///< \~chinese symbol名 \~english Symbol name
|
||||
}IMV_EnumEntryInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 枚举属性的可设枚举值列表信息
|
||||
/// \~english
|
||||
/// \brief Enumeration property 's settable enumeration value list information
|
||||
typedef struct _IMV_EnumEntryList
|
||||
{
|
||||
unsigned int nEnumEntryBufferSize; ///< \~chinese 存放枚举值内存大小 \~english The size of saving enumeration value
|
||||
IMV_EnumEntryInfo* pEnumEntryInfo; ///< \~chinese 存放可设枚举值列表(调用者分配缓存) \~english Save the list of settable enumeration value(allocated cache by the caller)
|
||||
}IMV_EnumEntryList;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 像素转换结构体
|
||||
/// \~english
|
||||
/// \brief Pixel convert structure
|
||||
typedef struct _IMV_PixelConvertParam
|
||||
{
|
||||
unsigned int nWidth; ///< [IN] \~chinese 图像宽 \~english Width
|
||||
unsigned int nHeight; ///< [IN] \~chinese 图像高 \~english Height
|
||||
IMV_EPixelType ePixelFormat; ///< [IN] \~chinese 像素格式 \~english Pixel format
|
||||
unsigned char* pSrcData; ///< [IN] \~chinese 输入图像数据 \~english Input image data
|
||||
unsigned int nSrcDataLen; ///< [IN] \~chinese 输入图像长度 \~english Input image length
|
||||
unsigned int nPaddingX; ///< [IN] \~chinese 图像宽填充 \~english Padding X
|
||||
unsigned int nPaddingY; ///< [IN] \~chinese 图像高填充 \~english Padding Y
|
||||
IMV_EBayerDemosaic eBayerDemosaic; ///< [IN] \~chinese 转换Bayer格式算法 \~english Alorithm used for Bayer demosaic
|
||||
IMV_EPixelType eDstPixelFormat; ///< [IN] \~chinese 目标像素格式 \~english Destination pixel format
|
||||
unsigned char* pDstBuf; ///< [OUT] \~chinese 输出数据缓存(调用者分配缓存) \~english Output data buffer(allocated cache by the caller)
|
||||
unsigned int nDstBufSize; ///< [IN] \~chinese 提供的输出缓冲区大小 \~english Provided output buffer size
|
||||
unsigned int nDstDataLen; ///< [OUT] \~chinese 输出数据长度 \~english Output data length
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved field
|
||||
}IMV_PixelConvertParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 录像结构体
|
||||
/// \~english
|
||||
/// \brief Record structure
|
||||
typedef struct _IMV_RecordParam
|
||||
{
|
||||
unsigned int nWidth; ///< [IN] \~chinese 图像宽 \~english Width
|
||||
unsigned int nHeight; ///< [IN] \~chinese 图像高 \~english Height
|
||||
float fFameRate; ///< [IN] \~chinese 帧率(大于0) \~english Frame rate(greater than 0)
|
||||
unsigned int nQuality; ///< [IN] \~chinese 视频质量(1-100) \~english Video quality(1-100)
|
||||
IMV_EVideoType recordFormat; ///< [IN] \~chinese 视频格式 \~english Video format
|
||||
const char* pRecordFilePath; ///< [IN] \~chinese 保存视频路径 \~english Save video path
|
||||
unsigned int nReserved[5]; ///< \~chinese 预留 \~english Reserved
|
||||
}IMV_RecordParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 录像用帧信息结构体
|
||||
/// \~english
|
||||
/// \brief Frame information for recording structure
|
||||
typedef struct _IMV_RecordFrameInfoParam
|
||||
{
|
||||
unsigned char* pData; ///< [IN] \~chinese 图像数据 \~english Image data
|
||||
unsigned int nDataLen; ///< [IN] \~chinese 图像数据长度 \~english Image data length
|
||||
unsigned int nPaddingX; ///< [IN] \~chinese 图像宽填充 \~english Padding X
|
||||
unsigned int nPaddingY; ///< [IN] \~chinese 图像高填充 \~english Padding Y
|
||||
IMV_EPixelType ePixelFormat; ///< [IN] \~chinese 像素格式 \~english Pixel format
|
||||
unsigned int nReserved[5]; ///< \~chinese 预留 \~english Reserved
|
||||
}IMV_RecordFrameInfoParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 图像翻转结构体
|
||||
/// \~english
|
||||
/// \brief Flip image structure
|
||||
typedef struct _IMV_FlipImageParam
|
||||
{
|
||||
unsigned int nWidth; ///< [IN] \~chinese 图像宽 \~english Width
|
||||
unsigned int nHeight; ///< [IN] \~chinese 图像高 \~english Height
|
||||
IMV_EPixelType ePixelFormat; ///< [IN] \~chinese 像素格式 \~english Pixel format
|
||||
IMV_EFlipType eFlipType; ///< [IN] \~chinese 翻转类型 \~english Flip type
|
||||
unsigned char* pSrcData; ///< [IN] \~chinese 输入图像数据 \~english Input image data
|
||||
unsigned int nSrcDataLen; ///< [IN] \~chinese 输入图像长度 \~english Input image length
|
||||
unsigned char* pDstBuf; ///< [OUT] \~chinese 输出数据缓存(调用者分配缓存) \~english Output data buffer(allocated cache by the caller)
|
||||
unsigned int nDstBufSize; ///< [IN] \~chinese 提供的输出缓冲区大小 \~english Provided output buffer size
|
||||
unsigned int nDstDataLen; ///< [OUT] \~chinese 输出数据长度 \~english Output data length
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved
|
||||
}IMV_FlipImageParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 图像旋转结构体
|
||||
/// \~english
|
||||
/// \brief Rotate image structure
|
||||
typedef struct _IMV_RotateImageParam
|
||||
{
|
||||
unsigned int nWidth; ///< [IN][OUT] \~chinese 图像宽 \~english Width
|
||||
unsigned int nHeight; ///< [IN][OUT] \~chinese 图像高 \~english Height
|
||||
IMV_EPixelType ePixelFormat; ///< [IN] \~chinese 像素格式 \~english Pixel format
|
||||
IMV_ERotationAngle eRotationAngle; ///< [IN] \~chinese 旋转角度 \~english Rotation angle
|
||||
unsigned char* pSrcData; ///< [IN] \~chinese 输入图像数据 \~english Input image data
|
||||
unsigned int nSrcDataLen; ///< [IN] \~chinese 输入图像长度 \~english Input image length
|
||||
unsigned char* pDstBuf; ///< [OUT] \~chinese 输出数据缓存(调用者分配缓存) \~english Output data buffer(allocated cache by the caller)
|
||||
unsigned int nDstBufSize; ///< [IN] \~chinese 提供的输出缓冲区大小 \~english Provided output buffer size
|
||||
unsigned int nDstDataLen; ///< [OUT] \~chinese 输出数据长度 \~english Output data length
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved
|
||||
}IMV_RotateImageParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 设备连接状态事件回调函数声明
|
||||
/// \param pParamUpdateArg [in] 回调时主动推送的设备连接状态事件信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of device connection status event
|
||||
/// \param pStreamArg [in] The device connection status event which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_ConnectCallBack)(const IMV_SConnectArg* pConnectArg, void* pUser);
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 参数更新事件回调函数声明
|
||||
/// \param pParamUpdateArg [in] 回调时主动推送的参数更新事件信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of parameter update event
|
||||
/// \param pStreamArg [in] The parameter update event which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_ParamUpdateCallBack)(const IMV_SParamUpdateArg* pParamUpdateArg, void* pUser);
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 流事件回调函数声明
|
||||
/// \param pStreamArg [in] 回调时主动推送的流事件信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of stream event
|
||||
/// \param pStreamArg [in] The stream event which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_StreamCallBack)(const IMV_SStreamArg* pStreamArg, void* pUser);
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 消息通道事件回调函数声明
|
||||
/// \param pMsgChannelArg [in] 回调时主动推送的消息通道事件信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of message channel event
|
||||
/// \param pMsgChannelArg [in] The message channel event which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_MsgChannelCallBack)(const IMV_SMsgChannelArg* pMsgChannelArg, void* pUser);
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 帧数据信息回调函数声明
|
||||
/// \param pFrame [in] 回调时主动推送的帧信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of frame data information
|
||||
/// \param pFrame [in] The frame information which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_FrameCallBack)(IMV_Frame* pFrame, void* pUser);
|
||||
|
||||
#endif // __IMV_DEFINES_H__
|
1071
include/IMVApi.h
Normal file
1071
include/IMVApi.h
Normal file
File diff suppressed because it is too large
Load Diff
811
include/IMVDefines.h
Normal file
811
include/IMVDefines.h
Normal file
@ -0,0 +1,811 @@
|
||||
#ifndef __IMV_DEFINES_H__
|
||||
#define __IMV_DEFINES_H__
|
||||
|
||||
#ifdef WIN32
|
||||
typedef __int64 int64_t;
|
||||
typedef unsigned __int64 uint64_t;
|
||||
#else
|
||||
#include <stdint.h>
|
||||
#endif
|
||||
|
||||
#ifndef IN
|
||||
#define IN ///< \~chinese 输入型参数 \~english Input param
|
||||
#endif
|
||||
|
||||
#ifndef OUT
|
||||
#define OUT ///< \~chinese 输出型参数 \~english Output param
|
||||
#endif
|
||||
|
||||
#ifndef IN_OUT
|
||||
#define IN_OUT ///< \~chinese 输入/输出型参数 \~english Input/Output param
|
||||
#endif
|
||||
|
||||
#ifndef __cplusplus
|
||||
typedef char bool;
|
||||
#define true 1
|
||||
#define false 0
|
||||
#endif
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 错误码
|
||||
/// \~english
|
||||
/// \brief Error code
|
||||
#define IMV_OK 0 ///< \~chinese 成功,无错误 \~english Successed, no error
|
||||
#define IMV_ERROR -101 ///< \~chinese 通用的错误 \~english Generic error
|
||||
#define IMV_INVALID_HANDLE -102 ///< \~chinese 错误或无效的句柄 \~english Error or invalid handle
|
||||
#define IMV_INVALID_PARAM -103 ///< \~chinese 错误的参数 \~english Incorrect parameter
|
||||
#define IMV_INVALID_FRAME_HANDLE -104 ///< \~chinese 错误或无效的帧句柄 \~english Error or invalid frame handle
|
||||
#define IMV_INVALID_FRAME -105 ///< \~chinese 无效的帧 \~english Invalid frame
|
||||
#define IMV_INVALID_RESOURCE -106 ///< \~chinese 相机/事件/流等资源无效 \~english Camera/Event/Stream and so on resource invalid
|
||||
#define IMV_INVALID_IP -107 ///< \~chinese 设备与主机的IP网段不匹配 \~english Device's and PC's subnet is mismatch
|
||||
#define IMV_NO_MEMORY -108 ///< \~chinese 内存不足 \~english Malloc memery failed
|
||||
#define IMV_INSUFFICIENT_MEMORY -109 ///< \~chinese 传入的内存空间不足 \~english Insufficient memory
|
||||
#define IMV_ERROR_PROPERTY_TYPE -110 ///< \~chinese 属性类型错误 \~english Property type error
|
||||
#define IMV_INVALID_ACCESS -111 ///< \~chinese 属性不可访问、或不能读/写、或读/写失败 \~english Property not accessible, or not be read/written, or read/written failed
|
||||
#define IMV_INVALID_RANGE -112 ///< \~chinese 属性值超出范围、或者不是步长整数倍 \~english The property's value is out of range, or is not integer multiple of the step
|
||||
#define IMV_NOT_SUPPORT -113 ///< \~chinese 设备不支持的功能 \~english Device not supported function
|
||||
|
||||
#define IMV_MAX_DEVICE_ENUM_NUM 100 ///< \~chinese 支持设备最大个数 \~english The maximum number of supported devices
|
||||
#define IMV_MAX_STRING_LENTH 256 ///< \~chinese 字符串最大长度 \~english The maximum length of string
|
||||
#define IMV_MAX_ERROR_LIST_NUM 128 ///< \~chinese 失败属性列表最大长度 \~english The maximum size of failed properties list
|
||||
|
||||
typedef void* IMV_HANDLE; ///< \~chinese 设备句柄 \~english Device handle
|
||||
typedef void* IMV_FRAME_HANDLE; ///< \~chinese 帧句柄 \~english Frame handle
|
||||
|
||||
/// \~chinese
|
||||
///枚举:接口类型
|
||||
/// \~english
|
||||
///Enumeration: interface type
|
||||
typedef enum _IMV_EInterfaceType
|
||||
{
|
||||
interfaceTypeGige = 0x00000001, ///< \~chinese 网卡接口类型 \~english NIC type
|
||||
interfaceTypeUsb3 = 0x00000002, ///< \~chinese USB3.0接口类型 \~english USB3.0 interface type
|
||||
interfaceTypeCL = 0x00000004, ///< \~chinese CAMERALINK接口类型 \~english Cameralink interface type
|
||||
interfaceTypePCIe = 0x00000008, ///< \~chinese PCIe接口类型 \~english PCIe interface type
|
||||
interfaceTypeAll = 0x00000000, ///< \~chinese 忽略接口类型 \~english All types interface type
|
||||
interfaceInvalidType = 0xFFFFFFFF ///< \~chinese 无效接口类型 \~english Invalid interface type
|
||||
}IMV_EInterfaceType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:设备类型
|
||||
/// \~english
|
||||
///Enumeration: device type
|
||||
typedef enum _IMV_ECameraType
|
||||
{
|
||||
typeGigeCamera = 0, ///< \~chinese GIGE相机 \~english GigE Vision Camera
|
||||
typeU3vCamera = 1, ///< \~chinese USB3.0相机 \~english USB3.0 Vision Camera
|
||||
typeCLCamera = 2, ///< \~chinese CAMERALINK 相机 \~english Cameralink camera
|
||||
typePCIeCamera = 3, ///< \~chinese PCIe相机 \~english PCIe Camera
|
||||
typeUndefinedCamera = 255 ///< \~chinese 未知类型 \~english Undefined Camera
|
||||
}IMV_ECameraType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:创建句柄方式
|
||||
/// \~english
|
||||
///Enumeration: Create handle mode
|
||||
typedef enum _IMV_ECreateHandleMode
|
||||
{
|
||||
modeByIndex = 0, ///< \~chinese 通过已枚举设备的索引(从0开始,比如 0, 1, 2...) \~english By index of enumerated devices (Start from 0, such as 0, 1, 2...)
|
||||
modeByCameraKey, ///< \~chinese 通过设备键"厂商:序列号" \~english By device's key "vendor:serial number"
|
||||
modeByDeviceUserID, ///< \~chinese 通过设备自定义名 \~english By device userID
|
||||
modeByIPAddress, ///< \~chinese 通过设备IP地址 \~english By device IP address.
|
||||
}IMV_ECreateHandleMode;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:访问权限
|
||||
/// \~english
|
||||
///Enumeration: access permission
|
||||
typedef enum _IMV_ECameraAccessPermission
|
||||
{
|
||||
accessPermissionOpen = 0, ///< \~chinese GigE相机没有被连接 \~english The GigE vision device isn't connected to any application.
|
||||
accessPermissionExclusive, ///< \~chinese 独占访问权限 \~english Exclusive Access Permission
|
||||
accessPermissionControl, ///< \~chinese 非独占可读访问权限 \~english Non-Exclusive Readbale Access Permission
|
||||
accessPermissionControlWithSwitchover, ///< \~chinese 切换控制访问权限 \~english Control access with switchover enabled.
|
||||
accessPermissionUnknown = 254, ///< \~chinese 无法确定 \~english Value not known; indeterminate.
|
||||
accessPermissionUndefined ///< \~chinese 未定义访问权限 \~english Undefined Access Permission
|
||||
}IMV_ECameraAccessPermission;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:抓图策略
|
||||
/// \~english
|
||||
///Enumeration: grab strartegy
|
||||
typedef enum _IMV_EGrabStrategy
|
||||
{
|
||||
grabStrartegySequential = 0, ///< \~chinese 按到达顺序处理图片 \~english The images are processed in the order of their arrival
|
||||
grabStrartegyLatestImage = 1, ///< \~chinese 获取最新的图片 \~english Get latest image
|
||||
grabStrartegyUpcomingImage = 2, ///< \~chinese 等待获取下一张图片(只针对GigE相机) \~english Waiting for next image(GigE only)
|
||||
grabStrartegyUndefined ///< \~chinese 未定义 \~english Undefined
|
||||
}IMV_EGrabStrategy;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:流事件状态
|
||||
/// \~english
|
||||
/// Enumeration:stream event status
|
||||
typedef enum _IMV_EEventStatus
|
||||
{
|
||||
streamEventNormal = 1, ///< \~chinese 正常流事件 \~english Normal stream event
|
||||
streamEventLostFrame = 2, ///< \~chinese 丢帧事件 \~english Lost frame event
|
||||
streamEventLostPacket = 3, ///< \~chinese 丢包事件 \~english Lost packet event
|
||||
streamEventImageError = 4, ///< \~chinese 图像错误事件 \~english Error image event
|
||||
streamEventStreamChannelError = 5, ///< \~chinese 取流错误事件 \~english Stream channel error event
|
||||
streamEventTooManyConsecutiveResends = 6, ///< \~chinese 太多连续重传 \~english Too many consecutive resends event
|
||||
streamEventTooManyLostPacket = 7 ///< \~chinese 太多丢包 \~english Too many lost packet event
|
||||
}IMV_EEventStatus;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:图像转换Bayer格式所用的算法
|
||||
/// \~english
|
||||
/// Enumeration:alorithm used for Bayer demosaic
|
||||
typedef enum _IMV_EBayerDemosaic
|
||||
{
|
||||
demosaicNearestNeighbor, ///< \~chinese 最近邻 \~english Nearest neighbor
|
||||
demosaicBilinear, ///< \~chinese 双线性 \~english Bilinear
|
||||
demosaicEdgeSensing, ///< \~chinese 边缘检测 \~english Edge sensing
|
||||
demosaicNotSupport = 255, ///< \~chinese 不支持 \~english Not support
|
||||
}IMV_EBayerDemosaic;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:事件类型
|
||||
/// \~english
|
||||
/// Enumeration:event type
|
||||
typedef enum _IMV_EVType
|
||||
{
|
||||
offLine, ///< \~chinese 设备离线通知 \~english device offline notification
|
||||
onLine ///< \~chinese 设备在线通知 \~english device online notification
|
||||
}IMV_EVType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:视频格式
|
||||
/// \~english
|
||||
/// Enumeration:Video format
|
||||
typedef enum _IMV_EVideoType
|
||||
{
|
||||
typeVideoFormatAVI = 0, ///< \~chinese AVI格式 \~english AVI format
|
||||
typeVideoFormatNotSupport = 255 ///< \~chinese 不支持 \~english Not support
|
||||
}IMV_EVideoType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:图像翻转类型
|
||||
/// \~english
|
||||
/// Enumeration:Image flip type
|
||||
typedef enum _IMV_EFlipType
|
||||
{
|
||||
typeFlipVertical, ///< \~chinese 垂直(Y轴)翻转 \~english Vertical(Y-axis) flip
|
||||
typeFlipHorizontal ///< \~chinese 水平(X轴)翻转 \~english Horizontal(X-axis) flip
|
||||
}IMV_EFlipType;
|
||||
|
||||
/// \~chinese
|
||||
///枚举:顺时针旋转角度
|
||||
/// \~english
|
||||
/// Enumeration:Rotation angle clockwise
|
||||
typedef enum _IMV_ERotationAngle
|
||||
{
|
||||
rotationAngle90, ///< \~chinese 顺时针旋转90度 \~english Rotate 90 degree clockwise
|
||||
rotationAngle180, ///< \~chinese 顺时针旋转180度 \~english Rotate 180 degree clockwise
|
||||
rotationAngle270, ///< \~chinese 顺时针旋转270度 \~english Rotate 270 degree clockwise
|
||||
}IMV_ERotationAngle;
|
||||
|
||||
#define IMV_GVSP_PIX_MONO 0x01000000
|
||||
#define IMV_GVSP_PIX_RGB 0x02000000
|
||||
#define IMV_GVSP_PIX_COLOR 0x02000000
|
||||
#define IMV_GVSP_PIX_CUSTOM 0x80000000
|
||||
#define IMV_GVSP_PIX_COLOR_MASK 0xFF000000
|
||||
|
||||
// Indicate effective number of bits occupied by the pixel (including padding).
|
||||
// This can be used to compute amount of memory required to store an image.
|
||||
#define IMV_GVSP_PIX_OCCUPY1BIT 0x00010000
|
||||
#define IMV_GVSP_PIX_OCCUPY2BIT 0x00020000
|
||||
#define IMV_GVSP_PIX_OCCUPY4BIT 0x00040000
|
||||
#define IMV_GVSP_PIX_OCCUPY8BIT 0x00080000
|
||||
#define IMV_GVSP_PIX_OCCUPY12BIT 0x000C0000
|
||||
#define IMV_GVSP_PIX_OCCUPY16BIT 0x00100000
|
||||
#define IMV_GVSP_PIX_OCCUPY24BIT 0x00180000
|
||||
#define IMV_GVSP_PIX_OCCUPY32BIT 0x00200000
|
||||
#define IMV_GVSP_PIX_OCCUPY36BIT 0x00240000
|
||||
#define IMV_GVSP_PIX_OCCUPY48BIT 0x00300000
|
||||
|
||||
/// \~chinese
|
||||
///枚举:图像格式
|
||||
/// \~english
|
||||
/// Enumeration:image format
|
||||
typedef enum _IMV_EPixelType
|
||||
{
|
||||
// Undefined pixel type
|
||||
gvspPixelTypeUndefined = -1,
|
||||
|
||||
// Mono Format
|
||||
gvspPixelMono1p = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY1BIT | 0x0037),
|
||||
gvspPixelMono2p = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY2BIT | 0x0038),
|
||||
gvspPixelMono4p = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY4BIT | 0x0039),
|
||||
gvspPixelMono8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x0001),
|
||||
gvspPixelMono8S = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x0002),
|
||||
gvspPixelMono10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0003),
|
||||
gvspPixelMono10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0004),
|
||||
gvspPixelMono12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0005),
|
||||
gvspPixelMono12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0006),
|
||||
gvspPixelMono14 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0025),
|
||||
gvspPixelMono16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0007),
|
||||
|
||||
// Bayer Format
|
||||
gvspPixelBayGR8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x0008),
|
||||
gvspPixelBayRG8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x0009),
|
||||
gvspPixelBayGB8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x000A),
|
||||
gvspPixelBayBG8 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY8BIT | 0x000B),
|
||||
gvspPixelBayGR10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x000C),
|
||||
gvspPixelBayRG10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x000D),
|
||||
gvspPixelBayGB10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x000E),
|
||||
gvspPixelBayBG10 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x000F),
|
||||
gvspPixelBayGR12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0010),
|
||||
gvspPixelBayRG12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0011),
|
||||
gvspPixelBayGB12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0012),
|
||||
gvspPixelBayBG12 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0013),
|
||||
gvspPixelBayGR10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0026),
|
||||
gvspPixelBayRG10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0027),
|
||||
gvspPixelBayGB10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0028),
|
||||
gvspPixelBayBG10Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x0029),
|
||||
gvspPixelBayGR12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x002A),
|
||||
gvspPixelBayRG12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x002B),
|
||||
gvspPixelBayGB12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x002C),
|
||||
gvspPixelBayBG12Packed = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY12BIT | 0x002D),
|
||||
gvspPixelBayGR16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x002E),
|
||||
gvspPixelBayRG16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x002F),
|
||||
gvspPixelBayGB16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0030),
|
||||
gvspPixelBayBG16 = (IMV_GVSP_PIX_MONO | IMV_GVSP_PIX_OCCUPY16BIT | 0x0031),
|
||||
|
||||
// RGB Format
|
||||
gvspPixelRGB8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0014),
|
||||
gvspPixelBGR8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0015),
|
||||
gvspPixelRGBA8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY32BIT | 0x0016),
|
||||
gvspPixelBGRA8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY32BIT | 0x0017),
|
||||
gvspPixelRGB10 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0018),
|
||||
gvspPixelBGR10 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0019),
|
||||
gvspPixelRGB12 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x001A),
|
||||
gvspPixelBGR12 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x001B),
|
||||
gvspPixelRGB16 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0033),
|
||||
gvspPixelRGB10V1Packed = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY32BIT | 0x001C),
|
||||
gvspPixelRGB10P32 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY32BIT | 0x001D),
|
||||
gvspPixelRGB12V1Packed = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY36BIT | 0X0034),
|
||||
gvspPixelRGB565P = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0035),
|
||||
gvspPixelBGR565P = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0X0036),
|
||||
|
||||
// YVR Format
|
||||
gvspPixelYUV411_8_UYYVYY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY12BIT | 0x001E),
|
||||
gvspPixelYUV422_8_UYVY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x001F),
|
||||
gvspPixelYUV422_8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0032),
|
||||
gvspPixelYUV8_UYV = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0020),
|
||||
gvspPixelYCbCr8CbYCr = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x003A),
|
||||
gvspPixelYCbCr422_8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x003B),
|
||||
gvspPixelYCbCr422_8_CbYCrY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0043),
|
||||
gvspPixelYCbCr411_8_CbYYCrYY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY12BIT | 0x003C),
|
||||
gvspPixelYCbCr601_8_CbYCr = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x003D),
|
||||
gvspPixelYCbCr601_422_8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x003E),
|
||||
gvspPixelYCbCr601_422_8_CbYCrY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0044),
|
||||
gvspPixelYCbCr601_411_8_CbYYCrYY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY12BIT | 0x003F),
|
||||
gvspPixelYCbCr709_8_CbYCr = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0040),
|
||||
gvspPixelYCbCr709_422_8 = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0041),
|
||||
gvspPixelYCbCr709_422_8_CbYCrY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY16BIT | 0x0045),
|
||||
gvspPixelYCbCr709_411_8_CbYYCrYY = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY12BIT | 0x0042),
|
||||
|
||||
// RGB Planar
|
||||
gvspPixelRGB8Planar = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY24BIT | 0x0021),
|
||||
gvspPixelRGB10Planar = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0022),
|
||||
gvspPixelRGB12Planar = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0023),
|
||||
gvspPixelRGB16Planar = (IMV_GVSP_PIX_COLOR | IMV_GVSP_PIX_OCCUPY48BIT | 0x0024),
|
||||
|
||||
//BayerRG10p和BayerRG12p格式,针对特定项目临时添加,请不要使用
|
||||
//BayerRG10p and BayerRG12p, currently used for specific project, please do not use them
|
||||
gvspPixelBayRG10p = 0x010A0058,
|
||||
gvspPixelBayRG12p = 0x010c0059,
|
||||
|
||||
//mono1c格式,自定义格式
|
||||
//mono1c, customized image format, used for binary output
|
||||
gvspPixelMono1c = 0x012000FF,
|
||||
|
||||
//mono1e格式,自定义格式,用来显示连通域
|
||||
//mono1e, customized image format, used for displaying connected domain
|
||||
gvspPixelMono1e = 0x01080FFF
|
||||
}IMV_EPixelType;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 字符串信息
|
||||
/// \~english
|
||||
/// \brief String information
|
||||
typedef struct _IMV_String
|
||||
{
|
||||
char str[IMV_MAX_STRING_LENTH]; ///< \~chinese 字符串.长度不超过256 \~english Strings and the maximum length of strings is 255.
|
||||
}IMV_String;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief GigE网卡信息
|
||||
/// \~english
|
||||
/// \brief GigE interface information
|
||||
typedef struct _IMV_GigEInterfaceInfo
|
||||
{
|
||||
char description[IMV_MAX_STRING_LENTH]; ///< \~chinese 网卡描述信息 \~english Network card description
|
||||
char macAddress[IMV_MAX_STRING_LENTH]; ///< \~chinese 网卡Mac地址 \~english Network card MAC Address
|
||||
char ipAddress[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备Ip地址 \~english Device ip Address
|
||||
char subnetMask[IMV_MAX_STRING_LENTH]; ///< \~chinese 子网掩码 \~english SubnetMask
|
||||
char defaultGateWay[IMV_MAX_STRING_LENTH]; ///< \~chinese 默认网关 \~english Default GateWay
|
||||
char chReserved[5][IMV_MAX_STRING_LENTH]; ///< 保留 \~english Reserved field
|
||||
}IMV_GigEInterfaceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief USB接口信息
|
||||
/// \~english
|
||||
/// \brief USB interface information
|
||||
typedef struct _IMV_UsbInterfaceInfo
|
||||
{
|
||||
char description[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口描述信息 \~english USB interface description
|
||||
char vendorID[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口Vendor ID \~english USB interface Vendor ID
|
||||
char deviceID[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口设备ID \~english USB interface Device ID
|
||||
char subsystemID[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口Subsystem ID \~english USB interface Subsystem ID
|
||||
char revision[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口Revision \~english USB interface Revision
|
||||
char speed[IMV_MAX_STRING_LENTH]; ///< \~chinese USB接口speed \~english USB interface speed
|
||||
char chReserved[4][IMV_MAX_STRING_LENTH]; ///< 保留 \~english Reserved field
|
||||
}IMV_UsbInterfaceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief GigE设备信息
|
||||
/// \~english
|
||||
/// \brief GigE device information
|
||||
typedef struct _IMV_GigEDeviceInfo
|
||||
{
|
||||
/// \~chinese
|
||||
/// 设备支持的IP配置选项\n
|
||||
/// value:4 相机只支持LLA\n
|
||||
/// value:5 相机支持LLA和Persistent IP\n
|
||||
/// value:6 相机支持LLA和DHCP\n
|
||||
/// value:7 相机支持LLA、DHCP和Persistent IP\n
|
||||
/// value:0 获取失败
|
||||
/// \~english
|
||||
/// Supported IP configuration options of device\n
|
||||
/// value:4 Device supports LLA \n
|
||||
/// value:5 Device supports LLA and Persistent IP\n
|
||||
/// value:6 Device supports LLA and DHCP\n
|
||||
/// value:7 Device supports LLA, DHCP and Persistent IP\n
|
||||
/// value:0 Get fail
|
||||
unsigned int nIpConfigOptions;
|
||||
/// \~chinese
|
||||
/// 设备当前的IP配置选项\n
|
||||
/// value:4 LLA处于活动状态\n
|
||||
/// value:5 LLA和Persistent IP处于活动状态\n
|
||||
/// value:6 LLA和DHCP处于活动状态\n
|
||||
/// value:7 LLA、DHCP和Persistent IP处于活动状态\n
|
||||
/// value:0 获取失败
|
||||
/// \~english
|
||||
/// Current IP Configuration options of device\n
|
||||
/// value:4 LLA is active\n
|
||||
/// value:5 LLA and Persistent IP are active\n
|
||||
/// value:6 LLA and DHCP are active\n
|
||||
/// value:7 LLA, DHCP and Persistent IP are active\n
|
||||
/// value:0 Get fail
|
||||
unsigned int nIpConfigCurrent;
|
||||
unsigned int nReserved[3]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
char macAddress[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备Mac地址 \~english Device MAC Address
|
||||
char ipAddress[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备Ip地址 \~english Device ip Address
|
||||
char subnetMask[IMV_MAX_STRING_LENTH]; ///< \~chinese 子网掩码 \~english SubnetMask
|
||||
char defaultGateWay[IMV_MAX_STRING_LENTH]; ///< \~chinese 默认网关 \~english Default GateWay
|
||||
char protocolVersion[IMV_MAX_STRING_LENTH]; ///< \~chinese 网络协议版本 \~english Net protocol version
|
||||
/// \~chinese
|
||||
/// Ip配置有效性\n
|
||||
/// Ip配置有效时字符串值"Valid"\n
|
||||
/// Ip配置无效时字符串值"Invalid On This Interface"
|
||||
/// \~english
|
||||
/// IP configuration valid\n
|
||||
/// String value is "Valid" when ip configuration valid\n
|
||||
/// String value is "Invalid On This Interface" when ip configuration invalid
|
||||
char ipConfiguration[IMV_MAX_STRING_LENTH];
|
||||
char chReserved[6][IMV_MAX_STRING_LENTH]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
}IMV_GigEDeviceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief Usb设备信息
|
||||
/// \~english
|
||||
/// \brief Usb device information
|
||||
typedef struct _IMV_UsbDeviceInfo
|
||||
{
|
||||
bool bLowSpeedSupported; ///< \~chinese true支持,false不支持,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool bFullSpeedSupported; ///< \~chinese true支持,false不支持,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool bHighSpeedSupported; ///< \~chinese true支持,false不支持,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool bSuperSpeedSupported; ///< \~chinese true支持,false不支持,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool bDriverInstalled; ///< \~chinese true安装,false未安装,其他值 非法。 \~english true support,false not supported,other invalid
|
||||
bool boolReserved[3]; ///< \~chinese 保留
|
||||
unsigned int Reserved[4]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
char configurationValid[IMV_MAX_STRING_LENTH]; ///< \~chinese 配置有效性 \~english Configuration Valid
|
||||
char genCPVersion[IMV_MAX_STRING_LENTH]; ///< \~chinese GenCP 版本 \~english GenCP Version
|
||||
char u3vVersion[IMV_MAX_STRING_LENTH]; ///< \~chinese U3V 版本号 \~english U3v Version
|
||||
char deviceGUID[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备引导号 \~english Device guid number
|
||||
char familyName[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备系列号 \~english Device serial number
|
||||
char u3vSerialNumber[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备序列号 \~english Device SerialNumber
|
||||
char speed[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备传输速度 \~english Device transmission speed
|
||||
char maxPower[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备最大供电量 \~english Maximum power supply of device
|
||||
char chReserved[4][IMV_MAX_STRING_LENTH]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
}IMV_UsbDeviceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 设备通用信息
|
||||
/// \~english
|
||||
/// \brief Device general information
|
||||
typedef struct _IMV_DeviceInfo
|
||||
{
|
||||
IMV_ECameraType nCameraType; ///< \~chinese 设备类别 \~english Camera type
|
||||
int nCameraReserved[5]; ///< \~chinese 保留 \~english Reserved field
|
||||
|
||||
char cameraKey[IMV_MAX_STRING_LENTH]; ///< \~chinese 厂商:序列号 \~english Camera key
|
||||
char cameraName[IMV_MAX_STRING_LENTH]; ///< \~chinese 用户自定义名 \~english UserDefinedName
|
||||
char serialNumber[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备序列号 \~english Device SerialNumber
|
||||
char vendorName[IMV_MAX_STRING_LENTH]; ///< \~chinese 厂商 \~english Camera Vendor
|
||||
char modelName[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备型号 \~english Device model
|
||||
char manufactureInfo[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备制造信息 \~english Device ManufactureInfo
|
||||
char deviceVersion[IMV_MAX_STRING_LENTH]; ///< \~chinese 设备版本 \~english Device Version
|
||||
char cameraReserved[5][IMV_MAX_STRING_LENTH]; ///< \~chinese 保留 \~english Reserved field
|
||||
union
|
||||
{
|
||||
IMV_GigEDeviceInfo gigeDeviceInfo; ///< \~chinese Gige设备信息 \~english Gige Device Information
|
||||
IMV_UsbDeviceInfo usbDeviceInfo; ///< \~chinese Usb设备信息 \~english Usb Device Information
|
||||
}DeviceSpecificInfo;
|
||||
|
||||
IMV_EInterfaceType nInterfaceType; ///< \~chinese 接口类别 \~english Interface type
|
||||
int nInterfaceReserved[5]; ///< \~chinese 保留 \~english Reserved field
|
||||
char interfaceName[IMV_MAX_STRING_LENTH]; ///< \~chinese 接口名 \~english Interface Name
|
||||
char interfaceReserved[5][IMV_MAX_STRING_LENTH]; ///< \~chinese 保留 \~english Reserved field
|
||||
union
|
||||
{
|
||||
IMV_GigEInterfaceInfo gigeInterfaceInfo; ///< \~chinese GigE网卡信息 \~english Gige interface Information
|
||||
IMV_UsbInterfaceInfo usbInterfaceInfo; ///< \~chinese Usb接口信息 \~english Usb interface Information
|
||||
}InterfaceInfo;
|
||||
}IMV_DeviceInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 加载失败的属性信息
|
||||
/// \~english
|
||||
/// \brief Load failed properties information
|
||||
typedef struct _IMV_ErrorList
|
||||
{
|
||||
unsigned int nParamCnt; ///< \~chinese 加载失败的属性个数 \~english The count of load failed properties
|
||||
IMV_String paramNameList[IMV_MAX_ERROR_LIST_NUM]; ///< \~chinese 加载失败的属性集合,上限128 \~english Array of load failed properties, up to 128
|
||||
}IMV_ErrorList;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 设备信息列表
|
||||
/// \~english
|
||||
/// \brief Device information list
|
||||
typedef struct _IMV_DeviceList
|
||||
{
|
||||
unsigned int nDevNum; ///< \~chinese 设备数量 \~english Device Number
|
||||
IMV_DeviceInfo* pDevInfo; ///< \~chinese 设备息列表(SDK内部缓存),最多100设备 \~english Device information list(cached within the SDK), up to 100
|
||||
}IMV_DeviceList;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 连接事件信息
|
||||
/// \~english
|
||||
/// \brief connection event information
|
||||
typedef struct _IMV_SConnectArg
|
||||
{
|
||||
IMV_EVType event; ///< \~chinese 事件类型 \~english event type
|
||||
unsigned int nReserve[10]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
}IMV_SConnectArg;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 参数更新事件信息
|
||||
/// \~english
|
||||
/// \brief Updating parameters event information
|
||||
typedef struct _IMV_SParamUpdateArg
|
||||
{
|
||||
bool isPoll; ///< \~chinese 是否是定时更新,true:表示是定时更新,false:表示非定时更新 \~english Update periodically or not. true:update periodically, true:not update periodically
|
||||
unsigned int nReserve[10]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
unsigned int nParamCnt; ///< \~chinese 更新的参数个数 \~english The number of parameters which need update
|
||||
IMV_String* pParamNameList; ///< \~chinese 更新的参数名称集合(SDK内部缓存) \~english Array of parameter's name which need to be updated(cached within the SDK)
|
||||
}IMV_SParamUpdateArg;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 流事件信息
|
||||
/// \~english
|
||||
/// \brief Stream event information
|
||||
typedef struct _IMV_SStreamArg
|
||||
{
|
||||
unsigned int channel; ///< \~chinese 流通道号 \~english Channel no.
|
||||
uint64_t blockId; ///< \~chinese 流数据BlockID \~english Block ID of stream data
|
||||
uint64_t timeStamp; ///< \~chinese 时间戳 \~english Event time stamp
|
||||
IMV_EEventStatus eStreamEventStatus; ///< \~chinese 流事件状态码 \~english Stream event status code
|
||||
unsigned int status; ///< \~chinese 事件状态错误码 \~english Status error code
|
||||
unsigned int nReserve[9]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
}IMV_SStreamArg;
|
||||
|
||||
/// \~chinese
|
||||
/// 消息通道事件ID列表
|
||||
/// \~english
|
||||
/// message channel event id list
|
||||
#define IMV_MSG_EVENT_ID_EXPOSURE_END 0x9001
|
||||
#define IMV_MSG_EVENT_ID_FRAME_TRIGGER 0x9002
|
||||
#define IMV_MSG_EVENT_ID_FRAME_START 0x9003
|
||||
#define IMV_MSG_EVENT_ID_ACQ_START 0x9004
|
||||
#define IMV_MSG_EVENT_ID_ACQ_TRIGGER 0x9005
|
||||
#define IMV_MSG_EVENT_ID_DATA_READ_OUT 0x9006
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 消息通道事件信息
|
||||
/// \~english
|
||||
/// \brief Message channel event information
|
||||
typedef struct _IMV_SMsgChannelArg
|
||||
{
|
||||
unsigned short eventId; ///< \~chinese 事件Id \~english Event id
|
||||
unsigned short channelId; ///< \~chinese 消息通道号 \~english Channel id
|
||||
uint64_t blockId; ///< \~chinese 流数据BlockID \~english Block ID of stream data
|
||||
uint64_t timeStamp; ///< \~chinese 时间戳 \~english Event timestamp
|
||||
unsigned int nReserve[8]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
unsigned int nParamCnt; ///< \~chinese 参数个数 \~english The number of parameters which need update
|
||||
IMV_String* pParamNameList; ///< \~chinese 事件相关的属性名列集合(SDK内部缓存) \~english Array of parameter's name which is related(cached within the SDK)
|
||||
}IMV_SMsgChannelArg;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief Chunk数据信息
|
||||
/// \~english
|
||||
/// \brief Chunk data information
|
||||
typedef struct _IMV_ChunkDataInfo
|
||||
{
|
||||
unsigned int chunkID; ///< \~chinese ChunkID \~english ChunkID
|
||||
unsigned int nParamCnt; ///< \~chinese 属性名个数 \~english The number of paramNames
|
||||
IMV_String* pParamNameList; ///< \~chinese Chunk数据对应的属性名集合(SDK内部缓存) \~english ParamNames Corresponding property name of chunk data(cached within the SDK)
|
||||
}IMV_ChunkDataInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 帧图像信息
|
||||
/// \~english
|
||||
/// \brief The frame image information
|
||||
typedef struct _IMV_FrameInfo
|
||||
{
|
||||
uint64_t blockId; ///< \~chinese 帧Id(仅对GigE/Usb/PCIe相机有效) \~english The block ID(GigE/Usb/PCIe camera only)
|
||||
unsigned int status; ///< \~chinese 数据帧状态(0是正常状态) \~english The status of frame(0 is normal status)
|
||||
unsigned int width; ///< \~chinese 图像宽度 \~english The width of image
|
||||
unsigned int height; ///< \~chinese 图像高度 \~english The height of image
|
||||
unsigned int size; ///< \~chinese 图像大小 \~english The size of image
|
||||
IMV_EPixelType pixelFormat; ///< \~chinese 图像像素格式 \~english The pixel format of image
|
||||
uint64_t timeStamp; ///< \~chinese 图像时间戳(仅对GigE/Usb/PCIe相机有效) \~english The timestamp of image(GigE/Usb/PCIe camera only)
|
||||
unsigned int chunkCount; ///< \~chinese 帧数据中包含的Chunk个数(仅对GigE/Usb相机有效) \~english The number of chunk in frame data(GigE/Usb Camera Only)
|
||||
unsigned int paddingX; ///< \~chinese 图像paddingX(仅对GigE/Usb/PCIe相机有效) \~english The paddingX of image(GigE/Usb/PCIe camera only)
|
||||
unsigned int paddingY; ///< \~chinese 图像paddingY(仅对GigE/Usb/PCIe相机有效) \~english The paddingY of image(GigE/Usb/PCIe camera only)
|
||||
unsigned int recvFrameTime; ///< \~chinese 图像在网络传输所用的时间(单位:微秒,非GigE相机该值为0) \~english The time taken for the image to be transmitted over the network(unit:us, The value is 0 for non-GigE camera)
|
||||
unsigned int nReserved[19]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
}IMV_FrameInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 帧图像数据信息
|
||||
/// \~english
|
||||
/// \brief Frame image data information
|
||||
typedef struct _IMV_Frame
|
||||
{
|
||||
IMV_FRAME_HANDLE frameHandle; ///< \~chinese 帧图像句柄(SDK内部帧管理用) \~english Frame image handle(used for managing frame within the SDK)
|
||||
unsigned char* pData; ///< \~chinese 帧图像数据的内存首地址 \~english The starting address of memory of image data
|
||||
IMV_FrameInfo frameInfo; ///< \~chinese 帧信息 \~english Frame information
|
||||
unsigned int nReserved[10]; ///< \~chinese 预留字段 \~english Reserved field
|
||||
}IMV_Frame;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief PCIE设备统计流信息
|
||||
/// \~english
|
||||
/// \brief PCIE device stream statistics information
|
||||
typedef struct _IMV_PCIEStreamStatsInfo
|
||||
{
|
||||
unsigned int imageError; ///< \~chinese 图像错误的帧数 \~english Number of images error frames
|
||||
unsigned int lostPacketBlock; ///< \~chinese 丢包的帧数 \~english Number of frames lost
|
||||
unsigned int nReserved0[10]; ///< \~chinese 预留 \~english Reserved field
|
||||
|
||||
unsigned int imageReceived; ///< \~chinese 正常获取的帧数 \~english Number of frames acquired
|
||||
double fps; ///< \~chinese 帧率 \~english Frame rate
|
||||
double bandwidth; ///< \~chinese 带宽(Mbps) \~english Bandwidth(Mbps)
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved field
|
||||
}IMV_PCIEStreamStatsInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief U3V设备统计流信息
|
||||
/// \~english
|
||||
/// \brief U3V device stream statistics information
|
||||
typedef struct _IMV_U3VStreamStatsInfo
|
||||
{
|
||||
unsigned int imageError; ///< \~chinese 图像错误的帧数 \~english Number of images error frames
|
||||
unsigned int lostPacketBlock; ///< \~chinese 丢包的帧数 \~english Number of frames lost
|
||||
unsigned int nReserved0[10]; ///< \~chinese 预留 \~english Reserved field
|
||||
|
||||
unsigned int imageReceived; ///< \~chinese 正常获取的帧数 \~english Number of images error frames
|
||||
double fps; ///< \~chinese 帧率 \~english Frame rate
|
||||
double bandwidth; ///< \~chinese 带宽(Mbps) \~english Bandwidth(Mbps)
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved field
|
||||
}IMV_U3VStreamStatsInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief Gige设备统计流信息
|
||||
/// \~english
|
||||
/// \brief Gige device stream statistics information
|
||||
typedef struct _IMV_GigEStreamStatsInfo
|
||||
{
|
||||
unsigned int nReserved0[10]; ///< \~chinese 预留 \~english Reserved field
|
||||
|
||||
unsigned int imageError; ///< \~chinese 图像错误的帧数 \~english Number of image error frames
|
||||
unsigned int lostPacketBlock; ///< \~chinese 丢包的帧数 \~english Number of frames lost
|
||||
unsigned int nReserved1[4]; ///< \~chinese 预留 \~english Reserved field
|
||||
unsigned int nReserved2[5]; ///< \~chinese 预留 \~english Reserved field
|
||||
|
||||
unsigned int imageReceived; ///< \~chinese 正常获取的帧数 \~english Number of frames acquired
|
||||
double fps; ///< \~chinese 帧率 \~english Frame rate
|
||||
double bandwidth; ///< \~chinese 带宽(Mbps) \~english Bandwidth(Mbps)
|
||||
unsigned int nReserved[4]; ///< \~chinese 预留 \~english Reserved field
|
||||
}IMV_GigEStreamStatsInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 统计流信息
|
||||
/// \~english
|
||||
/// \brief Stream statistics information
|
||||
typedef struct _IMV_StreamStatisticsInfo
|
||||
{
|
||||
IMV_ECameraType nCameraType; ///< \~chinese 设备类型 \~english Device type
|
||||
|
||||
union
|
||||
{
|
||||
IMV_PCIEStreamStatsInfo pcieStatisticsInfo; ///< \~chinese PCIE设备统计信息 \~english PCIE device statistics information
|
||||
IMV_U3VStreamStatsInfo u3vStatisticsInfo; ///< \~chinese U3V设备统计信息 \~english U3V device statistics information
|
||||
IMV_GigEStreamStatsInfo gigeStatisticsInfo; ///< \~chinese Gige设备统计信息 \~english GIGE device statistics information
|
||||
};
|
||||
}IMV_StreamStatisticsInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 枚举属性的枚举值信息
|
||||
/// \~english
|
||||
/// \brief Enumeration property 's enumeration value information
|
||||
typedef struct _IMV_EnumEntryInfo
|
||||
{
|
||||
uint64_t value; ///< \~chinese 枚举值 \~english Enumeration value
|
||||
char name[IMV_MAX_STRING_LENTH]; ///< \~chinese symbol名 \~english Symbol name
|
||||
}IMV_EnumEntryInfo;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 枚举属性的可设枚举值列表信息
|
||||
/// \~english
|
||||
/// \brief Enumeration property 's settable enumeration value list information
|
||||
typedef struct _IMV_EnumEntryList
|
||||
{
|
||||
unsigned int nEnumEntryBufferSize; ///< \~chinese 存放枚举值内存大小 \~english The size of saving enumeration value
|
||||
IMV_EnumEntryInfo* pEnumEntryInfo; ///< \~chinese 存放可设枚举值列表(调用者分配缓存) \~english Save the list of settable enumeration value(allocated cache by the caller)
|
||||
}IMV_EnumEntryList;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 像素转换结构体
|
||||
/// \~english
|
||||
/// \brief Pixel convert structure
|
||||
typedef struct _IMV_PixelConvertParam
|
||||
{
|
||||
unsigned int nWidth; ///< [IN] \~chinese 图像宽 \~english Width
|
||||
unsigned int nHeight; ///< [IN] \~chinese 图像高 \~english Height
|
||||
IMV_EPixelType ePixelFormat; ///< [IN] \~chinese 像素格式 \~english Pixel format
|
||||
unsigned char* pSrcData; ///< [IN] \~chinese 输入图像数据 \~english Input image data
|
||||
unsigned int nSrcDataLen; ///< [IN] \~chinese 输入图像长度 \~english Input image length
|
||||
unsigned int nPaddingX; ///< [IN] \~chinese 图像宽填充 \~english Padding X
|
||||
unsigned int nPaddingY; ///< [IN] \~chinese 图像高填充 \~english Padding Y
|
||||
IMV_EBayerDemosaic eBayerDemosaic; ///< [IN] \~chinese 转换Bayer格式算法 \~english Alorithm used for Bayer demosaic
|
||||
IMV_EPixelType eDstPixelFormat; ///< [IN] \~chinese 目标像素格式 \~english Destination pixel format
|
||||
unsigned char* pDstBuf; ///< [OUT] \~chinese 输出数据缓存(调用者分配缓存) \~english Output data buffer(allocated cache by the caller)
|
||||
unsigned int nDstBufSize; ///< [IN] \~chinese 提供的输出缓冲区大小 \~english Provided output buffer size
|
||||
unsigned int nDstDataLen; ///< [OUT] \~chinese 输出数据长度 \~english Output data length
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved field
|
||||
}IMV_PixelConvertParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 录像结构体
|
||||
/// \~english
|
||||
/// \brief Record structure
|
||||
typedef struct _IMV_RecordParam
|
||||
{
|
||||
unsigned int nWidth; ///< [IN] \~chinese 图像宽 \~english Width
|
||||
unsigned int nHeight; ///< [IN] \~chinese 图像高 \~english Height
|
||||
float fFameRate; ///< [IN] \~chinese 帧率(大于0) \~english Frame rate(greater than 0)
|
||||
unsigned int nQuality; ///< [IN] \~chinese 视频质量(1-100) \~english Video quality(1-100)
|
||||
IMV_EVideoType recordFormat; ///< [IN] \~chinese 视频格式 \~english Video format
|
||||
const char* pRecordFilePath; ///< [IN] \~chinese 保存视频路径 \~english Save video path
|
||||
unsigned int nReserved[5]; ///< \~chinese 预留 \~english Reserved
|
||||
}IMV_RecordParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 录像用帧信息结构体
|
||||
/// \~english
|
||||
/// \brief Frame information for recording structure
|
||||
typedef struct _IMV_RecordFrameInfoParam
|
||||
{
|
||||
unsigned char* pData; ///< [IN] \~chinese 图像数据 \~english Image data
|
||||
unsigned int nDataLen; ///< [IN] \~chinese 图像数据长度 \~english Image data length
|
||||
unsigned int nPaddingX; ///< [IN] \~chinese 图像宽填充 \~english Padding X
|
||||
unsigned int nPaddingY; ///< [IN] \~chinese 图像高填充 \~english Padding Y
|
||||
IMV_EPixelType ePixelFormat; ///< [IN] \~chinese 像素格式 \~english Pixel format
|
||||
unsigned int nReserved[5]; ///< \~chinese 预留 \~english Reserved
|
||||
}IMV_RecordFrameInfoParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 图像翻转结构体
|
||||
/// \~english
|
||||
/// \brief Flip image structure
|
||||
typedef struct _IMV_FlipImageParam
|
||||
{
|
||||
unsigned int nWidth; ///< [IN] \~chinese 图像宽 \~english Width
|
||||
unsigned int nHeight; ///< [IN] \~chinese 图像高 \~english Height
|
||||
IMV_EPixelType ePixelFormat; ///< [IN] \~chinese 像素格式 \~english Pixel format
|
||||
IMV_EFlipType eFlipType; ///< [IN] \~chinese 翻转类型 \~english Flip type
|
||||
unsigned char* pSrcData; ///< [IN] \~chinese 输入图像数据 \~english Input image data
|
||||
unsigned int nSrcDataLen; ///< [IN] \~chinese 输入图像长度 \~english Input image length
|
||||
unsigned char* pDstBuf; ///< [OUT] \~chinese 输出数据缓存(调用者分配缓存) \~english Output data buffer(allocated cache by the caller)
|
||||
unsigned int nDstBufSize; ///< [IN] \~chinese 提供的输出缓冲区大小 \~english Provided output buffer size
|
||||
unsigned int nDstDataLen; ///< [OUT] \~chinese 输出数据长度 \~english Output data length
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved
|
||||
}IMV_FlipImageParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 图像旋转结构体
|
||||
/// \~english
|
||||
/// \brief Rotate image structure
|
||||
typedef struct _IMV_RotateImageParam
|
||||
{
|
||||
unsigned int nWidth; ///< [IN][OUT] \~chinese 图像宽 \~english Width
|
||||
unsigned int nHeight; ///< [IN][OUT] \~chinese 图像高 \~english Height
|
||||
IMV_EPixelType ePixelFormat; ///< [IN] \~chinese 像素格式 \~english Pixel format
|
||||
IMV_ERotationAngle eRotationAngle; ///< [IN] \~chinese 旋转角度 \~english Rotation angle
|
||||
unsigned char* pSrcData; ///< [IN] \~chinese 输入图像数据 \~english Input image data
|
||||
unsigned int nSrcDataLen; ///< [IN] \~chinese 输入图像长度 \~english Input image length
|
||||
unsigned char* pDstBuf; ///< [OUT] \~chinese 输出数据缓存(调用者分配缓存) \~english Output data buffer(allocated cache by the caller)
|
||||
unsigned int nDstBufSize; ///< [IN] \~chinese 提供的输出缓冲区大小 \~english Provided output buffer size
|
||||
unsigned int nDstDataLen; ///< [OUT] \~chinese 输出数据长度 \~english Output data length
|
||||
unsigned int nReserved[8]; ///< \~chinese 预留 \~english Reserved
|
||||
}IMV_RotateImageParam;
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 设备连接状态事件回调函数声明
|
||||
/// \param pParamUpdateArg [in] 回调时主动推送的设备连接状态事件信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of device connection status event
|
||||
/// \param pStreamArg [in] The device connection status event which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_ConnectCallBack)(const IMV_SConnectArg* pConnectArg, void* pUser);
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 参数更新事件回调函数声明
|
||||
/// \param pParamUpdateArg [in] 回调时主动推送的参数更新事件信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of parameter update event
|
||||
/// \param pStreamArg [in] The parameter update event which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_ParamUpdateCallBack)(const IMV_SParamUpdateArg* pParamUpdateArg, void* pUser);
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 流事件回调函数声明
|
||||
/// \param pStreamArg [in] 回调时主动推送的流事件信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of stream event
|
||||
/// \param pStreamArg [in] The stream event which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_StreamCallBack)(const IMV_SStreamArg* pStreamArg, void* pUser);
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 消息通道事件回调函数声明
|
||||
/// \param pMsgChannelArg [in] 回调时主动推送的消息通道事件信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of message channel event
|
||||
/// \param pMsgChannelArg [in] The message channel event which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_MsgChannelCallBack)(const IMV_SMsgChannelArg* pMsgChannelArg, void* pUser);
|
||||
|
||||
/// \~chinese
|
||||
/// \brief 帧数据信息回调函数声明
|
||||
/// \param pFrame [in] 回调时主动推送的帧信息
|
||||
/// \param pUser [in] 用户自定义数据
|
||||
/// \~english
|
||||
/// \brief Call back function declaration of frame data information
|
||||
/// \param pFrame [in] The frame information which will be active pushed out during the callback
|
||||
/// \param pUser [in] User defined data
|
||||
typedef void(*IMV_FrameCallBack)(IMV_Frame* pFrame, void* pUser);
|
||||
|
||||
#endif // __IMV_DEFINES_H__
|
BIN
lib/GenICam/bin/Linux64_x64/libGCBase_gcc421_v3_0.so
Normal file
BIN
lib/GenICam/bin/Linux64_x64/libGCBase_gcc421_v3_0.so
Normal file
Binary file not shown.
BIN
lib/GenICam/bin/Linux64_x64/libGenApi_gcc421_v3_0.so
Normal file
BIN
lib/GenICam/bin/Linux64_x64/libGenApi_gcc421_v3_0.so
Normal file
Binary file not shown.
BIN
lib/GenICam/bin/Linux64_x64/libLog_gcc421_v3_0.so
Normal file
BIN
lib/GenICam/bin/Linux64_x64/libLog_gcc421_v3_0.so
Normal file
Binary file not shown.
BIN
lib/GenICam/bin/Linux64_x64/libMathParser_gcc421_v3_0.so
Normal file
BIN
lib/GenICam/bin/Linux64_x64/libMathParser_gcc421_v3_0.so
Normal file
Binary file not shown.
BIN
lib/GenICam/bin/Linux64_x64/libNodeMapData_gcc421_v3_0.so
Normal file
BIN
lib/GenICam/bin/Linux64_x64/libNodeMapData_gcc421_v3_0.so
Normal file
Binary file not shown.
BIN
lib/GenICam/bin/Linux64_x64/libXmlParser_gcc421_v3_0.so
Normal file
BIN
lib/GenICam/bin/Linux64_x64/libXmlParser_gcc421_v3_0.so
Normal file
Binary file not shown.
BIN
lib/GenICam/bin/Linux64_x64/liblog4cpp_gcc421_v3_0.so
Normal file
BIN
lib/GenICam/bin/Linux64_x64/liblog4cpp_gcc421_v3_0.so
Normal file
Binary file not shown.
6
lib/GenICam/log/config-unix/DefaultLogging.properties
Normal file
6
lib/GenICam/log/config-unix/DefaultLogging.properties
Normal file
@ -0,0 +1,6 @@
|
||||
# These settings are loaded as default
|
||||
|
||||
log4j.rootCategory=ERROR, Console
|
||||
log4cpp.appender.Console=org.apache.log4j.ConsoleAppender
|
||||
log4cpp.appender.Console.layout=org.apache.log4j.PatternLayout
|
||||
log4cpp.appender.Console.layout.ConversionPattern==>LOG %x: %c : %m%n
|
741
lib/GenICam/xml/GenApi/GenApiSchema_Version_1_0.xsd
Normal file
741
lib/GenICam/xml/GenApi/GenApiSchema_Version_1_0.xsd
Normal file
@ -0,0 +1,741 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!--$Header$ -->
|
||||
<!-- ***************************************************************************
|
||||
* (c) 2006 by Basler Vision Technologies
|
||||
* Section: Vision Components
|
||||
* Project: GenApi
|
||||
* Author: Fritz Dierks
|
||||
*
|
||||
* License: This file is published under the license of the EMVA GenICam Standard Group.
|
||||
* A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
|
||||
* If for some reason you are missing this file please contact the EMVA or visit the website
|
||||
* (http://www.genicam.org) for a full copy.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
|
||||
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
******************************************************************************** -->
|
||||
<xs:schema xmlns="http://www.genicam.org/GenApi/Version_1_0" xmlns:mstns="http://www.genicam.org/GenApi/Version_1_0" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.genicam.org/GenApi/Version_1_0" elementFormDefault="qualified" id="GenApiSchema_1_0">
|
||||
<xs:element name="RegisterDescription">
|
||||
<xs:complexType>
|
||||
<xs:sequence maxOccurs="unbounded">
|
||||
<xs:group ref="NodesTemplate" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="ModelName" type="CName_t" use="required" />
|
||||
<xs:attribute name="VendorName" type="CName_t" use="required" />
|
||||
<xs:attribute name="ToolTip" type="xs:string" use="optional" />
|
||||
<xs:attribute name="StandardNameSpace" type="StandardNameSpace_t" use="required" />
|
||||
<xs:attribute name="SchemaMajorVersion" type="nonNegativeHexOrDecimal_t" use="required" fixed="1" />
|
||||
<xs:attribute name="SchemaMinorVersion" type="nonNegativeHexOrDecimal_t" use="required" fixed="0" />
|
||||
<xs:attribute name="SchemaSubMinorVersion" type="nonNegativeHexOrDecimal_t" use="required" />
|
||||
<xs:attribute name="MajorVersion" type="nonNegativeHexOrDecimal_t" use="required" />
|
||||
<xs:attribute name="MinorVersion" type="nonNegativeHexOrDecimal_t" use="required" />
|
||||
<xs:attribute name="SubMinorVersion" type="nonNegativeHexOrDecimal_t" use="required" />
|
||||
<xs:attribute name="ProductGuid" type="xs:string" use="required" />
|
||||
<xs:attribute name="VersionGuid" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
<xs:key name="IntegerKey">
|
||||
<xs:selector xpath=".//mstns:AdvFeatureLock|.//mstns:Integer|.//mstns:IntKey|.//mstns:IntReg|.//mstns:MaskedIntReg|.//mstns:IntSwissKnife|.//mstns:SmartFeature|.//mstns:StructEntry|.//mstns:IntConverter" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="IntegerOrEnumKey">
|
||||
<xs:selector xpath=".//mstns:AdvFeatureLock|.//mstns:Integer|.//mstns:IntKey|.//mstns:IntReg|.//mstns:MaskedIntReg|.//mstns:IntSwissKnife|.//mstns:SmartFeature|.//mstns:StructEntry|.//mstns:IntConverter|.//mstns:Enumeration" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="IntegerOrBooleanKey">
|
||||
<xs:selector xpath=".//mstns:AdvFeatureLock|.//mstns:Integer|.//mstns:IntKey|.//mstns:IntReg|.//mstns:MaskedIntReg|.//mstns:IntSwissKnife|.//mstns:SmartFeature|.//mstns:StructEntry|.//mstns:IntConverter|.//mstns:Boolean" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="FloatKey">
|
||||
<xs:selector xpath=".//mstns:Converter|.//mstns:Float|.//mstns:FloatReg|.//mstns:SwissKnife" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="StringKey">
|
||||
<xs:selector xpath=".//mstns:StringReg|.//mstns:TextDesc" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="IntegerOrFloatKey">
|
||||
<xs:selector xpath=".//mstns:AdvFeatureLock|.//mstns:Integer|.//mstns:IntKey|.//mstns:IntReg|.//mstns:MaskedIntReg|.//mstns:IntSwissKnife|.//mstns:SmartFeature|.//mstns:StructEntry|.//mstns:Converter|.//mstns:IntConverter|.//mstns:Float|.//mstns:FloatReg|.//mstns:SwissKnife" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="SelectedKey">
|
||||
<xs:selector xpath=".//mstns:Node|.//mstns:IntReg|.//mstns:Enumeration|.//mstns:Integer|.//mstns:MaskedIntReg|.//mstns:Register|.//mstns:IntSwissKnife|.//mstns:Category|.//mstns:TextDesc|.//mstns:IntKey|.//mstns:FloatReg|.//mstns:Float|.//mstns:StringReg|.//mstns:SwissKnife|.//mstns:Converter|.//mstns:IntConverter|.//mstns:Boolean|.//mstns:Command|.//mstns:StructReg/mstns:StructEntry" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="RegisterKey">
|
||||
<xs:selector xpath=".//mstns:Register|.//mstns:AdvFeatureLock|.//mstns:FloatReg|.//mstns:ConfRom|.//mstns:IntReg|.//mstns:MaskedIntReg|.//mstns:SmartFeature|.//mstns:StringReg" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="PortKey">
|
||||
<xs:selector xpath=".//mstns:Port" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="FeatureKey">
|
||||
<xs:selector xpath=".//mstns:Node|.//mstns:IntReg|.//mstns:Enumeration|.//mstns:Integer|.//mstns:MaskedIntReg|.//mstns:Register|.//mstns:IntSwissKnife|.//mstns:Category|.//mstns:TextDesc|.//mstns:IntKey|.//mstns:FloatReg|.//mstns:Float|.//mstns:StringReg|.//mstns:SwissKnife|.//mstns:Converter|.//mstns:IntConverter|.//mstns:Boolean|.//mstns:Command|.//mstns:StructReg/mstns:StructEntry" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="EnumEntryKey">
|
||||
<xs:selector xpath=".//mstns:Enumeration/EnumEntry" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:key name="ConfRomKey">
|
||||
<xs:selector xpath=".//mstns:ConfRom" />
|
||||
<xs:field xpath="@Name" />
|
||||
</xs:key>
|
||||
<xs:keyref name="pAddress" refer="IntegerOrEnumKey">
|
||||
<xs:selector xpath=".//mstns:Register/mstns:pAddress|.//mstns:AdvFeatureLock/mstns:pAddress|.//mstns:FloatReg/mstns:pAddress|.//mstns:ConfRom/mstns:pAddress|.//mstns:IntReg/mstns:pAddress|.//mstns:MaskedIntReg/mstns:pAddress|.//mstns:SmartFeature/mstns:pAddress|.//mstns:StringReg/mstns:pAddress" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pIndex" refer="IntegerKey">
|
||||
<xs:selector xpath=".//mstns:Register/mstns:pIndex|.//mstns:AdvFeatureLock/mstns:pIndex|.//mstns:FloatReg/mstns:pIndex|.//mstns:ConfRom/mstns:pIndex|.//mstns:IntReg/mstns:pIndex|.//mstns:MaskedIntReg/mstns:pIndex|.//mstns:SmartFeature/mstns:pIndex|.//mstns:StringReg/mstns:pIndex" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pLength" refer="IntegerKey">
|
||||
<xs:selector xpath=".//mstns:Register/mstns:pLength|.//mstns:AdvFeatureLock/mstns:pLength|.//mstns:FloatReg/mstns:pLength|.//mstns:ConfRom/mstns:pLength|.//mstns:IntReg/mstns:pLength|.//mstns:MaskedIntReg/mstns:pLength|.//mstns:SmartFeature/mstns:pLength|.//mstns:StringReg/mstns:pLength" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pPort" refer="PortKey">
|
||||
<xs:selector xpath=".//mstns:Register/mstns:pPort|.//mstns:AdvFeatureLock/mstns:pPort|.//mstns:FloatReg/mstns:pPort|.//mstns:ConfRom/mstns:pPort|.//mstns:IntReg/mstns:pPort|.//mstns:MaskedIntReg/mstns:pPort|.//mstns:SmartFeature/mstns:pPort|.//mstns:StringReg/mstns:pPort" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pFeature" refer="FeatureKey">
|
||||
<xs:selector xpath=".//mstns:Category/mstns:pFeature" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pSelected" refer="SelectedKey">
|
||||
<xs:selector xpath=".//mstns:Enumeration/mstns:pSelected|.//mstns:Integer/mstns:pSelected|.//mstns:IntReg/mstns:pSelected|.//mstns:MaskedIntReg/mstns:pSelected|.//mstns:StructEntry/mstns:pSelected" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pValue_Integer" refer="IntegerKey">
|
||||
<xs:selector xpath=".//mstns:Enumeration/mstns:pValue|.//mstns:Integer/mstns:pValue|.//mstns:Command/mstns:pValue|.//mstns:Boolean/mstns:pValue" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pMin_Integer" refer="IntegerKey">
|
||||
<xs:selector xpath=".//mstns:Integer/mstns:pMin" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pMax_Integer" refer="IntegerKey">
|
||||
<xs:selector xpath=".//mstns:Integer/mstns:pMax" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pInc_Integer" refer="IntegerKey">
|
||||
<xs:selector xpath=".//mstns:Integer/mstns:pInc" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pValue_Float" refer="FloatKey">
|
||||
<xs:selector xpath=".//mstns:Float/mstns:pValue" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pMin_Float" refer="FloatKey">
|
||||
<xs:selector xpath=".//mstns:Float/mstns:pMin" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pMax_Float" refer="FloatKey">
|
||||
<xs:selector xpath=".//mstns:Float/mstns:pMax" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pValue_IntegerOrFloat" refer="IntegerOrFloatKey">
|
||||
<xs:selector xpath=".//mstns:Converter/mstns:pValue" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pIsImplemented" refer="IntegerOrBooleanKey">
|
||||
<xs:selector xpath=".//mstns:Node/mstns:pIsImplemented|.//mstns:IntReg/mstns:pIsImplemented|.//mstns:Enumeration/mstns:pIsImplemented|.//mstns:Integer/mstns:pIsImplemented|.//mstns:MaskedIntReg/mstns:pIsImplemented|.//mstns:Register/mstns:pIsImplemented|.//mstns:IntSwissKnife/mstns:pIsImplemented|.//mstns:Category/mstns:pIsImplemented|.//mstns:TextDesc/mstns:pIsImplemented|.//mstns:IntKey/mstns:pIsImplemented|.//mstns:FloatReg/mstns:pIsImplemented|.//mstns:Float/mstns:pIsImplemented|.//mstns:StringReg/mstns:pIsImplemented|.//mstns:SwissKnife/mstns:pIsImplemented|.//mstns:Converter/mstns:pIsImplemented|.//mstns:Boolean/mstns:pIsImplemented|.//mstns:Command/mstns:pIsImplemented|.//mstns:StructReg/mstns:StructEntry/mstns:pIsImplemented|.//mstns:EnumEntry/mstns:pIsImplemented|.//mstns:Port/mstns:pIsImplemented|.//mstns:AdvFeatureLock/mstns:pIsImplemented|.//mstns:SmartFeature/mstns:pIsImplemented" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pIsAvailable" refer="IntegerOrBooleanKey">
|
||||
<xs:selector xpath=".//mstns:Node/mstns:pIsAvailable|.//mstns:IntReg/mstns:pIsAvailable|.//mstns:Enumeration/mstns:pIsAvailable|.//mstns:EnumEntry/mstns:pIsAvailable|.//mstns:Integer/mstns:pIsAvailable|.//mstns:MaskedIntReg/mstns:pIsAvailable|.//mstns:Register/mstns:pIsAvailable|.//mstns:IntSwissKnife/mstns:pIsAvailable|.//mstns:Category/mstns:pIsAvailable|.//mstns:TextDesc/mstns:pIsAvailable|.//mstns:IntKey/mstns:pIsAvailable|.//mstns:FloatReg/mstns:pIsAvailable|.//mstns:Float/mstns:pIsAvailable|.//mstns:StringReg/mstns:pIsAvailable|.//mstns:SwissKnife/mstns:pIsAvailable|.//mstns:Converter/mstns:pIsAvailable|.//mstns:Boolean/mstns:pIsAvailable|.//mstns:Command/mstns:pIsAvailable|.//mstns:StructReg/mstns:StructEntry/mstns:pIsAvailable|.//mstns:EnumEntry/mstns:pIsAvailable|.//mstns:Port/mstns:pIsAvailable|.//mstns:AdvFeatureLock/mstns:pIsAvailable|.//mstns:SmartFeature/mstns:pIsAvailable" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pIsLocked" refer="IntegerOrBooleanKey">
|
||||
<xs:selector xpath=".//mstns:Node/mstns:pIsLocked|.//mstns:IntReg/mstns:pIsLocked|.//mstns:Enumeration/mstns:pIsLocked|.//mstns:EnumEntry/mstns:pIsLocked|.//mstns:Integer/mstns:pIsLocked|.//mstns:MaskedIntReg/mstns:pIsLocked|.//mstns:Register/mstns:pIsLocked|.//mstns:IntSwissKnife/mstns:pIsLocked|.//mstns:Category/mstns:pIsLocked|.//mstns:TextDesc/mstns:pIsLocked|.//mstns:IntKey/mstns:pIsLocked|.//mstns:FloatReg/mstns:pIsLocked|.//mstns:Float/mstns:pIsLocked|.//mstns:StringReg/mstns:pIsLocked|.//mstns:SwissKnife/mstns:pIsLocked|.//mstns:Converter/mstns:pIsLocked|.//mstns:Boolean/mstns:pIsLocked|.//mstns:Command/mstns:pIsLocked|.//mstns:StructReg/mstns:StructEntry/mstns:pIsLocked|.//mstns:EnumEntry/mstns:pIsLocked|.//mstns:Port/mstns:pIsLocked|.//mstns:AdvFeatureLock/mstns:pIsLocked|.//mstns:SmartFeature/mstns:pIsLocked" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pVariable_Integer" refer="IntegerKey">
|
||||
<xs:selector xpath=".//mstns:IntSwissKnife/mstns:pVariable|.//mstns:IntConverter/mstns:pVariable" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pVariable_IntegerOrFloat" refer="IntegerOrFloatKey">
|
||||
<xs:selector xpath=".//mstns:SwissKnife/mstns:pVariable|.//mstns:Converter/mstns:pVariable" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pEnumEntry" refer="EnumEntryKey">
|
||||
<xs:selector xpath=".//mstns:Enumeration/mstns:pEnumEntry" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pChunkID" refer="StringKey">
|
||||
<xs:selector xpath=".//mstns:Port/mstns:pChunkID" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="p1212Parser" refer="ConfRomKey">
|
||||
<xs:selector xpath=".//mstns:TextDesc/mstns:p1212Parser|.//mstns:IntKey/mstns:p1212Parser" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pCommandValue" refer="IntegerKey">
|
||||
<xs:selector xpath=".//mstns:Command/mstns:pCommandValue" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
<xs:keyref name="pAlias" refer="FeatureKey">
|
||||
<xs:selector xpath=".//mstns:*/mstns:pAlias" />
|
||||
<xs:field xpath="." />
|
||||
</xs:keyref>
|
||||
</xs:element>
|
||||
<xs:group name="NodesTemplate">
|
||||
<xs:sequence>
|
||||
<xs:element name="Node" type="NodeType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Category" type="CategoryType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Integer" type="IntegerType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="IntReg" type="IntRegType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="MaskedIntReg" type="MaskedIntRegType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Boolean" type="BooleanType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Command" type="CommandType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Enumeration" type="EnumerationType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="EnumEntry" type="EnumEntryType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Float" type="FloatType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="FloatReg" type="FloatRegType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="StringReg" type="StringRegType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Register" type="RegisterType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Converter" type="ConverterType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="IntConverter" type="IntConverterType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="SwissKnife" type="SwissKnifeType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="IntSwissKnife" type="SwissKnifeType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Port" type="PortType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="ConfRom" type="ConfRomType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="TextDesc" type="TextDescType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="IntKey" type="IntKeyType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="AdvFeatureLock" type="DcamLockType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="SmartFeature" type="SmartFeatureAdrType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="Group" type="GroupType" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="StructReg" type="StructRegType" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
<xs:complexType name="GroupType">
|
||||
<xs:sequence maxOccurs="unbounded">
|
||||
<xs:group ref="NodesTemplate" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Comment" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
<xs:group name="NodeElementTemplate">
|
||||
<xs:sequence>
|
||||
<xs:element name="Extension" type="ExtensionType" minOccurs="0" />
|
||||
<xs:element name="ToolTip" type="nonEmptyString_t" minOccurs="0" />
|
||||
<xs:element name="Description" type="nonEmptyString_t" minOccurs="0" />
|
||||
<xs:element name="DisplayName" type="xs:string" minOccurs="0" />
|
||||
<xs:element name="Visibility" type="Visibility_t" default="Beginner" minOccurs="0" />
|
||||
<xs:element name="EventID" type="Hex_t" minOccurs="0" />
|
||||
<xs:element name="pIsImplemented" type="CName_t" minOccurs="0" />
|
||||
<xs:element name="pIsAvailable" type="CName_t" minOccurs="0" />
|
||||
<xs:element name="pIsLocked" type="CName_t" minOccurs="0" />
|
||||
<xs:element name="ImposedAccessMode" type="Access_t" default="RW" minOccurs="0" />
|
||||
<xs:element name="pAlias" type="CName_t" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
<xs:attributeGroup name="NodeAttributeTemplate">
|
||||
<xs:attribute name="Name" type="CName_t" use="required" />
|
||||
<xs:attribute name="NameSpace" type="NameSpace_t" default="Custom" />
|
||||
<!-- This is allowed only for inject files not for target files -->
|
||||
<xs:attribute name="MergePriority" type="MergePriority_t"/>
|
||||
</xs:attributeGroup>
|
||||
<xs:group name="RegisterElementTemplate">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Streamable" type="YesNo_t" default="No" minOccurs="0" />
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="Address" type="HexOrDecimal_t" />
|
||||
<xs:element name="IntSwissKnife" type="SwissKnifeType" />
|
||||
<xs:element name="pAddress" type="CName_t" />
|
||||
<xs:element name="pIndex">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Offset" type="HexOrDecimal_t" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:choice>
|
||||
<xs:choice>
|
||||
<xs:element name="Length" type="xs:positiveInteger" />
|
||||
<xs:element name="pLength" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="AccessMode" type="Access_t" default="RO" />
|
||||
<xs:element name="pPort" type="CName_t" />
|
||||
<xs:element name="Cachable" type="CachingMode_t" default="WriteThrough" minOccurs="0" />
|
||||
<xs:element name="PollingTime" type="xs:nonNegativeInteger" minOccurs="0" />
|
||||
<xs:element name="pInvalidator" type="CName_t" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:group>
|
||||
<xs:complexType name="NodeType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CategoryType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="pFeature" type="CName_t" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IntegerType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Streamable" type="YesNo_t" default="No" minOccurs="0" />
|
||||
<xs:choice>
|
||||
<xs:element name="Value" type="HexOrDecimal_t" />
|
||||
<xs:element name="pValue" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:choice minOccurs="0">
|
||||
<xs:element name="Min" type="xs:integer" />
|
||||
<xs:element name="pMin" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:choice minOccurs="0">
|
||||
<xs:element name="Max" type="xs:integer" />
|
||||
<xs:element name="pMax" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:choice minOccurs="0">
|
||||
<xs:element name="Inc" type="nonNegativeHexOrDecimal_t" />
|
||||
<xs:element name="pInc" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="Representation" type="Representation_t" minOccurs="0" />
|
||||
<xs:element name="pSelected" type="CName_t" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IntRegType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="RegisterElementTemplate" />
|
||||
<xs:element name="Sign" type="Sign_t" default="Unsigned" />
|
||||
<xs:element name="Endianess" type="Endianess_t" default="LittleEndian" />
|
||||
<xs:element name="Representation" type="Representation_t" minOccurs="0" />
|
||||
<xs:element name="pSelected" type="CName_t" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="MaskedIntRegType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="RegisterElementTemplate" />
|
||||
<xs:choice>
|
||||
<xs:element name="Bit" type="xs:nonNegativeInteger" />
|
||||
<xs:sequence>
|
||||
<xs:element name="LSB" type="xs:nonNegativeInteger" />
|
||||
<xs:element name="MSB" type="xs:nonNegativeInteger" />
|
||||
</xs:sequence>
|
||||
</xs:choice>
|
||||
<xs:element name="Sign" type="Sign_t" default="Unsigned" minOccurs="0" />
|
||||
<xs:element name="Endianess" type="Endianess_t" default="LittleEndian" />
|
||||
<xs:element name="Representation" type="Representation_t" minOccurs="0" />
|
||||
<xs:element name="pSelected" type="CName_t" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StructRegType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="RegisterElementTemplate" />
|
||||
<xs:element name="Endianess" type="Endianess_t" default="LittleEndian" />
|
||||
<xs:element name="StructEntry" type="StructEntryType" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Comment" type="xs:string" use="required" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StructEntryType">
|
||||
<xs:sequence>
|
||||
<xs:element name="Extension" type="ExtensionType" minOccurs="0" />
|
||||
<xs:element name="ToolTip" type="nonEmptyString_t" minOccurs="0" />
|
||||
<xs:element name="DisplayName" type="xs:string" minOccurs="0" />
|
||||
<xs:element name="Visibility" type="Visibility_t" default="Beginner" minOccurs="0" />
|
||||
<xs:element name="pIsImplemented" type="CName_t" minOccurs="0" />
|
||||
<xs:element name="pIsAvailable" type="CName_t" minOccurs="0" />
|
||||
<xs:element name="pIsLocked" type="CName_t" minOccurs="0" />
|
||||
<xs:element name="pInvalidator" type="CName_t" minOccurs="0" maxOccurs="unbounded" />
|
||||
<xs:element name="AccessMode" type="Access_t" minOccurs="0" />
|
||||
<xs:element name="Cachable" type="CachingMode_t" default="WriteThrough" minOccurs="0" />
|
||||
<xs:element name="PollingTime" type="xs:nonNegativeInteger" minOccurs="0" />
|
||||
<xs:element name="Streamable" type="YesNo_t" default="No" minOccurs="0" />
|
||||
<xs:choice>
|
||||
<xs:element name="Bit" type="xs:nonNegativeInteger" />
|
||||
<xs:sequence>
|
||||
<xs:element name="LSB" type="xs:nonNegativeInteger" />
|
||||
<xs:element name="MSB" type="xs:nonNegativeInteger" />
|
||||
</xs:sequence>
|
||||
</xs:choice>
|
||||
<xs:element name="Sign" type="Sign_t" default="Unsigned" minOccurs="0" />
|
||||
<xs:element name="pSelected" type="CName_t" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="CommandType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:choice>
|
||||
<xs:element name="Value" type="HexOrDecimal_t" />
|
||||
<xs:element name="pValue" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:choice>
|
||||
<xs:element name="CommandValue" type="HexOrDecimal_t" />
|
||||
<xs:element name="pCommandValue" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="PollingTime" type="xs:nonNegativeInteger" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="BooleanType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Streamable" type="YesNo_t" default="No" minOccurs="0" />
|
||||
<xs:choice>
|
||||
<xs:element name="Value" type="xs:boolean" />
|
||||
<xs:element name="pValue" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="OnValue" type="xs:int" minOccurs="0" />
|
||||
<xs:element name="OffValue" type="xs:int" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="FloatType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Streamable" type="YesNo_t" default="No" minOccurs="0" />
|
||||
<xs:choice>
|
||||
<xs:element name="pValue" type="CName_t" />
|
||||
<xs:element name="Value" type="xs:float" />
|
||||
</xs:choice>
|
||||
<xs:choice minOccurs="0">
|
||||
<xs:element name="Min" type="xs:float" />
|
||||
<xs:element name="pMin" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:choice minOccurs="0">
|
||||
<xs:element name="Max" type="xs:float" />
|
||||
<xs:element name="pMax" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="Unit" type="nonEmptyString_t" minOccurs="0" />
|
||||
<xs:element name="Representation" type="Representation_t" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ConverterType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Streamable" type="YesNo_t" default="No" minOccurs="0" />
|
||||
<xs:sequence>
|
||||
<xs:element name="pVariable" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="FormulaTo" type="xs:string" />
|
||||
<xs:element name="FormulaFrom" type="xs:string" />
|
||||
</xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="pValue" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="Unit" type="nonEmptyString_t" minOccurs="0" />
|
||||
<xs:element name="Representation" type="Representation_t" minOccurs="0" />
|
||||
<xs:element name="Slope" type="Slope_t" default="Automatic" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IntConverterType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Streamable" type="YesNo_t" default="No" minOccurs="0" />
|
||||
<xs:sequence>
|
||||
<xs:element name="pVariable" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="FormulaTo" type="xs:string" />
|
||||
<xs:element name="FormulaFrom" type="xs:string" />
|
||||
</xs:sequence>
|
||||
<xs:choice>
|
||||
<xs:element name="pValue" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="Unit" type="nonEmptyString_t" minOccurs="0" />
|
||||
<xs:element name="Representation" type="Representation_t" minOccurs="0" />
|
||||
<xs:element name="Slope" type="Slope_t" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="FloatRegType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="RegisterElementTemplate" />
|
||||
<xs:element name="Endianess" type="Endianess_t" default="LittleEndian" />
|
||||
<xs:element name="Unit" type="nonEmptyString_t" minOccurs="0" />
|
||||
<xs:element name="Representation" type="Representation_t" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EnumerationType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Streamable" type="YesNo_t" default="No" minOccurs="0" />
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="EnumEntry" type="EnumEntryType" />
|
||||
<xs:element name="pEnumEntry" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:choice>
|
||||
<xs:element name="Value" type="HexOrDecimal_t" />
|
||||
<xs:element name="pValue" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="pSelected" type="CName_t" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="EnumEntryType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Value" type="HexOrDecimal_t" />
|
||||
<xs:element name="Symbolic" type="CName_t" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
<!-- Note : this entry is normally generated by the pre-processor only -->
|
||||
</xs:complexType>
|
||||
<xs:complexType name="StringRegType">
|
||||
<xs:sequence>
|
||||
<!-- TODO should be implemented with RegisterElementTemplate; BUT: pLength -->
|
||||
<xs:group ref="RegisterElementTemplate" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="RegisterType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="RegisterElementTemplate" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SwissKnifeType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Streamable" type="YesNo_t" default="No" minOccurs="0" />
|
||||
<xs:element name="pVariable" minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:complexType>
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Name" type="xs:string" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
<xs:element name="Formula" type="xs:string" />
|
||||
<xs:element name="Representation" type="Representation_t" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="PortType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:choice minOccurs="0">
|
||||
<xs:element name="ChunkID" type="Hex_t" />
|
||||
<xs:element name="pChunkID" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="SwapEndianess" type="YesNo_t" default="No" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ConfRomType">
|
||||
<xs:sequence maxOccurs="unbounded">
|
||||
<xs:group ref="NodeElementTemplate" />
|
||||
<xs:element name="Unit" type="HexOrDecimal_t" />
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="Address" type="nonNegativeHexOrDecimal_t" />
|
||||
<xs:element name="IntSwissKnife" type="SwissKnifeType" />
|
||||
<xs:element name="pAddress" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="Length" type="nonNegativeHexOrDecimal_t" />
|
||||
<xs:element name="pPort" type="CName_t" />
|
||||
<xs:choice minOccurs="0" maxOccurs="unbounded">
|
||||
<xs:element name="TextDesc" type="Key_t" />
|
||||
<xs:element name="IntKey" type="Key_t" />
|
||||
</xs:choice>
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="TextDescType">
|
||||
<xs:sequence>
|
||||
<xs:element name="p1212Parser" type="CName_t" />
|
||||
<xs:element name="Key" type="HexOrDecimal_t" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="IntKeyType">
|
||||
<xs:sequence>
|
||||
<xs:element name="p1212Parser" type="CName_t" />
|
||||
<xs:element name="Key" type="HexOrDecimal_t" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="DcamLockType">
|
||||
<xs:sequence>
|
||||
<xs:group ref="RegisterElementTemplate" />
|
||||
<xs:element name="FeatureID" type="HexOrDecimal_t" />
|
||||
<xs:element name="Timeout" type="xs:nonNegativeInteger" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="SmartFeatureAdrType">
|
||||
<xs:sequence>
|
||||
<xs:element name="FeatureID" type="xs:string" />
|
||||
<xs:choice maxOccurs="unbounded">
|
||||
<xs:element name="Address" type="nonNegativeHexOrDecimal_t" />
|
||||
<xs:element name="IntSwissKnife" type="SwissKnifeType" />
|
||||
<xs:element name="pAddress" type="CName_t" />
|
||||
</xs:choice>
|
||||
<xs:element name="pPort" type="CName_t" />
|
||||
<xs:element name="pIsImplemented" type="CName_t" minOccurs="0" />
|
||||
<xs:element name="pIsAvailable" type="CName_t" minOccurs="0" />
|
||||
</xs:sequence>
|
||||
<xs:attributeGroup ref="NodeAttributeTemplate" />
|
||||
</xs:complexType>
|
||||
<xs:complexType name="ExtensionType">
|
||||
<xs:sequence>
|
||||
<xs:any processContents="skip" minOccurs="0" maxOccurs="unbounded" />
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="CName_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="[A-Za-z][0-9A-Za-z_]*" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="nonEmptyString_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:minLength value="1" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="CachingMode_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="WriteThrough">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Cache on write and write into register</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="WriteAround">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Write w/o cache, read updates cache</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
<xs:enumeration value="NoCache">
|
||||
<xs:annotation>
|
||||
<xs:documentation>Do not perform caching</xs:documentation>
|
||||
</xs:annotation>
|
||||
</xs:enumeration>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="HexOrDecimal_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="(0[xX][0-9A-Fa-f]+)|(-?[0-9]+)" />
|
||||
<!--<xs:pattern value="()|(0x[0-9A-Fa-f]+)"/>-->
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Hex_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="([0-9A-Fa-f][0-9A-Fa-f])+" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="nonNegativeHexOrDecimal_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:pattern value="(0[xX][0-9A-Fa-f]+)|[0-9]+" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Sign_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Signed" />
|
||||
<xs:enumeration value="Unsigned" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="SwissKnifeConversion_t">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="xs:string">
|
||||
<xs:attribute name="Input" type="CName_t" use="required" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
<xs:simpleType name="NameSpace_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Custom" />
|
||||
<xs:enumeration value="Standard" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="StandardNameSpace_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="None" />
|
||||
<xs:enumeration value="IIDC" />
|
||||
<xs:enumeration value="GEV" />
|
||||
<xs:enumeration value="CL" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Representation_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Linear" />
|
||||
<xs:enumeration value="Logarithmic" />
|
||||
<xs:enumeration value="Boolean" />
|
||||
<xs:enumeration value="PureNumber" />
|
||||
<xs:enumeration value="HexNumber" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Access_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="RO" />
|
||||
<xs:enumeration value="WO" />
|
||||
<xs:enumeration value="RW" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Endianess_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="LittleEndian" />
|
||||
<xs:enumeration value="BigEndian" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Visibility_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Beginner" />
|
||||
<xs:enumeration value="Expert" />
|
||||
<xs:enumeration value="Guru" />
|
||||
<xs:enumeration value="Invisible" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="YesNo_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Yes" />
|
||||
<xs:enumeration value="No" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="MergePriority_t">
|
||||
<xs:restriction base="xs:integer">
|
||||
<xs:enumeration value="-1"/>
|
||||
<xs:enumeration value="0"/>
|
||||
<xs:enumeration value="+1"/>
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:simpleType name="Slope_t">
|
||||
<xs:restriction base="xs:string">
|
||||
<xs:enumeration value="Increasing" />
|
||||
<xs:enumeration value="Decreasing" />
|
||||
<xs:enumeration value="Varying" />
|
||||
<xs:enumeration value="Automatic" />
|
||||
</xs:restriction>
|
||||
</xs:simpleType>
|
||||
<xs:complexType name="Key_t">
|
||||
<xs:simpleContent>
|
||||
<xs:extension base="HexOrDecimal_t">
|
||||
<xs:attribute name="Name" type="CName_t" use="required" />
|
||||
<xs:attribute name="NameSpace" type="NameSpace_t" default="Custom" />
|
||||
</xs:extension>
|
||||
</xs:simpleContent>
|
||||
</xs:complexType>
|
||||
</xs:schema>
|
1221
lib/GenICam/xml/GenApi/GenApiSchema_Version_1_1.xsd
Normal file
1221
lib/GenICam/xml/GenApi/GenApiSchema_Version_1_1.xsd
Normal file
File diff suppressed because it is too large
Load Diff
376
lib/GenICam/xml/GenApi/GenApi_Params_h.xsl
Normal file
376
lib/GenICam/xml/GenApi/GenApi_Params_h.xsl
Normal file
@ -0,0 +1,376 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- ***************************************************************************
|
||||
* (c) 2004-2008 by Basler Vision Technologies
|
||||
* Section: Vision Components
|
||||
* Project: GenApi
|
||||
* Author: Fritz Dierks
|
||||
* $Header$
|
||||
*
|
||||
* License: This file is published under the license of the EMVA GenICam Standard Group.
|
||||
* A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
|
||||
* If for some reason you are missing this file please contact the EMVA or visit the website
|
||||
* (http://www.genicam.org) for a full copy.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
|
||||
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
******************************************************************************** -->
|
||||
|
||||
<xsl:stylesheet version="1.0" xmlns:my_v1_0="http://www.genicam.org/GenApi/Version_1_0" xmlns:my_v1_1="http://www.genicam.org/GenApi/Version_1_1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:output method="text" encoding="UTF-8" media-type="text/plain"/>
|
||||
<xsl:template match="/">
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- Main body -->
|
||||
<!-- =========================================================================== -->
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// (c) 2004-2008 by Basler Vision Technologies
|
||||
// Section: Vision Components
|
||||
// Project: GenApi
|
||||
//-----------------------------------------------------------------------------
|
||||
/*!
|
||||
\file
|
||||
\brief <xsl:value-of select="/RegisterDescription/@ToolTip"/>
|
||||
*/
|
||||
|
||||
//-----------------------------------------------------------------------------
|
||||
// This file is generated automatically
|
||||
// Do not modify!
|
||||
//-----------------------------------------------------------------------------
|
||||
|
||||
<xsl:variable name="NameSpace">
|
||||
<xsl:value-of select="/RegisterDescription/@VendorName"/>_<xsl:value-of select="/RegisterDescription/@ModelName"/>
|
||||
</xsl:variable>
|
||||
|
||||
#ifndef <xsl:value-of select="$NameSpace"/><xsl:text>_PARAMS_H</xsl:text>
|
||||
#define <xsl:value-of select="$NameSpace"/><xsl:text>_PARAMS_H</xsl:text>
|
||||
|
||||
#include <GenApi/IEnumerationT.h>
|
||||
#include <GenApi/NodeMapRef.h>
|
||||
#include <GenApi/DLLLoad.h>
|
||||
|
||||
//! The namespace containing the device's control interface and related enumeration types
|
||||
namespace <xsl:value-of select="$NameSpace"/>
|
||||
{
|
||||
|
||||
//**************************************************************************************************
|
||||
// Enumerations
|
||||
//**************************************************************************************************
|
||||
<xsl:apply-templates select="/RegisterDescription/Enumeration" mode="DefiningEnums"/>
|
||||
|
||||
//**************************************************************************************************
|
||||
// Parameter class
|
||||
//**************************************************************************************************
|
||||
<xsl:variable name="Class">
|
||||
<xsl:text>C</xsl:text><xsl:value-of select="/RegisterDescription/@ModelName"/><xsl:text>_Params</xsl:text>
|
||||
</xsl:variable>
|
||||
|
||||
//! <xsl:value-of select="/RegisterDescription/@ToolTip"/>
|
||||
class <xsl:value-of select="$Class"/>
|
||||
{
|
||||
//----------------------------------------------------------------------------------------------------------------
|
||||
// Implementation
|
||||
//----------------------------------------------------------------------------------------------------------------
|
||||
protected:
|
||||
// If you want to show the following methods in the help file
|
||||
// add the string HIDE_CLASS_METHODS to the ENABLED_SECTIONS tag in the doxygen file
|
||||
//! \cond HIDE_CLASS_METHODS
|
||||
|
||||
//! Constructor
|
||||
<xsl:value-of select="$Class"/>(void);
|
||||
|
||||
//! Destructor
|
||||
~<xsl:value-of select="$Class"/>(void);
|
||||
|
||||
//! Initializes the references
|
||||
void _Initialize(GenApi::INodeMap*);
|
||||
|
||||
//! Return the vendor of the camera
|
||||
const char* _GetVendorName(void);
|
||||
|
||||
//! Returns the camera model name
|
||||
const char* _GetModelName(void);
|
||||
|
||||
//! \endcond
|
||||
|
||||
//----------------------------------------------------------------------------------------------------------------
|
||||
// References to features
|
||||
//----------------------------------------------------------------------------------------------------------------
|
||||
public:
|
||||
<xsl:apply-templates select="/RegisterDescription/*[ @ExposeStatic='Yes' or ( (/RegisterDescription/Category/pFeature=@Name and name()!='Category') and not(@ExposeStatic='No') ) ]" mode="ReferenceDeclaration"/>
|
||||
|
||||
private:
|
||||
//! \cond HIDE_CLASS_METHODS
|
||||
|
||||
//! not implemented copy constructor
|
||||
<xsl:value-of select="$Class"/>(<xsl:value-of select="$Class"/>&);
|
||||
|
||||
//! not implemented assignment operator
|
||||
<xsl:value-of select="$Class"/>& operator=(<xsl:value-of select="$Class"/>&);
|
||||
|
||||
//! \endcond
|
||||
};
|
||||
|
||||
|
||||
//**************************************************************************************************
|
||||
// Parameter class implementation
|
||||
//**************************************************************************************************
|
||||
|
||||
//! \cond HIDE_CLASS_METHODS
|
||||
|
||||
inline <xsl:value-of select="$Class"/>::<xsl:value-of select="$Class"/>(void)
|
||||
<xsl:apply-templates select="/RegisterDescription/*[ @ExposeStatic='Yes' or ( (/RegisterDescription/Category/pFeature=@Name and name()!='Category') and not(@ExposeStatic='No') ) ]" mode="ReferenceCreation"/>
|
||||
{
|
||||
}
|
||||
|
||||
inline <xsl:value-of select="$Class"/>::~<xsl:value-of select="$Class"/>(void)
|
||||
{
|
||||
<xsl:apply-templates select="/RegisterDescription/*[ @ExposeStatic='Yes' or ( (/RegisterDescription/Category/pFeature=@Name and name()!='Category') and not(@ExposeStatic='No') ) ]" mode="ReferenceDeletion"/>
|
||||
}
|
||||
|
||||
inline void <xsl:value-of select="$Class"/>::_Initialize(GenApi::INodeMap* _Ptr)
|
||||
{
|
||||
<xsl:apply-templates select="/RegisterDescription/*[ @ExposeStatic='Yes' or ( (/RegisterDescription/Category/pFeature=@Name and name()!='Category') and not(@ExposeStatic='No') ) ]" mode="ReferenceInitialization"/>
|
||||
}
|
||||
|
||||
inline const char* <xsl:value-of select="$Class"/>::_GetVendorName(void)
|
||||
{
|
||||
return "<xsl:value-of select="RegisterDescription/@VendorName"/>";
|
||||
}
|
||||
|
||||
inline const char* <xsl:value-of select="$Class"/>::_GetModelName(void)
|
||||
{
|
||||
return "<xsl:value-of select="RegisterDescription/@ModelName"/>";
|
||||
}
|
||||
|
||||
//! \endcond
|
||||
|
||||
} // namespace <xsl:value-of select="$NameSpace"/>
|
||||
|
||||
#endif // <xsl:value-of select="$NameSpace"/><xsl:text>_PARAMS_H</xsl:text>
|
||||
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- DefiningEnums -->
|
||||
<!-- =========================================================================== -->
|
||||
|
||||
<xsl:template match="Enumeration" mode="DefiningEnums">
|
||||
//! Valid values for <xsl:value-of select="@Name"/>
|
||||
enum <xsl:value-of select="@Name"/>Enums
|
||||
{
|
||||
<xsl:apply-templates select="./pEnumEntry" mode="InsideDefiningEnums"/>
|
||||
};
|
||||
</xsl:template>
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- InsideDefiningEnums -->
|
||||
<!-- =========================================================================== -->
|
||||
|
||||
<xsl:template match="pEnumEntry" mode="InsideDefiningEnums">
|
||||
<xsl:variable name="NodeName" select="string()"/>
|
||||
<xsl:variable name="Separator">
|
||||
<xsl:choose>
|
||||
<xsl:when test="position()!=last()">
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text> </xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:value-of select="../@Name"/>_<xsl:value-of select="../../EnumEntry[@Name=$NodeName]/Symbolic"/><xsl:value-of select="$Separator"/> //!<<xsl:value-of select="../../EnumEntry[@Name=$NodeName]/ToolTip"/><xsl:text>
		</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- ReferenceDeclaration -->
|
||||
<!-- =========================================================================== -->
|
||||
|
||||
<xsl:template match="*" mode="ReferenceDeclaration">
|
||||
<xsl:variable name="Feature" select="@Name"/>
|
||||
<xsl:variable name="NodeType" select="name()"/>
|
||||
|
||||
<xsl:choose>
|
||||
<xsl:when test="/RegisterDescription/Category[pFeature=$Feature]">
|
||||
//! \name <xsl:value-of select="/RegisterDescription/Category[pFeature=$Feature]/@Name"/> - <xsl:value-of select="/RegisterDescription/Category[pFeature=$Feature]/ToolTip"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
//! \name Miscellaneous Features
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
//@{
|
||||
/*!
|
||||
\brief <xsl:value-of select="/RegisterDescription/*[@Name=$Feature]/ToolTip"/>
|
||||
<xsl:text>

	</xsl:text>
|
||||
<xsl:value-of select="/RegisterDescription/*[@Name=$Feature]/Description"/>
|
||||
<xsl:text>
	</xsl:text>
|
||||
<xsl:choose>
|
||||
<xsl:when test="/RegisterDescription/*[@Name=$Feature]/Visibility">
|
||||
\b Visibility = <xsl:value-of select="/RegisterDescription/*[@Name=$Feature]/Visibility"/>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
\b Visibility = Beginner
|
||||
</xsl:otherwise>
|
||||
</xsl:choose><xsl:text>
	</xsl:text>
|
||||
<xsl:if test="/RegisterDescription/*[@Name=$Feature]/pSelecting">
|
||||
\b Selected by : <xsl:for-each select="/RegisterDescription/*[@Name=$Feature]/pSelecting">
|
||||
<xsl:value-of select="node()"/>
|
||||
<xsl:if test="position()!=last()">, </xsl:if>
|
||||
</xsl:for-each>
|
||||
<xsl:text>
	</xsl:text>
|
||||
</xsl:if>
|
||||
*/
|
||||
<xsl:if test="/RegisterDescription/*[@Name=$Feature]/IsDeprecated='Yes'">
|
||||
# pragma deprecated( <xsl:value-of select="$Feature"/> )
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable: 4995) // name has been marked as deprecated
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$NodeType = 'Enumeration'">
|
||||
<xsl:text>GenApi::</xsl:text>
|
||||
<xsl:value-of select="document('NodeTypes.xml')/NodeTypes/Node/CppInterface[../@Name=$NodeType]"/><xsl:text>T<</xsl:text>
|
||||
<xsl:value-of select="$Feature"/>Enums <xsl:text>></xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>GenApi::</xsl:text>
|
||||
<xsl:value-of select="document('NodeTypes.xml')/NodeTypes/Node/CppInterface[../@Name=$NodeType]"/>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:text> &</xsl:text>
|
||||
<xsl:value-of select="$Feature"/>;
|
||||
<xsl:if test="/RegisterDescription/*[@Name=$Feature]/IsDeprecated='Yes'">
|
||||
# pragma warning(pop)
|
||||
</xsl:if>
|
||||
//@}
|
||||
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- ReferenceCreation -->
|
||||
<!-- =========================================================================== -->
|
||||
|
||||
<xsl:template match="*" mode="ReferenceCreation">
|
||||
<xsl:variable name="Feature" select="@Name"/>
|
||||
<xsl:variable name="NodeType" select="name()"/>
|
||||
|
||||
<xsl:variable name="Separator">
|
||||
<xsl:choose>
|
||||
<xsl:when test="position()=1">
|
||||
<xsl:text>: </xsl:text>
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>, </xsl:text>
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:variable>
|
||||
<xsl:if test="./IsDeprecated='Yes'">
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable: 4995) // name has been marked as deprecated
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$NodeType = 'Enumeration'">
|
||||
<xsl:value-of select="$Separator"/><xsl:value-of select="$Feature"/>( *new GenApi::<xsl:value-of select="document('NodeTypes.xml')/NodeTypes/Node/CppReference[../@Name=$NodeType]"/><<xsl:value-of select="$Feature"/>Enums>() )
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:value-of select="$Separator"/><xsl:value-of select="$Feature"/>( *new GenApi::<xsl:value-of select="document('NodeTypes.xml')/NodeTypes/Node/CppReference[../@Name=$NodeType]"/>() )
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:if test="./IsDeprecated='Yes'">
|
||||
# pragma warning(pop)
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- ReferenceDeletion -->
|
||||
<!-- =========================================================================== -->
|
||||
|
||||
<xsl:template match="*" mode="ReferenceDeletion">
|
||||
<xsl:variable name="Feature" select="@Name"/>
|
||||
<xsl:variable name="NodeType" select="name()"/>
|
||||
<xsl:if test="./IsDeprecated='Yes'">
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable: 4995) // name has been marked as deprecated
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$NodeType = 'Enumeration'">
|
||||
<xsl:text>delete static_cast < GenApi::</xsl:text><xsl:value-of select="document('NodeTypes.xml')/NodeTypes/Node/CppReference[../@Name=$NodeType]"/><<xsl:value-of select="$Feature"/>Enums> *> (&<xsl:value-of select="$Feature"/> );
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>delete static_cast < GenApi::</xsl:text><xsl:value-of select="document('NodeTypes.xml')/NodeTypes/Node/CppReference[../@Name=$NodeType]"/>*> (&<xsl:value-of select="$Feature"/> );
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
<xsl:if test="./IsDeprecated='Yes'">
|
||||
# pragma warning(pop)
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- ReferenceInitialization -->
|
||||
<!-- =========================================================================== -->
|
||||
|
||||
<xsl:template match="*" mode="ReferenceInitialization">
|
||||
<xsl:variable name="Feature" select="@Name"/>
|
||||
<xsl:variable name="NodeType" select="name()"/>
|
||||
<xsl:if test="./IsDeprecated='Yes'">
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable: 4995) // name has been marked as deprecated
|
||||
</xsl:if>
|
||||
<xsl:choose>
|
||||
<xsl:when test="$NodeType = 'Enumeration'">
|
||||
<xsl:text>static_cast<GenApi::</xsl:text><xsl:value-of select="document('NodeTypes.xml')/NodeTypes/Node/CppReference[../@Name=$NodeType]"/><<xsl:value-of select="$Feature"/>Enums> *> (&<xsl:value-of select="$Feature"/> )<xsl:text>->SetReference(_Ptr->GetNode("</xsl:text><xsl:value-of select="$Feature"/>"));
|
||||
</xsl:when>
|
||||
<xsl:otherwise>
|
||||
<xsl:text>static_cast<GenApi::</xsl:text><xsl:value-of select="document('NodeTypes.xml')/NodeTypes/Node/CppReference[../@Name=$NodeType]"/>*> (&<xsl:value-of select="$Feature"/> )<xsl:text>->SetReference(_Ptr->GetNode("</xsl:text><xsl:value-of select="$Feature"/>"));
|
||||
</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
|
||||
<xsl:if test="$NodeType = 'Enumeration'">
|
||||
<xsl:text>static_cast<GenApi::</xsl:text><xsl:value-of select="document('NodeTypes.xml')/NodeTypes/Node/CppReference[../@Name=$NodeType]"/><<xsl:value-of select="$Feature"/>Enums> *> (&<xsl:value-of select="$Feature"/> )<xsl:text>->SetNumEnums(</xsl:text><xsl:value-of select="count(/RegisterDescription/*[@Name=$Feature]/pEnumEntry)"/>);<xsl:text>
	</xsl:text>
|
||||
<xsl:apply-templates select="/RegisterDescription/*[@Name=$Feature]/pEnumEntry" mode="EnumInitialization">
|
||||
<xsl:with-param name="EnumName" select="$Feature"/>
|
||||
<xsl:with-param name="NodeType" select="$NodeType"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:if>
|
||||
<xsl:if test="./IsDeprecated='Yes'">
|
||||
# pragma warning(pop)
|
||||
</xsl:if>
|
||||
</xsl:template>
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- EnumInitialization -->
|
||||
<!-- =========================================================================== -->
|
||||
|
||||
<xsl:template match="*" mode="EnumInitialization">
|
||||
<xsl:param name="EnumName"/>
|
||||
<xsl:variable name="FeatureName" select="string()"/>
|
||||
<xsl:apply-templates select="/RegisterDescription/*[@Name=$FeatureName]" mode="EnumEntryInitialization">
|
||||
<xsl:with-param name="EnumName" select="$EnumName"/>
|
||||
</xsl:apply-templates>
|
||||
</xsl:template>
|
||||
|
||||
<!-- =========================================================================== -->
|
||||
<!-- EnumEntryInitialization -->
|
||||
<!-- =========================================================================== -->
|
||||
|
||||
<xsl:template match="*" mode="EnumEntryInitialization">
|
||||
<xsl:param name="EnumName"/>
|
||||
<xsl:param name="NodeType" />
|
||||
<xsl:text>static_cast<GenApi::CEnumerationTRef</xsl:text><<xsl:value-of select="$EnumName"/>Enums> *> (&<xsl:value-of select="$EnumName"/> )<xsl:text>->SetEnumReference( </xsl:text><xsl:value-of select="$EnumName"/>_<xsl:value-of select="./Symbolic"/>, "<xsl:value-of select="./Symbolic"/>" );<xsl:text>		</xsl:text>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
83
lib/GenICam/xml/GenApi/GenApi_Ptr_h.xsl
Normal file
83
lib/GenICam/xml/GenApi/GenApi_Ptr_h.xsl
Normal file
@ -0,0 +1,83 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- ***************************************************************************
|
||||
* (c) 2004-2008 by Basler Vision Technologies
|
||||
* Section: Vision Components
|
||||
* Project: GenApi
|
||||
* Author: Urs Helmig
|
||||
* $Header$
|
||||
*
|
||||
* License: This file is published under the license of the EMVA GenICam Standard Group.
|
||||
* A text file describing the legal terms is included in your installation as 'GenICam_license.pdf'.
|
||||
* If for some reason you are missing this file please contact the EMVA or visit the website
|
||||
* (http://www.genicam.org) for a full copy.
|
||||
*
|
||||
* THIS SOFTWARE IS PROVIDED BY THE EMVA GENICAM STANDARD GROUP "AS IS"
|
||||
* AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
|
||||
* THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE EMVA GENICAM STANDARD GROUP
|
||||
* OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
|
||||
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
* ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
* POSSIBILITY OF SUCH DAMAGE.
|
||||
******************************************************************************** -->
|
||||
<xsl:stylesheet version="1.0" xmlns:my_v1_0="http://www.genicam.org/GenApi/Version_1_0" xmlns:my_v1_1="http://www.genicam.org/GenApi/Version_1_1" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
|
||||
<xsl:output method="text" encoding="UTF-8" media-type="text/plain"/>
|
||||
|
||||
<xsl:param name="HeaderFileName"><xsl:value-of select="/RegisterDescription/@ModelName"/><xsl:text>Params.h</xsl:text></xsl:param>
|
||||
|
||||
<xsl:template match="/">
|
||||
<!-- =========================================================================== -->
|
||||
<!-- Main body -->
|
||||
<!-- =========================================================================== -->
|
||||
//-----------------------------------------------------------------------------
|
||||
// (c) 2004-2008 by Basler Vision Technologies
|
||||
// Section: Vision Components
|
||||
// Project: GenApi
|
||||
//-----------------------------------------------------------------------------
|
||||
/*!
|
||||
\file
|
||||
\brief <xsl:value-of select="/RegisterDescription/@ToolTip"/>
|
||||
*/
|
||||
//-----------------------------------------------------------------------------
|
||||
// This file is generated automatically
|
||||
// Do not modify!
|
||||
//-----------------------------------------------------------------------------
|
||||
<xsl:variable name="NameSpace">
|
||||
<xsl:value-of select="/RegisterDescription/@VendorName"/>_<xsl:value-of select="/RegisterDescription/@ModelName"/>
|
||||
</xsl:variable>
|
||||
|
||||
#ifndef <xsl:value-of select="$NameSpace"/><xsl:text>_PTR_H</xsl:text>
|
||||
#define <xsl:value-of select="$NameSpace"/><xsl:text>_PTR_H</xsl:text>
|
||||
|
||||
#include <GenApi/NodeMapRef.h>
|
||||
#include "<xsl:value-of select="$HeaderFileName"/>"
|
||||
|
||||
//! The namespace containing the device's control interface and related enumeration types
|
||||
namespace <xsl:value-of select="$NameSpace"/>
|
||||
{
|
||||
//**************************************************************************************************
|
||||
// Access class
|
||||
//**************************************************************************************************
|
||||
//! <xsl:value-of select="/RegisterDescription/@ToolTip"/>
|
||||
class C<xsl:value-of select="/RegisterDescription/@ModelName"/>
|
||||
: public GenApi::CNodeMapRefT<<xsl:value-of select="$NameSpace"/>::C<xsl:value-of select="/RegisterDescription/@ModelName"/>_Params>
|
||||
{
|
||||
public:
|
||||
//! Constructor
|
||||
C<xsl:value-of select="/RegisterDescription/@ModelName"/>(GenICam::gcstring DeviceName = "Device") : GenApi::CNodeMapRefT<<xsl:value-of select="$NameSpace"/>::C<xsl:value-of select="/RegisterDescription/@ModelName"/>_Params>(DeviceName)
|
||||
{
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
} // namespace <xsl:value-of select="$NameSpace"/>
|
||||
|
||||
#endif // <xsl:value-of select="$NameSpace"/><xsl:text>_PTR_H</xsl:text>
|
||||
<xsl:text>
|
||||
</xsl:text>
|
||||
|
||||
</xsl:template>
|
||||
</xsl:stylesheet>
|
131
lib/GenICam/xml/GenApi/NodeTypes.xml
Normal file
131
lib/GenICam/xml/GenApi/NodeTypes.xml
Normal file
@ -0,0 +1,131 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- edited with XMLSpy v2005 U (http://www.xmlspy.com) by Heike Skrzynski-Fox (Basler AG) -->
|
||||
<!-- ***************************************************************************
|
||||
* (c) 2004 by Basler Vision Technologies
|
||||
* Section: Vision Components
|
||||
* Project: GenApi
|
||||
* Author: Fritz Dierks
|
||||
* $Header$
|
||||
******************************************************************************** -->
|
||||
<NodeTypes xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="NodeTypes.xsd">
|
||||
<Node Name="Node">
|
||||
<CppClass>CValueNode</CppClass>
|
||||
<CppInterface>IValue</CppInterface>
|
||||
<CppReference>CValueRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="Category">
|
||||
<CppClass>CCategory</CppClass>
|
||||
<CppInterface>ICategory</CppInterface>
|
||||
<CppReference>CCategoryRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="Integer">
|
||||
<CppClass>CInteger</CppClass>
|
||||
<CppInterface>IInteger</CppInterface>
|
||||
<CppReference>CIntegerRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="Enumeration">
|
||||
<CppClass>CEnumeration</CppClass>
|
||||
<CppInterface>IEnumeration</CppInterface>
|
||||
<CppReference>CEnumerationTRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="EnumEntry">
|
||||
<CppClass>CEnumEntry</CppClass>
|
||||
<CppInterface>IEnumEntry</CppInterface>
|
||||
<CppReference>CEnumEntryRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="MaskedIntReg">
|
||||
<CppClass>CMaskedIntReg</CppClass>
|
||||
<CppInterface>IInteger</CppInterface>
|
||||
<CppReference>CIntegerRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="Register">
|
||||
<CppClass>CRegister</CppClass>
|
||||
<CppInterface>IRegister</CppInterface>
|
||||
<CppReference>CRegisterRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="IntReg">
|
||||
<CppClass>CIntReg</CppClass>
|
||||
<CppInterface>IInteger</CppInterface>
|
||||
<CppReference>CIntegerRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="Float">
|
||||
<CppClass>CFloat</CppClass>
|
||||
<CppInterface>IFloat</CppInterface>
|
||||
<CppReference>CFloatRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="FloatReg">
|
||||
<CppClass>CFltReg</CppClass>
|
||||
<CppInterface>IFloat</CppInterface>
|
||||
<CppReference>CFloatRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="SwissKnife">
|
||||
<CppClass>CSwissKnife</CppClass>
|
||||
<CppInterface>IFloat</CppInterface>
|
||||
<CppReference>CFloatRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="IntSwissKnife">
|
||||
<CppClass>CIntSwissKnife</CppClass>
|
||||
<CppInterface>IInteger</CppInterface>
|
||||
<CppReference>CIntegerRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="IntKey">
|
||||
<CppClass>CIntKey</CppClass>
|
||||
<CppInterface>IInteger</CppInterface>
|
||||
<CppReference>CIntegerRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="TextDesc">
|
||||
<CppClass>CTxtKey</CppClass>
|
||||
<CppInterface>IString</CppInterface>
|
||||
<CppReference>CStringRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="Port">
|
||||
<CppClass>CPort</CppClass>
|
||||
<CppInterface>IPort</CppInterface>
|
||||
<CppReference>CPortRecorderRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="ConfRom">
|
||||
<CppClass>CIEEE1212Parser</CppClass>
|
||||
<CppInterface>IRegister</CppInterface>
|
||||
<CppReference>CRegisterRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="AdvFeatureLock">
|
||||
<CppClass>CDcamAccessCtrlReg</CppClass>
|
||||
<CppInterface>IInteger</CppInterface>
|
||||
<CppReference>CIntegerRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="SmartFeature">
|
||||
<CppClass>CSmartFeature</CppClass>
|
||||
<CppInterface>IInteger</CppInterface>
|
||||
<CppReference>CIntegerRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="String">
|
||||
<CppClass>CStringNode</CppClass>
|
||||
<CppInterface>IString</CppInterface>
|
||||
<CppReference>CStringRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="StringReg">
|
||||
<CppClass>CStringRegister</CppClass>
|
||||
<CppInterface>IString</CppInterface>
|
||||
<CppReference>CStringRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="Boolean">
|
||||
<CppClass>CBoolean</CppClass>
|
||||
<CppInterface>IBoolean</CppInterface>
|
||||
<CppReference>CBooleanRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="Command">
|
||||
<CppClass>CCommand</CppClass>
|
||||
<CppInterface>ICommand</CppInterface>
|
||||
<CppReference>CCommandRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="Converter">
|
||||
<CppClass>CConverter</CppClass>
|
||||
<CppInterface>IFloat</CppInterface>
|
||||
<CppReference>CFloatRef</CppReference>
|
||||
</Node>
|
||||
<Node Name="IntConverter">
|
||||
<CppClass>CIntConverter</CppClass>
|
||||
<CppInterface>IInteger</CppInterface>
|
||||
<CppReference>CIntegerRef</CppReference>
|
||||
</Node>
|
||||
</NodeTypes>
|
28
lib/GenICam/xml/GenApi/NodeTypes.xsd
Normal file
28
lib/GenICam/xml/GenApi/NodeTypes.xsd
Normal file
@ -0,0 +1,28 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--W3C Schema generated by XMLSPY v2004 rel. 4 U (http://www.xmlspy.com)-->
|
||||
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
|
||||
<xs:element name="CppClass" type="xs:token"/>
|
||||
<xs:element name="CppInterface" type="xs:token"/>
|
||||
<xs:element name="CppReference" type="xs:token"/>
|
||||
<xs:element name="Node">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="CppClass"/>
|
||||
<xs:element ref="CppInterface"/>
|
||||
<xs:element ref="CppReference"/>
|
||||
</xs:sequence>
|
||||
<xs:attribute name="Name" use="required"/>
|
||||
</xs:complexType>
|
||||
<xs:unique name="NodeKey">
|
||||
<xs:selector xpath="./Node"/>
|
||||
<xs:field xpath="@Name"/>
|
||||
</xs:unique>
|
||||
</xs:element>
|
||||
<xs:element name="NodeTypes">
|
||||
<xs:complexType>
|
||||
<xs:sequence>
|
||||
<xs:element ref="Node" maxOccurs="unbounded"/>
|
||||
</xs:sequence>
|
||||
</xs:complexType>
|
||||
</xs:element>
|
||||
</xs:schema>
|
BIN
lib/Qt/libQt5Core.so.5.5.1
Normal file
BIN
lib/Qt/libQt5Core.so.5.5.1
Normal file
Binary file not shown.
BIN
lib/Qt/libQt5DBus.so.5.5.1
Normal file
BIN
lib/Qt/libQt5DBus.so.5.5.1
Normal file
Binary file not shown.
BIN
lib/Qt/libQt5Gui.so.5.5.1
Normal file
BIN
lib/Qt/libQt5Gui.so.5.5.1
Normal file
Binary file not shown.
BIN
lib/Qt/libQt5Network.so.5.5.1
Normal file
BIN
lib/Qt/libQt5Network.so.5.5.1
Normal file
Binary file not shown.
BIN
lib/Qt/libQt5Xml.so.5.5.1
Normal file
BIN
lib/Qt/libQt5Xml.so.5.5.1
Normal file
Binary file not shown.
BIN
lib/libImageConvert.so
Normal file
BIN
lib/libImageConvert.so
Normal file
Binary file not shown.
BIN
lib/libMVSDK.so.2.1.0.194984
Normal file
BIN
lib/libMVSDK.so.2.1.0.194984
Normal file
Binary file not shown.
BIN
lib/libMVSDKGuiQt.so
Normal file
BIN
lib/libMVSDKGuiQt.so
Normal file
Binary file not shown.
BIN
lib/libVideoRender.so
Normal file
BIN
lib/libVideoRender.so
Normal file
Binary file not shown.
BIN
lib/liblog4cpp.so
Normal file
BIN
lib/liblog4cpp.so
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user