|
|
/***************************************************************************************************
|
|
|
*
|
|
|
* 版权信息:版权所有 (c) 2018保留所有权利
|
|
|
*
|
|
|
* 文件名称:MvInterfaceBoxDefine.h
|
|
|
* 摘 要:视觉控制器常见定义头文件
|
|
|
*
|
|
|
* 备 注:无
|
|
|
*
|
|
|
***************************************************************************************************/
|
|
|
|
|
|
/***************************************************************************************************
|
|
|
*
|
|
|
* Copyright: Copyright: Copyright (c) 2018 all rights reserved
|
|
|
*
|
|
|
* File name: MvInterfaceBoxDefine.h
|
|
|
* Abstract: Common definition header file of Visual controller
|
|
|
*
|
|
|
* Remarks: None
|
|
|
*
|
|
|
***************************************************************************************************/
|
|
|
#ifndef MV_IO_INTERFACE_BOX_DEFINE_H__
|
|
|
#define MV_IO_INTERFACE_BOX_DEFINE_H__
|
|
|
|
|
|
#ifndef IN
|
|
|
#define IN
|
|
|
#endif
|
|
|
|
|
|
#ifndef OUT
|
|
|
#define OUT
|
|
|
#endif
|
|
|
|
|
|
#define MV_SERIAL_BUF_LEN 1024 //ch:串口buffer长度 | en : Serial buffer length
|
|
|
|
|
|
#define MV_SERIAL_RECVBUF_MAXLEN (1024*1024) //ch:一次性接收串口数据的最大值 | en:Max value of received data at one time
|
|
|
|
|
|
// 用于区分命令类型
|
|
|
typedef enum MVCL_CTRL_TYPE__
|
|
|
{
|
|
|
CTRL_INPUT_LEVEL = 0x00, // ch:获取输入口高低电平信息 |en: Get high and low level information of input port
|
|
|
CTRL_RESET_PARAM = 0x01, // ch:恢复默认参数值 |en: Restore default parameter values
|
|
|
CTRL_VERSION_INFO = 0x02, // ch:获取版本信息 |en: Get vision information
|
|
|
CTRL_PATTERN_SET_INFO = 0x03, // ch:获取模式信息 |en: Get mode information
|
|
|
CTRL_INPUT_SET_INFO = 0x04, // ch:获取IO输入口设置信息 |en: Get IO input port setting information
|
|
|
CTRL_OUTPUT_SET_INFO = 0x05, // ch:获取IO输出口设置信息 |en: Get IO output port setting information
|
|
|
CTRL_LIGHT_SET_INFO = 0x06, // ch:获取光源设置信息 |en: Get lighting settings information
|
|
|
CTRL_FILTER_SET_INFO = 0x07, // ch:获取滤波设置信息 |en: Get filter setting information
|
|
|
}MVCL_CTRL_TYPE;
|
|
|
|
|
|
|
|
|
/*************************************************************************
|
|
|
*ch:常见宏定义 en| Common macro definitions
|
|
|
*************************************************************************/
|
|
|
const static unsigned int MV_IO_MAX_COM_NAME_LENGTH = 64; // ch:最大的串口名称长度 | en:Max serial port name length
|
|
|
const static unsigned int MV_IO_MAX_PROC_STATE_LEN = 64; // ch:最大的升级进度状态长度 | en:Max upgrade state length
|
|
|
|
|
|
/*************************************************************************
|
|
|
* 枚举定义 | en: Enumeration definition
|
|
|
*************************************************************************/
|
|
|
|
|
|
// ch:关闭串口默认超时时间 en: Default timeout for closing serial port
|
|
|
#define CLOSE_SERIAL_DEFAULT_TIMEOUT 3000
|
|
|
|
|
|
/** @enum MV_IO_PATTERN_OUT
|
|
|
* @brief ch:输出模式选择 | en: Output mode selection
|
|
|
*/
|
|
|
typedef enum MV_IO_PATTERN_OUT__
|
|
|
{
|
|
|
MV_IO_PATTERN_PWM = 0x05, // PWM
|
|
|
MV_IO_PATTERN_SINGLE = 0x06, // SINGLE
|
|
|
} MV_IO_PATTERN_OUT;
|
|
|
|
|
|
/** @enum MV_IO_PORT_NUMBER
|
|
|
* @brief ch:Port口定义 | en: port definition
|
|
|
* ch:输入和输出的7个Port口均用这7个宏定义表示 | en:The eight port ports of input and output are represented by these seven macro definitions
|
|
|
* ch:若要同时控制两个Port口输出,可以将其或运算(例如: MV_IO_PORT_1 | MV_IO_PORT_2)
|
|
|
* en: To enable the output of two port ports at the same time, the or operation can be performed(ex: MV_IO_PORT_1 | MV_IO_PORT_2)
|
|
|
*/
|
|
|
typedef enum MV_IO_PORT_NUMBER__
|
|
|
{
|
|
|
MV_IO_PORT_1 = 0x1, // ch:端口1 | en: port1
|
|
|
MV_IO_PORT_2 = 0x2, // ch:端口2 | en: port2
|
|
|
MV_IO_PORT_3 = 0x4, // ch:端口3 | en: port3
|
|
|
MV_IO_PORT_4 = 0x8, // ch:端口4 | en: port4
|
|
|
MV_IO_PORT_5 = 0x10, // ch:端口5 | en: port5
|
|
|
MV_IO_PORT_6 = 0x20, // ch:端口6 | en: port6
|
|
|
MV_IO_PORT_7 = 0x40, // ch:端口7 | en: port7
|
|
|
MV_IO_PORT_8 = 0x80, // ch:端口8 | en: port8
|
|
|
} MV_IO_PORT_NUMBER;
|
|
|
|
|
|
/** @enum MV_IO_EDGE_TYPE
|
|
|
* @brief ch:沿定义,用户表示输入信号的触发 | en:Edge definition
|
|
|
*/
|
|
|
typedef enum MV_IO_EDGE_TYPE__
|
|
|
{
|
|
|
MV_IO_EDGE_UNKNOW = 0x00, // ch:未知 | en: Unknow
|
|
|
MV_IO_EDGE_RISING = 0x01, // ch:上升沿 | en: Rising edge
|
|
|
MV_IO_EDGE_FALLING = 0x02, // ch:下降沿 | en: Falling edge
|
|
|
} MV_IO_EDGE_TYPE;
|
|
|
|
|
|
/** @enum MV_IO_ENABLE_TYPE
|
|
|
* @brief ch:使能类型定义,用于控制串口模式情况下的触发 | en: Enable type definition, used to control the trigger in serial mode
|
|
|
*/
|
|
|
typedef enum MV_IO_ENABLE_TYPE__
|
|
|
{
|
|
|
MV_IO_ENABLE_START = 0x00, // ch:使能开始 | en: Enable
|
|
|
MV_IO_ENABLE_END = 0x01, // ch:使能结束 | en: Disable
|
|
|
} MV_IO_ENABLE_TYPE;
|
|
|
|
|
|
/** @enum MV_IO_LIGHTSTATE
|
|
|
* @brief ch:光源常亮常灭 | en: Light states
|
|
|
*/
|
|
|
typedef enum MV_IO_LIGHTSTATE__
|
|
|
{
|
|
|
MV_IO_LIGHTSTATE_ON = 0x0001, // ch:触发后常亮 | en:Light on after triggering
|
|
|
MV_IO_LIGHTSTATE_OFF = 0x0002, // ch:触发后常灭 | en:Light off after triggering
|
|
|
} MV_IO_LIGHTSTATE;
|
|
|
|
|
|
// 消息类型
|
|
|
typedef enum MVCL_MSG_TYPE__
|
|
|
{
|
|
|
MSG_TYPE_UNKNOW = 0x00, // ch:未知 | en:Unknow
|
|
|
MSG_TYPE_NORMAL = 0x02, // ch:可识别正常消息类型 | en:Normal
|
|
|
}MVCL_MSG_TYPE;
|
|
|
|
|
|
/*************************************************************************
|
|
|
* ch:结构体定义 | en:Struct definition
|
|
|
*************************************************************************/
|
|
|
|
|
|
/** @struct MV_IO_SERIAL
|
|
|
* @brief ch:串口参数 | en:Serial param
|
|
|
*/
|
|
|
typedef struct MV_IO_SERIAL__
|
|
|
{
|
|
|
char strComName[MV_IO_MAX_COM_NAME_LENGTH]; // ch:串口名称 | en:Serial port name
|
|
|
unsigned int nReserved[8]; // ch:保留字段 | en:Reserve
|
|
|
} MV_IO_SERIAL;
|
|
|
|
|
|
/** @struct MV_IO_LIGHT_PARAM
|
|
|
* @brief ch:亮度参数设置 | en:Parameter setting of light source module
|
|
|
*/
|
|
|
typedef struct MV_IO_LIGHT_PARAM__
|
|
|
{
|
|
|
unsigned char nPortNumber; // ch:亮度端口 | en:Light port
|
|
|
unsigned short nLightValue; // ch:光源亮度值(0-100之间) | en:Light value(0-100)
|
|
|
unsigned short nLightState; // ch:触发后常亮还是常灭 | en:Light on or off after triggering
|
|
|
unsigned short nLightEdge; // ch:上升沿触发还是下降沿触发 | en:Rising or falling edge trigger
|
|
|
unsigned int nDurationTime; // ch:持续时间 | en:Duration Time
|
|
|
unsigned int nReserved[3]; // ch:保留字段 | en:Reserved
|
|
|
} MV_IO_LIGHT_PARAM;
|
|
|
|
|
|
/** @struct MV_IO_ASSOCIATE_PARAM
|
|
|
* @brief ch:输入关联输出端口参数设置 | en:Input associated output port parameter setting
|
|
|
*/
|
|
|
typedef struct MV_IO_ASSOCIATEPORT_PARAM__
|
|
|
{
|
|
|
unsigned short nInPortNum; // ch:被关联的输入端口 | en:Associated input port
|
|
|
unsigned short nOutPortNum; // ch:关联的输出端口,(PORT_1)代表关联1号口,(PORT_1 | PORT_2)代表关联1号和2号口,(以此类推)
|
|
|
// en:Associated output port, (Port_ 1)For the associated port 1, (Port_ 1 | PORT_ 2) Represents the connection between port 1 and port 2, and so on
|
|
|
unsigned int nReserved[4]; // ch:保留字段 | en:Reserved
|
|
|
} MV_IO_ASSOCIATEPORT_PARAM;
|
|
|
|
|
|
|
|
|
/** @struct MV_IO_OUTPUT_ENABLE
|
|
|
* @brief ch:设置输出使能 | en:Set output enable
|
|
|
*/
|
|
|
typedef struct MV_IO_OUTPUT_ENABLE__
|
|
|
{
|
|
|
unsigned char nPortNumber; // 使能端口,若多个端口同时使能可以执行或运算 | en:Enable port, if more than one port is enabled at the same time, it can perform or operation
|
|
|
unsigned char nType; // MV_IO_ENABLE_START 表示使能开始,MV_IO_ENABLE_END表示使能结束 | en:en:MV_IO_ENABLE_START:start of enabling,MV_IO_ENABLE_END:end of enabling
|
|
|
unsigned int nReserved[4]; // 保留字段 | en:Reserved
|
|
|
} MV_IO_OUTPUT_ENABLE;
|
|
|
|
|
|
/** @struct MV_IO_INPUT_LEVEL
|
|
|
* @brief ch:输入电平 en: Input level
|
|
|
*/
|
|
|
typedef struct MV_IO_INPUT_LEVEL__
|
|
|
{
|
|
|
unsigned char nPortNumber; // ch:端口号,参考MV_IO_PORT_NUMBER | en: Port number.reference MV_IO_PORT_NUMBER
|
|
|
unsigned char nLevel0; // ch:1号口电平信息 |en:Level information of port1
|
|
|
unsigned char nLevel1; // ch:2号口电平信息 |en:Level information of port2
|
|
|
unsigned char nLevel2; // ch:3号口电平信息 |en:Level information of port3
|
|
|
unsigned char nLevel3; // ch:4号口电平信息 |en:Level information of port4
|
|
|
unsigned char nLevel4; // ch:5号口电平信息 |en:Level information of port5
|
|
|
unsigned char nLevel5; // ch:6号口电平信息 |en:Level information of port6
|
|
|
unsigned char nLevel6; // ch:7号口电平信息 |en:Level information of port7
|
|
|
unsigned char nLevel7; // ch:8号口电平信息 |en:Level information of port8
|
|
|
unsigned int nReserved[8]; // ch:保留字节 | en:Reserved
|
|
|
}MV_IO_INPUT_LEVEL;
|
|
|
|
|
|
/** @struct MV_IO_INPUT_EDGE
|
|
|
* @brief ch:检测输入沿信息类型的结构体 | en:Detects the structure of the input along the information type
|
|
|
*/
|
|
|
typedef struct MV_IO_INPUT_EDGE_TYPE__
|
|
|
{
|
|
|
unsigned char nPortNumber; // ch:端口号 | en:Port number
|
|
|
unsigned short nTriggerTimes; // ch:对应端口触发次数 | en:Trigger times of corresponding port
|
|
|
enum MV_IO_EDGE_TYPE enEdgeType; // ch:沿类型 | en:Trigger edge type
|
|
|
unsigned int nReserved[8]; // ch:保留字节 | en:Reserved
|
|
|
}MV_IO_INPUT_EDGE_TYPE;
|
|
|
|
|
|
/** @struct MV_IO_VERSION
|
|
|
* @brief ch:SDK版本号 | en:SDK vision
|
|
|
*/
|
|
|
typedef struct MV_IO_VERSION__
|
|
|
{
|
|
|
unsigned int nMainVersion; // ch:主版本号 | en:Major version
|
|
|
unsigned int nSubVersion; // ch:次版本号 | en:Minor version
|
|
|
unsigned int nModifyVersion; // ch:修订版本号 | en:Revision
|
|
|
unsigned int nYear; // ch:年 | en:Year
|
|
|
unsigned int nMonth; // ch:月 | en:month
|
|
|
unsigned int nDay; // ch:日 | en:date
|
|
|
unsigned int nReserved[8]; // ch:保留字节 | en:Reserved
|
|
|
}MV_IO_VERSION;
|
|
|
|
|
|
/** @struct MV_IO_SET_INPUT
|
|
|
* @brief ch:输入端口设置 | en:Input port setting
|
|
|
*/
|
|
|
typedef struct MV_IO_SET_INPUT__
|
|
|
{
|
|
|
unsigned int nPort; // ch:输入端口 | Input port
|
|
|
unsigned int nEnable; // ch:使能状态,1表示开启,0表示关闭 | en:Enable state, 1 is on, 0 is off
|
|
|
unsigned int nEdge; // ch:触发沿 | en:Trigger edge
|
|
|
unsigned int nDelayTime; // ch:触发延迟 | en:Trigger delay
|
|
|
unsigned int nGlitch; // ch:去抖时间 | en:Debounce time
|
|
|
unsigned int nReserved[8]; // ch:保留字节 | en:Reserved
|
|
|
}MV_IO_SET_INPUT;
|
|
|
|
|
|
/** @struct MV_IO_SET_OUTPUT
|
|
|
* @brief ch:输出端口设置 | en:Output port setting
|
|
|
*/
|
|
|
typedef struct MV_IO_SET_OUTPUT__
|
|
|
{
|
|
|
unsigned int nPort; // 输出端口 | en:Output port
|
|
|
unsigned int nType; // 输出模式(包含单脉冲模式和PWM模式) | en:Output mode(Single pulse and PWM mode )
|
|
|
unsigned int nPulseWidth; // 脉冲宽度 | en:Pulse width
|
|
|
unsigned int nPulsePeriod; // 脉冲周期 | en:Pulse period
|
|
|
unsigned int nDurationTime; // 脉冲持续时间 | en:Pulse duration
|
|
|
unsigned int nValidLevel; // 有效电平,1表示高电平,0表示低电平 | en:Effective level, 1 is high level, 0 is low level
|
|
|
unsigned int nReserved[8]; // 保留字节 | en:Reserved
|
|
|
}MV_IO_SET_OUTPUT;
|
|
|
|
|
|
|
|
|
/** @struct MV_IO_LOCAL_UPGRADE
|
|
|
* @brief ch:固件升级状态 | en:Firmware upgrade status
|
|
|
*/
|
|
|
typedef struct MV_IO_LOCAL_UPGRADE__
|
|
|
{
|
|
|
unsigned int nProcPercent; // ch:升级进度 | en:Upgrade progress
|
|
|
char chProcState[MV_IO_MAX_PROC_STATE_LEN]; // ch:升级状态 | en:Upgrade status
|
|
|
|
|
|
unsigned int nReserved[8]; // ch:保留字节 | en:Reserved
|
|
|
}MV_IO_LOCAL_UPGRADE;
|
|
|
|
|
|
|
|
|
// ch:检测电平回调函数 | en:Detection level callback function
|
|
|
typedef void (__stdcall* DetectFunType)(void *, MV_IO_INPUT_EDGE_TYPE*, void*);
|
|
|
|
|
|
/** @struct MV_SERIAL_DEVICE
|
|
|
* @brief ch: 串口设备 en: serial device
|
|
|
*/
|
|
|
typedef struct MV_SERIAL_DEVICE_
|
|
|
{
|
|
|
void* pMvSerial; // 串口句柄
|
|
|
DetectFunType pCallbackFun; // 沿检测函数
|
|
|
void* hCallBackThreadHandle; // 回调句柄
|
|
|
unsigned int bCallbackRunning; // 判断回调线程是否正在执行
|
|
|
void* hSerialRecvThreadHandle; // 串口接收数据线程句柄
|
|
|
unsigned int bSerialRecvRunning; // 判断串口是否正在接收数据
|
|
|
char nReserved[32]; // 保留字节
|
|
|
}MV_SERIAL_DEVICE;
|
|
|
|
|
|
/** @struct MV_SERIAL_DATA
|
|
|
* @brief ch: 串口数据 | en: serial Data
|
|
|
*/
|
|
|
typedef struct MV_SERIAL_DATA_
|
|
|
{
|
|
|
unsigned int bUsed; // ch:标志位,数据是否使用 | en:Flag bit, whether the data is used or not
|
|
|
MVCL_MSG_TYPE nType; // ch:数据类型 | en: Data type
|
|
|
unsigned int nRecvLen; // ch:接收数据长度 | en:Received data length
|
|
|
double fRecvTime; // ch:接收数据时间 | en:Received data time
|
|
|
char* pSerialRecvBuf; // ch:接收的数据 | en:Data received
|
|
|
char* pInitRecvBuf; // ch:初始数据 | en:Initial data
|
|
|
}MV_SERIAL_DATA;
|
|
|
|
|
|
|
|
|
#endif
|
|
|
|