commit 338ca9d2b7ba08a7f28a3bcd3e4aee8953081310 Author: HelixCopex Date: Sun Mar 22 19:42:38 2026 +0800 依赖与架构准备 diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..aa46b6d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,8 @@ +{ + "clangd.arguments": [ + "--compile-commands-dir=${workspaceFolder}/build", + "--completion-style=detailed", + "--query-driver=/usr/bin/clang", + "--header-insertion=never" + ], +} \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..112ff45 --- /dev/null +++ b/LICENSE @@ -0,0 +1,9 @@ +The MIT License (MIT) + +Copyright © 2026 SimbaRobotics + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..3c56262 --- /dev/null +++ b/README.md @@ -0,0 +1,85 @@ +# Amadeus 26 + +本项目为 Simba Robotics 为 2026 年机甲大师高校联盟赛编写的哨兵机器人机载计算机识别、导航、决策算法。 + +## 依赖 + +### 硬件 + +每一条后括号内为与主机的连接方式。 + +- MV-SUA133GC-T 工业相机 (USB) +- NUC10i7 微型计算机 (主机) +- FDI Systems DETA10 IMU 模块 (USB - CP210x 串口芯片 - UART) `/dev/ttyUSB0` +- 达妙 USB2CAN-DUAL USB 转 CAN 模块 (USB - 模块 - CAN*2) `/dev/ttyACM0` + +### 软件 + +- ROS2 Humble +- OpenCV 4.13 with Contrib +- Eigen 3 +- MVSDK (工业相机 SDK) +- dm_device (USB 转 CAN 模块 SDK) +- 待补充... + +## 目标 + +感谢同济 SuperPower 战队!自瞄算法参考同济的 sp_vision_26 。项目目标为使 2026 年采用的 + +## 软件架构 + +ROS2 基本架构为节点。以每个节点的发布、解析、接收数据为例说明。 +一共有几项: +- 功能:描述该节点有什么功能 +- 连接:描述该节点需要使用的物理连接硬件的软件接口和参数 +- 接收:描述该节点从直连硬件中接收的数据 +- 订阅:描述该节点从其他节点获取的数据 +- 发布:描述该节点使用 ROS 发布的数据 +- 发送:描述该节点使用直连硬件发送的数据 + +### 收发节点 + +- 功能:主机对外通信的封装节点。物理上读取收发模块 +- 连接:USB2CAN,协商 CAN 通信速率 1000kbps,`/dev/ttyACM0` + IMU_CP210x,协商 UART 通信速率 921600,`/dev/ttyUSB0` +- 接收:USB2CAN -> 裁判系统数据 +- 订阅:中央节点 -> 控制指令 +- 发送:USB2CAN.CAN2 -> 控制指令 +- 发布:IMU 数据(地磁角、六轴角加速度、加速度、陀螺仪) + 裁判系统数据(血量、比赛当前状态) + USB2CAN 、IMU 连接 OK 标志 + +### 中央节点 + +- 功能:综合各类信息判断状态与转移,是控制指令发送的唯一来源 +- 订阅:自瞄节点 -> 是否有装甲板、自瞄移动指令、开火指令 + 收发节点 -> 裁判系统.血量, 裁判系统.比赛的进程,USB2CAN 连接 +- 发布:当前状态,敌方装甲板颜色(蓝/红),控制指令 + +中央节点负责状态转移的判断。整车的决策被设计为一个有限状态机,分为四个状态:索敌、击打、进点、回家。 + +```mermaid +stateDiagram-v2 + [*] --> 等待: 开始 + 等待 --> 进点: 通信 OK 且 比赛开始 且 血量 = 100% + 进点 --> 索敌: 到达点内 + 索敌 --> 攻击: 搜寻到装甲板 + 攻击 --> 索敌: 无装甲板 + 索敌 --> 回家: 血量 < 50% + 攻击 --> 回家: 血量 < 50% + 回家 --> 等待: 到达基地 +``` + +### 自瞄节点 + +- 功能:在视野内搜寻装甲板,自动瞄准并计算何时发射 +- 连接:MV 工业相机 +- 接收:工业相机句柄与帧数据 +- 发布: 自瞄运动指令,视野内是否有装甲板 + +### 导航节点 + +- 功能:根据 IMU 数据计算出当前位置,根据状态决定目标位置并发出移动到该位置所需的指令 +- 接收:收发节点 -> IMU.地磁角, IMU.速度, IMU.加速度, IMU.六轴陀螺仪 + 中央节点 -> 状态 +- 发布:导航运动指令 diff --git a/camera_sdk/inc/CameraApi.h b/camera_sdk/inc/CameraApi.h new file mode 100644 index 0000000..53038fa --- /dev/null +++ b/camera_sdk/inc/CameraApi.h @@ -0,0 +1,5393 @@ +#ifndef _MVCAMAPI_H_ +#define _MVCAMAPI_H_ + +#define MVSDK_API + +#ifdef __cplusplus +extern "C" { +#endif + + +#include "CameraDefine.h" +#include "CameraStatus.h" + + + +/******************************************************/ +// 函数名 : CameraSdkInit +// 功能描述 : 相机SDK初始化,在调用任何SDK其他接口前,必须 +// 先调用该接口进行初始化。该函数在整个进程运行 +// 期间只需要调用一次。 +// 参数 : iLanguageSel 用于选择SDK内部提示信息和界面的语种, +// 0:表示英文,1:表示中文。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSdkInit(int iLanguageSel); + +/******************************************************/ +// 函数名 : CameraSetDataDirectory +// 功能描述 : 设置相机数据文件的存储目录(.config .mvdat等) +// 需要在CameraInit打开相机前设置好 +// 默认目录为当前目录 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetDataDirectory(char const* dirname); + +/******************************************************/ +// 函数名 : CameraUSBDeviceInit +// 功能描述 : (已废弃,无需调用) +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraUSBDeviceInit(); + +/******************************************************/ +// 函数名 : CameraUSBDeviceUninit +// 功能描述 : (已废弃,无需调用) +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraUSBDeviceUninit(); + + +/******************************************************/ +// 函数名 : CameraEnumerateDevice +// 功能描述 : 枚举设备,并建立设备列表。在调用CameraInit +// 之前,必须调用该函数来获得设备的信息。 +// 参数 : pCameraList 设备列表数组指针。 +// piNums 设备的个数指针,调用时传入pCameraList +// 数组的元素个数,函数返回时,保存实际找到的设备个数。 +// 注意,piNums指向的值必须初始化,且不超过pCameraList数组元素个数, +// 否则有可能造成内存溢出。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraEnumerateDevice( + tSdkCameraDevInfo* pCameraList, + INT* piNums +); + +/******************************************************/ +// 函数名 : CameraIdleStateDevice +// 功能描述 : 当前系统有未使用的相机信息。 +// 参数 : pCameraList 设备列表数组指针。 +// piNums 设备的个数指针,调用时传入pCameraList +// 数组的元素个数,函数返回时,保存实际找到的设备个数。 +// 注意,piNums指向的值必须初始化,且不超过pCameraList数组元素个数, +// 否则有可能造成内存溢出。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraIdleStateDevice( + tSdkCameraDevInfo* pCameraList, + INT* piNums +); + + +/******************************************************/ +// 函数名 : CameraEnumerateDeviceEx +// 功能描述 : 枚举设备,并建立设备列表。在调用CameraInitEx +// 之前,必须调用该函数枚举设备。 +// 参数 : +// 返回值 : 返回设备个数,0表示无。 +/******************************************************/ +MVSDK_API INT CameraEnumerateDeviceEx( +); + + +/******************************************************/ +// 函数名 : CameraIsOpened +// 功能描述 : 检测设备是否已经被其他应用程序打开。在调用CameraInit +// 之前,可以使用该函数进行检测,如果已经被打开,调用 +// CameraInit会返回设备已经被打开的错误码。 +// 参数 : pCameraList 设备的枚举信息结构体指针,由CameraEnumerateDevice获得。 +// pOpened 设备的状态指针,返回设备是否被打开的状态,TRUE为打开,FALSE为空闲。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraIsOpened( + tSdkCameraDevInfo* pCameraList, + BOOL* pOpened +); + + +/******************************************************/ +// 函数名 : CameraInit +// 功能描述 : 相机初始化。初始化成功后,才能调用任何其他 +// 相机相关的操作接口。 +// 参数 : pCameraInfo 该相机的设备描述信息,由CameraEnumerateDevice +// 函数获得。 +// iParamLoadMode 相机初始化时使用的参数加载方式。-1表示使用上次退出时的参数加载方式。 +// emTeam 初始化时使用的参数组。-1表示加载上次退出时的参数组。 +// pCameraHandle 相机的句柄指针,初始化成功后,该指针 +// 返回该相机的有效句柄,在调用其他相机 +// 相关的操作接口时,都需要传入该句柄,主要 +// 用于多相机之间的区分。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraInit( + tSdkCameraDevInfo* pCameraInfo, + int emParamLoadMode, + int emTeam, + CameraHandle* pCameraHandle +); + +/******************************************************/ +// 函数名 : CameraInitEx +// 功能描述 : 相机初始化。初始化成功后,才能调用任何其他 +// 相机相关的操作接口。 +// 参数 : iDeviceIndex 相机的索引号,CameraEnumerateDeviceEx返回相机个数。 +// iParamLoadMode 相机初始化时使用的参数加载方式。-1表示使用上次退出时的参数加载方式。 +// emTeam 初始化时使用的参数组。-1表示加载上次退出时的参数组。 +// pCameraHandle 相机的句柄指针,初始化成功后,该指针 +// 返回该相机的有效句柄,在调用其他相机 +// 相关的操作接口时,都需要传入该句柄,主要 +// 用于多相机之间的区分。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraInitEx( + int iDeviceIndex, + int iParamLoadMode, + int emTeam, + CameraHandle* pCameraHandle +); + +/// @ingroup API_OPEN +/// \~chinese +/// \brief 相机初始化。初始化成功后,才能调用其他相机相关的操作接口。 +/// \param [in] CameraName 相机昵称。@link #tSdkCameraDevInfo.acFriendlyName @endlink +/// \param [out] pCameraHandle 相机的句柄指针,初始化成功后,该指针返回该相机的有效句柄。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief The camera is initialized. After successful initialization, other camera-related operation interfaces can be called. +/// \param [in] CameraName Camera friendly name.@link #tSdkCameraDevInfo.acFriendlyName @endlink +/// \param [out] pCameraHandle The handle pointer of the camera, after successful initialization, returns the camera's effective handle. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraInitEx2( + char* CameraName, + CameraHandle *pCameraHandle +); + +/******************************************************/ +// 函数名 : CameraSetCallbackFunction +// 功能描述 : 设置图像捕获的回调函数。当捕获到新的图像数据帧时, +// pCallBack所指向的回调函数就会被调用。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pCallBack 回调函数指针。 +// pContext 回调函数的附加参数,在回调函数被调用时 +// 该附加参数会被传入,可以为NULL。多用于 +// 多个相机时携带附加信息。 +// pCallbackOld 用于保存当前的回调函数。可以为NULL。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetCallbackFunction( + CameraHandle hCamera, + CAMERA_SNAP_PROC pCallBack, + PVOID pContext, + CAMERA_SNAP_PROC* pCallbackOld +); + +/******************************************************/ +// 函数名 : CameraUnInit +// 功能描述 : 相机反初始化。释放资源。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraUnInit( + CameraHandle hCamera +); + +/******************************************************/ +// 函数名 : CameraGetInformation +// 功能描述 : 获得相机的描述信息 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbuffer 指向相机描述信息指针的指针。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetInformation( + CameraHandle hCamera, + char** pbuffer +); + +/******************************************************/ +// 函数名 : CameraImageProcess +// 功能描述 : 将获得的相机原始输出图像数据进行处理,叠加饱和度、 +// 颜色增益和校正、降噪等处理效果,最后得到RGB888 +// 格式的图像数据。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbyIn 输入图像数据的缓冲区地址,不能为NULL。 +// pbyOut 处理后图像输出的缓冲区地址,不能为NULL。 +// pFrInfo 输入图像的帧头信息,处理完成后,帧头信息 +// 中的图像格式uiMediaType会随之改变。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraImageProcess( + CameraHandle hCamera, + BYTE* pbyIn, + BYTE* pbyOut, + tSdkFrameHead* pFrInfo +); + +/******************************************************/ +// 函数名 : CameraImageProcessEx +// 功能描述 : 将获得的相机原始输出图像数据进行处理,叠加饱和度 +// 颜色增益和校正、降噪等处理效果,最后得到RGB888 +// 格式的图像数据。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbyIn 输入图像数据的缓冲区地址,不能为NULL。 +// pbyOut 处理后图像输出的缓冲区地址,不能为NULL。 +// pFrInfo 输入图像的帧头信息,处理完成后,帧头信息 +// uOutFormat 处理完后图像的输出格式 +// uReserved 预留参数,必须设置为0 +// 中的图像格式uiMediaType会随之改变。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraImageProcessEx( + CameraHandle hCamera, + BYTE *pbyIn, + BYTE *pbyOut, + tSdkFrameHead *pFrInfo, + UINT uOutFormat, + UINT uReserved +); + +/******************************************************/ +// 函数名 : CameraDisplayInit +// 功能描述 : 初始化SDK内部的显示模块。在调用CameraDisplayRGB24 +// 前必须先调用该函数初始化。如果您在二次开发中, +// 使用自己的方式进行图像显示(不调用CameraDisplayRGB24), +// 则不需要调用本函数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// hWndDisplay 显示窗口的句柄,一般为窗口的m_hWnd成员。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraDisplayInit( + CameraHandle hCamera, + HWND hWndDisplay +); + +/******************************************************/ +// 函数名 : CameraDisplayRGB24 +// 功能描述 : 显示图像。必须调用过CameraDisplayInit进行 +// 初始化才能调用本函数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbyRGB24 图像的数据缓冲区,RGB888格式。 +// pFrInfo 图像的帧头信息。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraDisplayRGB24( + CameraHandle hCamera, + BYTE* pbyRGB24, + tSdkFrameHead* pFrInfo +); + +/******************************************************/ +// 函数名 : CameraSetDisplayMode +// 功能描述 : 设置显示的模式。必须调用过CameraDisplayInit +// 进行初始化才能调用本函数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iMode 显示模式,DISPLAYMODE_SCALE或者 +// DISPLAYMODE_REAL,具体参见CameraDefine.h +// 中emSdkDisplayMode的定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetDisplayMode( + CameraHandle hCamera, + INT iMode +); + +/******************************************************/ +// 函数名 : CameraSetDisplayOffset +// 功能描述 : 设置显示的起始偏移值。仅当显示模式为DISPLAYMODE_REAL +// 时有效。例如显示控件的大小为320X240,而图像的 +// 的尺寸为640X480,那么当iOffsetX = 160,iOffsetY = 120时 +// 显示的区域就是图像的居中320X240的位置。必须调用过 +// CameraDisplayInit进行初始化才能调用本函数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iOffsetX 偏移的X坐标。 +// iOffsetY 偏移的Y坐标。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetDisplayOffset( + CameraHandle hCamera, + int iOffsetX, + int iOffsetY +); + +/******************************************************/ +// 函数名 : CameraSetDisplaySize +// 功能描述 : 设置显示控件的尺寸。必须调用过 +// CameraDisplayInit进行初始化才能调用本函数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iWidth 宽度 +// iHeight 高度 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetDisplaySize( + CameraHandle hCamera, + INT iWidth, + INT iHeight +); + +/******************************************************/ +// 函数名 : CameraGetImageBuffer +// 功能描述 : 获得一帧图像数据。为了提高效率,SDK在图像抓取时采用了零拷贝机制, +// CameraGetImageBuffer实际获得是内核中的一个缓冲区地址, +// 该函数成功调用后,必须调用CameraReleaseImageBuffer释放由 +// CameraGetImageBuffer得到的缓冲区,以便让内核继续使用 +// 该缓冲区。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pFrameInfo 图像的帧头信息指针。 +// pbyBuffer 指向图像的数据的缓冲区指针。由于 +// 采用了零拷贝机制来提高效率,因此 +// 这里使用了一个指向指针的指针。 +// UINT wTimes 抓取图像的超时时间。单位毫秒。在 +// wTimes时间内还未获得图像,则该函数 +// 会返回超时信息。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetImageBuffer( + CameraHandle hCamera, + tSdkFrameHead* pFrameInfo, + BYTE** pbyBuffer, + UINT wTimes +); + +/******************************************************/ +// 函数名 : CameraGetImageBufferEx +// 功能描述 : 获得一帧图像数据。该接口获得的图像是经过处理后的RGB格式。该函数调用后, +// 不需要调用 CameraReleaseImageBuffer 释放,也不要调用free之类的函数释放 +// 来释放该函数返回的图像数据缓冲区。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piWidth 整形指针,返回图像的宽度 +// piHeight 整形指针,返回图像的高度 +// UINT wTimes 抓取图像的超时时间。单位毫秒。在 +// wTimes时间内还未获得图像,则该函数 +// 会返回超时信息。 +// 返回值 : 成功时,返回RGB数据缓冲区的首地址; +// 否则返回0。 +/******************************************************/ +MVSDK_API unsigned char* CameraGetImageBufferEx( + CameraHandle hCamera, + INT* piWidth, + INT* piHeight, + UINT wTimes +); + + +/******************************************************/ +// 函数名 : CameraSnapToBuffer +// 功能描述 : 抓拍一张图像到缓冲区中。相机会进入抓拍模式,并且 +// 自动切换到抓拍模式的分辨率进行图像捕获。然后将 +// 捕获到的数据保存到缓冲区中。 +// 该函数成功调用后,必须调用CameraReleaseImageBuffer +// 释放由CameraSnapToBuffer得到的缓冲区。具体请参考 +// CameraGetImageBuffer函数的功能描述部分。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pFrameInfo 指针,返回图像的帧头信息。 +// pbyBuffer 指向指针的指针,用来返回图像缓冲区的地址。 +// uWaitTimeMs 超时时间,单位毫秒。在该时间内,如果仍然没有 +// 成功捕获的数据,则返回超时信息。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSnapToBuffer( + CameraHandle hCamera, + tSdkFrameHead* pFrameInfo, + BYTE** pbyBuffer, + UINT uWaitTimeMs +); + +/******************************************************/ +// 函数名 : CameraReleaseImageBuffer +// 功能描述 : 释放由CameraGetImageBuffer获得的缓冲区。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbyBuffer 由CameraGetImageBuffer获得的缓冲区地址。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraReleaseImageBuffer( + CameraHandle hCamera, + BYTE* pbyBuffer +); + +/******************************************************/ +// 函数名 : CameraPlay +// 功能描述 : 让SDK进入工作模式,开始接收来自相机发送的图像 +// 数据。如果当前相机是触发模式,则需要接收到 +// 触发帧以后才会更新图像。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraPlay( + CameraHandle hCamera +); + +/******************************************************/ +// 函数名 : CameraPause +// 功能描述 : 让SDK进入暂停模式,不接收来自相机的图像数据, +// 同时也会发送命令让相机暂停输出,释放传输带宽。 +// 暂停模式下,可以对相机的参数进行配置,并立即生效。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraPause( + CameraHandle hCamera +); + +/******************************************************/ +// 函数名 : CameraStop +// 功能描述 : 让SDK进入停止状态,一般是反初始化时调用该函数, +// 该函数被调用,不能再对相机的参数进行配置。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraStop( + CameraHandle hCamera +); + +/******************************************************/ +// 函数名 : CameraInitRecord +// 功能描述 : 初始化一次录像。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iFormat 录像的格式,当前只支持不压缩和MSCV两种方式。 +// 0:不压缩;1:MSCV方式压缩。 +// pcSavePath 录像文件保存的路径。 +// b2GLimit 如果为TRUE,则文件大于2G时自动分割。 +// dwQuality 录像的质量因子,越大,则质量越好。范围1到100. +// iFrameRate 录像的帧率。建议设定的比实际采集帧率大, +// 这样就不会漏帧。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraInitRecord( + CameraHandle hCamera, + int iFormat, + char* pcSavePath, + BOOL b2GLimit, + DWORD dwQuality, + int iFrameRate +); + +/******************************************************/ +// 函数名 : CameraStopRecord +// 功能描述 : 结束本次录像。当CameraInitRecord后,可以通过该函数 +// 来结束一次录像,并完成文件保存操作。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraStopRecord( + CameraHandle hCamera +); + +/******************************************************/ +// 函数名 : CameraPushFrame +// 功能描述 : 将一帧数据存入录像流中。必须调用CameraInitRecord +// 才能调用该函数。CameraStopRecord调用后,不能再调用 +// 该函数。由于我们的帧头信息中携带了图像采集的时间戳 +// 信息,因此录像可以精准的时间同步,而不受帧率不稳定 +// 的影响。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbyImageBuffer 图像的数据缓冲区,必须是RGB格式。 +// pFrInfo 图像的帧头信息。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraPushFrame( + CameraHandle hCamera, + BYTE* pbyImageBuffer, + tSdkFrameHead* pFrInfo +); + +/******************************************************/ +// 函数名 : CameraSaveImage +// 功能描述 : 将图像缓冲区的数据保存成图片文件。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// lpszFileName 图片保存文件完整路径。 +// pbyImageBuffer 图像的数据缓冲区。 +// pFrInfo 图像的帧头信息。 +// byFileType 图像保存的格式。取值范围参见CameraDefine.h +// 中emSdkFileType的类型定义。目前支持 +// BMP、JPG、PNG、RAW四种格式。其中RAW表示 +// 相机输出的原始数据,保存RAW格式文件要求 +// pbyImageBuffer和pFrInfo是由CameraGetImageBuffer +// 获得的数据,而且未经CameraImageProcess转换 +// 成BMP格式;反之,如果要保存成BMP、JPG或者 +// PNG格式,则pbyImageBuffer和pFrInfo是由 +// CameraImageProcess处理后的RGB格式数据。 +// 具体用法可以参考Advanced的例程。 +// byQuality 图像保存的质量因子,仅当保存为JPG格式 +// 时该参数有效,范围1到100。其余格式 +// 可以写成0。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSaveImage( + CameraHandle hCamera, + char* lpszFileName, + BYTE* pbyImageBuffer, + tSdkFrameHead* pFrInfo, + BYTE byFileType, + BYTE byQuality +); + +/******************************************************/ +// 函数名 : CameraGetImageResolution +// 功能描述 : 获得当前预览的分辨率。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// psCurVideoSize 结构体指针,用于返回当前的分辨率。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetImageResolution( + CameraHandle hCamera, + tSdkImageResolution* psCurVideoSize +); + +/******************************************************/ +// 函数名 : CameraSetImageResolution +// 功能描述 : 设置预览的分辨率。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pImageResolution 结构体指针,用于返回当前的分辨率。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetImageResolution( + CameraHandle hCamera, + tSdkImageResolution* pImageResolution +); + +/// @ingroup API_ROI +/// \~chinese +/// \brief 获得当前预览的分辨率。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iIndex 索引号,[0,N]表示预设的分辨率(N 为预设分辨率的最大个数,一般不超过20),OXFF 表示自定义分辨率(ROI) +/// \param [in] Mode 0: 普通模式 1:Sum 2:Average 3:Skip 4:Resample +/// \param [in] ModeSize 普通模式下忽略,第1位表示2X2 第二位表示3X3 ... +/// \param [in] x 水平偏移 +/// \param [in] y 垂直偏移 +/// \param [in] width 宽 +/// \param [in] height 高 +/// \param [in] ZoomWidth 最终输出时缩放宽度,0表示不缩放 +/// \param [in] ZoomHeight 最终输出时缩放高度,0表示不缩放 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the current preview resolution. +/// \param [in] hCamera Camera handle. +/// \param [in] iIndex Index number, [0,N] indicates the default resolution (N is the maximum number of preset resolutions, generally no more than 20), OXFF indicates custom resolution (ROI) +/// \param [in] Mode 0: Normal Mode 1:Sum 2:Average 3:Skip 4:Resample +/// \param [in] ModeSize ignored in normal mode, the first bit represents 2X2 the second bit represents 3X3 ... +/// \param [in] x horizontal offset +/// \param [in] y vertical offset +/// \param [in] width width +/// \param [in] height high +/// \param [in] ZoomWidth Scale width when final output, 0 means not zoom +/// \param [in] ZoomHeight Scales the height of the final output, 0 means no scaling +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetImageResolutionEx( + CameraHandle hCamera, + int iIndex, + int Mode, + UINT ModeSize, + int x, + int y, + int width, + int height, + int ZoomWidth, + int ZoomHeight +); + +/******************************************************/ +// 函数名 : CameraGetMediaType +// 功能描述 : 获得相机当前输出原始数据的格式索引号。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piMediaType 指针,用于返回当前格式类型的索引号。 +// 由CameraGetCapability获得相机的属性, +// 在tSdkCameraCapbility结构体中的pMediaTypeDesc +// 成员中,以数组的形式保存了相机支持的格式, +// piMediaType所指向的索引号,就是该数组的索引号。 +// pMediaTypeDesc[*piMediaType].iMediaType则表示当前格式的 +// 编码。该编码请参见CameraDefine.h中[图像格式定义]部分。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetMediaType( + CameraHandle hCamera, + INT* piMediaType +); + +/******************************************************/ +// 函数名 : CameraSetMediaType +// 功能描述 : 设置相机的输出原始数据格式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iMediaType 由CameraGetCapability获得相机的属性, +// 在tSdkCameraCapbility结构体中的pMediaTypeDesc +// 成员中,以数组的形式保存了相机支持的格式, +// iMediaType就是该数组的索引号。 +// pMediaTypeDesc[iMediaType].iMediaType则表示当前格式的 +// 编码。该编码请参见CameraDefine.h中[图像格式定义]部分。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetMediaType( + CameraHandle hCamera, + INT iMediaType +); + +/******************************************************/ +// 函数名 : CameraSetAeState +// 功能描述 : 设置相机曝光的模式。自动或者手动。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// bAeState TRUE,使能自动曝光;FALSE,停止自动曝光。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetAeState( + CameraHandle hCamera, + BOOL bAeState +); + +/******************************************************/ +// 函数名 : CameraGetAeState +// 功能描述 : 获得相机当前的曝光模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pAeState 指针,用于返回自动曝光的使能状态。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetAeState( + CameraHandle hCamera, + BOOL* pAeState +); + +/******************************************************/ +// 函数名 : CameraSetSharpness +// 功能描述 : 设置图像的处理的锐化参数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iSharpness 锐化参数。范围由CameraGetCapability +// 获得,一般是[0,100],0表示关闭锐化处理。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetSharpness( + CameraHandle hCamera, + int iSharpness +); + +/******************************************************/ +// 函数名 : CameraGetSharpness +// 功能描述 : 获取当前锐化设定值。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piSharpness 指针,返回当前设定的锐化的设定值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetSharpness( + CameraHandle hCamera, + int* piSharpness +); + +/******************************************************/ +// 函数名 : CameraSetLutMode +// 功能描述 : 设置相机的查表变换模式LUT模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// emLutMode LUTMODE_PARAM_GEN 表示由伽马和对比度参数动态生成LUT表。 +// LUTMODE_PRESET 表示使用预设的LUT表。 +// LUTMODE_USER_DEF 表示使用用户自定的LUT表。 +// LUTMODE_PARAM_GEN的定义参考CameraDefine.h中emSdkLutMode类型。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetLutMode( + CameraHandle hCamera, + int emLutMode +); + +/******************************************************/ +// 函数名 : CameraGetLutMode +// 功能描述 : 获得相机的查表变换模式LUT模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pemLutMode 指针,返回当前LUT模式。意义与CameraSetLutMode +// 中emLutMode参数相同。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetLutMode( + CameraHandle hCamera, + int* pemLutMode +); + +/******************************************************/ +// 函数名 : CameraSelectLutPreset +// 功能描述 : 选择预设LUT模式下的LUT表。必须先使用CameraSetLutMode +// 将LUT模式设置为预设模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iSel 表的索引号。表的个数由CameraGetCapability +// 获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSelectLutPreset( + CameraHandle hCamera, + int iSel +); + +/******************************************************/ +// 函数名 : CameraGetLutPresetSel +// 功能描述 : 获得预设LUT模式下的LUT表索引号。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piSel 指针,返回表的索引号。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetLutPresetSel( + CameraHandle hCamera, + int* piSel +); + +/******************************************************/ +// 函数名 : CameraSetCustomLut +// 功能描述 : 设置自定义的LUT表。必须先使用CameraSetLutMode +// 将LUT模式设置为自定义模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iChannel 指定要设定的LUT颜色通道,当为LUT_CHANNEL_ALL时, +// 三个通道的LUT将被同时替换。 +// 参考CameraDefine.h中emSdkLutChannel定义。 +// pLut 指针,指向LUT表的地址。LUT表为无符号短整形数组,数组大小为 +// 4096,分别代码颜色通道从0到4096(12bit颜色精度)对应的映射值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetCustomLut( + CameraHandle hCamera, + int iChannel, + USHORT* pLut +); + +/******************************************************/ +// 函数名 : CameraGetCustomLut +// 功能描述 : 获得当前使用的自定义LUT表。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iChannel 指定要获得的LUT颜色通道。当为LUT_CHANNEL_ALL时, +// 返回红色通道的LUT表。 +// 参考CameraDefine.h中emSdkLutChannel定义。 +// pLut 指针,指向LUT表的地址。LUT表为无符号短整形数组,数组大小为 +// 4096,分别代码颜色通道从0到4096(12bit颜色精度)对应的映射值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetCustomLut( + CameraHandle hCamera, + int iChannel, + USHORT* pLut +); + +/******************************************************/ +// 函数名 : CameraGetCurrentLut +// 功能描述 : 获得相机当前的LUT表,在任何LUT模式下都可以调用, +// 用来直观的观察LUT曲线的变化。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iChannel 指定要获得的LUT颜色通道。当为LUT_CHANNEL_ALL时, +// 返回红色通道的LUT表。 +// 参考CameraDefine.h中emSdkLutChannel定义。 +// pLut 指针,指向LUT表的地址。LUT表为无符号短整形数组,数组大小为 +// 4096,分别代码颜色通道从0到4096(12bit颜色精度)对应的映射值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetCurrentLut( + CameraHandle hCamera, + int iChannel, + USHORT* pLut +); + +/******************************************************/ +// 函数名 : CameraSetWbMode +// 功能描述 : 设置相机白平衡模式。分为手动和自动两种方式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// bAuto TRUE,则表示使能自动模式。 +// FALSE,则表示使用手动模式,通过调用 +// CameraSetOnceWB来进行一次白平衡。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetWbMode( + CameraHandle hCamera, + BOOL bAuto +); + +/******************************************************/ +// 函数名 : CameraGetWbMode +// 功能描述 : 获得当前的白平衡模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbAuto 指针,返回TRUE表示自动模式,FALSE +// 为手动模式。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetWbMode( + CameraHandle hCamera, + BOOL* pbAuto +); + +/******************************************************/ +// 函数名 : CameraSetPresetClrTemp +// 功能描述 : 选择指定预设色温模式 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iSel 预设色温的模式索引号,从0开始 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetPresetClrTemp( + CameraHandle hCamera, + int iSel +); + +/******************************************************/ +// 函数名 : CameraGetPresetClrTemp +// 功能描述 : 获得当前选择的预设色温模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piSel 指针,返回选择的预设色温索引号 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetPresetClrTemp( + CameraHandle hCamera, + int* piSel +); + +/******************************************************/ +// 函数名 : CameraSetUserClrTempGain +// 功能描述 : 设置自定义色温模式下的数字增益 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iRgain 红色增益,范围0到400,表示0到4倍 +// iGgain 绿色增益,范围0到400,表示0到4倍 +// iBgain 蓝色增益,范围0到400,表示0到4倍 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetUserClrTempGain( + CameraHandle hCamera, + int iRgain, + int iGgain, + int iBgain +); + + +/******************************************************/ +// 函数名 : CameraGetUserClrTempGain +// 功能描述 : 获得自定义色温模式下的数字增益 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piRgain 指针,返回红色增益,范围0到400,表示0到4倍 +// piGgain 指针,返回绿色增益,范围0到400,表示0到4倍 +// piBgain 指针,返回蓝色增益,范围0到400,表示0到4倍 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetUserClrTempGain( + CameraHandle hCamera, + int* piRgain, + int* piGgain, + int* piBgain +); + +/******************************************************/ +// 函数名 : CameraSetUserClrTempMatrix +// 功能描述 : 设置自定义色温模式下的颜色矩阵 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pMatrix 指向一个float[3][3]数组的首地址 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetUserClrTempMatrix( + CameraHandle hCamera, + float* pMatrix +); + + +/******************************************************/ +// 函数名 : CameraGetUserClrTempMatrix +// 功能描述 : 获得自定义色温模式下的颜色矩阵 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pMatrix 指向一个float[3][3]数组的首地址 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetUserClrTempMatrix( + CameraHandle hCamera, + float* pMatrix +); + +/******************************************************/ +// 函数名 : CameraSetClrTempMode +// 功能描述 : 设置白平衡时使用的色温模式, +// 支持的模式有三种,分别是自动,预设和自定义。 +// 自动模式下,会自动选择合适的色温模式 +// 预设模式下,会使用用户指定的色温模式 +// 自定义模式下,使用用户自定义的色温数字增益和矩阵 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iMode 模式,只能是emSdkClrTmpMode中定义的一种 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetClrTempMode( + CameraHandle hCamera, + int iMode +); + +/******************************************************/ +// 函数名 : CameraGetClrTempMode +// 功能描述 : 获得白平衡时使用的色温模式。参考CameraSetClrTempMode +// 中功能描述部分。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pimode 指针,返回模式选择,参考emSdkClrTmpMode类型定义 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetClrTempMode( + CameraHandle hCamera, + int* pimode +); + + + +/******************************************************/ +// 函数名 : CameraSetOnceWB +// 功能描述 : 在手动白平衡模式下,调用该函数会进行一次白平衡。 +// 生效的时间为接收到下一帧图像数据时。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetOnceWB( + CameraHandle hCamera +); + +/******************************************************/ +// 函数名 : CameraSetOnceBB +// 功能描述 : 执行一次黑平衡操作。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetOnceBB( + CameraHandle hCamera +); + + +/******************************************************/ +// 函数名 : CameraSetAeTarget +// 功能描述 : 设定自动曝光的亮度目标值。设定范围由CameraGetCapability +// 函数获得。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iAeTarget 亮度目标值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetAeTarget( + CameraHandle hCamera, + int iAeTarget +); + +/******************************************************/ +// 函数名 : CameraGetAeTarget +// 功能描述 : 获得自动曝光的亮度目标值。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// *piAeTarget 指针,返回目标值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetAeTarget( + CameraHandle hCamera, + int* piAeTarget +); + + +/******************************************************/ +// 函数名 : CameraSetAeExposureRange +// 功能描述 : 设定自动曝光模式的曝光时间调节范围 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// fMinExposureTime 最小曝光时间(微秒) +// fMaxExposureTime 最大曝光时间(微秒) +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetAeExposureRange( + CameraHandle hCamera, + double fMinExposureTime, + double fMaxExposureTime +); + +/******************************************************/ +// 函数名 : CameraGetAeExposureRange +// 功能描述 : 获得自动曝光模式的曝光时间调节范围 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// fMinExposureTime 最小曝光时间(微秒) +// fMaxExposureTime 最大曝光时间(微秒) +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetAeExposureRange( + CameraHandle hCamera, + double* fMinExposureTime, + double* fMaxExposureTime +); + +/******************************************************/ +// 函数名 : CameraSetAeAnalogGainRange +// 功能描述 : 设定自动曝光模式的增益调节范围 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iMinAnalogGain 最小增益 +// iMaxAnalogGain 最大增益 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetAeAnalogGainRange( + CameraHandle hCamera, + int iMinAnalogGain, + int iMaxAnalogGain +); + +/******************************************************/ +// 函数名 : CameraGetAeAnalogGainRange +// 功能描述 : 获得自动曝光模式的增益调节范围 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iMinAnalogGain 最小增益 +// iMaxAnalogGain 最大增益 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetAeAnalogGainRange( + CameraHandle hCamera, + int* iMinAnalogGain, + int* iMaxAnalogGain +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 设置自动曝光模式的调节阈值 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iThreshold 如果 abs(目标亮度-图像亮度) < iThreshold 则停止自动调节 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the adjustment threshold for auto exposure mode +/// \param [in] hCamera Camera handle. +/// \param [in] iThreshold Stops automatic adjustment if abs (target brightness - image brightness) < iThreshold +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetAeThreshold( + CameraHandle hCamera, + int iThreshold +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 获取自动曝光模式的调节阈值 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] iThreshold 读取到的调节阈值 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get adjustment threshold for auto exposure mode +/// \param [in] hCamera Camera handle. +/// \param [out] iThreshold Read Threshold +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetAeThreshold( + CameraHandle hCamera, + int* iThreshold +); + +/******************************************************/ +// 函数名 : CameraSetExposureTime +// 功能描述 : 设置曝光时间。单位为微秒。对于CMOS传感器,其曝光 +// 的单位是按照行来计算的,因此,曝光时间并不能在微秒 +// 级别连续可调。而是会按照整行来取舍。在调用 +// 本函数设定曝光时间后,建议再调用CameraGetExposureTime +// 来获得实际设定的值。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// fExposureTime 曝光时间,单位微秒。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetExposureTime( + CameraHandle hCamera, + double fExposureTime +); + +/******************************************************/ +// 函数名 : CameraGetExposureLineTime +// 功能描述 : 获得一行的曝光时间。对于CMOS传感器,其曝光 +// 的单位是按照行来计算的,因此,曝光时间并不能在微秒 +// 级别连续可调。而是会按照整行来取舍。这个函数的 +// 作用就是返回CMOS相机曝光一行对应的时间。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pfLineTime 指针,返回一行的曝光时间,单位为微秒。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetExposureLineTime( + CameraHandle hCamera, + double* pfLineTime +); + +/******************************************************/ +// 函数名 : CameraGetExposureTime +// 功能描述 : 获得相机的曝光时间。请参见CameraSetExposureTime +// 的功能描述。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pfExposureTime 指针,返回当前的曝光时间,单位微秒。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetExposureTime( + CameraHandle hCamera, + double* pfExposureTime +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 获得相机的曝光时间范围 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pfMin 指针,返回曝光时间的最小值,单位微秒。 +/// \param [out] pfMax 指针,返回曝光时间的最大值,单位微秒。 +/// \param [out] pfStep 指针,返回曝光时间的步进值,单位微秒。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get camera exposure time range +/// \param [in] hCamera Camera handle. +/// \param [out] pfMin Returns the minimum exposure time in microseconds. +/// \param [out] pfMax Returns the maximum exposure time in microseconds. +/// \param [out] pfStep Returns the exposure time in microseconds. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetExposureTimeRange( + CameraHandle hCamera, + double* pfMin, + double* pfMax, + double* pfStep +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 设置多重曝光时间。单位为微秒。(此功能仅线阵相机支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index 曝光索引。 +/// \param [in] fExposureTime 曝光时间,单位微秒。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \note 对于CMOS传感器,其曝光的单位是按照行来计算的,因此,曝光时间并不能在微秒级别连续可调。而是会按照整行来取舍。在调用本函数设定曝光时间后,建议再调用@link #CameraGetMultiExposureTime @endlink来获得实际设定的值。 +/// \~english +/// \brief Set the multiple exposure time. The unit is microseconds. (This feature is only supported by line camera) +/// \param [in] hCamera Camera handle. +/// \param [in] index Exposure index. +/// \param [in] fExposureTime Exposure time in microseconds. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \note For CMOS sensors, the unit of exposure is calculated in rows, so the exposure time cannot be continuously adjusted in microseconds. Instead, the entire line will be chosen. After calling this function to set the exposure time, it is recommended to call @link #CameraGetMultiExposureTime @endlink to get the actual set value. +MVSDK_API CameraSdkStatus CameraSetMultiExposureTime( + CameraHandle hCamera, + int index, + double fExposureTime +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 获取多重曝光时间。单位为微秒。(此功能仅线阵相机支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index 曝光索引。 +/// \param [out] fExposureTime 返回曝光时间,单位微秒。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the multiple exposure time. The unit is microseconds. (This feature is only supported by line camera) +/// \param [in] hCamera Camera handle. +/// \param [in] index Exposure index. +/// \param [out] fExposureTime Returns exposure time in microseconds. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetMultiExposureTime( + CameraHandle hCamera, + int index, + double* fExposureTime +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 设置多重曝光的gamma值。(此功能仅线阵相机支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index 曝光索引。 +/// \param [in] iGamma 要设定的Gamma值。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \note 设定的值会马上保存在SDK内部,但是只有当相机处于动态参数生成的LUT模式时,才会生效。请参考@link #CameraSetLutMode @endlink的函数说明部分。 +/// \~english +/// \brief Sets the gamma value for multiple exposures. (This function is only supported by line scan cameras) +/// \param [in] hCamera Camera handle. +/// \param [in] index Exposure index. +/// \param [in] iGamma The gamma to be set. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \note The set value will be stored in the SDK immediately, but it will only take effect when the camera is in LUT mode generated by dynamic parameters. Please refer to the function description part of @link #CameraSetLutMode @endlink. +MVSDK_API CameraSdkStatus CameraSetMultiExposureGamma( + CameraHandle hCamera, + int index, + int iGamma +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 获取多重曝光的gamma值。(此功能仅线阵相机支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index 曝光索引。 +/// \param [out] piGamma 指针,返回的Gamma值。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \see CameraSetMultiExposureGamma +/// \~english +/// \brief Get the gamma value for multiple exposures. (This function is only supported by line scan cameras) +/// \param [in] hCamera Camera handle. +/// \param [in] index Exposure index. +/// \param [out] piGamma Returns the gamma value. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \see CameraSetMultiExposureGamma +MVSDK_API CameraSdkStatus CameraGetMultiExposureGamma( + CameraHandle hCamera, + int index, + int* piGamma +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 设置多重曝光使能个数。(此功能仅线阵相机支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] count 使能个数。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the number of multiple exposure enable. (This feature is only supported by line camera) +/// \param [in] hCamera Camera handle. +/// \param [in] count The number of exposures enabled. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetMultiExposureCount( + CameraHandle hCamera, + int count +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 获取多重曝光使能个数。(此功能仅线阵相机支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [out] count 使能个数。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the number of multiple exposure enable. (This feature is only supported by line camera) +/// \param [in] hCamera Camera handle. +/// \param [out] count The number of exposures enabled. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetMultiExposureCount( + CameraHandle hCamera, + int* count +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 获取多重曝光的最大曝光个数。(此功能仅线阵相机支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [out] max_count 支持的最大曝光个数。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the maximum number of exposures for multiple exposures. (This feature is only supported by line camera) +/// \param [in] hCamera Camera handle. +/// \param [out] max_count The maximum number of exposures supported. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetMultiExposureMaxCount( + CameraHandle hCamera, + int* max_count +); + +/******************************************************/ +// 函数名 : CameraSetAnalogGain +// 功能描述 : 设置相机的图像模拟增益值。该值乘以CameraGetCapability获得 +// 的相机属性结构体中sExposeDesc.fAnalogGainStep,就 +// 得到实际的图像信号放大倍数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iAnalogGain 设定的模拟增益值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetAnalogGain( + CameraHandle hCamera, + INT iAnalogGain +); + +/******************************************************/ +// 函数名 : CameraGetAnalogGain +// 功能描述 : 获得图像信号的模拟增益值。参见CameraSetAnalogGain +// 详细说明。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piAnalogGain 指针,返回当前的模拟增益值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetAnalogGain( + CameraHandle hCamera, + INT* piAnalogGain +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 设置相机的模拟增益放大倍数。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] fGain 设定的模拟增益放大倍数。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the image gain magnification of the camera. +/// \param [in] hCamera Camera handle. +/// \param [in] fGain Gain magnification. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetAnalogGainX( + CameraHandle hCamera, + float fGain +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 获得图像信号的模拟增益放大倍数。 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pfGain 指针,返回当前的模拟增益放大倍数。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \see CameraSetAnalogGainX +/// \~english +/// \brief Obtain the gain magnification of the image signal. +/// \param [in] hCamera Camera handle. +/// \param [out] pfGain pointer, returns the current gain magnification. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \see CameraSetAnalogGainX +MVSDK_API CameraSdkStatus CameraGetAnalogGainX( + CameraHandle hCamera, + float* pfGain +); + +/// @ingroup API_EXPOSURE +/// \~chinese +/// \brief 获得相机的模拟增益放大倍数取值范围 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pfMin 指针,返回最小倍数。 +/// \param [out] pfMax 指针,返回最大倍数。 +/// \param [out] pfStep 指针,返回步进值。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the value range of the camera's gain magnification +/// \param [in] hCamera Camera handle. +/// \param [out] pfMin pointer, returns the minimum multiple. +/// \param [out] pfMax pointer, returns the maximum multiple. +/// \param [out] pfStep pointer, returns the step value. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetAnalogGainXRange( + CameraHandle hCamera, + float* pfMin, + float* pfMax, + float* pfStep +); + +/******************************************************/ +// 函数名 : CameraSetGain +// 功能描述 : 设置图像的数字增益。设定范围由CameraGetCapability +// 获得的相机属性结构体中sRgbGainRange成员表述。 +// 实际的放大倍数是设定值/100。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iRGain 红色通道的增益值。 +// iGGain 绿色通道的增益值。 +// iBGain 蓝色通道的增益值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetGain( + CameraHandle hCamera, + int iRGain, + int iGGain, + int iBGain +); + + +/******************************************************/ +// 函数名 : CameraGetGain +// 功能描述 : 获得图像处理的数字增益。具体请参见CameraSetGain +// 的功能描述部分。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piRGain 指针,返回红色通道的数字增益值。 +// piGGain 指针,返回绿色通道的数字增益值。 +// piBGain 指针,返回蓝色通道的数字增益值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetGain( + CameraHandle hCamera, + int* piRGain, + int* piGGain, + int* piBGain +); + + +/******************************************************/ +// 函数名 : CameraSetGamma +// 功能描述 : 设定LUT动态生成模式下的Gamma值。设定的值会 +// 马上保存在SDK内部,但是只有当相机处于动态 +// 参数生成的LUT模式时,才会生效。请参考CameraSetLutMode +// 的函数说明部分。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iGamma 要设定的Gamma值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetGamma( + CameraHandle hCamera, + int iGamma +); + +/******************************************************/ +// 函数名 : CameraGetGamma +// 功能描述 : 获得LUT动态生成模式下的Gamma值。请参考CameraSetGamma +// 函数的功能描述。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piGamma 指针,返回当前的Gamma值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetGamma( + CameraHandle hCamera, + int* piGamma +); + +/******************************************************/ +// 函数名 : CameraSetContrast +// 功能描述 : 设定LUT动态生成模式下的对比度值。设定的值会 +// 马上保存在SDK内部,但是只有当相机处于动态 +// 参数生成的LUT模式时,才会生效。请参考CameraSetLutMode +// 的函数说明部分。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iContrast 设定的对比度值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetContrast( + CameraHandle hCamera, + int iContrast +); + +/******************************************************/ +// 函数名 : CameraGetContrast +// 功能描述 : 获得LUT动态生成模式下的对比度值。请参考 +// CameraSetContrast函数的功能描述。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piContrast 指针,返回当前的对比度值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetContrast( + CameraHandle hCamera, + int* piContrast +); + +/******************************************************/ +// 函数名 : CameraSetSaturation +// 功能描述 : 设定图像处理的饱和度。对黑白相机无效。 +// 设定范围由CameraGetCapability获得。100表示 +// 表示原始色度,不增强。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iSaturation 设定的饱和度值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetSaturation( + CameraHandle hCamera, + int iSaturation +); + +/******************************************************/ +// 函数名 : CameraGetSaturation +// 功能描述 : 获得图像处理的饱和度。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piSaturation 指针,返回当前图像处理的饱和度值。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetSaturation( + CameraHandle hCamera, + int* piSaturation +); + +/******************************************************/ +// 函数名 : CameraSetMonochrome +// 功能描述 : 设置彩色转为黑白功能的使能。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// bEnable TRUE,表示将彩色图像转为黑白。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetMonochrome( + CameraHandle hCamera, + BOOL bEnable +); + +/******************************************************/ +// 函数名 : CameraGetMonochrome +// 功能描述 : 获得彩色转换黑白功能的使能状况。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbEnable 指针。返回TRUE表示开启了彩色图像 +// 转换为黑白图像的功能。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetMonochrome( + CameraHandle hCamera, + BOOL* pbEnable +); + +/******************************************************/ +// 函数名 : CameraSetInverse +// 功能描述 : 设置彩图像颜色翻转功能的使能。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// bEnable TRUE,表示开启图像颜色翻转功能, +// 可以获得类似胶卷底片的效果。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetInverse( + CameraHandle hCamera, + BOOL bEnable +); + +/******************************************************/ +// 函数名 : CameraGetInverse +// 功能描述 : 获得图像颜色反转功能的使能状态。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbEnable 指针,返回该功能使能状态。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetInverse( + CameraHandle hCamera, + BOOL* pbEnable +); + +/******************************************************/ +// 函数名 : CameraSetAntiFlick +// 功能描述 : 设置自动曝光时抗频闪功能的使能状态。对于手动 +// 曝光模式下无效。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// bEnable TRUE,开启抗频闪功能;FALSE,关闭该功能。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetAntiFlick( + CameraHandle hCamera, + BOOL bEnable +); + +/******************************************************/ +// 函数名 : CameraGetAntiFlick +// 功能描述 : 获得自动曝光时抗频闪功能的使能状态。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbEnable 指针,返回该功能的使能状态。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetAntiFlick( + CameraHandle hCamera, + BOOL* pbEnable +); + +/******************************************************/ +// 函数名 : CameraGetLightFrequency +// 功能描述 : 获得自动曝光时,消频闪的频率选择。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piFrequencySel 指针,返回选择的索引号。0:50HZ 1:60HZ +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetLightFrequency( + CameraHandle hCamera, + int* piFrequencySel +); + +/******************************************************/ +// 函数名 : CameraSetLightFrequency +// 功能描述 : 设置自动曝光时消频闪的频率。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iFrequencySel 0:50HZ , 1:60HZ +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetLightFrequency( + CameraHandle hCamera, + int iFrequencySel +); + +/******************************************************/ +// 函数名 : CameraSetFrameSpeed +// 功能描述 : 设定相机输出图像的帧率。相机可供选择的帧率模式由 +// CameraGetCapability获得的信息结构体中iFrameSpeedDesc +// 表示最大帧率选择模式个数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iFrameSpeed 选择的帧率模式索引号,范围从0到 +// CameraGetCapability获得的信息结构体中iFrameSpeedDesc - 1 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetFrameSpeed( + CameraHandle hCamera, + int iFrameSpeed +); + +/******************************************************/ +// 函数名 : CameraGetFrameSpeed +// 功能描述 : 获得相机输出图像的帧率选择索引号。具体用法参考 +// CameraSetFrameSpeed函数的功能描述部分。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piFrameSpeed 指针,返回选择的帧率模式索引号。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetFrameSpeed( + CameraHandle hCamera, + int* piFrameSpeed +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设定相机的帧频(面阵)或行频(线阵)。(仅部分网口相机支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] RateHZ 帧频或行频(<=0表示最大频率)。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the frame frequency (area) or line frequency (line scan). (only supported by some gige camera) +/// \param [in] hCamera Camera handle. +/// \param [in] RateHZ frame rate or line rate (<=0 means maximum frequency). +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetFrameRate( + CameraHandle hCamera, + int RateHZ +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获取设定的相机帧频(面阵)或行频(线阵) +/// \param [in] hCamera 相机的句柄。 +/// \param [out] RateHZ 帧频或行频(<=0表示最大频率)。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the frame frequency (area) or line frequency (line scan). +/// \param [in] hCamera Camera handle. +/// \param [out] RateHZ frame rate or line rate (<=0 means maximum frequency). +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetFrameRate( + CameraHandle hCamera, + int* RateHZ +); + +/******************************************************/ +// 函数名 : CameraSetParameterMode +// 功能描述 : 设定参数存取的目标对象。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iMode 参数存取的对象。参考CameraDefine.h +// 中emSdkParameterMode的类型定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetParameterMode( + CameraHandle hCamera, + int iMode +); + +/******************************************************/ +// 函数名 : CameraGetParameterMode +// 功能描述 : +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// int* piTarget +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetParameterMode( + CameraHandle hCamera, + int* piTarget +); + +/******************************************************/ +// 函数名 : CameraSetParameterMask +// 功能描述 : 设置参数存取的掩码。参数加载和保存时会根据该 +// 掩码来决定各个模块参数的是否加载或者保存。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// uMask 掩码。参考CameraDefine.h中PROP_SHEET_INDEX +// 类型定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetParameterMask( + CameraHandle hCamera, + UINT uMask +); + +/******************************************************/ +// 函数名 : CameraSaveParameter +// 功能描述 : 保存当前相机参数到指定的参数组中。相机提供了A,B,C,D +// A,B,C,D四组空间来进行参数的保存。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iTeam PARAMETER_TEAM_A 保存到A组中, +// PARAMETER_TEAM_B 保存到B组中, +// PARAMETER_TEAM_C 保存到C组中, +// PARAMETER_TEAM_D 保存到D组中 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSaveParameter( + CameraHandle hCamera, + int iTeam +); + + +/******************************************************/ +// 函数名 : CameraSaveParameterToFile +// 功能描述 : 保存当前相机参数到指定的文件中。该文件可以复制到 +// 别的电脑上供其他相机加载,也可以做参数备份用。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// sFileName 参数文件的完整路径。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSaveParameterToFile( + CameraHandle hCamera, + char* sFileName +); + + +/******************************************************/ +// 函数名 : CameraReadParameterFromFile +// 功能描述 : 从PC上指定的参数文件中加载参数。我公司相机参数 +// 保存在PC上为.config后缀的文件,位于安装下的 +// Camera\Configs文件夹中。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// *sFileName 参数文件的完整路径。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraReadParameterFromFile( + CameraHandle hCamera, + char* sFileName +); + +/******************************************************/ +// 函数名 : CameraLoadParameter +// 功能描述 : 加载指定组的参数到相机中。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iTeam PARAMETER_TEAM_A 加载A组参数, +// PARAMETER_TEAM_B 加载B组参数, +// PARAMETER_TEAM_C 加载C组参数, +// PARAMETER_TEAM_D 加载D组参数, +// PARAMETER_TEAM_DEFAULT 加载默认参数。 +// 类型定义参考CameraDefine.h中emSdkParameterTeam类型 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraLoadParameter( + CameraHandle hCamera, + int iTeam +); + +/******************************************************/ +// 函数名 : CameraGetCurrentParameterGroup +// 功能描述 : 获得当前选择的参数组。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piTeam 指针,返回当前选择的参数组。返回值 +// 参考CameraLoadParameter中iTeam参数。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetCurrentParameterGroup( + CameraHandle hCamera, + int* piTeam +); + +/******************************************************/ +// 函数名 : CameraSetTransPackLen +// 功能描述 : 设置相机传输图像数据的分包大小。 +// 目前的SDK版本中,该接口仅对GIGE接口相机有效, +// 用来控制网络传输的分包大小。对于支持巨帧的网卡, +// 我们建议选择8K的分包大小,可以有效的降低传输 +// 所占用的CPU处理时间。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iPackSel 分包长度选择的索引号。分包长度可由 +// 获得相机属性结构体中pPackLenDesc成员表述, +// iPackLenDesc成员则表示最大可选的分包模式个数。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetTransPackLen( + CameraHandle hCamera, + INT iPackSel +); + +/******************************************************/ +// 函数名 : CameraGetTransPackLen +// 功能描述 : 获得相机当前传输分包大小的选择索引号。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piPackSel 指针,返回当前选择的分包大小索引号。 +// 参见CameraSetTransPackLen中iPackSel的 +// 说明。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetTransPackLen( + CameraHandle hCamera, + INT* piPackSel +); + +/******************************************************/ +// 函数名 : CameraIsAeWinVisible +// 功能描述 : 获得自动曝光参考窗口的显示状态。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbIsVisible 指针,返回TRUE,则表示当前窗口会 +// 被叠加在图像内容上。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraIsAeWinVisible( + CameraHandle hCamera, + BOOL* pbIsVisible +); + +/******************************************************/ +// 函数名 : CameraSetAeWinVisible +// 功能描述 : 设置自动曝光参考窗口的显示状态。当设置窗口状态 +// 为显示,调用CameraImageOverlay后,能够将窗口位置 +// 以矩形的方式叠加在图像上。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// bIsVisible TRUE,设置为显示;FALSE,不显示。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetAeWinVisible( + CameraHandle hCamera, + BOOL bIsVisible +); + +/******************************************************/ +// 函数名 : CameraGetAeWindow +// 功能描述 : 获得自动曝光参考窗口的位置。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piHOff 指针,返回窗口位置左上角横坐标值。 +// piVOff 指针,返回窗口位置左上角纵坐标值。 +// piWidth 指针,返回窗口的宽度。 +// piHeight 指针,返回窗口的高度。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetAeWindow( + CameraHandle hCamera, + INT* piHOff, + INT* piVOff, + INT* piWidth, + INT* piHeight +); + +/******************************************************/ +// 函数名 : CameraSetAeWindow +// 功能描述 : 设置自动曝光的参考窗口。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iHOff 窗口左上角的横坐标 +// iVOff 窗口左上角的纵坐标 +// iWidth 窗口的宽度 +// iHeight 窗口的高度 +// 如果iHOff、iVOff、iWidth、iHeight全部为0,则 +// 窗口设置为每个分辨率下的居中1/2大小。可以随着 +// 分辨率的变化而跟随变化;如果iHOff、iVOff、iWidth、iHeight +// 所决定的窗口位置范围超出了当前分辨率范围内, +// 则自动使用居中1/2大小窗口。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetAeWindow( + CameraHandle hCamera, + int iHOff, + int iVOff, + int iWidth, + int iHeight +); + +/******************************************************/ +// 函数名 : CameraSetMirror +// 功能描述 : 设置图像镜像操作。镜像操作分为水平和垂直两个方向。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iDir 表示镜像的方向。0,表示水平方向;1,表示垂直方向。 +// bEnable TRUE,使能镜像;FALSE,禁止镜像 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetMirror( + CameraHandle hCamera, + int iDir, + BOOL bEnable +); + +/******************************************************/ +// 函数名 : CameraGetMirror +// 功能描述 : 获得图像的镜像状态。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iDir 表示要获得的镜像方向。 +// 0,表示水平方向;1,表示垂直方向。 +// pbEnable 指针,返回TRUE,则表示iDir所指的方向 +// 镜像被使能。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetMirror( + CameraHandle hCamera, + int iDir, + BOOL* pbEnable +); + +/// @ingroup API_MIRROR +/// \~chinese +/// \brief 设置硬件镜像。分为水平和垂直两个方向。(仅部分网口、U3相机支持此功能) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iDir 表示镜像的方向。0,表示水平方向;1,表示垂直方向。 +/// \param [in] bEnable TRUE,使能镜像;FALSE,禁止镜像 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set up the hardware mirror. Divided into two directions, horizontal and vertical. (Only some GigE and U3 cameras support this feature) +/// \param [in] hCamera Camera handle. +/// \param [in] iDir Indicates the direction of the mirror. 0 means horizontal direction; 1 means vertical direction. +/// \param [in] bEnable TRUE to enable mirroring; FALSE to disable mirroring +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetHardwareMirror( + CameraHandle hCamera, + int iDir, + BOOL bEnable +); + +/// @ingroup API_MIRROR +/// \~chinese +/// \brief 获取设置的硬件镜像状态。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iDir 表示要获得的镜像方向。0,表示水平方向;1,表示垂直方向。 +/// \param [out] pbEnable 指针,返回TRUE,则表示iDir所指的方向镜像被使能。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the hardware mirrored state of the image. +/// \param [in] hCamera Camera handle. +/// \param [in] iDir Indicates the mirroring direction to be obtained. 0 means horizontal direction; 1 means vertical direction. +/// \param [out] pbEnable Returns TRUE, indicating that the direction mirror image of iDir is enabled. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetHardwareMirror( + CameraHandle hCamera, + int iDir, + BOOL* pbEnable +); + +/// @ingroup API_MIRROR +/// \~chinese +/// \brief 设置图像旋转操作 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iRot 表示旋转的角度(逆时针方向)(0:不旋转 1:90度 2:180度 3:270度) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set image rotation operation +/// \param [in] hCamera Camera handle. +/// \param [in] iRot rotation angle (counterclockwise) (0: no rotation 1:90 degrees 2:180 degrees 3:270 degrees) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetRotate( + CameraHandle hCamera, + int iRot +); + +/// @ingroup API_MIRROR +/// \~chinese +/// \brief 获得图像的旋转状态。 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] iRot 表示要获得的旋转方向。(逆时针方向)(0:不旋转 1:90度 2:180度 3:270度) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the rotation state of the image. +/// \param [in] hCamera Camera handle. +/// \param [out] iRot Indicates the direction of rotation to get. (Counterclockwise) (0: Do not rotate 1:90 degree 2: 180 degree 3: 270 degree) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetRotate( + CameraHandle hCamera, + int* iRot +); + +/******************************************************/ +// 函数名 : CameraGetWbWindow +// 功能描述 : 获得白平衡参考窗口的位置。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// PiHOff 指针,返回参考窗口的左上角横坐标 。 +// PiVOff 指针,返回参考窗口的左上角纵坐标 。 +// PiWidth 指针,返回参考窗口的宽度。 +// PiHeight 指针,返回参考窗口的高度。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetWbWindow( + CameraHandle hCamera, + INT* PiHOff, + INT* PiVOff, + INT* PiWidth, + INT* PiHeight +); + +/******************************************************/ +// 函数名 : CameraSetWbWindow +// 功能描述 : 设置白平衡参考窗口的位置。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iHOff 参考窗口的左上角横坐标。 +// iVOff 参考窗口的左上角纵坐标。 +// iWidth 参考窗口的宽度。 +// iHeight 参考窗口的高度。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetWbWindow( + CameraHandle hCamera, + INT iHOff, + INT iVOff, + INT iWidth, + INT iHeight +); + +/******************************************************/ +// 函数名 : CameraIsWbWinVisible +// 功能描述 : 获得白平衡窗口的显示状态。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbShow 指针,返回TRUE,则表示窗口是可见的。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraIsWbWinVisible( + CameraHandle hCamera, + BOOL* pbShow +); + +/******************************************************/ +// 函数名 : CameraSetWbWinVisible +// 功能描述 : 设置白平衡窗口的显示状态。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// bShow TRUE,则表示设置为可见。在调用 +// CameraImageOverlay后,图像内容上将以矩形 +// 的方式叠加白平衡参考窗口的位置。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetWbWinVisible( + CameraHandle hCamera, + BOOL bShow +); + +/******************************************************/ +// 函数名 : CameraImageOverlay +// 功能描述 : 将输入的图像数据上叠加十字线、白平衡参考窗口、 +// 自动曝光参考窗口等图形。只有设置为可见状态的 +// 十字线和参考窗口才能被叠加上。 +// 注意,该函数的输入图像必须是RGB格式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pRgbBuffer 图像数据缓冲区。 +// pFrInfo 图像的帧头信息。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraImageOverlay( + CameraHandle hCamera, + BYTE* pRgbBuffer, + tSdkFrameHead* pFrInfo +); + +/******************************************************/ +// 函数名 : CameraSetCrossLine +// 功能描述 : 设置指定十字线的参数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iLine 表示要设置第几条十字线的状态。范围为[0,8],共9条。 +// x 十字线中心位置的横坐标值。 +// y 十字线中心位置的纵坐标值。 +// uColor 十字线的颜色,格式为(R|(G<<8)|(B<<16)) +// bVisible 十字线的显示状态。TRUE,表示显示。 +// 只有设置为显示状态的十字线,在调用 +// CameraImageOverlay后才会被叠加到图像上。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetCrossLine( + CameraHandle hCamera, + int iLine, + INT x, + INT y, + UINT uColor, + BOOL bVisible +); + +/******************************************************/ +// 函数名 : CameraGetCrossLine +// 功能描述 : 获得指定十字线的状态。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iLine 表示要获取的第几条十字线的状态。范围为[0,8],共9条。 +// px 指针,返回该十字线中心位置的横坐标。 +// py 指针,返回该十字线中心位置的横坐标。 +// pcolor 指针,返回该十字线的颜色,格式为(R|(G<<8)|(B<<16))。 +// pbVisible 指针,返回TRUE,则表示该十字线可见。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetCrossLine( + CameraHandle hCamera, + INT iLine, + INT* px, + INT* py, + UINT* pcolor, + BOOL* pbVisible +); + +/******************************************************/ +// 函数名 : CameraGetCapability +// 功能描述 : 获得相机的特性描述结构体。该结构体中包含了相机 +// 可设置的各种参数的范围信息。决定了相关函数的参数 +// 返回,也可用于动态创建相机的配置界面。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pCameraInfo 指针,返回该相机特性描述的结构体。 +// tSdkCameraCapbility在CameraDefine.h中定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetCapability( + CameraHandle hCamera, + tSdkCameraCapbility* pCameraInfo +); + +/******************************************************/ +// 函数名 : CameraGetCapabilityEx +// 功能描述 : 获得相机的特性描述结构体。该结构体中包含了相机 +// 可设置的各种参数的范围信息。决定了相关函数的参数 +// 返回,也可用于动态创建相机的配置界面。 +// 参数 : sDeviceModel 相机的型号,由扫描列表中获取 +// pCameraInfo 指针,返回该相机特性描述的结构体。 +// tSdkCameraCapbility在CameraDefine.h中定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetCapabilityEx( + char* sDeviceModel, + tSdkCameraCapbility* pCameraInfo, + PVOID hCameraHandle +); + + +/******************************************************/ +// 函数名 : CameraWriteSN +// 功能描述 : 设置相机的序列号。我公司相机序列号分为3级。 +// 0级的是我公司自定义的相机序列号,出厂时已经 +// 设定好,1级和2级留给二次开发使用。每级序列 +// 号长度都是32个字节。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbySN 序列号的缓冲区。 +// iLevel 要设定的序列号级别,只能是1或者2。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraWriteSN( + CameraHandle hCamera, + BYTE* pbySN, + INT iLevel +); + +/******************************************************/ +// 函数名 : CameraReadSN +// 功能描述 : 读取相机指定级别的序列号。序列号的定义请参考 +// CameraWriteSN函数的功能描述部分。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pbySN 序列号的缓冲区。 +// iLevel 要读取的序列号级别。只能是1和2。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraReadSN( + CameraHandle hCamera, + BYTE* pbySN, + INT iLevel +); +/******************************************************/ +// 函数名 : CameraSetTriggerDelayTime +// 功能描述 : 设置硬件触发模式下的触发延时时间,单位微秒。 +// 当硬触发信号来临后,经过指定的延时,再开始采集 +// 图像。仅部分型号的相机支持该功能。具体请查看 +// 产品说明书。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// uDelayTimeUs 硬触发延时。单位微秒。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetTriggerDelayTime( + CameraHandle hCamera, + UINT uDelayTimeUs +); + +/******************************************************/ +// 函数名 : CameraGetTriggerDelayTime +// 功能描述 : 获得当前设定的硬触发延时时间。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// puDelayTimeUs 指针,返回延时时间,单位微秒。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetTriggerDelayTime( + CameraHandle hCamera, + UINT* puDelayTimeUs +); + +/******************************************************/ +// 函数名 : CameraSetTriggerPeriodTime +// 功能描述 : 一次触发多帧时,设置2帧之间的间隔时间。 +// 仅部分型号的相机支持该功能。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// time 间隔时间(微秒) +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetTriggerPeriodTime( + CameraHandle hCamera, + UINT time +); + +/******************************************************/ +// 函数名 : CameraGetTriggerPeriodTime +// 功能描述 : 获取当前设置的间隔时间。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// time 间隔时间(微秒) +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetTriggerPeriodTime( + CameraHandle hCamera, + UINT* time +); + +/******************************************************/ +// 函数名 : CameraSetTriggerCount +// 功能描述 : 设置触发模式下的触发帧数。对软件触发和硬件触发 +// 模式都有效。默认为1帧,即一次触发信号采集一帧图像。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iCount 一次触发采集的帧数。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetTriggerCount( + CameraHandle hCamera, + INT iCount +); + +/******************************************************/ +// 函数名 : CameraGetTriggerCount +// 功能描述 : 获得一次触发的帧数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// INT* piCount +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetTriggerCount( + CameraHandle hCamera, + INT* piCount +); + +/******************************************************/ +// 函数名 : CameraSoftTrigger +// 功能描述 : 执行一次软触发。执行后,会触发由CameraSetTriggerCount +// 指定的帧数。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSoftTrigger( + CameraHandle hCamera +); + +/******************************************************/ +// 函数名 : CameraSetTriggerMode +// 功能描述 : 设置相机的触发模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iModeSel 模式选择索引号。可设定的模式由 +// CameraGetCapability函数获取。请参考 +// CameraDefine.h中tSdkCameraCapbility的定义。 +// 一般情况,0表示连续采集模式;1表示 +// 软件触发模式;2表示硬件触发模式。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetTriggerMode( + CameraHandle hCamera, + int iModeSel +); + +/******************************************************/ +// 函数名 : CameraGetTriggerMode +// 功能描述 : 获得相机的触发模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piModeSel 指针,返回当前选择的相机触发模式的索引号。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetTriggerMode( + CameraHandle hCamera, + INT* piModeSel +); + +/******************************************************/ +// 函数名 : CameraSetStrobeMode +// 功能描述 : 设置IO引脚端子上的STROBE信号。该信号可以做闪光灯控制,也可以做外部机械快门控制。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iMode 当为STROBE_SYNC_WITH_TRIG_AUTO 和触发信号同步,触发后,相机进行曝光时,自动生成STROBE信号。 +// 此时,有效极性可设置(CameraSetStrobePolarity)。 +// 当为STROBE_SYNC_WITH_TRIG_MANUAL时,和触发信号同步,触发后,STROBE延时指定的时间后(CameraSetStrobeDelayTime), +// 再持续指定时间的脉冲(CameraSetStrobePulseWidth), +// 有效极性可设置(CameraSetStrobePolarity)。 +// 当为STROBE_ALWAYS_HIGH时,STROBE信号恒为高,忽略其他设置 +// 当为STROBE_ALWAYS_LOW时,STROBE信号恒为低,忽略其他设置 +// +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetStrobeMode( + CameraHandle hCamera, + INT iMode +); + +/******************************************************/ +// 函数名 : CameraGetStrobeMode +// 功能描述 : 或者当前STROBE信号设置的模式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piMode 指针,返回STROBE_SYNC_WITH_TRIG_AUTO,STROBE_SYNC_WITH_TRIG_MANUAL、STROBE_ALWAYS_HIGH或者STROBE_ALWAYS_LOW。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetStrobeMode( + CameraHandle hCamera, + INT* piMode +); + +/******************************************************/ +// 函数名 : CameraSetStrobeDelayTime +// 功能描述 : 当STROBE信号处于STROBE_SYNC_WITH_TRIG时,通过该函数设置其相对触发信号延时时间。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// uDelayTimeUs 相对触发信号的延时时间,单位为us。可以为0,但不能为负数。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetStrobeDelayTime( + CameraHandle hCamera, + UINT uDelayTimeUs +); + +/******************************************************/ +// 函数名 : CameraGetStrobeDelayTime +// 功能描述 : 当STROBE信号处于STROBE_SYNC_WITH_TRIG时,通过该函数获得其相对触发信号延时时间。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// upDelayTimeUs 指针,返回延时时间,单位us。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetStrobeDelayTime( + CameraHandle hCamera, + UINT* upDelayTimeUs +); + +/******************************************************/ +// 函数名 : CameraSetStrobePulseWidth +// 功能描述 : 当STROBE信号处于STROBE_SYNC_WITH_TRIG时,通过该函数设置其脉冲宽度。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// uTimeUs 脉冲的宽度,单位为时间us。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetStrobePulseWidth( + CameraHandle hCamera, + UINT uTimeUs +); + +/******************************************************/ +// 函数名 : CameraGetStrobePulseWidth +// 功能描述 : 当STROBE信号处于STROBE_SYNC_WITH_TRIG时,通过该函数获得其脉冲宽度。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// upTimeUs 指针,返回脉冲宽度。单位为时间us。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetStrobePulseWidth( + CameraHandle hCamera, + UINT* upTimeUs +); + +/******************************************************/ +// 函数名 : CameraSetStrobePolarity +// 功能描述 : 当STROBE信号处于STROBE_SYNC_WITH_TRIG时,通过该函数设置其有效电平的极性。默认为高有效,当触发信号到来时,STROBE信号被拉高。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iPolarity STROBE信号的极性,0为低电平有效,1为高电平有效。默认为高电平有效。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetStrobePolarity( + CameraHandle hCamera, + INT uPolarity +); + +/******************************************************/ +// 函数名 : CameraGetStrobePolarity +// 功能描述 : 获得相机当前STROBE信号的有效极性。默认为高电平有效。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// ipPolarity 指针,返回STROBE信号当前的有效极性。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetStrobePolarity( + CameraHandle hCamera, + INT* upPolarity +); + +/******************************************************/ +// 函数名 : CameraSetExtTrigSignalType +// 功能描述 : 设置相机外触发信号的种类。上边沿、下边沿、或者高、低电平方式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iType 外触发信号种类,返回值参考CameraDefine.h中 +// emExtTrigSignal类型定义。 + +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetExtTrigSignalType( + CameraHandle hCamera, + INT iType +); + +/******************************************************/ +// 函数名 : CameraGetExtTrigSignalType +// 功能描述 : 获得相机当前外触发信号的种类。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// ipType 指针,返回外触发信号种类,返回值参考CameraDefine.h中 +// emExtTrigSignal类型定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetExtTrigSignalType( + CameraHandle hCamera, + INT* ipType +); + +/******************************************************/ +// 函数名 : CameraSetExtTrigShutterType +// 功能描述 : 设置外触发模式下,相机快门的方式,默认为标准快门方式。 +// 部分滚动快门的CMOS相机支持GRR方式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iType 外触发快门方式。参考CameraDefine.h中emExtTrigShutterMode类型。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetExtTrigShutterType( + CameraHandle hCamera, + INT iType +); + +/******************************************************/ +// 函数名 : CameraSetExtTrigShutterType +// 功能描述 : 获得外触发模式下,相机快门的方式,默认为标准快门方式。 +// 部分滚动快门的CMOS相机支持GRR方式。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// ipType 指针,返回当前设定的外触发快门方式。返回值参考 +// CameraDefine.h中emExtTrigShutterMode类型。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetExtTrigShutterType( + CameraHandle hCamera, + INT* ipType +); + +/******************************************************/ +// 函数名 : CameraSetExtTrigDelayTime +// 功能描述 : 设置外触发信号延时时间,默认为0,单位为微秒。 +// 当设置的值uDelayTimeUs不为0时,相机接收到外触发信号后,将延时uDelayTimeUs个微秒后再进行图像捕获。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// uDelayTimeUs 延时时间,单位为微秒,默认为0. +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetExtTrigDelayTime( + CameraHandle hCamera, + UINT uDelayTimeUs +); + +/******************************************************/ +// 函数名 : CameraGetExtTrigDelayTime +// 功能描述 : 获得设置的外触发信号延时时间,默认为0,单位为微秒。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// UINT* upDelayTimeUs +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetExtTrigDelayTime( + CameraHandle hCamera, + UINT* upDelayTimeUs +); + +/******************************************************/ +// 函数名 : CameraSetExtTrigBufferedDelayTime +// 功能描述 : 设置外触发信号延时时间,默认为0,单位为微秒。 +// 当设置的值uDelayTimeUs不为0时,相机接收到外触发信号后,将延时uDelayTimeUs个微秒后再进行图像捕获。 +// 并且会把延时期间收到的触发信号缓存起来,被缓存的信号也将延时uDelayTimeUs个微秒后生效(最大缓存个数128)。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// uDelayTimeUs 延时时间,单位为微秒,默认为0. +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetExtTrigBufferedDelayTime( + CameraHandle hCamera, + UINT uDelayTimeUs +); + +/******************************************************/ +// 函数名 : CameraGetExtTrigBufferedDelayTime +// 功能描述 : 获得设置的外触发信号延时时间,默认为0,单位为微秒。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// puDelayTimeUs 延时时间,单位为微秒,默认为0. +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetExtTrigBufferedDelayTime( + CameraHandle hCamera, + UINT* puDelayTimeUs +); + +/// @ingroup API_TRIGGER +/// \~chinese +/// \brief 设置外触发信号间隔时间,默认为0,单位为微秒。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] uTimeUs 间隔时间,单位为微秒,默认为0. +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the interval time of external trigger signal. The default is 0 and the unit is microsecond. +/// \param [in] hCamera Camera handle. +/// \param [in] uTimeUs Interval time in microseconds. Default is 0. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetExtTrigIntervalTime( + CameraHandle hCamera, + UINT uTimeUs +); + +/// @ingroup API_TRIGGER +/// \~chinese +/// \brief 获得设置的外触发信号间隔时间,默认为0,单位为微秒。 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] upTimeUs 触发间隔 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the set external trigger signal interval time, the default is 0, the unit is microseconds. +/// \param [in] hCamera Camera handle. +/// \param [out] upTimeUs trigger interval +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetExtTrigIntervalTime( + CameraHandle hCamera, + UINT* upTimeUs +); + +/******************************************************/ +// 函数名 : CameraSetExtTrigJitterTime +// 功能描述 : 设置相机外触发信号的消抖时间。默认为0,单位为微秒。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// UINT uTimeUs +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetExtTrigJitterTime( + CameraHandle hCamera, + UINT uTimeUs +); + +/******************************************************/ +// 函数名 : CameraGetExtTrigJitterTime +// 功能描述 : 获得设置的相机外触发消抖时间,默认为0.单位为微妙 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// UINT* upTimeUs +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetExtTrigJitterTime( + CameraHandle hCamera, + UINT* upTimeUs +); + +/******************************************************/ +// 函数名 : CameraGetExtTrigCapability +// 功能描述 : 获得相机外触发的属性掩码 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// puCapabilityMask 指针,返回该相机外触发特性掩码,掩码参考CameraDefine.h中 +// EXT_TRIG_MASK_ 开头的宏定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetExtTrigCapability( + CameraHandle hCamera, + UINT* puCapabilityMask +); + +/// @ingroup API_TRIGGER +/// \~chinese +/// \brief 当外触发信号为电平模式时,暂时停止触发相机,直到电平信号跳变后继续触发。 +/// \param [in] hCamera 相机的句柄。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief When the external trigger signal is in level mode, it temporarily stops triggering the camera until the level signal jumps and continues to trigger. +/// \param [in] hCamera Camera handle. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraPauseLevelTrigger( + CameraHandle hCamera +); + +/******************************************************/ +// 函数名 : CameraGetResolutionForSnap +// 功能描述 : 获得抓拍模式下的分辨率选择索引号。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pImageResolution 指针,返回抓拍模式的分辨率。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetResolutionForSnap( + CameraHandle hCamera, + tSdkImageResolution* pImageResolution +); + +/******************************************************/ +// 函数名 : CameraSetResolutionForSnap +// 功能描述 : 设置抓拍模式下相机输出图像的分辨率。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pImageResolution 如果pImageResolution->iWidth +// 和 pImageResolution->iHeight都为0, +// 则表示设定为跟随当前预览分辨率。抓 +// 怕到的图像的分辨率会和当前设定的 +// 预览分辨率一样。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetResolutionForSnap( + CameraHandle hCamera, + tSdkImageResolution* pImageResolution +); + +/******************************************************/ +// 函数名 : CameraCustomizeResolution +// 功能描述 : 打开分辨率自定义面板,并通过可视化的方式 +// 来配置一个自定义分辨率。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pImageCustom 指针,返回自定义的分辨率。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraCustomizeResolution( + CameraHandle hCamera, + tSdkImageResolution* pImageCustom +); + +/******************************************************/ +// 函数名 : CameraCustomizeReferWin +// 功能描述 : 打开参考窗口自定义面板。并通过可视化的方式来 +// 获得一个自定义窗口的位置。一般是用自定义白平衡 +// 和自动曝光的参考窗口。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iWinType 要生成的参考窗口的用途。0,自动曝光参考窗口; +// 1,白平衡参考窗口。 +// hParent 调用该函数的窗口的句柄。可以为NULL。 +// piHOff 指针,返回自定义窗口的左上角横坐标。 +// piVOff 指针,返回自定义窗口的左上角纵坐标。 +// piWidth 指针,返回自定义窗口的宽度。 +// piHeight 指针,返回自定义窗口的高度。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraCustomizeReferWin( + CameraHandle hCamera, + INT iWinType, + HWND hParent, + INT* piHOff, + INT* piVOff, + INT* piWidth, + INT* piHeight +); + +/******************************************************/ +// 函数名 : CameraShowSettingPage +// 功能描述 : 设置相机属性配置窗口显示状态。必须先调用CameraCreateSettingPage +// 成功创建相机属性配置窗口后,才能调用本函数进行 +// 显示。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// bShow TRUE,显示;FALSE,隐藏。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraShowSettingPage( + CameraHandle hCamera, + BOOL bShow +); + +/******************************************************/ +// 函数名 : CameraCreateSettingPage +// 功能描述 : 创建该相机的属性配置窗口。调用该函数,SDK内部会 +// 帮您创建好相机的配置窗口,省去了您重新开发相机 +// 配置界面的时间。强烈建议使用您使用该函数让 +// SDK为您创建好配置窗口。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// hParent 应用程序主窗口的句柄。可以为NULL。 +// pWinText 字符串指针,窗口显示的标题栏。 +// pCallbackFunc 窗口消息的回调函数,当相应的事件发生时, +// pCallbackFunc所指向的函数会被调用, +// 例如切换了参数之类的操作时,pCallbackFunc +// 被回调时,在入口参数处指明了消息类型。 +// 这样可以方便您自己开发的界面和我们生成的UI +// 之间进行同步。该参数可以为NULL。 +// pCallbackCtx 回调函数的附加参数。可以为NULL。pCallbackCtx +// 会在pCallbackFunc被回调时,做为参数之一传入。 +// 您可以使用该参数来做一些灵活的判断。 +// uReserved 预留。必须设置为0。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraCreateSettingPage( + CameraHandle hCamera, + HWND hParent, + char* pWinText, + CAMERA_PAGE_MSG_PROC pCallbackFunc, + PVOID pCallbackCtx, + UINT uReserved +); + +/******************************************************/ +// 函数名 : CameraCreateSettingPageEx +// 功能描述 : 创建该相机的属性配置窗口。调用该函数,SDK内部会 +// 帮您创建好相机的配置窗口,省去了您重新开发相机 +// 配置界面的时间。强烈建议使用您使用该函数让 +// SDK为您创建好配置窗口。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraCreateSettingPageEx( + CameraHandle hCamera +); + + +/******************************************************/ +// 函数名 : CameraSetActiveSettingSubPage +// 功能描述 : 设置相机配置窗口的激活页面。相机配置窗口有多个 +// 子页面构成,该函数可以设定当前哪一个子页面 +// 为激活状态,显示在最前端。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// index 子页面的索引号。参考CameraDefine.h中 +// PROP_SHEET_INDEX的定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetActiveSettingSubPage( + CameraHandle hCamera, + INT index +); + +/******************************************************/ +// 函数名 : CameraSpecialControl +// 功能描述 : 相机一些特殊配置所调用的接口,二次开发时一般不需要 +// 调用。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// dwCtrlCode 控制码。 +// dwParam 控制子码,不同的dwCtrlCode时,意义不同。 +// lpData 附加参数。不同的dwCtrlCode时,意义不同。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSpecialControl( + CameraHandle hCamera, + DWORD dwCtrlCode, + DWORD dwParam, + LPVOID lpData +); + +/******************************************************/ +// 函数名 : CameraGetFrameStatistic +// 功能描述 : 获得相机接收帧率的统计信息,包括错误帧和丢帧的情况。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// psFrameStatistic 指针,返回统计信息。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetFrameStatistic( + CameraHandle hCamera, + tSdkFrameStatistic* psFrameStatistic +); + +/******************************************************/ +// 函数名 : CameraGetStatisticResend +// 功能描述 : 获得相机统计信息之重传数量 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pResendCount 指针,返回重传数量。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetStatisticResend( + CameraHandle hCamera, + UINT* pResendCount +); + +/******************************************************/ +// 函数名 : CameraSetNoiseFilter +// 功能描述 : 设置图像降噪模块的使能状态。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// bEnable TRUE,使能;FALSE,禁止。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetNoiseFilter( + CameraHandle hCamera, + BOOL bEnable +); + +/******************************************************/ +// 函数名 : CameraGetNoiseFilterState +// 功能描述 : 获得图像降噪模块的使能状态。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// *pEnable 指针,返回状态。TRUE,为使能。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetNoiseFilterState( + CameraHandle hCamera, + BOOL* pEnable +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 读取相机此刻的时间戳。 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pTimeStampL32 时间戳低32位。 +/// \param [out] pTimeStampH32 时间戳高32位。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Read the timestamp of the camera at this moment. +/// \param [in] hCamera Camera handle. +/// \param [out] pTimeStampL32 timestamp low 32bit。 +/// \param [out] pTimeStampH32 timestamp high 32bit。 +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetDevTimeStamp( + CameraHandle hCamera, + UINT* pTimeStampL32, + UINT* pTimeStampH32 +); + +/******************************************************/ +// 函数名 : CameraRstTimeStamp +// 功能描述 : 复位图像采集的时间戳,从0开始。 +// 参数 : CameraHandle hCamera +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraRstTimeStamp( + CameraHandle hCamera +); + +/******************************************************/ +// 函数名 : CameraSaveUserData +// 功能描述 : 将用户自定义的数据保存到相机的非易性存储器中。 +// 每个型号的相机可能支持的用户数据区最大长度不一样。 +// 可以从设备的特性描述中获取该长度信息。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// uStartAddr 起始地址,从0开始。 +// pbData 数据缓冲区指针 +// ilen 写入数据的长度,ilen + uStartAddr必须 +// 小于用户区最大长度 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSaveUserData( + CameraHandle hCamera, + UINT uStartAddr, + BYTE *pbData, + int ilen +); + +/******************************************************/ +// 函数名 : CameraLoadUserData +// 功能描述 : 从相机的非易性存储器中读取用户自定义的数据。 +// 每个型号的相机可能支持的用户数据区最大长度不一样。 +// 可以从设备的特性描述中获取该长度信息。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// uStartAddr 起始地址,从0开始。 +// pbData 数据缓冲区指针,返回读到的数据。 +// ilen 读取数据的长度,ilen + uStartAddr必须 +// 小于用户区最大长度 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraLoadUserData( + CameraHandle hCamera, + UINT uStartAddr, + BYTE *pbData, + int ilen +); + +/******************************************************/ +// 函数名 : CameraGetFriendlyName +// 功能描述 : 读取用户自定义的设备昵称。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pName 指针,返回指向0结尾的字符串, +// 设备昵称不超过32个字节,因此该指针 +// 指向的缓冲区必须大于等于32个字节空间。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetFriendlyName( + CameraHandle hCamera, + char* pName +); + +/******************************************************/ +// 函数名 : CameraSetFriendlyName +// 功能描述 : 设置用户自定义的设备昵称。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pName 指针,指向0结尾的字符串, +// 设备昵称不超过32个字节,因此该指针 +// 指向字符串必须小于等于32个字节空间。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetFriendlyName( + CameraHandle hCamera, + char* pName +); + +/******************************************************/ +// 函数名 : CameraSdkGetVersionString +// 功能描述 : +// 参数 : pVersionString 指针,返回SDK版本字符串。 +// 该指针指向的缓冲区大小必须大于 +// 32个字节 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSdkGetVersionString( + char* pVersionString +); + +/******************************************************/ +// 函数名 : CameraCheckFwUpdate +// 功能描述 : 检测固件版本,是否需要升级。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pNeedUpdate 指针,返回固件检测状态,TRUE表示需要更新 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraCheckFwUpdate( + CameraHandle hCamera, + BOOL* pNeedUpdate +); + +/******************************************************/ +// 函数名 : CameraGetFirmwareVision +// 功能描述 : 获得固件版本的字符串 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pVersion 必须指向一个大于32字节的缓冲区, +// 返回固件的版本字符串。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetFirmwareVersion( + CameraHandle hCamera, + char* pVersion +); + +/******************************************************/ +// 函数名 : CameraGetEnumInfo +// 功能描述 : 获得指定设备的枚举信息 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pCameraInfo 指针,返回设备的枚举信息。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetEnumInfo( + CameraHandle hCamera, + tSdkCameraDevInfo* pCameraInfo +); + +/******************************************************/ +// 函数名 : CameraGetInerfaceVersion +// 功能描述 : 获得指定设备接口的版本 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pVersion 指向一个大于32字节的缓冲区,返回接口版本字符串。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetInerfaceVersion( + CameraHandle hCamera, + char* pVersion +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 设置指定IO的电平状态,IO为输出型IO,相机预留可编程输出IO的个数由@link #tSdkCameraCapbility.iOutputIoCounts @endlink决定。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iOutputIOIndex IO的索引号,从0开始。 +/// \param [in] uState 要设定的状态(GE、SUA: 0(高) 1(低)) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \note 已废弃,使用CameraSetIOStateEx,它对所有型号相机的输出状态值统一为1高 0低 +/// \~english +/// \brief Set the level state of the specified IO. IO is the output IO. The number of programmable output IOs for the camera is determined by @link #tSdkCameraCapbility.iOutputIoCounts @endlink. +/// \param [in] hCamera Camera handle. +/// \param [in] iOutputIOIndex IO index, starting from 0. +/// \param [in] uState The state to set(GE、SUA: 0(high) 1(low)) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \note Obsolete, use CameraSetIOStateEx, which has a unified output state value of 1 high and 0 low for all models of cameras +MVSDK_API CameraSdkStatus CameraSetIOState( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT uState +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 设置指定IO的电平状态,IO为输出型IO,相机预留可编程输出IO的个数由@link #tSdkCameraCapbility.iOutputIoCounts @endlink决定。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iOutputIOIndex IO的索引号,从0开始。 +/// \param [in] uState 要设定的状态(1为高,0为低) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the level state of the specified IO. IO is the output IO. The number of programmable output IOs for the camera is determined by @link #tSdkCameraCapbility.iOutputIoCounts @endlink. +/// \param [in] hCamera Camera handle. +/// \param [in] iOutputIOIndex IO index, starting from 0. +/// \param [in] uState The state to set, 1 is high, 0 is low +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetIOStateEx( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT uState +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 读取指定IO的电平状态,IO为输出型IO,相机预留可编程输出IO的个数由@link #tSdkCameraCapbility.iOutputIoCounts @endlink决定。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iOutputIOIndex IO的索引号,从0开始。 +/// \param [out] puState 返回IO状态(GE、SUA: 0(高) 1(低)) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \note 已废弃,使用CameraGetOutPutIOStateEx,它对所有型号相机的输出状态值统一为1高 0低 +/// \~english +/// \brief Read the level state of the specified IO. IO is the output IO. The number of programmable output IOs for the camera is determined by @link #tSdkCameraCapbility.iOutputIoCounts @endlink. +/// \param [in] hCamera Camera handle. +/// \param [in] iOutputIOIndex IO index, starting from 0. +/// \param [out] puState return IO state(GE、SUA: 0(high) 1(low)) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \note Obsolete, use CameraGetOutPutIOStateEx, which has a unified output state value of 1 high and 0 low for all models of cameras +MVSDK_API CameraSdkStatus CameraGetOutPutIOState( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT* puState +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 读取指定IO的电平状态,IO为输出型IO,相机预留可编程输出IO的个数由@link #tSdkCameraCapbility.iOutputIoCounts @endlink决定。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iOutputIOIndex IO的索引号,从0开始。 +/// \param [out] puState 返回IO状态,1为高,0为低 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Read the level state of the specified IO. IO is the output IO. The number of programmable output IOs for the camera is determined by @link #tSdkCameraCapbility.iOutputIoCounts @endlink. +/// \param [in] hCamera Camera handle. +/// \param [in] iOutputIOIndex IO index, starting from 0. +/// \param [out] puState return IO state, 1 is high, 0 is low +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetOutPutIOStateEx( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT* puState +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 读取指定IO的电平状态,IO为输入型IO,相机预留可编程输出IO的个数由@link #tSdkCameraCapbility.iInputIoCounts @endlink决定。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iInputIOIndex IO的索引号,从0开始。 +/// \param [out] puState 指针,返回IO状态(GE、SUA: 0(高) 1(低)) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \note 已废弃,使用CameraGetIOStateEx,它对所有型号相机的输入状态值统一为1高 0低 +/// \~english +/// \brief Read the level state of the specified IO, IO is input type IO, the number of programmable output IOs that the camera reserves is decided by @link #tSdkCameraCapbility.iInputIoCounts @endlink. +/// \param [in] hCamera Camera handle. +/// \param [in] iInputIOIndex IO index, starting from 0. +/// \param [out] puState returns IO state(GE、SUA: 0(high) 1(low)) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \note Obsolete, use CameraGetIOStateEx, which has a unified input state value of 1 high and 0 low for all models of cameras +MVSDK_API CameraSdkStatus CameraGetIOState( + CameraHandle hCamera, + INT iInputIOIndex, + UINT* puState +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 读取指定IO的电平状态,IO为输入型IO,相机预留可编程输出IO的个数由@link #tSdkCameraCapbility.iInputIoCounts @endlink决定。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iInputIOIndex IO的索引号,从0开始。 +/// \param [out] puState 指针,返回IO状态,1为高,0为低 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Read the level state of the specified IO, IO is input type IO, the number of programmable output IOs that the camera reserves is decided by @link #tSdkCameraCapbility.iInputIoCounts @endlink. +/// \param [in] hCamera Camera handle. +/// \param [in] iInputIOIndex IO index, starting from 0. +/// \param [out] puState returns IO state, 1 is high, 0 is low +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetIOStateEx( + CameraHandle hCamera, + INT iInputIOIndex, + UINT* puState +); + +/******************************************************/ +// 函数名 : CameraSetInPutIOMode +// 功能描述 : 设置输入IO的模式,相机 +// 预留可编程输出IO的个数由tSdkCameraCapbility中 +// iInputIoCounts决定。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iInputIOIndex IO的索引号,从0开始。 +// iMode IO模式,参考CameraDefine.h中emCameraGPIOMode +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetInPutIOMode( + CameraHandle hCamera, + INT iInputIOIndex, + INT iMode +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取输入IO的模式 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iInputIOIndex IO的索引号,从0开始。 +/// \param [out] piMode IO模式,参考@link #emCameraGPIOMode @endlink +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the input IO mode +/// \param [in] hCamera Camera handle. +/// \param [in] iInputIOIndex IO index, starting from 0. +/// \param [out] piMode IO mode, reference @link #emCameraGPIOMode @endlink +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetInPutIOMode( + CameraHandle hCamera, + INT iInputIOIndex, + INT* piMode +); + +/******************************************************/ +// 函数名 : CameraSetOutPutIOMode +// 功能描述 : 设置输出IO的模式,相机 +// 预留可编程输出IO的个数由tSdkCameraCapbility中 +// iOutputIoCounts决定。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iOutputIOIndex IO的索引号,从0开始。 +// iMode IO模式,参考CameraDefine.h中emCameraGPIOMode +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetOutPutIOMode( + CameraHandle hCamera, + INT iOutputIOIndex, + INT iMode +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取输出IO的模式 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iOutputIOIndex IO的索引号,从0开始。 +/// \param [out] piMode IO模式,参考@link #emCameraGPIOMode @endlink +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the output IO mode +/// \param [in] hCamera Camera handle. +/// \param [in] iOutputIOIndex IO index, starting from 0. +/// \param [out] piMode IO mode, reference @link #emCameraGPIOMode @endlink +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetOutPutIOMode( + CameraHandle hCamera, + INT iOutputIOIndex, + INT* piMode +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取输入IO的模式支持能力 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iInputIOIndex IO的索引号,从0开始。 +/// \param [out] piCapbility IO模式支持位掩码 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the mode support capability of the input IO +/// \param [in] hCamera Camera handle. +/// \param [in] iInputIOIndex IO index, starting from 0. +/// \param [out] piCapbility IO mode support bit mask +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetInPutIOModeCapbility( + CameraHandle hCamera, + INT iInputIOIndex, + UINT* piCapbility +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取输出IO的模式支持能力 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iOutputIOIndex IO的索引号,从0开始。 +/// \param [out] piCapbility IO模式支持位掩码 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the mode support capability of the output IO +/// \param [in] hCamera Camera handle. +/// \param [in] iOutputIOIndex IO index, starting from 0. +/// \param [out] piCapbility IO mode support bit mask +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetOutPutIOModeCapbility( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT* piCapbility +); + +/******************************************************/ +// 函数名 : CameraSetOutPutPWM +// 功能描述 : 设置PWM型输出的参数,相机 +// 预留可编程输出IO的个数由tSdkCameraCapbility中 +// iOutputIoCounts决定。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iOutputIOIndex IO的索引号,从0开始。 +// iCycle PWM的周期,单位(us) +// uDuty 占用比,取值1%~99% +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetOutPutPWM( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT iCycle, + UINT uDuty +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 设置编码器有效方向 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] dir 有效方向(0:正反转都有效 1:顺时针(A相超前于B) 2:逆时针) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the effective direction of the rotary encoder +/// \param [in] hCamera Camera handle. +/// \param [in] dir Valid direction (0: Both positive and negative are valid 1: Clockwise (A phase leads B) 2: Counterclockwise) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetRotaryEncDir( + CameraHandle hCamera, + INT dir +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取编码器有效方向 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] dir 有效方向(0:正反转都有效 1:顺时针(A相超前于B) 2:逆时针) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the effective direction of the rotary encoder +/// \param [in] hCamera Camera handle. +/// \param [out] dir Valid direction (0: Both positive and negative are valid 1: Clockwise (A phase leads B) 2: Counterclockwise) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetRotaryEncDir( + CameraHandle hCamera, + INT* dir +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 设置编码器频率 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] mul 倍频 +/// \param [in] div 分频 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the frequency of the rotary encoder +/// \param [in] hCamera Camera handle. +/// \param [in] mul frequency multiplier +/// \param [in] div frequency division +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetRotaryEncFreq( + CameraHandle hCamera, + INT mul, + INT div +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取编码器频率 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] mul 倍频 +/// \param [out] div 分频 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the frequency of the rotary encoder +/// \param [in] hCamera Camera handle. +/// \param [out] mul frequency multiplier +/// \param [out] div frequency division +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetRotaryEncFreq( + CameraHandle hCamera, + INT* mul, + INT* div +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 设置输入IO的格式 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iInputIOIndex IO的索引号,从0开始。 +/// \param [in] iFormat IO格式,参考@link #emCameraGPIOFormat @endlink +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the input IO format +/// \param [in] hCamera Camera handle. +/// \param [in] iInputIOIndex IO index, starting from 0. +/// \param [in] iFormat IO format, reference @link #emCameraGPIOFormat @endlink +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetInPutIOFormat( + CameraHandle hCamera, + INT iInputIOIndex, + INT iFormat +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取输入IO的格式 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iInputIOIndex IO的索引号,从0开始。 +/// \param [out] piFormat IO格式,参考@link #emCameraGPIOFormat @endlink +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the input IO format +/// \param [in] hCamera Camera handle. +/// \param [in] iInputIOIndex IO index, starting from 0. +/// \param [out] piFormat IO format, reference @link #emCameraGPIOFormat @endlink +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetInPutIOFormat( + CameraHandle hCamera, + INT iInputIOIndex, + INT* piFormat +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 设置输出IO的格式 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iOutputIOIndex IO的索引号,从0开始。 +/// \param [in] iFormat IO格式,参考@link #emCameraGPIOFormat @endlink +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the output IO format +/// \param [in] hCamera Camera handle. +/// \param [in] iOutputIOIndex IO index, starting from 0. +/// \param [in] iFormat IO format, reference @link #emCameraGPIOFormat @endlink +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetOutPutIOFormat( + CameraHandle hCamera, + INT iOutputIOIndex, + INT iFormat +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取输出IO的格式 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iOutputIOIndex IO的索引号,从0开始。 +/// \param [out] piFormat IO格式,参考@link #emCameraGPIOFormat @endlink +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the output IO format +/// \param [in] hCamera Camera handle. +/// \param [in] iOutputIOIndex IO index, starting from 0. +/// \param [out] piFormat IO format, reference @link #emCameraGPIOFormat @endlink +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetOutPutIOFormat( + CameraHandle hCamera, + INT iOutputIOIndex, + INT* piFormat +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取输入IO的格式支持能力 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iInputIOIndex IO的索引号,从0开始。 +/// \param [out] piCapbility IO格式支持位掩码 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the format support capability of the input IO +/// \param [in] hCamera Camera handle. +/// \param [in] iInputIOIndex IO index, starting from 0. +/// \param [out] piCapbility IO format support bit mask +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetInPutIOFormatCapbility( + CameraHandle hCamera, + INT iInputIOIndex, + UINT* piCapbility +); + +/// @ingroup API_GPIO +/// \~chinese +/// \brief 获取输出IO的格式支持能力 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iOutputIOIndex IO的索引号,从0开始。 +/// \param [out] piCapbility IO格式支持位掩码 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the format support capability of the output IO +/// \param [in] hCamera Camera handle. +/// \param [in] iOutputIOIndex IO index, starting from 0. +/// \param [out] piCapbility IO format support bit mask +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetOutPutIOFormatCapbility( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT* piCapbility +); + +/******************************************************/ +// 函数名 : CameraSetOutPutDelayTime +// 功能描述 : 设置输出延时,相机 +// 预留可编程输出IO的个数由tSdkCameraCapbility中 +// iOutputIoCounts决定。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iOutputIOIndex IO的索引号,从0开始。 +// uDelayTimeUs 延时,单位(us) +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetOutPutDelayTime( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT uDelayTimeUs +); + +/******************************************************/ +// 函数名 : CameraSetOutPutPulseWidth +// 功能描述 : 设置输出脉宽,相机 +// 预留可编程输出IO的个数由tSdkCameraCapbility中 +// iOutputIoCounts决定。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iOutputIOIndex IO的索引号,从0开始。 +// uTimeUs 脉宽,单位(us) +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetOutPutPulseWidth( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT uTimeUs +); + +/******************************************************/ +// 函数名 : CameraSetOutPutPolarity +// 功能描述 : 设置输出极性,相机 +// 预留可编程输出IO的个数由tSdkCameraCapbility中 +// iOutputIoCounts决定。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iOutputIOIndex IO的索引号,从0开始。 +// uPolarity 0:正向 1:反向 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetOutPutPolarity( + CameraHandle hCamera, + INT iOutputIOIndex, + UINT uPolarity +); + +/******************************************************/ +// 函数名 : CameraSetAeAlgorithm +// 功能描述 : 设置自动曝光时选择的算法,不同的算法适用于 +// 不同的场景。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iIspProcessor 选择执行该算法的对象,参考CameraDefine.h +// emSdkIspProcessor的定义 +// iAeAlgorithmSel 要选择的算法编号。从0开始,最大值由tSdkCameraCapbility +// 中iAeAlmSwDesc和iAeAlmHdDesc决定。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetAeAlgorithm( + CameraHandle hCamera, + INT iIspProcessor, + INT iAeAlgorithmSel +); + +/******************************************************/ +// 函数名 : CameraGetAeAlgorithm +// 功能描述 : 获得当前自动曝光所选择的算法 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iIspProcessor 选择执行该算法的对象,参考CameraDefine.h +// emSdkIspProcessor的定义 +// piAeAlgorithmSel 返回当前选择的算法编号。从0开始,最大值由tSdkCameraCapbility +// 中iAeAlmSwDesc和iAeAlmHdDesc决定。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetAeAlgorithm( + CameraHandle hCamera, + INT iIspProcessor, + INT* piAlgorithmSel +); + +/******************************************************/ +// 函数名 : CameraSetBayerDecAlgorithm +// 功能描述 : 设置Bayer数据转彩色的算法。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iIspProcessor 选择执行该算法的对象,参考CameraDefine.h +// emSdkIspProcessor的定义 +// iAlgorithmSel 要选择的算法编号。从0开始,最大值由tSdkCameraCapbility +// 中iBayerDecAlmSwDesc和iBayerDecAlmHdDesc决定。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetBayerDecAlgorithm( + CameraHandle hCamera, + INT iIspProcessor, + INT iAlgorithmSel +); + +/******************************************************/ +// 函数名 : CameraGetBayerDecAlgorithm +// 功能描述 : 获得Bayer数据转彩色所选择的算法。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iIspProcessor 选择执行该算法的对象,参考CameraDefine.h +// emSdkIspProcessor的定义 +// piAlgorithmSel 返回当前选择的算法编号。从0开始,最大值由tSdkCameraCapbility +// 中iBayerDecAlmSwDesc和iBayerDecAlmHdDesc决定。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetBayerDecAlgorithm( + CameraHandle hCamera, + INT iIspProcessor, + INT* piAlgorithmSel +); + +/******************************************************/ +// 函数名 : CameraSetIspProcessor +// 功能描述 : 设置图像处理单元的算法执行对象,由PC端或者相机端 +// 来执行算法,当由相机端执行时,会降低PC端的CPU占用率。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iIspProcessor 参考CameraDefine.h中 +// emSdkIspProcessor的定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetIspProcessor( + CameraHandle hCamera, + INT iIspProcessor +); + +/******************************************************/ +// 函数名 : CameraGetIspProcessor +// 功能描述 : 获得图像处理单元的算法执行对象。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piIspProcessor 返回选择的对象,返回值参考CameraDefine.h中 +// emSdkIspProcessor的定义。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetIspProcessor( + CameraHandle hCamera, + INT* piIspProcessor +); + +/******************************************************/ +// 函数名 : CameraSetBlackLevel +// 功能描述 : 设置图像的黑电平基准,默认值为0 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iBlackLevel 要设定的电平值。范围为0到255。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetBlackLevel( + CameraHandle hCamera, + INT iBlackLevel +); + +/******************************************************/ +// 函数名 : CameraGetBlackLevel +// 功能描述 : 获得图像的黑电平基准,默认值为0 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piBlackLevel 返回当前的黑电平值。范围为0到255。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetBlackLevel( + CameraHandle hCamera, + INT* piBlackLevel +); + +/******************************************************/ +// 函数名 : CameraSetWhiteLevel +// 功能描述 : 设置图像的白电平基准,默认值为255 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// iWhiteLevel 要设定的电平值。范围为0到255。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetWhiteLevel( + CameraHandle hCamera, + INT iWhiteLevel +); + +/******************************************************/ +// 函数名 : CameraGetWhiteLevel +// 功能描述 : 获得图像的白电平基准,默认值为255 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// piWhiteLevel 返回当前的白电平值。范围为0到255。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetWhiteLevel( + CameraHandle hCamera, + INT* piWhiteLevel +); + +/******************************************************/ +// 函数名 : CameraSetIspOutFormat +// 功能描述 : 设置CameraGetImageBuffer函数的图像处理的输出格式,支持 +// CAMERA_MEDIA_TYPE_MONO8和CAMERA_MEDIA_TYPE_RGB8 +// (在CameraDefine.h中定义)三种,分别对应8位灰度图像和24位彩色图像。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// uFormat 要设定格式。CAMERA_MEDIA_TYPE_MONO8或者CAMERA_MEDIA_TYPE_RGB8 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraSetIspOutFormat( + CameraHandle hCamera, + UINT uFormat +); + +/******************************************************/ +// 函数名 : CameraGetIspOutFormat +// 功能描述 : 获得图像处理的输出格式,目前只支持 +// CAMERA_MEDIA_TYPE_MONO8和CAMERA_MEDIA_TYPE_RGB8 +// (在CameraDefine.h中定义)两种,其他的参数会返回错误。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// puFormat 返回当前设定的格式。CAMERA_MEDIA_TYPE_MONO8或者CAMERA_MEDIA_TYPE_RGB8 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetIspOutFormat( + CameraHandle hCamera, + UINT* puFormat +); + +/******************************************************/ +// 函数名 : CameraGetErrorString +// 功能描述 : 获得错误码对应的描述字符串 +// 参数 : iStatusCode 错误码。(定义于CameraStatus.h中) +// 返回值 : 成功时,返回错误码对应的字符串首地址; +// 否则返回NULL。 +/******************************************************/ +MVSDK_API char* CameraGetErrorString( + CameraSdkStatus iStatusCode +); + + +/******************************************************/ +// 函数名 : CameraReConnect +// 功能描述 : 重新连接设备,用于USB设备意外掉线后重连 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraReConnect( + CameraHandle hCamera +); + + +/******************************************************/ +// 函数名 : CameraConnectTest +// 功能描述 : 测试相机的连接状态,用于检测相机是否掉线 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0),表示相机连接状态正常; +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraConnectTest( + CameraHandle hCamera +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置相机的LED使能状态,不带LED的型号,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index LED灯的索引号,从0开始。如果只有一个可控制亮度的LED,则该参数为0 。 +/// \param [in] enable 使能状态 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the camera's LED enable status, without the LED's model, this function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index of the LED, starting from 0. If there is only one LED that can control the brightness, this parameter is 0. +/// \param [in] enable enable state +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetLedEnable( + CameraHandle hCamera, + int index, + BOOL enable +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获得相机的LED使能状态,不带LED的型号,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index LED灯的索引号,从0开始。如果只有一个可控制亮度的LED,则该参数为0 。 +/// \param [out] enable 指针,返回LED使能状态 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the camera's LED enable status, without the LED's model, this function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index of the LED, starting from 0. If there is only one LED that can control the brightness, this parameter is 0. +/// \param [out] enable Return LED enable status +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetLedEnable( + CameraHandle hCamera, + int index, + BOOL* enable +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置相机的LED开关状态,不带LED的型号,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index LED灯的索引号,从0开始。如果只有一个可控制亮度的LED,则该参数为0 。 +/// \param [in] onoff LED开关状态 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the camera's LED switch status, without the LED's model, this function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index of the LED, starting from 0. If there is only one LED that can control the brightness, this parameter is 0. +/// \param [in] onoff LED on/off status +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetLedOnOff( + CameraHandle hCamera, + int index, + BOOL onoff +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获得相机的LED开关状态,不带LED的型号,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index LED灯的索引号,从0开始。如果只有一个可控制亮度的LED,则该参数为0 。 +/// \param [out] onoff 返回LED开关状态 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the camera's LED switch status, without the LED model, this function returns an error code that does not support. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index of the LED, starting from 0. If there is only one LED that can control the brightness, this parameter is 0. +/// \param [out] onoff Returns LED switch status +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetLedOnOff( + CameraHandle hCamera, + int index, + BOOL* onoff +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置相机的LED持续时间,不带LED的型号,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index LED灯的索引号,从0开始。如果只有一个可控制亮度的LED,则该参数为0 。 +/// \param [in] duration LED持续时间,单位毫秒 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the camera's LED duration, without the LED model, this function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index of the LED, starting from 0. If there is only one LED that can control the brightness, this parameter is 0. +/// \param [in] duration LED duration in milliseconds +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetLedDuration( + CameraHandle hCamera, + int index, + UINT duration +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获得相机的LED持续时间,不带LED的型号,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index LED灯的索引号,从0开始。如果只有一个可控制亮度的LED,则该参数为0 。 +/// \param [out] duration 返回LED持续时间,单位毫秒 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the camera's LED duration, without the LED model, this function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index of the LED, starting from 0. If there is only one LED that can control the brightness, this parameter is 0. +/// \param [out] duration Returns the LED duration in milliseconds +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetLedDuration( + CameraHandle hCamera, + int index, + UINT* duration +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置相机的LED亮度,不带LED的型号,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index LED灯的索引号,从0开始。如果只有一个可控制亮度的LED,则该参数为0 。 +/// \param [in] uBrightness LED亮度值,范围0到255. 0表示关闭,255最亮。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the camera's LED brightness, without the LED model, this function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index of the LED, starting from 0. If there is only one LED that can control the brightness, this parameter is 0. +/// \param [in] uBrightness LED brightness value, range 0 to 255. 0 means off, 255 brightest. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetLedBrightness( + CameraHandle hCamera, + int index, + UINT uBrightness +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获得相机的LED亮度,不带LED的型号,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index LED灯的索引号,从0开始。如果只有一个可控制亮度的LED,则该参数为0 。 +/// \param [out] uBrightness 指针,返回LED亮度值,范围0到255. 0表示关闭,255最亮。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the camera's LED brightness, without the LED model, this function returns an error code that does not support. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index of the LED, starting from 0. If there is only one LED that can control the brightness, this parameter is 0. +/// \param [out] uBrightness Returns the LED brightness value in the range 0 to 255. 0 means off, 255 is the brightest. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetLedBrightness( + CameraHandle hCamera, + int index, + UINT* uBrightness +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 使能或者禁止相机的多区域传输功能,不带该功能的型号,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] uEnableMask 区域使能状态掩码,对应的比特位为1表示使能。0为禁止。目前SDK支持4个可编辑区域,index范围为0到3,即bit0 ,bit1,bit2,bit3控制4个区域的使能状态。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \note 该功能主要用于在相机端将采集的整幅画面切分,只传输指定的多个区域,以提高传输帧率。多个区域传输到PC上后,会自动拼接成整幅画面,没有被传输的部分,会用黑色填充。 +/// \~english +/// \brief Enables or disables the camera's multi-zone transfer function. For models without this function, this function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [in] uEnableMask Area enable mask. The corresponding bit is 1 to enable. 0 is prohibited. Currently, the SDK supports four editable regions. The index range is 0 to 3, that is, bit0, bit1, bit2, and bit3 control the enabling status of the four regions. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \note This function is mainly used to split the entire picture collected on the camera side and only transmit specified multiple areas to increase the transmission frame rate. After multiple areas are transferred to the PC, they will be automatically spliced into an entire frame. Parts that have not been transmitted will be filled with black. +MVSDK_API CameraSdkStatus CameraEnableTransferRoi( + CameraHandle hCamera, + UINT uEnableMask +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获取相机的多区域传输使能状态 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] puEnableMask 返回区域使能状态掩码,对应的比特位为1表示使能。0为禁止。目前SDK支持4个可编辑区域,index范围为0到3,即bit0 ,bit1,bit2,bit3控制4个区域的使能状态。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the multi-region transmission enable status of the camera +/// \param [in] hCamera Camera handle. +/// \param [out] puEnableMask Get area enable mask. The corresponding bit is 1 to enable. 0 is prohibited. Currently, the SDK supports four editable regions. The index range is 0 to 3, that is, bit0, bit1, bit2, and bit3 control the enabling status of the four regions. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetTransferRoiEnable( + CameraHandle hCamera, + UINT* puEnableMask +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置相机传输的裁剪区域。在相机端,图像从传感器上被采集后,将会被裁剪成指定的区域来传送,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index ROI区域的索引号,从0开始。 +/// \param [in] X1 ROI区域的左上角X坐标 +/// \param [in] Y1 ROI区域的左上角Y坐标 +/// \param [in] X2 ROI区域的右下角X坐标 +/// \param [in] Y2 ROI区域的右下角Y坐标 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Sets the clipping area for camera transmission. On the camera side, after the image is captured from the sensor, it will be cropped to the specified area for transmission. This function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index number of the ROI region, starting at 0. +/// \param [in] X1 The X coordinate of the upper left corner of ROI area +/// \param [in] Y1 The Y coordinate of the upper left corner of ROI area +/// \param [in] X2 The X coordinate of the lower right corner of ROI area +/// \param [in] Y2 The Y coordinate of the lower right corner of ROI area +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetTransferRoi( + CameraHandle hCamera, + int index, + UINT X1, + UINT Y1, + UINT X2, + UINT Y2 +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获取相机传输的裁剪区域。在相机端,图像从传感器上被采集后,将会被裁剪成指定的区域来传送,此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index ROI区域的索引号,从0开始。 +/// \param [out] pX1 ROI区域的左上角X坐标 +/// \param [out] pY1 ROI区域的左上角Y坐标 +/// \param [out] pX2 ROI区域的右下角X坐标 +/// \param [out] pY2 ROI区域的右下角Y坐标 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the cropped area of the camera transmission. On the camera side, after the image is captured from the sensor, it will be cropped to the specified area for transmission. This function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [in] index The index number of the ROI region, starting at 0. +/// \param [out] pX1 Returns the X coordinate of the upper left corner of the ROI area +/// \param [out] pY1 Returns the Y coordinate of the upper left corner of the ROI area +/// \param [out] pX2 Returns the X coordinate of the lower right corner of the ROI area +/// \param [out] pY2 Returns the Y coordinate of the lower right corner of the ROI area +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetTransferRoi( + CameraHandle hCamera, + int index, + UINT* pX1, + UINT* pY1, + UINT* pX2, + UINT* pY2 +); + +// 申请一段对齐的内存空间。功能和malloc类似,但是返回的内存是以align指定的字节数对齐的 +MVSDK_API BYTE* CameraAlignMalloc(int size, int align); + +//释放由CameraAlignMalloc 函数分配的内存空间。 +MVSDK_API void CameraAlignFree(BYTE* membuffer); + +/******************************************************/ +// 函数名 : CameraCommonCall +// 功能描述 : 相机的一些特殊功能调用,二次开发时一般不需要调用。 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// pszCall 功能及参数 +// pszResult 调用结果,不同的pszCall时,意义不同。 +// uResultBufSize pszResult指向的缓冲区的字节大小 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraCommonCall( + CameraHandle hCamera, + char const* pszCall, + char* pszResult, + UINT uResultBufSize +); + +/******************************************************/ +// 函数名 : CameraGetEyeCount +// 功能描述 : 获取多目相机的目数 +// 参数 : hCamera 相机的句柄,由CameraInit函数获得。 +// 返回值 : 成功时,返回CAMERA_STATUS_SUCCESS (0); +// 否则返回非0值的错误码,请参考CameraStatus.h +// 中错误码的定义。 +/******************************************************/ +MVSDK_API CameraSdkStatus CameraGetEyeCount( + CameraHandle hCamera, + int *eyecount +); + +/// @ingroup API_MULTI_EYE +/// \~chinese +/// \brief 对多目相机帧内的某个单目图做ISP +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iEyeIndex 单目索引。 +/// \param [in] pbyIn 输入图像数据的缓冲区地址,不能为NULL。 +/// \param [in] pInFrInfo 输入图像数据的帧头,不能为NULL。 +/// \param [out] pbyOut 处理后图像输出的缓冲区地址,不能为NULL。 +/// \param [out] pOutFrInfo 处理后图像的帧头信息,不能为NULL。 +/// \param [in] uOutFormat 处理完后图像的输出格式。 +/// \param [in] uReserved 预留参数,必须设置为0。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Do ISP for a certain monocular in the multi-camera frame. +/// \param [in] hCamera Camera handle. +/// \param [in] iEyeIndex eye index. +/// \param [in] pbyIn Input the buffer address of the image data, which cannot be NULL. +/// \param [in] pInFrInfo Input the frame header of the image data, which cannot be NULL. +/// \param [out] pbyOut The buffer address of the image output after processing, cannot be NULL. +/// \param [out] pOutFrInfo The header information of the processed image cannot be NULL. +/// \param [in] uOutFormat The output format of the image after processing. +/// \param [in] uReserved Reservation parameters must be set to 0. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraMultiEyeImageProcess( + CameraHandle hCamera, + int iEyeIndex, + BYTE* pbyIn, + tSdkFrameHead* pInFrInfo, + BYTE* pbyOut, + tSdkFrameHead* pOutFrInfo, + UINT uOutFormat, + UINT uReserved +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置光源控制器的输出模式(智能相机系列且需要硬件支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index 控制器索引 +/// \param [in] mode 输出模式(0:跟随闪光灯 1:手动) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the output mode of the light controller (Smart camera series and hardware support required) +/// \param [in] hCamera Camera handle. +/// \param [in] index controller index +/// \param [in] mode output mode (0: follow strobe 1: manual) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetLightingControllerMode( + CameraHandle hCamera, + int index, + int mode +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置光源控制器的输出状态(智能相机系列且需要硬件支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] index 控制器索引 +/// \param [in] state 输出状态(0:关闭 1:打开) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the output status of the light controller (Smart camera series and hardware support required) +/// \param [in] hCamera Camera handle. +/// \param [in] index controller index +/// \param [in] state output state (0: off 1: on) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetLightingControllerState( + CameraHandle hCamera, + int index, + int state +); + +/// @ingroup API_UTIL +/// \~chinese +/// \brief 翻转帧数据 +/// \param [inout] pFrameBuffer 帧数据 +/// \param [in] pFrameHead 帧头 +/// \param [in] Flags 1:上下 2:左右 3:上下、左右皆做一次翻转(相当于旋转180度) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Flip frame data +/// \param [inout] pFrameBuffer frame data +/// \param [in] pFrameHead Frame Header +/// \param [in] Flags 1: Up and down 2: Around 3: Up and down, left and right are all flipped (equivalent to 180 degrees rotation) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlipFrameBuffer( + BYTE *pFrameBuffer, + tSdkFrameHead* pFrameHead, + int Flags +); + +/// @ingroup API_UTIL +/// \~chinese +/// \brief 转换帧数据格式 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pInFrameBuffer 输入帧数据 +/// \param [out] pOutFrameBuffer 输出帧数据 +/// \param [in] outWidth 输出宽度 +/// \param [in] outHeight 输出高度 +/// \param [in] outMediaType 输出格式 @see CameraSetIspOutFormat +/// \param [inout] pFrameHead 帧头信息(转换成功后,里面的信息会被修改为输出帧的信息) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Conversion frame data format +/// \param [in] hCamera Camera handle. +/// \param [in] pInFrameBuffer input frame data +/// \param [out] pOutFrameBuffer output frame data +/// \param [in] outWidth output width +/// \param [in] outHeight output height +/// \param [in] outMediaType output format @see CameraSetIspOutFormat +/// \param [inout] pFrameHead frame header information (after successful conversion, the information inside will be modified to output frame information) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraConvertFrameBufferFormat( + CameraHandle hCamera, + BYTE *pInFrameBuffer, + BYTE *pOutFrameBuffer, + int outWidth, + int outHeight, + UINT outMediaType, + tSdkFrameHead* pFrameHead +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获取当前帧的ID,需相机支持(网口全系列支持),此函数返回错误代码,表示不支持。 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] id 帧ID +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief The ID of the current frame needs to be supported by the camera (supported by the full range of network ports). This function returns an error code indicating that it is not supported. +/// \param [in] hCamera Camera handle. +/// \param [out] id Frame ID +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetFrameID( + CameraHandle hCamera, + UINT* id +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获取当前帧的时间戳(单位微秒) +/// \param [in] hCamera 相机的句柄。 +/// \param [out] TimeStampL 时间戳低32位 +/// \param [out] TimeStampH 时间戳高32位 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the timestamp of the current frame (in microseconds) +/// \param [in] hCamera Camera handle. +/// \param [out] TimeStampL timestamp low 32 bits +/// \param [out] TimeStampH Timestamp high 32 bits +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetFrameTimeStamp( + CameraHandle hCamera, + UINT* TimeStampL, + UINT* TimeStampH +); + +/// @ingroup API_RECONNECT +/// \~chinese +/// \brief 设置相机连接状态改变的回调通知函数。当相机掉线、重连时,pCallBack所指向的回调函数就会被调用。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pCallBack 回调函数指针。 +/// \param [in] pContext 回调函数的附加参数,在回调函数被调用时该附加参数会被传入,可以为NULL。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Sets the callback notification function for camera connection state changes. When the camera is disconnected and reconnected, the callback function pointed to by pCallBack will be called. +/// \param [in] hCamera Camera handle. +/// \param [in] pCallBack callback function pointer. +/// \param [in] pContext Additional parameter of the callback function. This additional parameter will be passed in when the callback function is called. It can be NULL. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetConnectionStatusCallback( + CameraHandle hCamera, + CAMERA_CONNECTION_STATUS_CALLBACK pCallBack, + PVOID pContext +); + +/// @ingroup API_ENUM +/// \~chinese +/// \brief 从指定IP枚举GIGE设备,并建立设备列表(适用于相机和电脑不在同一网段的情况) +/// \param [in] ppIpList 目标IP +/// \param [in] numIp 目标IP个数 +/// \param [out] pCameraList 设备列表数组指针 +/// \param [inout] piNums 设备的个数指针,调用时传入pCameraList数组的元素个数,函数返回时,保存实际找到的设备个数 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义 +/// \warning piNums指向的值必须初始化,且不超过pCameraList数组元素个数,否则有可能造成内存溢出 +/// \note 返回的相机信息列表,会根据acFriendlyName排序的。例如可以将两个相机分别改为“Camera1”和“Camera2”的名字后,名字为“Camera1”的相机会排前面,名为“Camera2”的相机排后面。 +/// \~english +/// \brief Enumerates GIGE devices from the specified IP and builds a device list (applicable when the camera and computer are not on the same network segment) +/// \param [in] ppIpList target IP +/// \param [in] numIp number of target IPs +/// \param [out] pCameraList Device list array pointer +/// \param [inout] piNums The number of pointers to the device, the number of elements passed to the pCameraList array at the time of the call. When the function returns, the number of devices actually found is saved. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \warning piNums The value pointed to must be initialized and does not exceed the number of pCameraList array elements, otherwise it may cause memory overflow +/// \note The list of returned camera information will be sorted according to acFriendlyName. For example, after changing the two cameras to the names of "Camera1" and "Camera2," the camera named "Camera1" will be in front, and the camera named "Camera2" will be behind the row. +MVSDK_API CameraSdkStatus CameraGigeEnumerateDevice( + char const** ppIpList, + int numIp, + tSdkCameraDevInfo* pCameraList, + INT* piNums +); + +/// @ingroup API_UTIL +/// \~chinese +/// \brief 配置网口相机的一些功能选项 +/// \param [in] optionName 选项("NumBuffers", "3") +/// \param [in] value 值 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Configure some options for the gige camera +/// \param [in] optionName option name("NumBuffers", "3") +/// \param [in] value setting value +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGigeSetOption( + char const* optionName, + char const* value +); + +/// @ingroup API_UTIL +/// \~chinese +/// \brief 获取GIGE相机的IP地址 +/// \param [in] pCameraInfo 相机的设备描述信息,可由@link #CameraEnumerateDevice @endlink函数获得。 +/// \param [out] CamIp 相机IP(注意:必须保证传入的缓冲区大于等于16字节) +/// \param [out] CamMask 相机子网掩码(注意:必须保证传入的缓冲区大于等于16字节) +/// \param [out] CamGateWay 相机网关(注意:必须保证传入的缓冲区大于等于16字节) +/// \param [out] EtIp 网卡IP(注意:必须保证传入的缓冲区大于等于16字节) +/// \param [out] EtMask 网卡子网掩码(注意:必须保证传入的缓冲区大于等于16字节) +/// \param [out] EtGateWay 网卡网关(注意:必须保证传入的缓冲区大于等于16字节) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the GIGE camera's IP address +/// \param [in] pCameraInfo camera's device description information can be obtained by @link #CameraEnumerateDevice @endlink function. +/// \param [out] CamIp camera IP (Note: must ensure that the incoming buffer is greater than or equal to 16 bytes) +/// \param [out] CamMask camera subnet mask (Note: must ensure that the incoming buffer is greater than or equal to 16 bytes) +/// \param [out] CamGateWay camera gateway (Note: must ensure that the incoming buffer is greater than or equal to 16 bytes) +/// \param [out] EtIp network card IP (Note: must ensure that the incoming buffer is greater than or equal to 16 bytes) +/// \param [out] EtMask subnet mask (Note: must ensure that the incoming buffer is greater than or equal to 16 bytes) +/// \param [out] EtGateWay NIC Gateway (Note: must ensure that the incoming buffer is greater than or equal to 16 bytes) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGigeGetIp( + tSdkCameraDevInfo* pCameraInfo, + char* CamIp, + char* CamMask, + char* CamGateWay, + char* EtIp, + char* EtMask, + char* EtGateWay +); + +/// @ingroup API_UTIL +/// \~chinese +/// \brief 设置GIGE相机的IP地址 +/// \param [in] pCameraInfo 相机的设备描述信息,可由@link #CameraEnumerateDevice @endlink函数获得。 +/// \param [in] Ip 相机IP(如:192.168.1.100) +/// \param [in] SubMask 相机子网掩码(如:255.255.255.0) +/// \param [in] GateWay 相机网关(如:192.168.1.1) +/// \param [in] bPersistent TRUE: 设置相机为固定IP,FALSE:设置相机自动分配IP(忽略参数Ip, SubMask, GateWay) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the GIGE camera's IP address +/// \param [in] pCameraInfo camera's device description information can be obtained by @link #CameraEnumerateDevice @endlink function. +/// \param [in] Ip camera IP (eg 192.168.1.100) +/// \param [in] SubMask camera subnet mask (eg 255.255.255.0) +/// \param [in] GateWay Camera Gateway (eg 192.168.1.1) +/// \param [in] bPersistent TRUE: Set camera to fixed IP, FALSE: Set camera to assign IP automatically (ignoring parameters Ip, SubMask, GateWay) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGigeSetIp( + tSdkCameraDevInfo* pCameraInfo, + char const* Ip, + char const* SubMask, + char const* GateWay, + BOOL bPersistent +); + +/// @ingroup API_UTIL +/// \~chinese +/// \brief 获取GIGE相机的MAC地址 +/// \param [in] pCameraInfo 相机的设备描述信息,可由@link #CameraEnumerateDevice @endlink函数获得。 +/// \param [out] CamMac 相机MAC(注意:必须保证传入的缓冲区大于等于18字节) +/// \param [out] EtMac 网卡MAC(注意:必须保证传入的缓冲区大于等于18字节) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Select the LUT table in the preset LUT mode. +/// \param [in] pCameraInfo camera's device description information can be obtained by @link #CameraEnumerateDevice @endlink function. +/// \param [out] CamMac camera MAC (Note: must ensure that the incoming buffer is greater than or equal to 18 bytes) +/// \param [out] EtMac network card MAC (Note: must ensure that the incoming buffer is greater than or equal to 18 bytes) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGigeGetMac( + tSdkCameraDevInfo* pCameraInfo, + char* CamMac, + char* EtMac +); + +/// @ingroup API_GRAB +/// \~chinese +/// \brief 清空相机内已缓存的所有帧 +/// \param [in] hCamera 相机的句柄。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Clear all cached frames in the camera +/// \param [in] hCamera Camera handle. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraClearBuffer( + CameraHandle hCamera +); + +/// @ingroup API_GRAB +/// \~chinese +/// \brief 获得一帧图像数据。 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pFrameInfo 图像的帧头信息指针。 +/// \param [out] pbyBuffer 指向图像的数据的缓冲区指针。 +/// \param [in] wTimes 抓取图像的超时时间。 +/// \param [in] Priority 取图优先级 详见:@link #emCameraGetImagePriority @endlink +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \note 除了多一个优先级参数外与@link #CameraGetImageBuffer @endlink相同 +/// \~english +/// \brief Get a frame of image data. +/// \param [in] hCamera Camera handle. +/// \param [out] pFrameInfo Frame header information pointer +/// \param [out] pbyBuffer Pointer to the buffer of data for the image. +/// \param [in] wTimes The time-out time for capturing images. +/// \param [in] Priority map priority See: @link #emCameraGetImagePriority @endlink +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \note Same as @link #CameraGetImageBuffer @endlink except one more priority parameter +MVSDK_API CameraSdkStatus CameraGetImageBufferPriority( + CameraHandle hCamera, + tSdkFrameHead* pFrameInfo, + BYTE** pbyBuffer, + UINT wTimes, + UINT Priority +); + +/// @ingroup API_GRAB +/// \~chinese +/// \brief 获得一帧图像数据。该接口获得的图像是经过处理后的RGB格式。 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] piWidth 整形指针,返回图像的宽度 +/// \param [out] piHeight 整形指针,返回图像的高度 +/// \param [in] wTimes 抓取图像的超时时间。单位毫秒。 +/// \param [in] Priority 取图优先级 详见:@link #emCameraGetImagePriority @endlink +/// \return 成功时,返回RGB数据缓冲区的首地址;否则返回0。 +/// \note 除了多一个优先级参数外与@link #CameraGetImageBufferEx @endlink相同 +/// \~english +/// \brief Get a frame of image data. The image obtained by this interface is the processed RGB format. +/// \param [in] hCamera Camera handle. +/// \param [out] piWidth Returns the width of the image +/// \param [out] piHeight Returns the height of the image +/// \param [in] wTimes The time-out time for capturing images. The unit is milliseconds. +/// \param [in] Priority map priority See: @link #emCameraGetImagePriority @endlink +/// \return Returns the first address of the RGB data buffer when successful; otherwise returns 0. +/// \note Same as @link #CameraGetImageBufferEx @endlink except one more priority parameter +MVSDK_API unsigned char* CameraGetImageBufferPriorityEx( + CameraHandle hCamera, + INT* piWidth, + INT* piHeight, + UINT wTimes, + UINT Priority +); + +/// @ingroup API_TRIGGER +/// \~chinese +/// \brief 执行软触发。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] uFlags 功能标志,详见@link #emCameraSoftTriggerExFlags @endlink中的定义 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \see CameraSoftTrigger +/// \~english +/// \brief Perform a soft trigger. +/// \param [in] hCamera Camera handle. +/// \param [in] uFlags function flags, as defined in @link #emCameraSoftTriggerExFlags @endlink +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \see CameraSoftTrigger +MVSDK_API CameraSdkStatus CameraSoftTriggerEx( + CameraHandle hCamera, + UINT uFlags +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 当相机处于触发模式(软触发或硬触发)时,相机发送一帧到PC,如相机未收到PC端的接收确认,相机可以把帧重发几次。用本函数设置相机重发次数。(仅网口相机支持) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] count 重发次数(<=0表示禁用重发功能) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief When the camera is in the trigger mode (soft trigger or hard trigger), the camera sends a frame to the PC. If the camera does not receive the reception confirmation from the PC, the camera can retransmit the frame several times. Use this function to set the number of camera resends. (only supported by Gige camera) +/// \param [in] hCamera Camera handle. +/// \param [in] count number of resends (<=0 means disable resends) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetFrameResendCount( + CameraHandle hCamera, + int count +); + +/// @ingroup API_BASIC +/// \~chinese +/// \brief 配置系统选项(通常需要在CameraInit打开相机之前配置好) +/// \param [in] optionName 选项("NumBuffers", "3") +/// \param [in] value 值 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Configure system options (usually required before CameraInit turns on the camera) +/// \param [in] optionName option name("NumBuffers", "3") +/// \param [in] value setting value +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetSysOption( + char const* optionName, + char const* value +); + +/// @ingroup API_DEAD_PIXEL +/// \~chinese +/// \brief 使能坏点修正 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] bEnable TRUE: 使能坏点修正 FALSE: 关闭坏点修正 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Enable dead pixel correction +/// \param [in] hCamera Camera handle. +/// \param [in] bEnable TRUE: Enable dead pixel correction FALSE: Turn off dead pixel correction +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetCorrectDeadPixel( + CameraHandle hCamera, + BOOL bEnable +); + +/// @ingroup API_DEAD_PIXEL +/// \~chinese +/// \brief 获取坏点修正使能状态 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pbEnable 返回使能状态 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get dead pixel correction enabled +/// \param [in] hCamera Camera handle. +/// \param [out] pbEnable Returns enable state +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetCorrectDeadPixel( + CameraHandle hCamera, + BOOL* pbEnable +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 使能平场校正 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] bEnable TRUE: 使能平场校正 FALSE: 关闭平场校正 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Enable flat field correction +/// \param [in] hCamera Camera handle. +/// \param [in] bEnable TRUE: Enable flat field correction FALSE: Turn off flat field correction +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectSetEnable( + CameraHandle hCamera, + BOOL bEnable +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 获取平场校正使能状态 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pbEnable 返回使能状态 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get Plane Correction Enable Status +/// \param [in] hCamera Camera handle. +/// \param [out] pbEnable Returns enable state +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectGetEnable( + CameraHandle hCamera, + BOOL* pbEnable +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 设置平场校正参数 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pDarkFieldingImage 暗场图片 +/// \param [in] pDarkFieldingFrInfo 暗场图片信息 +/// \param [in] pLightFieldingImage 明场图片 +/// \param [in] pLightFieldingFrInfo 明场图片信息 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set flat field correction parameters +/// \param [in] hCamera Camera handle. +/// \param [in] pDarkFieldingImage dark field image +/// \param [in] pDarkFieldingFrInfo dark field image information +/// \param [in] pLightFieldingImage Brightfield image +/// \param [in] pLightFieldingFrInfo Brightfield image information +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectSetParameter( + CameraHandle hCamera, + BYTE const* pDarkFieldingImage, + tSdkFrameHead const* pDarkFieldingFrInfo, + BYTE const* pLightFieldingImage, + tSdkFrameHead const* pLightFieldingFrInfo +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 设置平场校正参数 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pDarkFieldingImage 暗场图片 +/// \param [in] pDarkFieldingFrInfo 暗场图片信息 +/// \param [in] pLightFieldingImage 明场图片 +/// \param [in] pLightFieldingFrInfo 明场图片信息 +/// \param [in] pRefRegion 参考区域(亮度均值作为平场的目标亮度,NULL表示参考图像的中心区域) +/// \param [in] pActRegion 作用区域(平场作用在此区域,NULL表示整图) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set flat field correction parameters +/// \param [in] hCamera Camera handle. +/// \param [in] pDarkFieldingImage dark field image +/// \param [in] pDarkFieldingFrInfo dark field image information +/// \param [in] pLightFieldingImage Brightfield image +/// \param [in] pLightFieldingFrInfo Brightfield image information +/// \param [in] pRefRegion reference region (the brightness average is used as the target brightness of the flat field, NULL represents the center region of the reference image) +/// \param [in] pActRegion Action area (the flat field acts on this area, NULL means the whole picture) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectSetParameterEx( + CameraHandle hCamera, + BYTE const* pDarkFieldingImage, + tSdkFrameHead const* pDarkFieldingFrInfo, + BYTE const* pLightFieldingImage, + tSdkFrameHead const* pLightFieldingFrInfo, + tSdkRect const* pRefRegion, + tSdkRect const* pActRegion +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 获取平场校正参数的状态 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pbValid 返回参数是否有效 +/// \param [out] pFilePath 返回参数文件的路径 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get status of flat field correction parameters +/// \param [in] hCamera Camera handle. +/// \param [out] pbValid Return whether the parameter is valid +/// \param [out] pFilePath Returns the path of the parameter file +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectGetParameterState( + CameraHandle hCamera, + BOOL *pbValid, + char *pFilePath +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 保存平场校正参数到文件 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pszFileName 文件路径 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Save flat correction parameters to file +/// \param [in] hCamera Camera handle. +/// \param [in] pszFileName file path +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectSaveParameterToFile( + CameraHandle hCamera, + char const* pszFileName +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 从文件中加载平场校正参数 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pszFileName 文件路径 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Load flat field correction parameters from file +/// \param [in] hCamera Camera handle. +/// \param [in] pszFileName file path +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectLoadParameterFromFile( + CameraHandle hCamera, + char const* pszFileName +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 获取平场的校正系数 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pCoefficients 系数(仅获取系数个数时可传入NULL) +/// \param [inout] pNumCoefficient 系数个数(传入时表示pCoefficients的大小,返回后表示获取到的系数个数) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the correction coefficient of the flat field +/// \param [in] hCamera The handle of the camera. +/// \param [out] pCoefficients coefficients (NULL can be passed in when only getting the number of coefficients) +/// \param [inout] pNumCoefficient number of coefficients (when passed in, it represents the size of pCoefficients, and when returned, it represents the number of coefficients obtained) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectGetCoefficients( + CameraHandle hCamera, + float* pCoefficients, + int* pNumCoefficient +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 设置平场的校正系数 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pCoefficients 系数 +/// \param [in] iNumCoefficient 系数个数 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the correction coefficient of the flat field +/// \param [in] hCamera The handle of the camera. +/// \param [in] pCoefficients coefficients +/// \param [in] iNumCoefficient number of coefficients +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectSetCoefficients( + CameraHandle hCamera, + float* pCoefficients, + int iNumCoefficient +); + +/// @ingroup API_UNDISTORT +/// \~chinese +/// \brief 设置校正参数 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] width 图片宽度 +/// \param [in] height 图片高度 +/// \param [in] cameraMatrix 内参(fx, fy, cx, cy) +/// \param [in] distCoeffs 畸变系数(k1,k2,p1,p2,k3) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set undistort parameters +/// \param [in] hCamera Camera handle. +/// \param [in] width image width +/// \param [in] height image height +/// \param [in] cameraMatrix internal matrix(fx, fy, cx, cy) +/// \param [in] distCoeffs distortion coefficient (k1, k2, p1, p2, k3) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetUndistortParams( + CameraHandle hCamera, + int width, + int height, + double cameraMatrix[4], + double distCoeffs[5] +); + +/// @ingroup API_UNDISTORT +/// \~chinese +/// \brief 获取校正参数 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] width 图片宽度 +/// \param [out] height 图片高度 +/// \param [out] cameraMatrix 内参(fx, fy, cx, cy) +/// \param [out] distCoeffs 畸变系数(k1,k2,p1,p2,k3) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get undistort parameters +/// \param [in] hCamera Camera handle. +/// \param [out] width image width +/// \param [out] height image height +/// \param [out] cameraMatrix internal matrix(fx, fy, cx, cy) +/// \param [out] distCoeffs distortion coefficient (k1, k2, p1, p2, k3) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetUndistortParams( + CameraHandle hCamera, + int *width, + int *height, + double cameraMatrix[4], + double distCoeffs[5] +); + +/// @ingroup API_UNDISTORT +/// \~chinese +/// \brief 使能镜头校正 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] bEnable 使能校正 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set undistort enable status +/// \param [in] hCamera Camera handle. +/// \param [in] bEnable enable status +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetUndistortEnable( + CameraHandle hCamera, + BOOL bEnable +); + +/// @ingroup API_UNDISTORT +/// \~chinese +/// \brief 获取镜头校正使能状态 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] bEnable 使能校正 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get undistort enable status +/// \param [in] hCamera Camera handle. +/// \param [out] bEnable enable status +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetUndistortEnable( + CameraHandle hCamera, + BOOL* bEnable +); + +/// @ingroup API_UNDISTORT +/// \~chinese +/// \brief 打开校正编辑面板 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] hParent 调用该函数的窗口的句柄。可以为NULL。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Open the undistort editing panel +/// \param [in] hCamera Camera handle. +/// \param [in] hParent The handle of the window that called the function. Can be NULL. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraCustomizeUndistort( + CameraHandle hCamera, + HWND hParent +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 使能平场校正 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] bEnable TRUE: 使能平场校正 FALSE: 关闭平场校正 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Enable flat field correction +/// \param [in] hCamera Camera handle. +/// \param [in] bEnable TRUE: Enable flat field correction FALSE: Turn off flat field correction +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectSetEnable( + CameraHandle hCamera, + BOOL bEnable +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 获取平场校正使能状态 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pbEnable 返回使能状态 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get Plane Correction Enable Status +/// \param [in] hCamera Camera handle. +/// \param [out] pbEnable Returns enable state +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectGetEnable( + CameraHandle hCamera, + BOOL* pbEnable +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 设置平场校正参数 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pDarkFieldingImage 暗场图片 +/// \param [in] pDarkFieldingFrInfo 暗场图片信息 +/// \param [in] pLightFieldingImage 明场图片 +/// \param [in] pLightFieldingFrInfo 明场图片信息 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set flat field correction parameters +/// \param [in] hCamera Camera handle. +/// \param [in] pDarkFieldingImage dark field image +/// \param [in] pDarkFieldingFrInfo dark field image information +/// \param [in] pLightFieldingImage Brightfield image +/// \param [in] pLightFieldingFrInfo Brightfield image information +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectSetParameter( + CameraHandle hCamera, + BYTE const* pDarkFieldingImage, + tSdkFrameHead const* pDarkFieldingFrInfo, + BYTE const* pLightFieldingImage, + tSdkFrameHead const* pLightFieldingFrInfo +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 获取平场校正参数的状态 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] pbValid 返回参数是否有效 +/// \param [out] pFilePath 返回参数文件的路径 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get status of flat field correction parameters +/// \param [in] hCamera Camera handle. +/// \param [out] pbValid Return whether the parameter is valid +/// \param [out] pFilePath Returns the path of the parameter file +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectGetParameterState( + CameraHandle hCamera, + BOOL *pbValid, + char *pFilePath +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 保存平场校正参数到文件 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pszFileName 文件路径 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Save flat correction parameters to file +/// \param [in] hCamera Camera handle. +/// \param [in] pszFileName file path +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectSaveParameterToFile( + CameraHandle hCamera, + char const* pszFileName +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 从文件中加载平场校正参数 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pszFileName 文件路径 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Load flat field correction parameters from file +/// \param [in] hCamera Camera handle. +/// \param [in] pszFileName file path +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraFlatFieldingCorrectLoadParameterFromFile( + CameraHandle hCamera, + char const* pszFileName +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 设置3D降噪参数 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] bEnable 启用或禁用 +/// \param [in] nCount 使用几张图片进行降噪(2-8张) +/// \param [in] Weights 降噪权重,如当使用3张图片进行降噪则这个参数可以传入3个浮点(0.3,0.3,0.4),最后一张图片的权重大于前2张。如果不需要使用权重,则把这个参数传入0,表示所有图片的权重相同(0.33,0.33,0.33) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set 3D noise reduction parameters +/// \param [in] hCamera Camera handle. +/// \param [in] bEnable enable or disable +/// \param [in] nCount Noise reduction using several pictures (2-8) +/// \param [in] Weights Noise reduction weight, such as when using 3 pictures for noise reduction, this parameter can be passed in 3 floating points (0.3, 0.3, 0.4). The weight of the last picture is larger than the first 2 pictures. . If you do not need to use weights, then pass this parameter to 0, indicating that all images have the same weight (0.33, 0.33, 0.33) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetDenoise3DParams( + CameraHandle hCamera, + BOOL bEnable, + int nCount, + float *Weights +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 获取当前的3D降噪参数 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] bEnable 启用或禁用 +/// \param [out] nCount 使用了几张图片进行降噪 +/// \param [out] bUseWeight 是否使用了降噪权重 +/// \param [out] Weights 降噪权重 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get current 3D noise reduction parameters +/// \param [in] hCamera Camera handle. +/// \param [out] bEnable enable or disable +/// \param [out] nCount uses several pictures for noise reduction +/// \param [out] bUseWeight whether to use noise reduction weights +/// \param [out] Weights Noise Reduction Weights +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetDenoise3DParams( + CameraHandle hCamera, + BOOL *bEnable, + int *nCount, + BOOL *bUseWeight, + float *Weights +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 对一组帧进行一次降噪处理 +/// \param [in] InFramesHead 输入帧头 +/// \param [in] InFramesData 输入帧数据 +/// \param [in] nCount 输入帧的数量 +/// \param [in] Weights 降噪权重 +/// \param [out] OutFrameHead 输出帧头 +/// \param [out] OutFrameData 输出帧数据 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Perform a noise reduction on a group of frames +/// \param [in] InFramesHead input frame header +/// \param [in] InFramesData input frame data +/// \param [in] nCount Number of input frames +/// \param [in] Weights Noise Reduction Weight +/// \param [out] OutFrameHead output frame header +/// \param [out] OutFrameData output frame data +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraManualDenoise3D( + tSdkFrameHead *InFramesHead, + BYTE **InFramesData, + int nCount, + float *Weights, + tSdkFrameHead *OutFrameHead, + BYTE *OutFrameData +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获取输出格式的特性支持。(比如:H264、H265支持设置码率) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iMediaType 输出格式索引 +/// \param [out] uCap 特性支持 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the feature support of the output format. (For example: H264, H265 support setting bit rate) +/// \param [in] hCamera Handle of the camera. +/// \param [in] iMediaType output format index +/// \param [out] uCap feature support +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetMediaCapability( + CameraHandle hCamera, + int iMediaType, + UINT *uCap +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置码率。(仅部分输出格式支持,比如:H264、H265) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iMediaType 输出格式索引 +/// \param [in] uRate 码率 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the bit rate. (Only some output formats are supported, such as H264, H265) +/// \param [in] hCamera Handle of the camera. +/// \param [in] iMediaType output format index +/// \param [in] uRate bit rate +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetMediaBitRate( + CameraHandle hCamera, + int iMediaType, + UINT uRate +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获取码率设置。(仅部分输出格式支持,比如:H264、H265) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iMediaType 输出格式索引 +/// \param [out] uRate 码率 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the bit rate. (Only some output formats are supported, such as H264, H265) +/// \param [in] hCamera Handle of the camera. +/// \param [in] iMediaType output format index +/// \param [out] uRate bit rate +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetMediaBitRate( + CameraHandle hCamera, + int iMediaType, + UINT *uRate +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置相机帧事件回调函数。当帧开始以及帧完成时,pCallBack所指向的回调函数就会被调用。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pCallBack 回调函数指针。 +/// \param [in] pContext 回调函数的附加参数,在回调函数被调用时该附加参数会被传入,可以为NULL。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \note 对于全局快门相机帧开始表示一帧曝光结束 +/// \~english +/// \brief Set the camera frame event callback function. When the frame starts and when the frame is completed, the callback function pointed to by pCallBack will be called. +/// \param [in] hCamera Camera handle. +/// \param [in] pCallBack callback function pointer. +/// \param [in] pContext Additional parameter of the callback function. This additional parameter will be passed in when the callback function is called. It can be NULL. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +/// \note For the start of the global shutter camera frame, it means the end of a frame exposure +MVSDK_API CameraSdkStatus CameraSetFrameEventCallback( + CameraHandle hCamera, + CAMERA_FRAME_EVENT_CALLBACK pCallBack, + PVOID pContext +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 设置降噪系数. +/// \param [in] hCamera 相机的句柄。 +/// \param [in] value [0,7] +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the noise reduction coefficient. +/// \param [in] hCamera Camera handle. +/// \param [in] value [0,7] +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetNoiseReductionValue( + CameraHandle hCamera, + int value +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 获取降噪系数. +/// \param [in] hCamera 相机的句柄。 +/// \param [out] value [0,7] +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the noise reduction coefficient. +/// \param [in] hCamera Camera handle. +/// \param [out] value [0,7] +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetNoiseReductionValue( + CameraHandle hCamera, + int* value +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 设置对数曲线值 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] value [0,255] +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set logarithmic curve value +/// \param [in] hCamera Camera handle. +/// \param [in] value [0,255] +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetLogarithmicCurveValue( + CameraHandle hCamera, + int value +); + +/// @ingroup API_ENHANCE +/// \~chinese +/// \brief 获取对数曲线值 +/// \param [in] hCamera 相机的句柄。 +/// \param [out] value [0,255] +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get logarithmic curve value +/// \param [in] hCamera Camera handle. +/// \param [out] value [0,255] +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetLogarithmicCurveValue( + CameraHandle hCamera, + int* value +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 设置拼接行数,从多帧提取指定的行数拼接成一帧 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] numLines 拼接行数(默认为0,0表示不做拼接处理) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Set the number of splicing lines, extract the specified number of lines from multiple frames and splice them into one frame (only support line scan series) +/// \param [in] hCamera Camera handle. +/// \param [in] numLines Number of splicing lines (default is 0, 0 means no splicing processing) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSetSpliceLines( + CameraHandle hCamera, + int numLines +); + +/// @ingroup API_ADVANCE +/// \~chinese +/// \brief 获取拼接行数 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] numLines 拼接行数(默认为0,0表示不做拼接处理) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get the number of splicing lines +/// \param [in] hCamera Camera handle. +/// \param [in] numLines Number of splicing lines (default is 0, 0 means no splicing processing) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraGetSpliceLines( + CameraHandle hCamera, + int* numLines +); + +/// @ingroup API_GRAB +/// \~chinese +/// \brief 从指定通道获取数据。(仅部分相机硬件支持此功能) +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pszChannelName 通道名。 +/// \param [out] pFrameInfo 图像的帧头信息指针。 +/// \param [out] pbyBuffer 返回图像数据的缓冲区指针。 +/// \param [in] wTimes 抓取图像的超时时间,单位毫秒。在wTimes时间内还未获得图像,则该函数会返回超时错误。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Get data from the specified channel. (Only some camera hardware supports this function) +/// \param [in] hCamera Handle of the camera. +/// \param [in] pszChannelName Channel name. +/// \param [out] pFrameInfo The header information pointer of the image. +/// \param [out] pbyBuffer Returns the buffer pointer of the image data. +/// \param [in] wTimes Timeout for grabbing an image in milliseconds. The function returns a timeout error if no image has been obtained within wTimes. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraSnapChannelBuffer( + CameraHandle hCamera, + char const* pszChannelName, + tSdkFrameHead* pFrameInfo, + BYTE** pbyBuffer, + UINT wTimes +); + +/// @ingroup API_GRAB +/// \~chinese +/// \brief 释放由@link #CameraSnapChannelBuffer @endlink获得的缓冲区。 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] pszChannelName 通道名。 +/// \param [in] pbyBuffer 帧缓冲区地址。 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Releases the buffer obtained by @link #CameraSnapChannelBuffer @endlink. +/// \param [in] hCamera Camera handle. +/// \param [in] pszChannelName Channel name. +/// \param [in] pbyBuffer Frame buffer address. +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraReleaseChannelBuffer( + CameraHandle hCamera, + char const* pszChannelName, + BYTE* pbyBuffer +); + +/// @ingroup API_UTIL +/// \~chinese +/// \brief 图片清晰度评估 +/// \param [in] hCamera 相机的句柄。 +/// \param [in] iAlgorithSel 使用的评估算法,参考@link emEvaluateDefinitionAlgorith @endlink的定义 +/// \param [in] pbyIn 输入图像数据的缓冲区地址,不能为NULL。 +/// \param [in] pFrInfo 输入图像的帧头信息 +/// \param [out] DefinitionValue 返回的清晰度估值(越大越清晰) +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Image clarity assessment +/// \param [in] hCamera Camera handle. +/// \param [in] iAlgorithSel The currently used evaluation algorithm, see @link emEvaluateDefinitionAlgorith @endlink +/// \param [in] pbyIn The buffer address of the input image data. Cannot be NULL. +/// \param [in] pFrInfo input image frame header information +/// \param [out] DefinitionValue Returns the sharpness value (greater the clearer) +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraEvaluateImageDefinition( + CameraHandle hCamera, + INT iAlgorithSel, + BYTE* pbyIn, + tSdkFrameHead* pFrInfo, + double* DefinitionValue +); + +/// @ingroup API_UTIL +/// \~chinese +/// \brief 在输入的图像数据中绘制文字 +/// \param [inout] pRgbBuffer 图像数据缓冲区 +/// \param [in] pFrInfo 图像的帧头信息 +/// \param [in] pFontFileName 字体文件名 +/// \param [in] FontWidth 字体宽度 +/// \param [in] FontHeight 字体高度 +/// \param [in] pText 要输出的文字 +/// \param [in] Left 文字的输出矩形 +/// \param [in] Top 文字的输出矩形 +/// \param [in] Width 文字的输出矩形 +/// \param [in] Height 文字的输出矩形 +/// \param [in] TextColor 文字颜色RGB +/// \param [in] uFlags 输出标志,详见@link #emCameraDrawTextFlags @endlink中的定义 +/// \return 成功返回 CAMERA_STATUS_SUCCESS(0)。否则返回非0值的错误码, 请参考 CameraStatus.h 中错误码的定义。 +/// \~english +/// \brief Draw text in the input image data +/// \param [inout] pRgbBuffer image data buffer +/// \param [in] pFrInfo frame header information +/// \param [in] pFontFileName font file name +/// \param [in] FontWidth font width +/// \param [in] FontHeight font height +/// \param [in] pText Text to output +/// \param [in] Left text output rectangle +/// \param [in] Top text output rectangle +/// \param [in] Width Output rectangle of text +/// \param [in] Height the output rectangle of the text +/// \param [in] TextColor Text Color RGB +/// \param [in] uFlags output flags, as defined in @link #emCameraDrawTextFlags @endlink +/// \return Returns CAMERA_STATUS_SUCCESS(0) successfully. Otherwise, it returns a non-zero error code. Please refer to the definition of the error code in CameraStatus.h. +MVSDK_API CameraSdkStatus CameraDrawText( + BYTE* pRgbBuffer, + tSdkFrameHead* pFrInfo, + char const* pFontFileName, + UINT FontWidth, + UINT FontHeight, + char const* pText, + INT Left, + INT Top, + UINT Width, + UINT Height, + UINT TextColor, + UINT uFlags + ); + +#ifdef __cplusplus +} +#endif +#endif + diff --git a/camera_sdk/inc/CameraDefine.h b/camera_sdk/inc/CameraDefine.h new file mode 100644 index 0000000..d828eee --- /dev/null +++ b/camera_sdk/inc/CameraDefine.h @@ -0,0 +1,892 @@ +#pragma once +#ifndef _CAMERA_DEFINE_H_ +#define _CAMERA_DEFINE_H_ + +#include "CameraStatus.h" + +#define MAX_CROSS_LINE 9 + +//相机的句柄类型定义 +typedef int CameraHandle; +typedef int INT; +typedef int LONG; +typedef unsigned int UINT; +typedef unsigned long long UINT64; +typedef int BOOL; +typedef unsigned char BYTE; +typedef unsigned int DWORD; +typedef void* PVOID; +typedef void* HWND; +typedef char* LPCTSTR; +typedef unsigned short USHORT; +typedef short SHORT; +typedef unsigned char* LPBYTE; +typedef char CHAR; +typedef char TCHAR; +typedef unsigned short WORD; +typedef INT HANDLE; +typedef void VOID; +typedef unsigned int ULONG; +typedef void* LPVOID; +typedef unsigned char UCHAR; +typedef void* HMODULE; + +#define TRUE 1 +#define FALSE 0 +//图像查表变换的方式 +typedef enum +{ + LUTMODE_PARAM_GEN = 0, //通过调节参数动态生成LUT表 + LUTMODE_PRESET, //使用预设的LUT表 + LUTMODE_USER_DEF //使用用户自定义的LUT表 +} emSdkLutMode; + +//相机的视频流控制 +typedef enum +{ + RUNMODE_PLAY = 0, //正常预览,捕获到图像就显示。(如果相机处于触发模式,则会等待触发帧的到来) + RUNMODE_PAUSE, //暂停,会暂停相机的图像输出,同时也不会去捕获图像 + RUNMODE_STOP //停止相机工作。反初始化后,相机就处于停止模式 +} emSdkRunMode; + +//SDK内部显示接口的显示方式 +typedef enum +{ + DISPLAYMODE_SCALE = 0, //缩放显示模式,缩放到显示控件的尺寸 + DISPLAYMODE_REAL //1:1显示模式,当图像尺寸大于显示控件的尺寸时,只显示局部 +} emSdkDisplayMode; + +//录像状态 +typedef enum +{ + RECORD_STOP = 0, //停止 + RECORD_START, //录像中 + RECORD_PAUSE //暂停 +} emSdkRecordMode; + +//图像的镜像操作 +typedef enum +{ + MIRROR_DIRECTION_HORIZONTAL = 0,//水平镜像 + MIRROR_DIRECTION_VERTICAL //垂直镜像 +} emSdkMirrorDirection; + +/// @ingroup MV_ENUM_TYPE +/// \~chinese 图像的旋转操作 +/// \~english Rotation of the image +typedef enum +{ + ROTATE_DIRECTION_0 = 0, ///< \~chinese 不旋转 \~english Do not rotate + ROTATE_DIRECTION_90 = 1, ///< \~chinese 逆时针90度 \~english Counterclockwise 90 degrees + ROTATE_DIRECTION_180 = 2, ///< \~chinese 逆时针180度 \~english Counterclockwise 180 degrees + ROTATE_DIRECTION_270 = 3, ///< \~chinese 逆时针270度 \~english Counterclockwise 270 degrees +} emSdkRotateDirection; + +//相机视频的帧率 +typedef enum +{ + FRAME_SPEED_LOW = 0, //低速模式 + FRAME_SPEED_NORMAL, //普通模式 + FRAME_SPEED_HIGH, //高速模式(需要较高的传输带宽,多设备共享传输带宽时会对帧率的稳定性有影响) + FRAME_SPEED_SUPER //超高速模式(需要较高的传输带宽,多设备共享传输带宽时会对帧率的稳定性有影响) +} emSdkFrameSpeed; + +//保存文件的格式类型 +typedef enum +{ + FILE_JPG = 1,//JPG + FILE_BMP = 2,//BMP + FILE_RAW = 4,//相机输出的bayer格式文件,对于不支持bayer格式输出相机,无法保存为该格式 + FILE_PNG = 8, //PNG + FILE_BMP_8BIT = 16, ///< \~chinese BMP 8bit \~english BMP 8bit + FILE_PNG_8BIT = 32, ///< \~chinese PNG 8bit \~english PNG 8bit + FILE_RAW_16BIT = 64, ///< \~chinese RAW 16bit \~english RAW 16bit +} emSdkFileType; + +/// @ingroup MV_ENUM_TYPE +/// \~chinese 相机中的图像传感器的工作模式 +/// \~english Image Sensor Operation Mode in Camera +typedef enum +{ + /// \~chinese 连续采集模式 + /// \~english Continuous acquisition mode + CONTINUATION = 0, + + /// \~chinese 软件触发模式,由软件发送指令后,传感器开始采集指定帧数的图像,采集完成后,停止输出 + /// \~english Software trigger mode. After the software sends the instruction, the sensor starts to capture the image of the specified frame number. After the acquisition is completed, the output is stopped. + SOFT_TRIGGER = 1, + + /// \~chinese 硬件触发模式,当接收到外部信号,传感器开始采集指定帧数的图像,采集完成后,停止输出 + /// \~english In the hardware trigger mode, when receiving an external signal, the sensor starts to capture the image of the specified frame number. After the acquisition is completed, the output is stopped. + EXTERNAL_TRIGGER = 2, + + /// \~chinese 编码器触发模式(仅用于线阵相机) + /// \~english Encoder trigger mode (only for line scan cameras) + ROTARYENC_TRIGGER = 3, + + /// \~chinese 编码器条件触发模式(仅用于线阵相机) + /// \~english Encoder condition trigger mode (only for line scan cameras) + ROTARYENC_COND_TRIGGER = 4, +} emSdkSnapMode; + +//自动曝光时抗频闪的频闪 +typedef enum +{ + LIGHT_FREQUENCY_50HZ = 0,//50HZ,一般的灯光都是50HZ + LIGHT_FREQUENCY_60HZ //60HZ,主要是指显示器的 +} emSdkLightFrequency; + +//相机的配置参数,分为A,B,C,D 4组进行保存。 +typedef enum +{ + PARAMETER_TEAM_DEFAULT = 0xff, + PARAMETER_TEAM_A = 0, + PARAMETER_TEAM_B = 1, + PARAMETER_TEAM_C = 2, + PARAMETER_TEAM_D = 3 +} emSdkParameterTeam; + + +/*emSdkParameterMode 相机参数加载模式,参数加载分为从文件和从设备加载两种方式 + +PARAM_MODE_BY_MODEL:所有同型号的相机共用ABCD四组参数文件。修改 + 一台相机的参数文件,会影响到整个同型号的 + 相机参数加载。 + +PARAM_MODE_BY_NAME:所有设备名相同的相机,共用ABCD四组参数文件。 + 默认情况下,当电脑上只接了某型号一台相机时, + 设备名都是一样的,而您希望某一台相机能够加载 + 不同的参数文件,则可以通过修改其设备名的方式 + 来让其加载指定的参数文件。 + +PARAM_MODE_BY_SN:相机按照自己的唯一序列号来加载ABCD四组参数文件, + 序列号在出厂时已经固化在相机内,每台相机的序列号 + 都不相同,通过这种方式,每台相机的参数文件都是独立的。 + +您可以根据自己的使用环境,灵活使用以上几种方式加载参数。例如,以 +MV-U300为例,您希望多台该型号的相机在您的 电脑上都共用4组参数,那么就 +使用PARAM_MODE_BY_MODEL方式;如果您希望其中某一台或者某几台MV-U300能 +使用自己参数文件而其余的MV-U300又要使用相同的参数文件,那么使用 +PARAM_MODE_BY_NAME方式;如果您希望每台MV-U300都使用不同的参数文件,那么 +使用PARAM_MODE_BY_SN方式。 +参数文件存在安装目录的 \Camera\Configs 目录下,以config为后缀名的文件。 +*/ +typedef enum +{ + PARAM_MODE_BY_MODEL = 0, //根据相机型号名从文件中加载参数,例如MV-U300 + PARAM_MODE_BY_NAME, //根据设备昵称(tSdkCameraDevInfo.acFriendlyName)从文件中加载参数,例如MV-U300,该昵称可自定义 + PARAM_MODE_BY_SN, //根据设备的唯一序列号从文件中加载参数,序列号在出厂时已经写入设备,每台相机拥有不同的序列号。 + PARAM_MODE_IN_DEVICE //从设备的固态存储器中加载参数。不是所有的型号都支持从相机中读写参数组,由tSdkCameraCapbility.bParamInDevice决定 +} emSdkParameterMode; + + +//SDK生成的相机配置页面掩码值 +typedef enum +{ + PROP_SHEET_INDEX_EXPOSURE = 0, ///< \~chinese 曝光设置 \~english Exposure Settings + PROP_SHEET_INDEX_ISP_COLOR = 1, ///< \~chinese 颜色矩阵设置 \~english Color Matrix Settings + PROP_SHEET_INDEX_ISP_LUT = 2, ///< \~chinese LUT设置 \~english LUT setting + PROP_SHEET_INDEX_ISP_SHAPE = 3, ///< \~chinese 变换设置 \~english transform settings + PROP_SHEET_INDEX_VIDEO_FORMAT = 4, ///< \~chinese 格式设置 \~english Formatting + PROP_SHEET_INDEX_RESOLUTION = 5, ///< \~chinese 分辨率设置 \~english resolution setting + PROP_SHEET_INDEX_IO_CTRL = 6, ///< \~chinese IO控制 \~english IO control + PROP_SHEET_INDEX_TRIGGER_SET = 7, ///< \~chinese 触发模式 \~english trigger setting + PROP_SHEET_INDEX_OVERLAY = 8, ///< \~chinese 十字线 \~english Crosshair + PROP_SHEET_INDEX_DEVICE_INFO = 9, ///< \~chinese 设备信息 \~english Device Information + PROP_SHEET_INDEX_WDR = 10, ///< \~chinese 宽动态 \~english Wide Dynamic + PROP_SHEET_INDEX_MULTI_EXPOSURE = 11, ///< \~chinese 多重曝光 \~english Multi exposure + PROP_SHEET_INDEX_SPECIAL = 12, ///< \~chinese 特殊设置 \~english Special settings + PROP_SHEET_INDEX_GIGE = 13, ///< \~chinese GIGE设置 \~english GIGE settings + PROP_SHEET_INDEX_GF_SETTING_I = 14, ///< \~chinese GF系列红外相机设置I \~english GF Settings I + PROP_SHEET_INDEX_GF_SETTING_II = 15, ///< \~chinese GF系列红外相机设置II \~english GF Settings II + PROP_SHEET_INDEX_NEW_ISP_COLOR = 16, ///< \~chinese 白平衡设置 \~english WB Settings +} emSdkPropSheetMask; + +//SDK生成的相机配置页面的回调消息类型 +typedef enum +{ + SHEET_MSG_LOAD_PARAM_DEFAULT = 0, //参数被恢复成默认后,触发该消息 + SHEET_MSG_LOAD_PARAM_GROUP, //加载指定参数组,触发该消息 + SHEET_MSG_LOAD_PARAM_FROMFILE, //从指定文件加载参数后,触发该消息 + SHEET_MSG_SAVE_PARAM_GROUP //当前参数组被保存时,触发该消息 +} emSdkPropSheetMsg; + +//可视化选择参考窗口的类型 +typedef enum +{ + REF_WIN_AUTO_EXPOSURE = 0, + REF_WIN_WHITE_BALANCE, +} emSdkRefWinType; + +//可视化选择参考窗口的类型 +typedef enum +{ + RES_MODE_PREVIEW = 0, + RES_MODE_SNAPSHOT, +} emSdkResolutionMode; + +//白平衡时色温模式 +typedef enum +{ + CT_MODE_AUTO = 0, //自动识别色温 + CT_MODE_PRESET, //使用指定的预设色温 + CT_MODE_USER_DEF //自定义色温(增益和矩阵) +} emSdkClrTmpMode; + +//LUT的颜色通道 +typedef enum +{ + LUT_CHANNEL_ALL = 0,//R,B,G三通道同时调节 + LUT_CHANNEL_RED, //红色通道 + LUT_CHANNEL_GREEN, //绿色通道 + LUT_CHANNEL_BLUE, //蓝色通道 +} emSdkLutChannel; + +//ISP处理单元 +typedef enum +{ + ISP_PROCESSSOR_PC = 0,//使用PC的软件ISP模块 + ISP_PROCESSSOR_DEVICE //使用相机自带的硬件ISP模块 +} emSdkIspProcessor; + +//闪光灯信号控制方式 +typedef enum +{ + STROBE_SYNC_WITH_TRIG_AUTO = 0, //和触发信号同步,触发后,相机进行曝光时,自动生成STROBE信号。此时,有效极性可设置(CameraSetStrobePolarity)。 + STROBE_SYNC_WITH_TRIG_MANUAL, //和触发信号同步,触发后,STROBE延时指定的时间后(CameraSetStrobeDelayTime),再持续指定时间的脉冲(CameraSetStrobePulseWidth),有效极性可设置(CameraSetStrobePolarity)。 + STROBE_ALWAYS_HIGH, //始终为高,忽略STROBE信号的其他设置 + STROBE_ALWAYS_LOW //始终为低,忽略STROBE信号的其他设置 +} emStrobeControl; + +//硬件外触发的信号种类 +typedef enum +{ + EXT_TRIG_LEADING_EDGE = 0, //上升沿触发,默认为该方式 + EXT_TRIG_TRAILING_EDGE, //下降沿触发 + EXT_TRIG_HIGH_LEVEL, //高电平触发,电平宽度决定曝光时间,仅部分型号的相机支持电平触发方式。 + EXT_TRIG_LOW_LEVEL //低电平触发, +} emExtTrigSignal; + +//硬件外触发时的快门方式 +typedef enum +{ + EXT_TRIG_EXP_STANDARD = 0, //标准方式,默认为该方式。 + EXT_TRIG_EXP_GRR, //全局复位方式,部分滚动快门的CMOS型号的相机支持该方式,配合外部机械快门,可以达到全局快门的效果,适合拍高速运动的物体 +} emExtTrigShutterMode; + +/// @ingroup MV_ENUM_TYPE +/// \~chinese 清晰度评估算法 +/// \~english Sharpness assessment algorithm +typedef enum +{ + EVALUATE_DEFINITION_DEVIATION = 0, ///< \~chinese 方差法 \~english Variance method + EVALUATE_DEFINITION_SMD = 1, ///< \~chinese 相邻像素灰度方差法 \~english Adjacent Pixel Gray Difference Method + EVALUATE_DEFINITION_GRADIENT = 2, ///< \~chinese 梯度统计 \~english Gradient statistics + EVALUATE_DEFINITION_SOBEL = 3, ///< \~chinese Sobel \~english Sobel + EVALUATE_DEFINITION_ROBERT = 4, ///< \~chinese Robert \~english Robert + EVALUATE_DEFINITION_LAPLACE = 5, ///< \~chinese Laplace \~english Laplace + + EVALUATE_DEFINITION_ALG_MAX = 6, ///< \~chinese 算法个数 \~english The number of algorithms +} emEvaluateDefinitionAlgorith; + +/// @ingroup MV_ENUM_TYPE +/// \~chinese 文字输出标志 +/// \~english Text output flag +typedef enum +{ + CAMERA_DT_VCENTER = 0x1, ///< \~chinese 垂直居中 \~english Vertically centered + CAMERA_DT_BOTTOM = 0x2, ///< \~chinese 底部对齐 \~english Bottom alignment + CAMERA_DT_HCENTER = 0x4, ///< \~chinese 水平居中 \~english Horizontally centered + CAMERA_DT_RIGHT = 0x8, ///< \~chinese 右对齐 \~english Right alignment + CAMERA_DT_SINGLELINE = 0x10, ///< \~chinese 单行显示 \~english Single-line display + CAMERA_DT_ALPHA_BLEND = 0x20, ///< \~chinese Alpha混合 \~english Alpha blend + CAMERA_DT_ANTI_ALIASING = 0x40, ///< \~chinese 抗锯齿 \~english Anti-aliasing +} emCameraDrawTextFlags; + +// GPIO模式 +typedef enum +{ + IOMODE_TRIG_INPUT = 0, ///< \~chinese 触发输入 \~english Trigger input + IOMODE_STROBE_OUTPUT = 1, ///< \~chinese 闪光灯输出 \~english Strobe output + IOMODE_GP_INPUT = 2, ///< \~chinese 通用型输入 \~english Universal input + IOMODE_GP_OUTPUT = 3, ///< \~chinese 通用型输出 \~english Universal output + IOMODE_PWM_OUTPUT = 4, ///< \~chinese PWM型输出 \~english PWM output + IOMODE_ROTARYENC_INPUT = 5, ///< \~chinese 编码器输入 \~english rotary input + IOMODE_LINE_STROBE_OUTPUT=6 ///< \~chinese 行频闪灯 \~english Line strobe output +} emCameraGPIOMode; + +/// @ingroup MV_ENUM_TYPE +/// \~chinese GPIO 格式 +/// \~english GPIO Format +typedef enum +{ + IOFORMAT_SINGLE = 0, ///< \~chinese 单端 \~english single ended + IOFORMAT_RS422 = 1, ///< \~chinese 差分RS422 \~english Differential RS422 + IOFORMAT_RS422_TERM = 2, ///< \~chinese 差分RS422带终端电阻 \~english Differential RS422 and Termination Enable + IOFORMAT_OCEP = 3, ///< \~chinese 光耦 \~english opticalcoupler equipment +} emCameraGPIOFormat; + +/// @ingroup MV_ENUM_TYPE +/// \~chinese 取图优先级 +/// \~english Get Image priority +typedef enum +{ + CAMERA_GET_IMAGE_PRIORITY_OLDEST = 0, ///< \~chinese 获取缓存中最旧的一帧 \~english Get the oldest frame in the cache + CAMERA_GET_IMAGE_PRIORITY_NEWEST = 1, ///< \~chinese 获取缓存中最新的一帧(比此帧旧的将全部丢弃) \~english Get the latest frame in the cache (older than this frame will be discarded) + + /// \~chinese 丢弃缓存中的所有帧,并且如果此刻相机正在曝光或传输将会被立即打断,等待接收下一帧 + /// \note 某些型号的相机不支持此功能,对于不支持此功能的相机这个标志相当于@link #CAMERA_GET_IMAGE_PRIORITY_OLDEST @endlink + /// \~english All frames in the cache are discarded, and if the camera is now being exposed or transmitted it will be immediately interrupted, waiting to receive the next frame + /// \note Some models do not support this feature. For cameras that do not support this feature this flag is equivalent to @link #CAMERA_GET_IMAGE_PRIORITY_OLDEST @endlink + CAMERA_GET_IMAGE_PRIORITY_NEXT = 2, +} emCameraGetImagePriority; + +/// @ingroup MV_ENUM_TYPE +/// \~chinese 软触发功能标志 +/// \~english Soft trigger function flag +typedef enum +{ + CAMERA_ST_CLEAR_BUFFER_BEFORE = 0x1, ///< \~chinese 在软触发之前先清空相机已缓存的帧 \~english Empty camera-cached frames before soft triggering +} emCameraSoftTriggerExFlags; + +/// \~chinese 矩形 +/// \~english rect +typedef struct +{ + int iLeft, iTop; + int iWidth, iHeight; +} tSdkRect; + +//相机的设备信息 +typedef struct +{ + char acProductSeries[32]; // 产品系列 + char acProductName[32]; // 产品名称 + char acFriendlyName[32]; // 产品昵称,用户可自定义改昵称,保存在相机内,用于区分多个相机同时使用,可以用CameraSetFriendlyName接口改变该昵称,设备重启后生效。 + char acLinkName[32]; // 内核符号连接名,内部使用 + char acDriverVersion[32]; // 驱动版本 + char acSensorType[32]; // sensor类型 + char acPortType[32]; // 接口类型 + char acSn[32]; // 产品唯一序列号 + UINT uInstance; // 该型号相机在该电脑上的实例索引号,用于区分同型号多相机 +} tSdkCameraDevInfo; + +#define EXT_TRIG_MASK_GRR_SHUTTER 1 ///< \~chinese 快门支持GRR模式 \~english Shutter supports GRR mode +#define EXT_TRIG_MASK_LEVEL_MODE 2 ///< \~chinese 支持电平触发 \~english Support level trigger +#define EXT_TRIG_MASK_DOUBLE_EDGE 4 ///< \~chinese 支持双边沿触发 \~english Supports bilateral triggering +#define EXT_TRIG_MASK_BUFFERED_DELAY 8 ///< \~chinese 支持信号后延 \~english Supports signal delayed activation + +//tSdkResolutionRange结构体中SKIP、 BIN、RESAMPLE模式的掩码值 +#define MASK_2X2_HD (1<<0) //硬件SKIP、BIN、重采样 2X2 +#define MASK_3X3_HD (1<<1) +#define MASK_4X4_HD (1<<2) +#define MASK_5X5_HD (1<<3) +#define MASK_6X6_HD (1<<4) +#define MASK_7X7_HD (1<<5) +#define MASK_8X8_HD (1<<6) +#define MASK_9X9_HD (1<<7) +#define MASK_10X10_HD (1<<8) +#define MASK_11X11_HD (1<<9) +#define MASK_12X12_HD (1<<10) +#define MASK_13X13_HD (1<<11) +#define MASK_14X14_HD (1<<12) +#define MASK_15X15_HD (1<<13) +#define MASK_16X16_HD (1<<14) +#define MASK_17X17_HD (1<<15) +#define MASK_2X2_SW (1<<16) //硬件SKIP、BIN、重采样 2X2 +#define MASK_3X3_SW (1<<17) +#define MASK_4X4_SW (1<<18) +#define MASK_5X5_SW (1<<19) +#define MASK_6X6_SW (1<<20) +#define MASK_7X7_SW (1<<21) +#define MASK_8X8_SW (1<<22) +#define MASK_9X9_SW (1<<23) +#define MASK_10X10_SW (1<<24) +#define MASK_11X11_SW (1<<25) +#define MASK_12X12_SW (1<<26) +#define MASK_13X13_SW (1<<27) +#define MASK_14X14_SW (1<<28) +#define MASK_15X15_SW (1<<29) +#define MASK_16X16_SW (1<<30) +#define MASK_17X17_SW (1<<31) + +//相机的分辨率设定范围,用于构件UI +typedef struct +{ + INT iHeightMax; //图像最大高度 + INT iHeightMin; //图像最小高度 + INT iWidthMax; //图像最大宽度 + INT iWidthMin; //图像最小宽度 + UINT uSkipModeMask; //SKIP模式掩码,为0,表示不支持SKIP 。bit0为1,表示支持SKIP 2x2 ;bit1为1,表示支持SKIP 3x3.... + UINT uBinSumModeMask; //BIN(求和)模式掩码,为0,表示不支持BIN 。bit0为1,表示支持BIN 2x2 ;bit1为1,表示支持BIN 3x3.... + UINT uBinAverageModeMask; //BIN(求均值)模式掩码,为0,表示不支持BIN 。bit0为1,表示支持BIN 2x2 ;bit1为1,表示支持BIN 3x3.... + UINT uResampleMask; //硬件重采样的掩码 +} tSdkResolutionRange; + + +//相机的分辨率描述 +typedef struct +{ + INT iIndex; // 索引号,[0,N]表示预设的分辨率(N 为预设分辨率的最大个数,一般不超过20),OXFF 表示自定义分辨率(ROI) + char acDescription[32]; // 该分辨率的描述信息。仅预设分辨率时该信息有效。自定义分辨率可忽略该信息 + UINT uBinSumMode; // BIN(求和)的模式,范围不能超过tSdkResolutionRange中uBinSumModeMask + UINT uBinAverageMode; // BIN(求均值)的模式,范围不能超过tSdkResolutionRange中uBinAverageModeMask + UINT uSkipMode; // 是否SKIP的尺寸,为0表示禁止SKIP模式,范围不能超过tSdkResolutionRange中uSkipModeMask + UINT uResampleMask; // 硬件重采样的掩码 + INT iHOffsetFOV; // 采集视场相对于Sensor最大视场左上角的垂直偏移 + INT iVOffsetFOV; // 采集视场相对于Sensor最大视场左上角的水平偏移 + INT iWidthFOV; // 采集视场的宽度 + INT iHeightFOV; // 采集视场的高度 + INT iWidth; // 相机最终输出的图像的宽度 + INT iHeight; // 相机最终输出的图像的高度 + INT iWidthZoomHd; // 硬件缩放的宽度,不需要进行此操作的分辨率,此变量设置为0. + INT iHeightZoomHd; // 硬件缩放的高度,不需要进行此操作的分辨率,此变量设置为0. + INT iWidthZoomSw; // 软件缩放的宽度,不需要进行此操作的分辨率,此变量设置为0. + INT iHeightZoomSw; // 软件缩放的高度,不需要进行此操作的分辨率,此变量设置为0. +} tSdkImageResolution; + +//相机白平衡色温模式描述信息 +typedef struct +{ + INT iIndex; // 模式索引号 + char acDescription[32]; // 描述信息 +} tSdkColorTemperatureDes; + +//相机帧率描述信息 +typedef struct +{ + INT iIndex; // 帧率索引号,一般0对应于低速模式,1对应于普通模式,2对应于高速模式 + char acDescription[32]; // 描述信息 +} tSdkFrameSpeed; + +//相机曝光功能范围定义 +typedef struct +{ + UINT uiTargetMin; //自动曝光亮度目标最小值 + UINT uiTargetMax; //自动曝光亮度目标最大值 + UINT uiAnalogGainMin; //模拟增益的最小值,单位为fAnalogGainStep中定义 + UINT uiAnalogGainMax; //模拟增益的最大值,单位为fAnalogGainStep中定义 + float fAnalogGainStep; //模拟增益每增加1,对应的增加的放大倍数。例如,uiAnalogGainMin一般为16,fAnalogGainStep一般为0.125,那么最小放大倍数就是16*0.125 = 2倍 + UINT uiExposeTimeMin; //手动模式下,曝光时间的最小值,单位:行。根据CameraGetExposureLineTime可以获得一行对应的时间(微秒),从而得到整帧的曝光时间 + UINT uiExposeTimeMax; //手动模式下,曝光时间的最大值,单位:行 +} tSdkExpose; + +//触发模式描述 +typedef struct +{ + INT iIndex; //模式索引号 + char acDescription[32]; //该模式的描述信息 +} tSdkTrigger; + +//传输分包大小描述(主要是针对网络相机有效) +typedef struct +{ + INT iIndex; //分包大小索引号 + char acDescription[32]; //对应的描述信息 + UINT iPackSize; +} tSdkPackLength; + +//预设的LUT表描述 +typedef struct +{ + INT iIndex; //编号 + char acDescription[32]; //描述信息 +} tSdkPresetLut; + +//AE算法描述 +typedef struct +{ + INT iIndex; //编号 + char acDescription[32]; //描述信息 +} tSdkAeAlgorithm; + +//RAW转RGB算法描述 +typedef struct +{ + INT iIndex; //编号 + char acDescription[32]; //描述信息 +} tSdkBayerDecodeAlgorithm; + + +//帧率统计信息 +typedef struct +{ + INT iTotal; //当前采集的总帧数(包括错误帧) + INT iCapture; //当前采集的有效帧的数量 + INT iLost; //当前丢帧的数量 +} tSdkFrameStatistic; + +//相机输出的图像数据格式 +typedef struct +{ + INT iIndex; //格式种类编号 + char acDescription[32]; //描述信息 + UINT iMediaType; //对应的图像格式编码,如CAMERA_MEDIA_TYPE_BAYGR8,在本文件中有定义。 +} tSdkMediaType; + +//伽马的设定范围 +typedef struct +{ + INT iMin; //最小值 + INT iMax; //最大值 +} tGammaRange; + +//对比度的设定范围 +typedef struct +{ + INT iMin; //最小值 + INT iMax; //最大值 +} tContrastRange; + +//RGB三通道数字增益的设定范围 +typedef struct +{ + INT iRGainMin; //红色增益的最小值 + INT iRGainMax; //红色增益的最大值 + INT iGGainMin; //绿色增益的最小值 + INT iGGainMax; //绿色增益的最大值 + INT iBGainMin; //蓝色增益的最小值 + INT iBGainMax; //蓝色增益的最大值 +} tRgbGainRange; + +//饱和度设定的范围 +typedef struct +{ + INT iMin; //最小值 + INT iMax; //最大值 +} tSaturationRange; + +//锐化的设定范围 +typedef struct +{ + INT iMin; //最小值 + INT iMax; //最大值 +} tSharpnessRange; + +//ISP模块的使能信息 +typedef struct +{ + BOOL bMonoSensor; //表示该型号相机是否为黑白相机,如果是黑白相机,则颜色相关的功能都无法调节 + BOOL bWbOnce; //表示该型号相机是否支持手动白平衡功能 + BOOL bAutoWb; //表示该型号相机是否支持自动白平衡功能 + BOOL bAutoExposure; //表示该型号相机是否支持自动曝光功能 + BOOL bManualExposure; //表示该型号相机是否支持手动曝光功能 + BOOL bAntiFlick; //表示该型号相机是否支持抗频闪功能 + BOOL bDeviceIsp; //表示该型号相机是否支持硬件ISP功能 + BOOL bForceUseDeviceIsp;//bDeviceIsp和bForceUseDeviceIsp同时为TRUE时,表示强制只用硬件ISP,不可取消。 + BOOL bZoomHD; //相机硬件是否支持图像缩放输出(只能是缩小)。 +} tSdkIspCapacity; + +/* 定义整合的设备描述信息,这些信息可以用于动态构建UI */ +typedef struct +{ + + tSdkTrigger *pTriggerDesc; // 触发模式 + INT iTriggerDesc; // 触发模式的个数,即pTriggerDesc数组的大小 + + tSdkImageResolution *pImageSizeDesc;// 预设分辨率选择 + INT iImageSizeDesc; // 预设分辨率的个数,即pImageSizeDesc数组的大小 + + tSdkColorTemperatureDes *pClrTempDesc;// 预设色温模式,用于白平衡 + INT iClrTempDesc; + + tSdkMediaType *pMediaTypeDesc; // 相机输出图像格式 + INT iMediaTypdeDesc; // 相机输出图像格式的种类个数,即pMediaTypeDesc数组的大小。 + + tSdkFrameSpeed *pFrameSpeedDesc; // 可调节帧速类型,对应界面上普通 高速 和超级三种速度设置 + INT iFrameSpeedDesc; // 可调节帧速类型的个数,即pFrameSpeedDesc数组的大小。 + + tSdkPackLength *pPackLenDesc; // 传输包长度,一般用于网络设备 + INT iPackLenDesc; // 可供选择的传输分包长度的个数,即pPackLenDesc数组的大小。 + + INT iOutputIoCounts; // 可编程输出IO的个数 + INT iInputIoCounts; // 可编程输入IO的个数 + + tSdkPresetLut *pPresetLutDesc; // 相机预设的LUT表 + INT iPresetLut; // 相机预设的LUT表的个数,即pPresetLutDesc数组的大小 + + INT iUserDataMaxLen; // 指示该相机中用于保存用户数据区的最大长度。为0表示无。 + BOOL bParamInDevice; // 指示该设备是否支持从设备中读写参数组。1为支持,0不支持。 + + tSdkAeAlgorithm *pAeAlmSwDesc; // 软件自动曝光算法描述 + int iAeAlmSwDesc; // 软件自动曝光算法个数 + + tSdkAeAlgorithm *pAeAlmHdDesc; // 硬件自动曝光算法描述,为NULL表示不支持硬件自动曝光 + int iAeAlmHdDesc; // 硬件自动曝光算法个数,为0表示不支持硬件自动曝光 + + tSdkBayerDecodeAlgorithm *pBayerDecAlmSwDesc; // 软件Bayer转换为RGB数据的算法描述 + int iBayerDecAlmSwDesc; // 软件Bayer转换为RGB数据的算法个数 + + tSdkBayerDecodeAlgorithm *pBayerDecAlmHdDesc; // 硬件Bayer转换为RGB数据的算法描述,为NULL表示不支持 + int iBayerDecAlmHdDesc; // 硬件Bayer转换为RGB数据的算法个数,为0表示不支持 + + /* 图像参数的调节范围定义,用于动态构建UI*/ + tSdkExpose sExposeDesc; // 曝光的范围值 + tSdkResolutionRange sResolutionRange; // 分辨率范围描述 + tRgbGainRange sRgbGainRange; // 图像数字增益范围描述 + tSaturationRange sSaturationRange; // 饱和度范围描述 + tGammaRange sGammaRange; // 伽马范围描述 + tContrastRange sContrastRange; // 对比度范围描述 + tSharpnessRange sSharpnessRange; // 锐化范围描述 + tSdkIspCapacity sIspCapacity; // ISP能力描述 + + +} tSdkCameraCapbility; + + +//图像帧头信息 +typedef struct +{ + UINT uiMediaType; // 图像格式,Image Format + UINT uBytes; // 图像数据字节数,Total bytes + INT iWidth; // 图像的宽度,调用图像处理函数后,该变量可能被动态修改,来指示处理后的图像尺寸 + INT iHeight; // 图像的高度,调用图像处理函数后,该变量可能被动态修改,来指示处理后的图像尺寸 + INT iWidthZoomSw; // 软件缩放的宽度,不需要进行软件裁剪的图像,此变量设置为0. + INT iHeightZoomSw; // 软件缩放的高度,不需要进行软件裁剪的图像,此变量设置为0. + BOOL bIsTrigger; // 指示是否为触发帧 is trigger + UINT uiTimeStamp; // 该帧的采集时间,单位0.1毫秒 + UINT uiExpTime; // 当前图像的曝光值,单位为微秒us + float fAnalogGain; // 当前图像的模拟增益倍数 + INT iGamma; // 该帧图像的伽马设定值,仅当LUT模式为动态参数生成时有效,其余模式下为-1 + INT iContrast; // 该帧图像的对比度设定值,仅当LUT模式为动态参数生成时有效,其余模式下为-1 + INT iSaturation; // 该帧图像的饱和度设定值,对于黑白相机无意义,为0 + float fRgain; // 该帧图像处理的红色数字增益倍数,对于黑白相机无意义,为1 + float fGgain; // 该帧图像处理的绿色数字增益倍数,对于黑白相机无意义,为1 + float fBgain; // 该帧图像处理的蓝色数字增益倍数,对于黑白相机无意义,为1 +} tSdkFrameHead; + +//图像帧描述 +typedef struct sCameraFrame +{ + tSdkFrameHead head; //帧头 + BYTE * pBuffer; //数据区 +} tSdkFrame; + +/// \~chinese 帧事件 +/// \~english Frame Event +typedef struct tSdkFrameEvent_ +{ + UINT uType; ///< \~chinese 事件类型(1:帧开始 2:帧结束) \~english Event type (1:frame start 2:frame end) + UINT uStatus; ///< \~chinese 状态(0:成功 非0:错误) \~english Status (0:success, non-zero:error) + UINT uFrameID; ///< \~chinese 帧ID \~english Frame ID + UINT uWidth; ///< \~chinese 宽度 \~english Width + UINT uHeight; ///< \~chinese 高度 \~english Height + UINT uPixelFormat; ///< \~chinese 图像格式 \~english Image Format + UINT TimeStampL; ///< \~chinese 时间戳低32位 \~english Lower 32 bits of timestamp + UINT TimeStampH; ///< \~chinese 时间戳高32位 \~english High 32 bits of timestamp +} tSdkFrameEvent; + +//图像捕获的回调函数定义 +typedef void (*CAMERA_SNAP_PROC)(CameraHandle hCamera, BYTE *pFrameBuffer, tSdkFrameHead* pFrameHead, PVOID pContext); + +//SDK生成的相机配置页面的消息回调函数定义 +typedef void (*CAMERA_PAGE_MSG_PROC)(CameraHandle hCamera, UINT MSG, UINT uParam, PVOID pContext); + +/// @ingroup API_RECONNECT +/// \~chinese 相机连接状态回调 +/// \param [in] hCamera 相机句柄 +/// \param [in] MSG 消息,0: 相机连接断开 1: 相机连接恢复 +/// \param [in] uParam 附加信息 +/// \param [in] pContext 用户数据 +/// \return 无 +/// \note USB相机uParam取值: +/// \note 未定义 +/// \note 网口相机uParam取值: +/// \note 当MSG=0时:未定义 +/// \note 当MSG=1时: +/// \note 0:上次掉线原因,网络通讯失败 +/// \note 1:上次掉线原因,相机掉电 +/// \~english Camera connection status callback +/// \param [in] hCamera Camera handle +/// \param [in] MSG message, 0: Camera disconnected 1: Camera connection restored +/// \param [in] uParam Additional Information +/// \param [in] pContext user data +/// \return None +/// \note USB camera uParam value: +/// \note Undefined +/// \note network camera uParam value: +/// \note When MSG=0: Undefined +/// \note When MSG=1: +/// \note 0: The last dropped reason, network communication failed +/// \note 1: The last dropped reason, the camera lost power +typedef void (*CAMERA_CONNECTION_STATUS_CALLBACK)(CameraHandle hCamera, UINT MSG, UINT uParam, PVOID pContext); + +/// @ingroup API_ADVANCE +/// \~chinese 帧事件回调函数定义 +/// \~english Callback function definition for frame event +typedef void (*CAMERA_FRAME_EVENT_CALLBACK)(CameraHandle hCamera, tSdkFrameEvent* pEvent, PVOID pContext); + + +//----------------------------IMAGE FORMAT DEFINE------------------------------------ +//----------------------------图像格式定义------------------------------------------- +#define CAMERA_MEDIA_TYPE_MONO 0x01000000 +#define CAMERA_MEDIA_TYPE_RGB 0x02000000 +#define CAMERA_MEDIA_TYPE_COLOR 0x02000000 +#define CAMERA_MEDIA_TYPE_CUSTOM 0x80000000 +#define CAMERA_MEDIA_TYPE_COLOR_MASK 0xFF000000 +#define CAMERA_MEDIA_TYPE_OCCUPY1BIT 0x00010000 +#define CAMERA_MEDIA_TYPE_OCCUPY2BIT 0x00020000 +#define CAMERA_MEDIA_TYPE_OCCUPY4BIT 0x00040000 +#define CAMERA_MEDIA_TYPE_OCCUPY8BIT 0x00080000 +#define CAMERA_MEDIA_TYPE_OCCUPY10BIT 0x000A0000 +#define CAMERA_MEDIA_TYPE_OCCUPY12BIT 0x000C0000 +#define CAMERA_MEDIA_TYPE_OCCUPY16BIT 0x00100000 +#define CAMERA_MEDIA_TYPE_OCCUPY24BIT 0x00180000 +#define CAMERA_MEDIA_TYPE_OCCUPY32BIT 0x00200000 +#define CAMERA_MEDIA_TYPE_OCCUPY36BIT 0x00240000 +#define CAMERA_MEDIA_TYPE_OCCUPY48BIT 0x00300000 +#define CAMERA_MEDIA_TYPE_OCCUPY64BIT 0x00400000 + +#define CAMERA_MEDIA_TYPE_EFFECTIVE_PIXEL_SIZE_MASK 0x00FF0000 +#define CAMERA_MEDIA_TYPE_EFFECTIVE_PIXEL_SIZE_SHIFT 16 + +#define CAMERA_MEDIA_TYPE_PIXEL_SIZE(type) (((type) & CAMERA_MEDIA_TYPE_EFFECTIVE_PIXEL_SIZE_MASK)>>CAMERA_MEDIA_TYPE_EFFECTIVE_PIXEL_SIZE_SHIFT) + +#define CAMERA_MEDIA_TYPE_ID_MASK 0x0000FFFF +#define CAMERA_MEDIA_TYPE_COUNT 0x46 + +/*mono*/ +#define CAMERA_MEDIA_TYPE_MONO1P (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY1BIT | 0x0037) +#define CAMERA_MEDIA_TYPE_MONO2P (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY2BIT | 0x0038) +#define CAMERA_MEDIA_TYPE_MONO4P (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY4BIT | 0x0039) +#define CAMERA_MEDIA_TYPE_MONO8 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0001) +#define CAMERA_MEDIA_TYPE_MONO8S (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0002) +#define CAMERA_MEDIA_TYPE_MONO10 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0003) +#define CAMERA_MEDIA_TYPE_MONO10_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0004) +#define CAMERA_MEDIA_TYPE_MONO12 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0005) +#define CAMERA_MEDIA_TYPE_MONO12_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0006) +#define CAMERA_MEDIA_TYPE_MONO14 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0025) +#define CAMERA_MEDIA_TYPE_MONO16 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0007) + +/*Bayer */ +#define CAMERA_MEDIA_TYPE_BAYGR8 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0008) +#define CAMERA_MEDIA_TYPE_BAYRG8 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0009) +#define CAMERA_MEDIA_TYPE_BAYGB8 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x000A) +#define CAMERA_MEDIA_TYPE_BAYBG8 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x000B) + +#define CAMERA_MEDIA_TYPE_BAYGR10_MIPI (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0026) +#define CAMERA_MEDIA_TYPE_BAYRG10_MIPI (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0027) +#define CAMERA_MEDIA_TYPE_BAYGB10_MIPI (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0028) +#define CAMERA_MEDIA_TYPE_BAYBG10_MIPI (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0029) + + +#define CAMERA_MEDIA_TYPE_BAYGR10 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x000C) +#define CAMERA_MEDIA_TYPE_BAYRG10 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x000D) +#define CAMERA_MEDIA_TYPE_BAYGB10 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x000E) +#define CAMERA_MEDIA_TYPE_BAYBG10 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x000F) + +#define CAMERA_MEDIA_TYPE_BAYGR12 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0010) +#define CAMERA_MEDIA_TYPE_BAYRG12 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0011) +#define CAMERA_MEDIA_TYPE_BAYGB12 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0012) +#define CAMERA_MEDIA_TYPE_BAYBG12 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0013) + + +#define CAMERA_MEDIA_TYPE_BAYGR10_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0026) +#define CAMERA_MEDIA_TYPE_BAYRG10_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0027) +#define CAMERA_MEDIA_TYPE_BAYGB10_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0028) +#define CAMERA_MEDIA_TYPE_BAYBG10_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0029) + +#define CAMERA_MEDIA_TYPE_BAYGR12_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x002A) +#define CAMERA_MEDIA_TYPE_BAYRG12_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x002B) +#define CAMERA_MEDIA_TYPE_BAYGB12_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x002C) +#define CAMERA_MEDIA_TYPE_BAYBG12_PACKED (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x002D) + +#define CAMERA_MEDIA_TYPE_BAYGR16 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x002E) +#define CAMERA_MEDIA_TYPE_BAYRG16 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x002F) +#define CAMERA_MEDIA_TYPE_BAYGB16 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0030) +#define CAMERA_MEDIA_TYPE_BAYBG16 (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0031) + +/*RGB */ +#define CAMERA_MEDIA_TYPE_RGB8 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0014) +#define CAMERA_MEDIA_TYPE_BGR8 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0015) +#define CAMERA_MEDIA_TYPE_RGBA8 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY32BIT | 0x0016) +#define CAMERA_MEDIA_TYPE_BGRA8 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY32BIT | 0x0017) +#define CAMERA_MEDIA_TYPE_RGB10 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0018) +#define CAMERA_MEDIA_TYPE_BGR10 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0019) +#define CAMERA_MEDIA_TYPE_RGB12 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x001A) +#define CAMERA_MEDIA_TYPE_BGR12 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x001B) +#define CAMERA_MEDIA_TYPE_RGB16 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0033) +#define CAMERA_MEDIA_TYPE_BGR16 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x004B) +#define CAMERA_MEDIA_TYPE_RGBA16 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY64BIT | 0x0064) +#define CAMERA_MEDIA_TYPE_BGRA16 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY64BIT | 0x0051) +#define CAMERA_MEDIA_TYPE_RGB10V1_PACKED (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY32BIT | 0x001C) +#define CAMERA_MEDIA_TYPE_RGB10P32 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY32BIT | 0x001D) +#define CAMERA_MEDIA_TYPE_RGB12V1_PACKED (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY36BIT | 0X0034) +#define CAMERA_MEDIA_TYPE_RGB565P (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0035) +#define CAMERA_MEDIA_TYPE_BGR565P (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0X0036) + +/*YUV and YCbCr*/ +#define CAMERA_MEDIA_TYPE_YUV411_8_UYYVYY (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x001E) +#define CAMERA_MEDIA_TYPE_YUV422_8_UYVY (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x001F) +#define CAMERA_MEDIA_TYPE_YUV422_8 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0032) +#define CAMERA_MEDIA_TYPE_YUV8_UYV (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0020) +#define CAMERA_MEDIA_TYPE_YCBCR8_CBYCR (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x003A) +//CAMERA_MEDIA_TYPE_YCBCR422_8 : YYYYCbCrCbCr +#define CAMERA_MEDIA_TYPE_YCBCR422_8 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x003B) +#define CAMERA_MEDIA_TYPE_YCBCR422_8_CBYCRY (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0043) +#define CAMERA_MEDIA_TYPE_YCBCR411_8_CBYYCRYY (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x003C) +#define CAMERA_MEDIA_TYPE_YCBCR601_8_CBYCR (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x003D) +#define CAMERA_MEDIA_TYPE_YCBCR601_422_8 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x003E) +#define CAMERA_MEDIA_TYPE_YCBCR601_422_8_CBYCRY (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0044) +#define CAMERA_MEDIA_TYPE_YCBCR601_411_8_CBYYCRYY (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x003F) +#define CAMERA_MEDIA_TYPE_YCBCR709_8_CBYCR (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0040) +#define CAMERA_MEDIA_TYPE_YCBCR709_422_8 (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0041) +#define CAMERA_MEDIA_TYPE_YCBCR709_422_8_CBYCRY (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY16BIT | 0x0045) +#define CAMERA_MEDIA_TYPE_YCBCR709_411_8_CBYYCRYY (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0042) + +/*RGB Planar */ +#define CAMERA_MEDIA_TYPE_RGB8_PLANAR (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x0021) +#define CAMERA_MEDIA_TYPE_RGB10_PLANAR (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0022) +#define CAMERA_MEDIA_TYPE_RGB12_PLANAR (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0023) +#define CAMERA_MEDIA_TYPE_RGB16_PLANAR (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY48BIT | 0x0024) + + + +/*MindVision 12bit packed bayer*/ +#define CAMERA_MEDIA_TYPE_BAYGR12_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0060) +#define CAMERA_MEDIA_TYPE_BAYRG12_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0061) +#define CAMERA_MEDIA_TYPE_BAYGB12_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0062) +#define CAMERA_MEDIA_TYPE_BAYBG12_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0063) + +/*MindVision 12bit packed monochome*/ +#define CAMERA_MEDIA_TYPE_MONO12_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0064) +#define CAMERA_MEDIA_TYPE_YUV420P_MV (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0065) + +/*planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte V and the following byte U)*/ +#define CAMERA_MEDIA_TYPE_YUV_NV21_MV (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x0066) + +/* H264 H265 */ +#define CAMERA_MEDIA_TYPE_H264_MV (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0067) +#define CAMERA_MEDIA_TYPE_H265_MV (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0068) + +/* JPEG */ +#define CAMERA_MEDIA_TYPE_JPEG_MV (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY8BIT | 0x0069) + +/* CXP 12bit packed */ +#define CAMERA_MEDIA_TYPE_BAYGR12_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x006A) +#define CAMERA_MEDIA_TYPE_BAYRG12_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x006B) +#define CAMERA_MEDIA_TYPE_BAYGB12_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x006C) +#define CAMERA_MEDIA_TYPE_BAYBG12_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x006D) +#define CAMERA_MEDIA_TYPE_MONO12_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x006E) + +/* planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples) */ +#define CAMERA_MEDIA_TYPE_YUV444P_MV (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY24BIT | 0x006F) + +/* CXP 10bit packed */ +#define CAMERA_MEDIA_TYPE_BAYGR10_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0070) +#define CAMERA_MEDIA_TYPE_BAYRG10_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0071) +#define CAMERA_MEDIA_TYPE_BAYGB10_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0072) +#define CAMERA_MEDIA_TYPE_BAYBG10_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0073) +#define CAMERA_MEDIA_TYPE_MONO10_PACKED_CXP (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0074) + +/* MV 10bit packed */ +#define CAMERA_MEDIA_TYPE_BAYGR10_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0075) +#define CAMERA_MEDIA_TYPE_BAYRG10_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0076) +#define CAMERA_MEDIA_TYPE_BAYGB10_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0077) +#define CAMERA_MEDIA_TYPE_BAYBG10_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0078) +#define CAMERA_MEDIA_TYPE_MONO10_PACKED_MV (CAMERA_MEDIA_TYPE_MONO | CAMERA_MEDIA_TYPE_OCCUPY10BIT | 0x0079) + +/*planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (first byte U and the following byte V)*/ +#define CAMERA_MEDIA_TYPE_YUV_NV12_MV (CAMERA_MEDIA_TYPE_COLOR | CAMERA_MEDIA_TYPE_OCCUPY12BIT | 0x007A) + +#endif diff --git a/camera_sdk/inc/CameraStatus.h b/camera_sdk/inc/CameraStatus.h new file mode 100644 index 0000000..96b8618 --- /dev/null +++ b/camera_sdk/inc/CameraStatus.h @@ -0,0 +1,119 @@ + +#ifndef __CAMERA_STATUS_DEF__ +#define __CAMERA_STATUS_DEF__ + +typedef int CameraSdkStatus; + + +/*õĺ*/ +#define SDK_SUCCESS(_FUC_) ((_FUC_) == CAMERA_STATUS_SUCCESS) + +#define SDK_UNSUCCESS(_FUC_) ((_FUC_) != CAMERA_STATUS_SUCCESS) + +#define SDK_UNSUCCESS_RETURN(_FUC_,RET) if((RET = (_FUC_)) != CAMERA_STATUS_SUCCESS)\ + {\ + return RET;\ + } + +#define SDK_UNSUCCESS_BREAK(_FUC_) if((_FUC_) != CAMERA_STATUS_SUCCESS)\ + {\ + break;\ + } + + +/* ô */ + +#define CAMERA_STATUS_SUCCESS 0 // ɹ +#define CAMERA_STATUS_FAILED -1 // ʧ +#define CAMERA_STATUS_INTERNAL_ERROR -2 // ڲ +#define CAMERA_STATUS_UNKNOW -3 // δ֪ +#define CAMERA_STATUS_NOT_SUPPORTED -4 // ָ֧ù +#define CAMERA_STATUS_NOT_INITIALIZED -5 // ʼδ +#define CAMERA_STATUS_PARAMETER_INVALID -6 // Ч +#define CAMERA_STATUS_PARAMETER_OUT_OF_BOUND -7 // Խ +#define CAMERA_STATUS_UNENABLED -8 // δʹ +#define CAMERA_STATUS_USER_CANCEL -9 // ûֶȡˣroiȡ +#define CAMERA_STATUS_PATH_NOT_FOUND -10 // עûҵӦ· +#define CAMERA_STATUS_SIZE_DISMATCH -11 // ͼݳȺͶijߴ粻ƥ +#define CAMERA_STATUS_TIME_OUT -12 // ʱ +#define CAMERA_STATUS_IO_ERROR -13 // ӲIO +#define CAMERA_STATUS_COMM_ERROR -14 // ͨѶ +#define CAMERA_STATUS_BUS_ERROR -15 // ߴ +#define CAMERA_STATUS_NO_DEVICE_FOUND -16 // ûз豸 +#define CAMERA_STATUS_NO_LOGIC_DEVICE_FOUND -17 // δҵ߼豸 +#define CAMERA_STATUS_DEVICE_IS_OPENED -18 // 豸Ѿ +#define CAMERA_STATUS_DEVICE_IS_CLOSED -19 // 豸Ѿر +#define CAMERA_STATUS_DEVICE_VEDIO_CLOSED -20 // ûд豸Ƶ¼صĺʱƵûд򿪣طظô +#define CAMERA_STATUS_NO_MEMORY -21 // û㹻ϵͳڴ +#define CAMERA_STATUS_FILE_CREATE_FAILED -22 // ļʧ +#define CAMERA_STATUS_FILE_INVALID -23 // ļʽЧ +#define CAMERA_STATUS_WRITE_PROTECTED -24 // дд +#define CAMERA_STATUS_GRAB_FAILED -25 // ݲɼʧ +#define CAMERA_STATUS_LOST_DATA -26 // ݶʧ +#define CAMERA_STATUS_EOF_ERROR -27 // δյ֡ +#define CAMERA_STATUS_BUSY -28 // æ(һβڽ)˴βܽ +#define CAMERA_STATUS_WAIT -29 // Ҫȴ(в)ٴγtrf +#define CAMERA_STATUS_IN_PROCESS -30 // ڽУѾ +#define CAMERA_STATUS_IIC_ERROR -31 // IIC +#define CAMERA_STATUS_SPI_ERROR -32 // SPI +#define CAMERA_STATUS_USB_CONTROL_ERROR -33 // USBƴ +#define CAMERA_STATUS_USB_BULK_ERROR -34 // USB BULK +#define CAMERA_STATUS_SOCKET_INIT_ERROR -35 // 紫׼ʼʧ +#define CAMERA_STATUS_GIGE_FILTER_INIT_ERROR -36 // ں˹ʼʧܣǷȷװ°װ +#define CAMERA_STATUS_NET_SEND_ERROR -37 // ݷʹ +#define CAMERA_STATUS_DEVICE_LOST -38 // ʧȥӣⳬʱ +#define CAMERA_STATUS_DATA_RECV_LESS -39 // յֽ +#define CAMERA_STATUS_FUNCTION_LOAD_FAILED -40 // ļмسʧ +#define CAMERA_STATUS_CRITICAL_FILE_LOST -41 // ļʧ +#define CAMERA_STATUS_SENSOR_ID_DISMATCH -42 // ̼ͳƥ䣬ԭ˴Ĺ̼ +#define CAMERA_STATUS_OUT_OF_RANGE -43 // ЧΧ +#define CAMERA_STATUS_REGISTRY_ERROR -44 // װע°װ򣬻аװĿ¼Setup/Installer.exe +#define CAMERA_STATUS_ACCESS_DENY -45 // ֹʡָѾռʱʸ᷵ظ״̬(һܱͬʱ) +#define CAMERA_STATUS_CAMERA_NEED_RESET -46 // ʾҪλʹãʱϵϵͳ󣬱ʹá +#define CAMERA_STATUS_ISP_MOUDLE_NOT_INITIALIZED -47 // ISPģδʼ +#define CAMERA_STATUS_ISP_DATA_CRC_ERROR -48 // У +#define CAMERA_STATUS_MV_TEST_FAILED -49 // ݲʧ +#define CAMERA_STATUS_INTERNAL_ERR1 -50 // ڲ1 +#define CAMERA_STATUS_U3V_NO_CONTROL_EP -51 // U3Vƶ˵δҵ +#define CAMERA_STATUS_U3V_CONTROL_ERROR -52 // U3VͨѶ +#define CAMERA_STATUS_INVALID_FRIENDLY_NAME -53 ///< \~chinese Ч豸ﲻַܰ(\/:*?"<>|") \~english Invalid device name, the name cannot contain the following characters (\/:*?"<>|") +#define CAMERA_STATUS_FORMAT_ERROR -54 ///< \~chinese ʽ \~english Format error +#define CAMERA_STATUS_PCIE_OPEN_ERROR -55 ///< \~chinese PCIE豸ʧ \~english PCIE device open failed +#define CAMERA_STATUS_PCIE_COMM_ERROR -56 ///< \~chinese PCIE豸ͨѶʧ \~english PCIE device communication failed +#define CAMERA_STATUS_PCIE_DDR_ERROR -57 ///< \~chinese PCIE DDR \~english PCIE DDR error +#define CAMERA_STATUS_IP_ERROR -58 ///< \~chinese IP \~english IP error + + + + +//AIAƶı׼ͬ +/*#define CAMERA_AIA_SUCCESS 0x0000 */ +#define CAMERA_AIA_PACKET_RESEND 0x0100 //֡Ҫش +#define CAMERA_AIA_NOT_IMPLEMENTED 0x8001 //豸ֵ֧ +#define CAMERA_AIA_INVALID_PARAMETER 0x8002 //Ƿ +#define CAMERA_AIA_INVALID_ADDRESS 0x8003 //ɷʵĵַ +#define CAMERA_AIA_WRITE_PROTECT 0x8004 //ʵĶ󲻿д +#define CAMERA_AIA_BAD_ALIGNMENT 0x8005 //ʵĵַûаҪ +#define CAMERA_AIA_ACCESS_DENIED 0x8006 //ûзȨ +#define CAMERA_AIA_BUSY 0x8007 //ڴ +#define CAMERA_AIA_DEPRECATED 0x8008 //0x8008-0x0800B 0x800F ָѾ +#define CAMERA_AIA_PACKET_UNAVAILABLE 0x800C //Ч +#define CAMERA_AIA_DATA_OVERRUN 0x800D //ͨյݱҪĶ +#define CAMERA_AIA_INVALID_HEADER 0x800E //ݰͷijЩЭ鲻ƥ +#define CAMERA_AIA_PACKET_NOT_YET_AVAILABLE 0x8010 //ͼְݻδ׼ãڴģʽӦóʳʱ +#define CAMERA_AIA_PACKET_AND_PREV_REMOVED_FROM_MEMORY 0x8011 //ҪʵķְѾڡشʱѾڻ +#define CAMERA_AIA_PACKET_REMOVED_FROM_MEMORY 0x8012 //CAMERA_AIA_PACKET_AND_PREV_REMOVED_FROM_MEMORY +#define CAMERA_AIA_NO_REF_TIME 0x0813 //ûвοʱԴʱִͬʱ +#define CAMERA_AIA_PACKET_TEMPORARILY_UNAVAILABLE 0x0814 //ŵ⣬ǰְʱãԺз +#define CAMERA_AIA_OVERFLOW 0x0815 //豸ͨǶ +#define CAMERA_AIA_ACTION_LATE 0x0816 //ִѾЧָʱ +#define CAMERA_AIA_ERROR 0x8FFF // + +// Զ +#define CAMERA_MV_SSR_COMM_ERROR 0xF000 ///< \~chinese SSRͨѶ \~english SSR communication error +#define CAMERA_MV_SSR_TRAIN_ERROR 0xF001 ///< \~chinese SSRѵ \~english SSR training error + + + + +#endif diff --git a/camera_sdk/lib/linux/arm64/libMVSDK.so b/camera_sdk/lib/linux/arm64/libMVSDK.so new file mode 100644 index 0000000..402ea21 Binary files /dev/null and b/camera_sdk/lib/linux/arm64/libMVSDK.so differ diff --git a/camera_sdk/lib/linux/x64/libMVSDK.so b/camera_sdk/lib/linux/x64/libMVSDK.so new file mode 100644 index 0000000..625adcb Binary files /dev/null and b/camera_sdk/lib/linux/x64/libMVSDK.so differ diff --git a/docs/IMU/command.md b/docs/IMU/command.md new file mode 100644 index 0000000..467aec3 --- /dev/null +++ b/docs/IMU/command.md @@ -0,0 +1,310 @@ +# FDILink指令配置示例 + +## 进入配置模式 + +```uart +#fconfig\r\n +``` + +## 滤波器开关配置示例——将3D磁力计的融合开关打开 + +```uart +#fconfig\r\n // 1. 进入配置模式 +#fparam get AID_MAG_V_MAGNETIC\r\n // 2. 获取当前滤波器状态 +#fparam set AID_MAG_V_MAGNETIC 1\r\n // 3. 设置3D磁辅助为打开状态 +#fsave\r\n // 4. 保存设置 +#freboot\r\n // 5. 重启设备 +``` + +## 将COM2 改成NMEA(OUT) 协议 + +```uart +#fparam get AID_GNSS_VEL_UPDATE\r\n +#fparam get MAG_GEOMAGFIELD_B\r\n +#fconfig\r\n +#fdeconfig\r\n +#fsave\r\n +#freboot\r\n +y\r\n +#fconfig\r\n +``` + +## 设置端口1的类型为MAIN + +```uart +#fparam set COMM_STREAM_TYP1 1\r\n +``` + +## 设置端口4的类型为NONE + +```uart +#fparam set COMM_STREAM_TYP4 0\r\n +``` + +## 波特率修改配置 + +```uart +#fimucal_gyro\r\n +#fmagcal3d\r\n +#faxis\r\n +#fmsg 40 100\r\n +#fmsg\r\n +#fante\r\n +``` + +```c +Stream_TxBlock(stream, "UNLOG\r\n", strlen("UNLOG\r\n")); +// Stream_TxBlock(stream, "GPGGA 1\r\n", strlen("GPGGA 1\r\n")); //增加NMEA解析数据会有2-3s延迟 字符形式解析慢 +Stream_TxBlock(stream, "AGRICB 0.1\r\n", strlen("AGRICB 0.1\r\n")); +Stream_TxBlock(stream, "LOG PSRDOPB ONCHANGED\r\n", strlen("LOG PSRDOPB ONCHANGED\r\n")); +Stream_TxBlock(stream, "LOG PSRVELB ONTIME 0.1\r\n", strlen("LOG PSRVELB ONTIME 0.1\r\n")); +// Stream_TxBlock(stream, "LOG PSRPOSB ONTIME 0.1\r\n", strlen("LOG PSRPOSB ONTIME 0.1\r\n")); +Stream_TxBlock(stream, "LOG HEADINGB ONTIME 0.1\r\n", strlen("LOG HEADINGB ONTIME 0.1\r\n")); +// Stream_TxBlock(stream, "LOG BESTXYZB ONTIME 0.1\r\n", strlen("LOG BESTXYZB ONTIME 0.1\r\n")); +``` + +## fconfig指令 + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fconfig** | +| 说明 | 使导航设备由导航模式进入配置模式,配置模式下设备不再进行导航也不输出数据。所有配置命令仅在配置模式下有效。配置完成后请保存,否则已配置项不会保存和生效 | +| 格式 | `#fconfig` | +| 需要确认 | 否 | +| 重启生效 | 否 | +| 示例 | 输入:`#fconfig` — 导航设备停止输出导航结果,并输出: `#OK` | + +## fdeconfig指令 + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fdeconfig** | +| 说明 | 使导航设备由配置模式恢复导航模式 | +| 格式1 | `#fdeconfig` | +| 需要确认 | 否 | +| 重启生效 | 否 | +| 示例 | 输入:`#fdeconfig` — 导航设备重新输出导航数据 | +| 回复 | `*#OK` — 成功进入导航模式 | + +## freboot + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#freboot** | +| 说明 | 重新热启动设备 | +| 格式 | `#freboot` | +| 需要确认 | 是 | +| 重启生效 | 否 | +| 示例 | 输入`#freboot`,设备重新热启动 | +| 备注 | 重新启动时所有未保存的设置将不会保存,也不会生效。重新启动命令不会重启 gnss 模组 | + +## freset + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#freset** | +| 说明 | 将配置恢复到出厂初始值,恢复出厂配置后用户配置将全部清除,固件版本保持不变 | +| 格式 | `#freset` | +| 需要确认 | 是 | +| 重启生效 | 否 | +| 示例 | `#freset` | +| 备注 | 通过上位机的参数导出按钮可以将重置之前的用户配置保存下来 | + +## fsave + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fsave** | +| 说明 | 配置保存 | +| 格式 | `#fsave` | +| 需要确认 | 否 | +| 重启生效 | 否 | +| 示例 | `#fsave` | +| 备注 | 几乎所有的配置更改后都需要执行配置保存操作,这样重启后才能保证配置生效 | + +## fante + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fante** | +| 说明 | 配置双天线航向与载体前向夹角 | +| 格式1 | `#fante` — 查询GNSS天线配置信息:双天线航向偏角、双天线基线长度、天线杆臂 | +| 格式2 | `#fanteheadbias angle` — 其中 angle 为角度值,值域在 0 至 360°间 | +| 格式3 | `#fantebaseline length` — 配置双天线之间基线的长度,length单位为米m | +| 格式4 | `#fantearm x y z` — 配置GNSS主天线到IMU的杆臂命令 | +| 示例 | 将双天线航向与载体前向夹角设置为 270 度:
输入:`#fanteheadbias 270.0`
输出:`*#OK` | +| 备注 | 定义:主天线到从天线为基线矢量正方向,从IMU正上方看去,顺时针为天线航向偏角的正方向 | + +## fimucal + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fimucal** | +| 说明 | 校准陀螺仪、加表的常值零偏以及调平 | +| 格式1 | `#fimucal_level` — 将IMU坐标系调平至水平面,不改变陀螺和加表零偏 | +| 格式2 | `#fimucal_acce` — 执行加速度计零偏校准 | +| 格式3 | `#fimucal_gyro` — 执行陀螺仪零偏校准 | +| 需要确认 | 否 | +| 重启生效 | 是 | +| 示例 | 输入`#fimucal_level`,IMU调平校准 | +| 备注 | **注意!** 格式1和格式2需要在水平静止状态下执行该命令;格式3只需要模块保持静止 | + +## fmsg + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fmsg** | +| 说明 | 配置发送的数据内容 | +| 格式1 | `#fmsg` — 查询当前数据包信息。显示内容包括所有支持的数据包以及数据包ID以及其发送频率 | +| 格式2 | `#fmsg msg freq` — msg为2位十六进制数字,表示数据包ID;freq为设置指定数据包的发送频率 | +| 需要确认 | 否 | +| 重启生效 | 是 | +| 示例 | 输入:`#fmsg 40 100`,表示IMU数据以100Hz的频率发送
输出:`IMU [40] 100.0Hz`,表示IMU数据已经设置为100Hz的发送频率 | + +## fparam + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fparam** | +| 说明 | 读取或配置参数 | +| 格式1 | `#fparam get paramName` — paramName 需要获取的参数名称 | +| 格式2 | `#fparam set paramName paramValue` — paramName需要设置的参数名称;paramValue参数的数值,十进制 | +| 需要确认 | 否 | +| 重启生效 | 是 | +| **配置说明1:串口波特率配置** | paramName的值和paramValue的值见表1 (DETA系列) 和表2 (EPSILON系列),默认配置中COMM_BAUD1 (端口1) 的波特率被设置为921600bps | +| **示例1** | 输入:`#fparam get COMM_BAUD2\r\n`
输出:`COMM_BAUD2=5`,表示现在端口2为 115200bps
输入:`#fparam set COMM_BAUD2 8\r\n`
输出:`*#OK`,表示成功将端口2改为921600bps | +| **备注1** | 默认端口1配置为Main协议,若端口1配置为其它波特率,则保存重启后波特率也需要重新选择,同时**强烈不建议**将Main协议端口的波特率设置在115200bps以下 | +| **配置说明2:滤波开关配置** | 除了在上位机配置滤波器开关外,用户同样可以使用串口指令进行配置:paramName的值可见表3,相应的paramValue为0或者1;0表示关闭,1表示打开 | +| **示例2** | 输入:`#fparam get AID_MAG_2D_MAGNETIC\r\n`
输出:`AID_MAG_2D_MAGNETIC=1`,表示磁力计2D辅助开关是打开的
输入:`#fparam set AID_MAG_2D_MAGNETIC 0\r\n`
输出:`*#OK`,表示不使用磁力计进行融合 | +| **备注2** | 滤波开关的配置最好在测试前进行,测试中对滤波开关进行配置可能会破坏滤波器的稳定,容易导致位姿的突变与发散 | +| **配置说明3:传感器参数修改** | 用户可以使用串口指令查看或者修改位于上位机 Onboard Parameters里的所有传感器参数,包含imu参数、GNSS参数、DEBUG参数等等 | +| **示例3** | 输入:`#fparam get IMU_ACC_AVG\r\n`
输出:`IMU_ACC_AVG=9.794700`,表示当地重力加速度计为9.794700m/s²
输入:`#fparam get GNSS_MIN_VACC\r\n`
输出:`GNSS_MIN_VACC=2.500000`,表示当GNSS垂直方向的精度小于2.5m这个阈值时,才会使用GNSS进行组合导航
输入:`#fparam set GNSS_MIN_VACC 0.1\r\n`
输出:`*#OK`,表示成功将GNSS垂直方向的阈值设置为0.1m,这在客户使用RTK高精度组合导航时是有用的,可以防止在GNSS信号变差时对系统造成一定的负面影响 | +| **备注3** | 传感器参数的修改一般只用于FDISYSTEMS研发人员的调试阶段,除非用户对该领域很熟悉,否则不建议自行修改 | +| **配置说明4:端口协议配置** | 端口协议除了在上位机配置外,还能使用串口指令进行配置,端口协议见表4,常用的端口协议为Main、NAV、RTCM、NMEA和Ublox | +| **示例4** | 输入:`#fparam get COMM_STREAM_TYP1\r\n`
输出:`COMM_STREAM_TYP1=1`,表示端口1配置为Main协议
输入:`#fparam set COMM_STREAM_TYP2 2\r\n`
输出:`*#OK`,表示将端口2配置为NAV协议,即可以通过端口2获取FDILink协议的数据;此时用户通过端口1或端口2均能获取数据,此外端口1还能连接上位机,便于实时调试
输入:`#fparam set COMM_STREAM_TYP3 6\r\n`
输出:`*#OK`,表示将端口3配置为Ublox模式,如果端口3有接收到Ublox类型的数据,保存重启后即可实现GPS/INS组合导航 | +| **备注4** | 上述所有配置内容都需要`#fsave`保存,否则重新上电后失效;
此外所有端口中必须有一个配置为Main协议,只有该端口可以连接上位机 | + +## fmagcal2d + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fmagcal2d** | +| 说明 | 磁力计2d校准指令,输入完成后用户在平面上沿模块中心缓慢旋转一周后完成校准,完成后自动保存校准数据并退出当前的配置模式 | +| 格式1 | `#fmagcal2d` | +| 需要确认 | 否 | +| 重启生效 | 是 | +| 示例 | 输入:`#fmagcal2d\r\n`
输出:`*#OK`,表示可以开始进行2d校准
输出:`This is a magnetometer 2D calibration. Please wait until the magnetometer progress bar reaches 100 percent Now: 0 percent`
表示2D校准的实时进度,刷新频率为1HZ。当进度到达100 percent表示校准成功系统将立即退出当前配置模式,重新发送FDILink数据 | + +## fmagcal3d — 3D磁校准指令 + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fmagcal3d** | +| 说明 | 磁力计3d校准指令,输入完成后用户在空中缓慢画8字进行校准,完成后自动保存校准数据退出当前的配置模式 | +| 格式1 | `#fmagcal3d` | +| 需要确认 | 否 | +| 重启生效 | 是 | +| 示例 | 输入:`#fmagcal3d\r\n`
输出:`*#OK`,表示可以开始进行3d校准
输出:
`This is a magnetometer 3D calibration.`
`The fitting error of the current calculation: xxx`
`Calibration Algorithm: xxx`
表示3D校准的实时状态,刷新频率为1HZ。"The fitting error of the current calculation : xxx"表示当前计算的拟合误差,参数类型为单精度浮点数类型。"Calibration Algorithm: xxx"表示的是校准算法等级,参数等级分为Low, Mid, High三种。当计算的拟合误差小于3.000f,并算法等级等于High时表示校准成功系统将立即退出当前配置模式,即重新发送FDILink数据 | + +## fdgnss + +| 属性 | 内容 | +|:---|:---| +| **命令** | **#fdgnss** | +| 说明 | 读取或配置上位机DGNSS栏参数 | +| 格式1 | `#fdgnss get gnssName`
gnssName 需要获取的参数名称,包含:
• `RTCM_TYPE` — 发送或接收RTCM的方式
• `NET_INFO_IMEI` — SIM卡的IMEI信息(无法配置)
• `NET_INFO_CCID` — SIM卡的CCID信息(无法配置)
• `NTRIP_SVR_DOMAIN` — Ntrip的IP地址
• `NTRIP_SVR_PORT` — Ntrip的IP端口
• `NTRIP_MOUNT` — Ntrip的挂载点
• `NTRIP_ACCOUNT` — Ntrip账号
• `NTRIP_PASSWORD` — Ntrip密码
• `FDI_AUTH` — FDI云鉴权码 | +| 格式2 | `#fdgnss set gnssName gnssValue`
gnssName 需要设置的参数名称
gnssValue 参数的数值,十进制

**RTCM_TYPE参数特殊定义:**
• 0 — Radio
• 1 — 千寻位置SDK
• 2 — Ntrip配置
• 3 — FDI云

其余gnssValue无特殊定义 | +| 需要确认 | 否 | +| 重启生效 | 是 | +| 示例1 | 输入:`#fdgnss get NTRIP_SVR_PORT\r\n`
输出:`NTRIP_SVR_PORT:8002`,表示Ntrip的IP端口为8002 | +| 示例2 | **完整配置NTRIP账号过程:**
1. 输入:`#fdgnss set RTCM_TYPE 3\r\n` → 输出:`*#OK`(切换为NTRIP配置)
2. 输入:`#fdgnss set NTRIP_SVR_DOMAIN xxx.xxx.xx.xxx\r\n` → 输出:`*#OK`(IP配置成功)
3. 输入:`#fdgnss set NTRIP_SVR_PORT 8002\r\n` → 输出:`*#OK`(端口配置为8002)
4. 输入:`#fdgnss set NTRIP_MOUNT RTCM32_GGB\r\n` → 输出:`*#OK`(挂载点配置为RTCM32_GGB)
5. 输入:`#fdgnss set NTRIP_ACCOUNT qxx1234\r\n` → 输出:`*#OK`(账号配置为qxx1234)
6. 输入:`#fdgnss set NTRIP_PASSWORD 12345678\r\n` → 输出:`*#OK`(密码配置为12345678) | +| 备注 | 上述所有配置内容都需要`#fsave`保存,否则重新上电后失效 | + +## 附录表格 + +### 表1:DETA 系列v2端口波特率配置说明 + +| paramName | 端口说明 | paramValue | 对应波特率 | +|:---|:---|:---:|:---| +| COMM_BAUD1 | UART, TTL电平, 设置范围9600bps-921600bps | 1 | 9600bps | +| | | 2 | 19200bps | +| | | 3 | 38400bps | +| COMM_BAUD2 | UART, TTL电平, 设置范围9600bps-921600bps | 4 | 76800bps | +| | | 5 | 115200bps | +| | | 6 | 230400bps | +| COMM_BAUD3 | UART, TTL电平, 设置范围9600bps-921600bps | 7 | 460800bps | +| | | 8 | 921600bps | +| | | 9 | 2625000bps | +| COMM_BAUD4 | UART, TTL电平, 设置范围9600bps-921600bps | 10 | 5250000bps | +| | | 11 | 10500000bps | +| | | 12 | 100000bps | +| COMM_BAUD5 | CAN, 可设置波特率为250000bps、500000bps、1000000bps | 13 | 250000bps | +| | | 14 | 500000bps | +| | | 15 | 1000000bps | + +### 表2:EPSILON系列端口波特率配置说明 + +| paramName | 端口说明 | paramValue | 对应波特率 | +|:---|:---|:---:|:---| +| COMM_BAUD1 | RS232,设置范围9600bps-921600bps | 1 | 9600bps | +| | | 2 | 19200bps | +| | | 3 | 38400bps | +| COMM_BAUD2 | RS232,设置范围9600bps-921600bps | 4 | 76800bps | +| | | 5 | 115200bps | +| | | 6 | 230400bps | +| COMM_BAUD3 | RS422,设置范围9600bps-921600bps | 7 | 460800bps | +| | | 8 | 921600bps | +| | | 9 | 2625000bps | +| COMM_BAUD4 | GPIO TTL,设置范围9600bps-921600bps | 10 | 5250000bps | +| | | 11 | 10500000bps | +| | | 12 | 100000bps | +| COMM_BAUD5 | CAN,可设置波特率为250000bps、500000bps、1000000bps | 13 | 250000bps | +| | | 14 | 500000bps | +| | | 15 | 1000000bps | + +### 表3:SPKF融合开关说明 + +| paramName | 说明 | +|:---|:---| +| AID_ACCEL_GRAVITY | 加速度计融合开关 | +| AID_BRO_ALT_UPDATE | 气压计融合开关 | +| AID_CAR_CENT_ACCEL_NHC_ENABLED | 汽车向心加速度补偿开关 | +| AID_CAR_YZ_ZERO_VEL_NHC_ENABLED | 汽车零速更新开关 | +| AID_EXT_HEADING_UPDATE | 外部航向输入开关 | +| AID_GNSS_POS_UPDATE | GNSS 位置融合开关 | +| AID_GNSS_TRACK_HEADING_UPDATE | GNSS 航迹角融合开关 | +| AID_GNSS_VEL_UPDATE | GNSS 速度融合开关 | +| AID_GYO_TURN_ON_TARE_ENABLED | 开机时静态陀螺零偏估计开关 | +| AID_INIT_YAW_USE_MAG | 磁力计初始化航向角开关 | +| AID_MAG_2D_MAGNETIC | 磁航向融合开关 | +| AID_MAG_3D_MAGNETIC | 磁矢量融合开关 | +| AID_ODOMETER_VEL_UPDATE | 里程计融合开关 | +| AID_OPTICFLOW_UPDATE | 光流计融合开关 | +| AID_ZERO_POS_UPDATE | 零位置更新开关 | +| AID_ZERO_RATE_UPDATE | 零角速度更新开关 | +| AID_ZERO_VEL_UPDATE | 零速度更新 | + +### 表4:端口协议类型与说明 + +| paramName | 端口协议 | 说明 | paramValue | +|:---|:---|:---|:---:| +| **COMM_STREAM_TYP(1-5)** | **None** | 空 | 0 | +| | **Main** | 主协议,导航数据收发和连接上位机,通过0xF0切换模式 | 1 | +| | **NAV** | 导航模式,收发 | 2 | +| | **RTCM** | 接收差分修正数据v3版,D3 00开头 | 3 | +| | **NMEA** | 接收NMEA格式数据 | 4 | +| | **NMEA(OUT)** | 导航输出NMEA格式数据 | 5 | +| | **Ublox** | 接收UBX格式数据 | 6 | +| | **External Position** | 接收外部位置数据 | 7 | +| | **External Velocity** | 接收外部速度数据 | 8 | +| | **External Position&Velocity** | 接收外部位置和速度数据 | 9 | +| | **External Attitude angle** | 接收外部姿态数据 | 10 | +| | **External Time** | 接收外部时间数据 | 11 | +| | **External Heading** | 接收外部航向数据 | 12 | +| | **External Depth** | 接收外部深度数据 | 13 | +| | **External SLAM1** | 接收外部slam1数据 | 14 | +| | **External SLAM2** | 接收外部slam2数据 | 15 | +| | **External Pitot Pressure** | 接收外部气压计数据 | 16 | +| | **External Air speed** | 接收外部空速数据 | 17 | +| | **External Odom** | 接收外部里程计数据 | 18 | +| | **External LIDAR** | 接收外部雷达数据 | 19 | \ No newline at end of file diff --git a/docs/IMU/packet.md b/docs/IMU/packet.md new file mode 100644 index 0000000..c0cc352 --- /dev/null +++ b/docs/IMU/packet.md @@ -0,0 +1,81 @@ +# Data Packets + +FDILink 数据包提供广泛的功能。fdilink 主要数据包包含两类 **State Packets** 可以读取相关的系统状态以及导航数据。 + +这些包可以通过上位机配置后让导航系统按照一定频率主动发送,也可以通过 **Request Packets** 请求发送对应的 State Packets。 + +## State Packets + +| Packet ID | Name | Description | Length | R/W | +|--- |--- |--- |--- |--- | +| 39 | MSG_VERSION | 版本信息 | 26 | R | +| 40 | MSG_IMU | IMU传感器数据 | 56 | R | +| 41 | MSG_AHRS | 航姿参考系统数据 | 48 | R | +| 42 | MSG_INS_GPS | 组合导航输出数据 | 72 | R | +| 50 | MSG_SYS_STATE | 组合导航系统数据 | 100 | R | +| 51 | MSG_UNIX_TIME | 系统UNIX时间 | 8 | R | +| 52 | MSG_FORMAT_TIME | 系统格式时间 | 14 | R | +| 53 | MSG_STATUS | 系统状态和滤波器状态 | 4 | R | +| 54 | MSG_POS_STD_DEV | 卡尔曼滤波P矩阵的位置标准差 | 12 | R | +| 55 | MSG_VEL_STD_DEV | 卡尔曼滤波P矩阵的速度标准差 | 12 | R | +| 56 | MSG_EULER_ORIEN_STD_DEV | 卡尔曼滤波P矩阵的姿态角标准差 | 12 | R | +| 57 | MSG_QUAT_ORIEN_STD_DEV | 卡尔曼滤波P矩阵的四元数标准差 | 16 | R | +| 58 | MSG_RAW_SENSORS | 原始IMU传感器数据 | 48 | R | +| 59 | MSG_RAW_GNSS | 原始GNSS数据 | 74 | R | +| 5A | MSG_SATELLITE | 卫星简要信息 | 9 | R | +| 5B | MSG_DETAILED_SATELLITE | 卫星详细信息 | X | R | +| 5C | MSG_GEODETIC_POS | 卡尔曼滤波融合的经纬高数据 | 32 | R | +| 5D | MSG_ECEF_POS | 卡尔曼滤波融合的ECEF系坐标数据 | 24 | R | +| 5E | MSG_UTM_POS | 卡尔曼滤波融合的UTM坐标数据 | 14 | R | +| 5F | MSG_NED_VEL | 卡尔曼滤波融合的北东地速度 | 12 | R | +| 60 | MSG_BODY_VEL | 卡尔曼滤波融合的机体系XYZ速度 | 12 | R | +| 61 | MSG_ACCELERATION | 滤波修正后的机体系加速度 | 12 | R | +| 62 | MSG_BODY_ACCELERATION | 滤波修正后的机体系加速度-不含重力 | 16 | R | +| 63 | MSG_EULER_ORIEN | 卡尔曼滤波融合的欧拉角 | 12 | R | +| 64 | MSG_QUAT_ORIEN | 卡尔曼滤波融合的四元数 | 16 | R | +| 65 | MSG_DCM_ORIEN | 方向余弦矩阵 | 36 | R | +| 66 | MSG_ANGULAR_VEL | 滤波修正后的IMU角速度数据 | 12 | R | +| 67 | MSG_ANGULAR_ACC | 卡尔曼滤波估计的IMU角加速度 | 12 | R | +| 6D | MSG_RUNNING_TIME | 系统运行时长 | 8 | R | +| 6E | MSG_LOCAL_MAG_FIELD | 磁传感器相关数据 | 24 | R | +| 6F | MSG_ODOMETER_STATE | 系统解算后里程计相关数据 | 18 | R | +| 72 | MSG_GEOID_HEIGHT | 卡尔曼滤波融合的大地高度 | 4 | R | +| 75 | MSG_WIND | 系统解算后的风速 | 12 | R | +| 76 | MSG_HEAVE | 船舶海浪升沉相关数据 | 16 | R | +| 77 | MSG_RAW_SATELLITE | 原始星历数据 | X | R | +| 78 | MSG_GNSS_DUAL_ANT | GNSS双天线原始数据 | 134 | R | +| 7A | MSG_GIMBAL_STATE | 云台数据 | 8 | R | +| 7B | MSG_AUTOMOTIVE | 车载相关数据 | 24 | R | +| 80 | MSG_INSTALL_ALIGN | 系统安装偏移数据 | 45 | R | +| 81 | MSG_FILTER_OPTIONS | 卡尔曼滤波器使能状态 | 12 | R | +| 82 | MSG_GPIO_CONFIG | GPIO配置状态 | 5 | R | +| 83 | MSG_MAG_CALI_VALUES | 磁力计校准参数 | 49 | R | +| 84 | MSG_MAG_CALI_CONFIG | 磁校准方式 | 1 | R | +| 85 | MSG_MAG_CALI_STATUS | 磁校准状态 | 3 | R | +| 88 | MSG_REF_POINT_OFFSET | 船载参考点映射偏移量 | 49 | R | +| A0 | MSG_BAUD_RATES | 端口的波特率配置状态 | 25 | R | +| A1 | MSG_SENSOR_RANGES | 传感器量程 | 6 | R | + +### 外部可写入指令数据帧 + +| Packet ID | Name | Description | Length | R/W | +|--- |--- |--- |--- |--- | +| 68 | MSG_EXT_PV | 外部输入速度和位置数据 | 60 | W | +| 69 | MSG_EXT_POS | 外部输入位置数据 | 36 | W | +| 6A | MSG_EXT_VEL | 外部输入NED速度数据 | 24 | W | +| 6B | MSG_EXT_BODY_VEL | 外部输入机体系速度数据 | 24 | W | +| 6C | MSG_EXT_HEADING | 外部输入航向数据 | 8 | W | +| 70 | MSG_EXT_TIME | 外部输入时钟数据 | 8 | W | +| 71 | MSG_EXT_DEPTH | 外部输入深度数据 | 8 | W | +| 73 | MSG_RTCM_CORRECTIONS | 外部输入RTCM校准数据流 | X | W | +| 74 | MSG_EXT_PITOT_PRESS | 外部输入皮托管气压数据 | 8 | W | +| 79 | MSG_EXT_AIR | 外部输入空速数据 | 25 | W | +| 90 | MSG_EXT_ODOM | 外部输入里程计数据 | 21 | W | +| 91 | MSG_EXT_SLAM1 | 外部输入SLAM1格式数据 | 72 | W | +| 94 | MSG_EXT_DVL | 外部输入多普勒计程仪数据 | 29 | W | + +## Request Packets + +| Packet ID | Name | Description | Length | R/W | +|--- |--- |--- |--- |--- | +| A0 | MSG_REQUEST_PACKET | 数据帧请求格式 | X | W | \ No newline at end of file diff --git a/docs/IMU/protocol.md b/docs/IMU/protocol.md new file mode 100644 index 0000000..cd28883 --- /dev/null +++ b/docs/IMU/protocol.md @@ -0,0 +1,140 @@ +# 数据类型 + +有以下数据类型被在通信协议中使用。 协议中的数据类型都是 **小端序**。 + +## 数据帧组成 + +| | 帧头 | 帧头 | 帧头 | 帧头 | 帧头 | 数据区 | 数据区 | 帧尾 | +|--- |--- |--- |--- |--- |--- |--- |--- |--- | +| | 起始 | 指令类别 | 数据长度 | 流水序号 | 帧头CRC8 | 数据CRC16 | 载荷 | 结束 | +| 字节数 | 1 | 1 | 1 | 1 | 1 | 2 | 1-255 | 1 | +| 数值 | 0xFC | **A** | **B** | **C** | **D** | 高字节(E), 低字节(E) || 0xFD | + +- **A**: 指令的类别,如下表所示 + +| 指令类别 | | | +|---|---|---| +| 0x40 | 经过校准的IMU数据 | MSG_IMU | +| 0x41 | AHRS数据 | MSG_AHRS | +| 0x42 | INS/GPS数据 | MSG_INS/GPS | +| 0x58 | 传感器原始数据 | MSG_RAW_GNSS | + +- **B**: 载荷的字节数 +- **C**: 流水号,每发送一个数据帧数值加一,用于检测数据帧丢包 +- **D**: 帧头CRC8校验,计算帧头部分(起始标志 + 指令类别 + 数据长度 + 流水序号) +- **E**: 数据CRC16校验,计算载荷数据的CRC16校验 +- **F**: 0xF0 是上位机心跳请求 + +## CRC8校验 + +CRC 8校验位:标志位 + 指令类别 + 数据长度 + 流水序号 + +CRC 8校验程序如下: + +```c +static const uint8_t CRC8Table[] = { + 0, 94, 188, 226, 97, 63, 221, 131, 194, 156, 126, 32, 163, 253, 31, 65, + 157, 195, 33, 127, 252, 162, 64, 30, 95, 1, 227, 189, 62, 96, 130, 220, + 35, 125, 159, 193, 66, 28, 254, 160, 225, 191, 93, 3, 128, 222, 60, 98, + 190, 224, 2, 92, 223, 129, 99, 61, 124, 34, 192, 158, 29, 67, 161, 255, + 70, 24, 250, 164, 39, 121, 155, 197, 132, 218, 56, 102, 229, 187, 89, 7, + 219, 133, 103, 57, 186, 228, 6, 88, 25, 71, 165, 251, 120, 38, 196, 154, + 101, 59, 217, 135, 4, 90, 184, 230, 167, 249, 27, 69, 198, 152, 122, 36, + 248, 166, 68, 26, 153, 199, 37, 123, 58, 100, 134, 216, 91, 5, 231, 185, + 140, 210, 48, 110, 237, 179, 81, 15, 78, 16, 242, 172, 47, 113, 147, 205, + 17, 79, 173, 243, 112, 46, 204, 146, 211, 141, 111, 49, 178, 236, 14, 80, + 175, 241, 19, 77, 206, 144, 114, 44, 109, 51, 209, 143, 12, 82, 176, 238, + 50, 108, 142, 208, 83, 13, 239, 177, 240, 174, 76, 18, 145, 207, 45, 115, + 202, 148, 118, 40, 171, 245, 23, 73, 8, 86, 180, 234, 105, 55, 213, 139, + 87, 9, 235, 181, 54, 104, 138, 212, 149, 203, 41, 119, 244, 170, 72, 22, + 233, 183, 85, 11, 136, 214, 52, 106, 43, 117, 151, 201, 74, 20, 246, 168, + 116, 42, 200, 150, 21, 75, 169, 247, 182, 232, 10, 84, 215, 137, 107, 53 +}; +uint8_t CRC8_Table(uint8_t* p, uint8_t counter) +{ + uint8_t crc8 = 0; + for (int i = 0; i < counter; i++) + { + uint8_t value = p[i]; + uint8_t new_index = crc8 ^ value; + crc8 = CRC8Table[new_index]; + } + return (crc8); +} +``` + +CRC8 校验程序调用举例: + +```c +uint8_t CRC8 = CRC8_Table(data, data_len); +``` + +## CRC16校验 + +CRC 16校验:载荷 + +CRC 16校验程序如下: + +```c +static const uint16_t CRC16Table[256] = +{ + 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7, + 0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF, + 0x1231, 0x0210, 0x3273, 0x2252, 0x52B5, 0x4294, 0x72F7, 0x62D6, + 0x9339, 0x8318, 0xB37B, 0xA35A, 0xD3BD, 0xC39C, 0xF3FF, 0xE3DE, + 0x2462, 0x3443, 0x0420, 0x1401, 0x64E6, 0x74C7, 0x44A4, 0x5485, + 0xA56A, 0xB54B, 0x8528, 0x9509, 0xE5EE, 0xF5CF, 0xC5AC, 0xD58D, + 0x3653, 0x2672, 0x1611, 0x0630, 0x76D7, 0x66F6, 0x5695, 0x46B4, + 0xB75B, 0xA77A, 0x9719, 0x8738, 0xF7DF, 0xE7FE, 0xD79D, 0xC7BC, + 0x48C4, 0x58E5, 0x6886, 0x78A7, 0x0840, 0x1861, 0x2802, 0x3823, + 0xC9CC, 0xD9ED, 0xE98E, 0xF9AF, 0x8948, 0x9969, 0xA90A, 0xB92B, + 0x5AF5, 0x4AD4, 0x7AB7, 0x6A96, 0x1A71, 0x0A50, 0x3A33, 0x2A12, + 0xDBFD, 0xCBDC, 0xFBBF, 0xEB9E, 0x9B79, 0x8B58, 0xBB3B, 0xAB1A, + 0x6CA6, 0x7C87, 0x4CE4, 0x5CC5, 0x2C22, 0x3C03, 0x0C60, 0x1C41, + 0xEDAE, 0xFD8F, 0xCDEC, 0xDDCD, 0xAD2A, 0xBD0B, 0x8D68, 0x9D49, + 0x7E97, 0x6EB6, 0x5ED5, 0x4EF4, 0x3E13, 0x2E32, 0x1E51, 0x0E70, + 0xFF9F, 0xEFBE, 0xDFDD, 0xCFFC, 0xBF1B, 0xAF3A, 0x9F59, 0x8F78, + 0x9188, 0x81A9, 0xB1CA, 0xA1EB, 0xD10C, 0xC12D, 0xF14E, 0xE16F, + 0x1080, 0x00A1, 0x30C2, 0x20E3, 0x5004, 0x4025, 0x7046, 0x6067, + 0x83B9, 0x9398, 0xA3FB, 0xB3DA, 0xC33D, 0xD31C, 0xE37F, 0xF35E, + 0x02B1, 0x1290, 0x22F3, 0x32D2, 0x4235, 0x5214, 0x6277, 0x7256, + 0xB5EA, 0xA5CB, 0x95A8, 0x8589, 0xF56E, 0xE54F, 0xD52C, 0xC50D, + 0x34E2, 0x24C3, 0x14A0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405, + 0xA7DB, 0xB7FA, 0x8799, 0x97B8, 0xE75F, 0xF77E, 0xC71D, 0xD73C, + 0x26D3, 0x36F2, 0x0691, 0x16B0, 0x6657, 0x7676, 0x4615, 0x5634, + 0xD94C, 0xC96D, 0xF90E, 0xE92F, 0x99C8, 0x89E9, 0xB98A, 0xA9AB, + 0x5844, 0x4865, 0x7806, 0x6827, 0x18C0, 0x08E1, 0x3882, 0x28A3, + 0xCB7D, 0xDB5C, 0xEB3F, 0xFB1E, 0x8BF9, 0x9BD8, 0xABBB, 0xBB9A, + 0x4A75, 0x5A54, 0x6A37, 0x7A16, 0x0AF1, 0x1AD0, 0x2AB3, 0x3A92, + 0xFD2E, 0xED0F, 0xDD6C, 0xCD4D, 0xBDAA, 0xAD8B, 0x9DE8, 0x8DC9, + 0x7C26, 0x6C07, 0x5C64, 0x4C45, 0x3CA2, 0x2C83, 0x1CE0, 0x0CC1, + 0xEF1F, 0xFF3E, 0xCF5D, 0xDF7C, 0xAF9B, 0xBFBA, 0x8FD9, 0x9FF8, + 0x6E17, 0x7E36, 0x4E55, 0x5E74, 0x2E93, 0x3EB2, 0x0ED1, 0x1EF0 +}; +uint16_t CRC16_Table(uint8_t* p, uint8_t counter) +{ + uint16_t crc16 = 0; + for (int i = 0; i < counter; i++) + { + uint8_t value = p[i]; + crc16 = CRC16Table[((crc16 >> 8) ^ value) & 0xff] ^ (crc16 << 8); + } + return (crc16); +} +``` + +CRC16 校验程序调用举例: + +```c +uint16_t CRC16 = CRC16_Table(payload, length); +``` + +## AN数据帧定义与自定义CAN_ID + +打开 FDIGroundStation 上位机,连接设备后将 COMM 板块的 CAN 数据输出口设置为 **NAV** 选项后,用户即可通过CAN获取数据,输出数据帧定义与FDILink协议一致,如下表所示。 + +| | 帧头 | 帧头 | 帧头 | 帧头 | 帧头 | 数据区 | 数据区 | 帧尾 | +|--- |--- |--- |--- |--- |--- |--- |--- |--- | +| | 起始 | 指令类别 | 数据长度 | 流水序号 | 帧头CRC8 | 数据CRC16 | 载荷 | 结束 | +| 字节数 | 1 | 1 | 1 | 1 | 1 | 2 | 1-255 | 1 | +| 数值 | 0xFC | **A** | **B** | **C** | **D** | 高字节(E), 低字节(E) || 0xFD | \ No newline at end of file diff --git a/docs/RefreeSys/packet.md b/docs/RefreeSys/packet.md new file mode 100644 index 0000000..df296d6 --- /dev/null +++ b/docs/RefreeSys/packet.md @@ -0,0 +1,91 @@ +# RoboMaster 2026 机甲大师高校系列赛通信协议 + +**版本**: V1.2.0 +**发布日期**: 2026年02月 + +--- + +## 1. 串口协议 + +### 1.1 串口协议格式 + +通信方式为串口,配置为: +- **常规链路波特率**: 115200 +- **图传链路波特率**: 921600 +- **数据位**: 8位 +- **停止位**: 1位 +- **硬件流控**: 无 +- **校验位**: 无 + +#### 表 1-1 通信协议格式 + +| 字段 | 长度 | 说明 | +|:---|:---:|:---| +| frame_header | 5-byte | 帧头 | +| cmd_id | 2-byte | 命令码 | +| data | n-byte | 数据 | +| frame_tail | 2-byte | CRC16 整包校验 | + +#### 表 1-2 frame_header 格式 + +| 字段 | 长度 | 说明 | +|:---|:---:|:---| +| SOF | 1-byte | 起始字节 | +| data_length | 2-byte | 数据长度 | +| seq | 1-byte | 包序号 | +| CRC8 | 1-byte | 帧头 CRC8 校验 | + +#### 表 1-3 帧头详细定义 + +| 域 | 偏移位置 | 大小(字节) | 详细描述 | +|:---|:---:|:---:|:---| +| SOF | 0 | 1 | 数据帧起始字节,固定值为 0xA5 | +| data_length | 1 | 2 | 数据帧中 data 的长度 | +| seq | 3 | 1 | 包序号 | +| CRC8 | 4 | 1 | 帧头 CRC8 校验 | + +> **数据链路说明**: 裁判系统串口数据链路有三种:**常规链路**、**图传链路**、**雷达无线链路**。 + +--- + +### 1.2 命令码 ID 和常规链路数据说明 + +#### 表 1-4 命令码 ID 一览 + +| 命令码 | 数据段长度 | 说明 | 发送方/接收方 | 所属数据链路 | +|:---|:---:|:---|:---|:---:| +| 0x0001 | 11 | 比赛状态数据,固定以 1Hz 频率发送 | 服务器→全体机器人 | 常规链路 | +| 0x0002 | 1 | 比赛结果数据,比赛结束触发发送 | 服务器→全体机器人 | 常规链路 | +| 0x0003 | 16 | 机器人血量数据,固定以 3Hz 频率发送 | 服务器→全体机器人 | 常规链路 | +| 0x0101 | 4 | 场地事件数据,固定以 1Hz 频率发送 | 服务器→己方全体机器人 | 常规链路 | +| 0x0104 | 3 | 裁判警告数据,己方判罚/判负时触发发送,其余时间以 1Hz 频率发送 | 服务器→被判罚方全体机器人 | 常规链路 | +| 0x0105 | 3 | 飞镖发射相关数据,固定以 1Hz 频率发送 | 服务器→己方全体机器人 | 常规链路 | +| 0x0201 | 13 | 机器人性能体系数据,固定以 10Hz 频率发送 | 主控模块→对应机器人 | 常规链路 | +| 0x0202 | 14 | 实时底盘缓冲能量和射击热量数据,固定以 10Hz 频率发送 | 主控模块→对应机器人 | 常规链路 | +| 0x0203 | 16 | 机器人位置数据,固定以 1Hz 频率发送 | 主控模块→对应机器人 | 常规链路 | +| 0x0204 | 8 | 机器人增益和底盘能量数据,固定以 3Hz 频率发送 | 服务器→对应机器人 | 常规链路 | +| 0x0206 | 1 | 伤害状态数据,伤害发生后发送 | 主控模块→对应机器人 | 常规链路 | +| 0x0207 | 7 | 实时射击数据,弹丸发射后发送 | 主控模块→对应机器人 | 常规链路 | +| 0x0208 | 6 | 允许发弹量,固定以 10Hz 频率发送 | 服务器→己方英雄、步兵、哨兵、空中机器人 | 常规链路 | +| 0x0209 | 5 | 机器人 RFID 模块状态,固定以 3Hz 频率发送 | 服务器→己方装有 RFID 模块的机器人 | 常规链路 | +| 0x020A | 6 | 飞镖选手端指令数据,固定以 3Hz 频率发送 | 服务器→己方飞镖机器人 | 常规链路 | +| 0x020B | 40 | 地面机器人位置数据,固定以 1Hz 频率发送 | 服务器→己方哨兵机器人 | 常规链路 | +| 0x020C | 2 | 雷达标记进度数据,固定以 1Hz 频率发送 | 服务器→己方雷达机器人 | 常规链路 | +| 0x020D | 6 | 哨兵自主决策信息同步,固定以 1Hz 频率发送 | 服务器→己方哨兵机器人 | 常规链路 | +| 0x020E | 1 | 雷达自主决策信息同步,固定以 1Hz 频率发送 | 服务器→己方雷达机器人 | 常规链路 | +| 0x0301 | 118 | 机器人交互数据,发送方触发发送,频率上限为 30Hz | - | 常规链路 | +| 0x0302 | 30 | 自定义控制器与机器人交互数据,发送方触发发送,频率上限为 30Hz | 自定义控制器→选手端图传连接的机器人 | 图传链路 | +| 0x0303 | 15 | 选手端小地图交互数据,选手端触发发送 | 选手端点击→服务器→发送方选择的己方机器人 | 常规链路 | +| 0x0305 | 24 | 选手端小地图接收雷达数据,频率上限为 5Hz | 雷达→服务器→己方所有选手端 | 常规链路 | +| 0x0306 | 8 | 自定义控制器与选手端交互数据,发送方触发发送,频率上限为 30Hz | 自定义控制器→选手端 | - | +| 0x0307 | 103 | 选手端小地图接收路径数据,频率上限为 1Hz | 哨兵/半自动控制机器人→对应操作手选手端 | 常规链路 | +| 0x0308 | 34 | 选手端小地图接收机器人数据,频率上限为 3Hz | 己方机器人→己方选手端 | 常规链路 | +| 0x0309 | 30 | 自定义控制器接收机器人数据,频率上限为 10Hz | 己方机器人→对应操作手选手端连接的自定义控制器 | 图传链路 | +| 0x0310 | 300 | 机器人发送给自定义客户端的数据,频率上限为 50Hz | 己方机器人→图传链路→对应操作手选手端连接的自定义客户端 | 图传链路 | +| 0x0311 | 30 | 自定义客户端发送给机器人的自定义指令,频率上限为 75Hz | 对应操作手选手端连接的自定义客户端→图传链路→己方机器人 | 图传链路 | +| 0x0A01 | 24 | 对方机器人的位置坐标,频率上限为 10Hz | 信号发射源→雷达 | 雷达无线链路 | +| 0x0A02 | 12 | 对方机器人的血量信息,频率上限为 10Hz | 信号发射源→雷达 | 雷达无线链路 | +| 0x0A03 | 10 | 对方机器人的剩余发弹量信息,频率上限为 10Hz | 信号发射源→雷达 | 雷达无线链路 | +| 0x0A04 | 8 | 对方队伍的宏观状态信息,频率上限为 10Hz | 信号发射源→雷达 | 雷达无线链路 | +| 0x0A05 | 36 | 对方各机器人当前增益效果,频率上限为 10Hz | 信号发射源→雷达 | 雷达无线链路 | +| 0x0A06 | 6 | 对方干扰波密钥,频率上限为 10Hz | 信号发射源→雷达 | 雷达无线链路 | diff --git a/docs/Transmit/ctrl_command.md b/docs/Transmit/ctrl_command.md new file mode 100644 index 0000000..a1bdb81 --- /dev/null +++ b/docs/Transmit/ctrl_command.md @@ -0,0 +1,27 @@ +# 控制指令的发送说明 + +在主机外接收的控制板中的控制代码的实现是: + +```c +// CAN 速率 1000kbps +void CToC_CANDataProcess(unit32_t ID, uint8_t *Data) +{ + // 以下所有变量有效范围为 [-660,660] + if(ID == 0x149) // 运动控制 + { + + Remote_RxData.Remote_R_RL =(int16_t)((uint16_t)Data[0]<<8 | Data[1]); // 平动 X 轴(左右) + Remote_RxData.Remote_R_UD =(int16_t)((uint16_t)Data[2]<<8 | Data[3]); // 平动 Y 轴(前后) + Remote_RxData.Remote_L_RL =(int16_t)((uint16_t)Data[4]<<8 | Data[5]); // 云台偏航 (左右) + Remote_RxData.Remote_L_UD =(int16_t)((uint16_t)Data[6]<<8 | Data[7]); // 云台俯仰 (上下) + } + else if(ID == 0x189) // 攻击控制 + { + Remote_RxData.Remote_ThumbWheel =(int16_t)((uint16_t)Data[0]<<8 | Data[1]); // 拨弹盘(进弹/退弹),660 为进弹,0 为关闭,-660 为退弹 + Remote_RxData.Remote_RS =(int16_t)((uint16_t)Data[2]<<8 | Data[3]); // 小陀螺(反自瞄)开关,置 660 为开启,0 为关闭 + Remote_RxData.Remote_LS =(int16_t)((uint16_t)Data[4]<<8 | Data[5]); // 摩擦轮开关, 置 660 为开启,0 为关闭 + } +} +``` + +两个 ID 分别是云台和底盘的控制板,在处于进点/回家状态时不应开启小陀螺,发射弹丸需要**打开摩擦轮 同时 进弹**,因此只有在处于攻击状态时开启摩擦轮,此时可以将进弹视为扳机。 \ No newline at end of file diff --git a/transmitter_sdk/example.c b/transmitter_sdk/example.c new file mode 100644 index 0000000..e69de29 diff --git a/transmitter_sdk/inc/pub_user.h b/transmitter_sdk/inc/pub_user.h new file mode 100755 index 0000000..27fc139 --- /dev/null +++ b/transmitter_sdk/inc/pub_user.h @@ -0,0 +1,149 @@ +// +// Created by 93094 on 2025/12/23. +// + +#ifndef DM_DEVICE_PUB_USER_H +#define DM_DEVICE_PUB_USER_H + +#define DEVICE_EXPORTS + +#ifdef _WIN32 + #ifdef DEVICE_EXPORTS + #define DEVICE_API __declspec(dllexport) + #else + #define DEVICE_API __declspec(dllimport) + #endif +#else + #define DEVICE_API __attribute__((visibility("default"))) +#endif + +#ifdef __cplusplus + +#include + +extern "C" +{ + typedef struct damiao_handle hDamiaoUsb; + typedef struct device_handle hDevice; + +#pragma pack(push,1) + typedef struct + { + uint32_t can_id:29; //can id + uint32_t esi:1; //错误状态指示 一般不用 + uint32_t ext:1; //拓展帧 1-拓展帧 0-标准帧 + uint32_t rtr:1; //远程帧 1-远程帧 0-数据帧 + uint8_t canfd:1; //canfd 1-canfd帧 0-can2.0帧 + uint8_t brs:1; //波特率切换 1-切换 0-不切换 + uint8_t id_inc:1; //ID自增 1-自增 0-不自增 + uint8_t data_inc:1; //数据自增 1-自增 0-不自增 + uint8_t dlc:4; //数据长度 + uint8_t channel; //通道号 + uint16_t reserved; //预留字节 + uint16_t step_id; //步进ID + uint32_t stop_id; //停止ID + uint32_t interval; //发送间隔 + int32_t send_times; //发送次数 + + }usb_tx_frame_head_t; + + typedef struct + { + usb_tx_frame_head_t head; + uint8_t payload[64]; + + }usb_tx_frame_t; + + + typedef struct + { + uint32_t can_id:29; //can id + uint32_t esi:1; //错误状态指示 一般不用 + uint32_t ext:1; //类型:标准/拓展 + uint32_t rtr:1; //类型:数据/远程 + uint64_t time_stamp; //时间戳 + uint8_t channel; //发送通道 + uint8_t canfd:1; //类型:2.0/fd + uint8_t dir:1; //方向:rx/tx + uint8_t brs:1; //BRS + uint8_t ack:1; //应答标志 + uint8_t dlc:4; //长度 + uint16_t reserved; //预留字节 + }usb_rx_frame_head_t; + + typedef struct + { + usb_rx_frame_head_t head; + uint8_t payload[64]; + + }usb_rx_frame_t ; + + typedef struct + { + int can_baudrate; + int canfd_baudrate; + float can_sp; + float canfd_sp; + }device_baud_t; + + typedef enum + { + DEV_None=-1, + DEV_USB2CANFD=0, + DEV_USB2CANFD_DUAL, + DEV_ECAT2CANFD + }device_def_t; + + typedef struct + { + uint8_t channel; + uint8_t can_fd; + uint8_t can_seg1; + uint8_t can_seg2; + uint8_t can_sjw; + uint8_t can_prescaler; + uint8_t canfd_seg1; + uint8_t canfd_seg2; + uint8_t canfd_sjw; + uint8_t canfd_prescaler; + }dmcan_ch_can_config_t; + + +#pragma pack(pop) + + + typedef void (*dev_rec_callback)(usb_rx_frame_t* rec_frame); + typedef void (*dev_sent_callback)(usb_rx_frame_t* sent_frame); + typedef void (*dev_err_callback)(usb_rx_frame_t* err_frame); + + + DEVICE_API damiao_handle* damiao_handle_create(device_def_t type); + DEVICE_API void damiao_handle_destroy(damiao_handle* handle); + DEVICE_API void damiao_print_version(damiao_handle* handle); + DEVICE_API void damiao_get_sdk_version(damiao_handle* handle, char* version_buf, size_t buf_size); + DEVICE_API int damiao_handle_find_devices(damiao_handle* handle); + DEVICE_API void damiao_handle_get_devices(damiao_handle* handle,device_handle** dev_list, int* device_count); + DEVICE_API void device_get_version(device_handle* dev, char* version_buf, size_t buf_size); + DEVICE_API void device_get_pid_vid(device_handle* dev, int* pid, int* vid); + DEVICE_API void device_get_serial_number(device_handle* dev, char* serial_buf, size_t buf_size); + DEVICE_API void device_get_type(device_handle* dev, device_def_t* type); + DEVICE_API bool device_open(device_handle* dev); + DEVICE_API bool device_close(device_handle* dev); + DEVICE_API bool device_save_config(device_handle* dev); + DEVICE_API bool device_open_channel(device_handle* dev, uint8_t channel); + DEVICE_API bool device_close_channel(device_handle* dev, uint8_t channel); + DEVICE_API bool device_channel_get_baudrate(device_handle*dev ,uint8_t channel,device_baud_t* baud); + DEVICE_API bool device_channel_set_baud(device_handle*dev ,uint8_t channel,bool canfd,int bitrate,int dbitrate); + DEVICE_API bool device_channel_set_baud_with_sp(device_handle*dev ,uint8_t channel,bool canfd,int bitrate,int dbitrate,float can_sp,float canfd_sp); + DEVICE_API void device_hook_to_rec(device_handle*dev,dev_rec_callback callback); + DEVICE_API void device_hook_to_sent(device_handle*dev,dev_sent_callback callback); + DEVICE_API void device_hook_to_err(device_handle*dev,dev_err_callback callback); + DEVICE_API void device_channel_send(device_handle*dev,usb_tx_frame_t frame); + DEVICE_API void device_channel_send_fast(device_handle*dev,uint8_t ch,uint32_t can_id,int32_t cnt,bool ext,bool canfd,bool brs,uint8_t len,uint8_t* payload); + DEVICE_API void device_channel_send_advanced(device_handle*dev,uint8_t ch,uint32_t can_id,uint16_t step_id,uint32_t stop_id,int32_t cnt,bool id_inc,bool data_inc,bool ext,bool canfd,bool brs,uint8_t len,uint8_t* payload); +} + + +#endif + +#endif //DM_DEVICE_PUB_USER_H \ No newline at end of file diff --git a/transmitter_sdk/lib/linux/arm64/libdm_device.so b/transmitter_sdk/lib/linux/arm64/libdm_device.so new file mode 100755 index 0000000..ed22cbb Binary files /dev/null and b/transmitter_sdk/lib/linux/arm64/libdm_device.so differ diff --git a/transmitter_sdk/lib/linux/x64/libdm_device.so b/transmitter_sdk/lib/linux/x64/libdm_device.so new file mode 100755 index 0000000..3727af8 Binary files /dev/null and b/transmitter_sdk/lib/linux/x64/libdm_device.so differ