You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
visioncontroller/src/IOController/NewSdkInc/MvIOInterfaceBoxDefine.h

289 lines
13 KiB
C

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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