/*************************************************************************************************** * * 版权信息:版权所有 (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