|
|
#ifndef _HVDEVICEUTILS_H_
|
|
|
#define _HVDEVICEUTILS_H_
|
|
|
|
|
|
#include "tinyxml.h"
|
|
|
#include "HvDeviceEx.h"
|
|
|
#include "HvCameraType.h"
|
|
|
#include "HVAPI_HANDLE_CONTEXT_EX.h"
|
|
|
#include<sys/types.h>
|
|
|
#include<sys/socket.h>
|
|
|
#include<unistd.h>
|
|
|
|
|
|
|
|
|
#define PROTOCOL_MERCURY 1
|
|
|
#define PROTOCOL_EARTH 2
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ifndef SAFE_DELETE
|
|
|
#define SAFE_DELETE(p) if (p) {delete p; p = NULL ; }
|
|
|
#endif
|
|
|
|
|
|
#define IVN_MAX_SIZE 128
|
|
|
|
|
|
#ifndef SAFE_DELETE_ARG
|
|
|
#define SAFE_DELETE_ARG(p) if ( p ) {delete[] p; p = NULL; }
|
|
|
#endif
|
|
|
|
|
|
//结果图片信息结构体
|
|
|
typedef struct _RECORD_IMAGE_INFO_EX
|
|
|
{
|
|
|
RECT rcPlate;
|
|
|
RECT rcFacePos[20];
|
|
|
int nFaceCount;
|
|
|
DWORD32 dwCarID;
|
|
|
DWORD32 dwWidth;
|
|
|
DWORD32 dwHeight;
|
|
|
DWORD64 dw64TimeMs;
|
|
|
}_RECORD_IMAGE_INFO_EX;
|
|
|
|
|
|
//结果图片结构体
|
|
|
typedef struct _RECORD_IMAGE_EX
|
|
|
{
|
|
|
_RECORD_IMAGE_INFO_EX cImgInfo;
|
|
|
PBYTE pbImgInfo;
|
|
|
PBYTE pbImgData;
|
|
|
DWORD dwImgInfoLen;
|
|
|
DWORD dwImgDataLen;
|
|
|
}RECORD_IMAGE_EX;
|
|
|
|
|
|
//视频结构体
|
|
|
typedef struct _RECORD_VIDEO_ILLEGAL
|
|
|
{
|
|
|
PBYTE pbVideoInfo;
|
|
|
PBYTE pbVideoData;
|
|
|
DWORD dwVideoInfoLen;
|
|
|
DWORD dwVideoDataLen;
|
|
|
DWORD dwCarID;
|
|
|
DWORD dwWidth;
|
|
|
DWORD dwHeight;
|
|
|
DWORD64 dw64TimeMS;
|
|
|
}RECORD_VIDEO_ILLEGAL;
|
|
|
|
|
|
//结果图片集结构体
|
|
|
typedef struct _RECORD_IMAGE_GROUP_EX
|
|
|
{
|
|
|
RECORD_IMAGE_EX cBestSnapshot;
|
|
|
RECORD_IMAGE_EX cLastSnapshot;
|
|
|
RECORD_IMAGE_EX cBeginCapture;
|
|
|
RECORD_IMAGE_EX cBestCapture;
|
|
|
RECORD_IMAGE_EX cLastCapture;
|
|
|
RECORD_IMAGE_EX cPlatePicture;
|
|
|
RECORD_IMAGE_EX cPlateBinary;
|
|
|
RECORD_VIDEO_ILLEGAL cIllegalVideo;
|
|
|
}RECORD_IMAGE_GROUP_EX;
|
|
|
|
|
|
|
|
|
// 水星协议命令输入/输出的类型
|
|
|
typedef enum {
|
|
|
XML_CMD_TYPE_NULL, // 既无入参也无出参
|
|
|
XML_CMD_TYPE_CUSTOM, // 由代码自行定义参数格式
|
|
|
XML_CMD_TYPE_INT,
|
|
|
XML_CMD_TYPE_DOUBLE,
|
|
|
XML_CMD_TYPE_FLOAT,
|
|
|
XML_CMD_TYPE_BOOL,
|
|
|
XML_CMD_TYPE_DWORD,
|
|
|
XML_CMD_TYPE_STRING,
|
|
|
XML_CMD_TYPE_BIN,
|
|
|
XML_CMD_TYPE_INTARRAY1D,
|
|
|
XML_CMD_TYPE_INTARRAY2D
|
|
|
} XML_CMD_TYPE;
|
|
|
|
|
|
//命令解析辅助用结构体
|
|
|
typedef struct _CXmlParseInfo
|
|
|
{
|
|
|
CHAR szKeyName[128];
|
|
|
CHAR szKeyValue[128];
|
|
|
INT nKeyValueLen;
|
|
|
XML_CMD_TYPE eKeyType;
|
|
|
_CXmlParseInfo()
|
|
|
{
|
|
|
szKeyName[0]='\0';
|
|
|
szKeyValue[0]='\0';
|
|
|
nKeyValueLen = 128;
|
|
|
eKeyType = XML_CMD_TYPE_NULL;
|
|
|
}
|
|
|
}CXmlParseInfo;
|
|
|
|
|
|
//XML协议关键字宏
|
|
|
#define HX_TYPE "TYPE"
|
|
|
#define HX_TYPE_INT "INT"
|
|
|
#define HX_TYPE_STRING "STRING"
|
|
|
#define HX_TYPE_BIN "BIN"
|
|
|
#define HX_TYPE_FLOAT "FLOAT"
|
|
|
#define HX_CMDNAME "CmdName"
|
|
|
#define HX_VALUE "Value"
|
|
|
#define HX_RECODE "Value"
|
|
|
#define HX_RETMSG "RetMsg"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* sock服务的初始化
|
|
|
* @return [成功:TRUE 失败:FALSE]
|
|
|
*/
|
|
|
bool InitWSA();
|
|
|
|
|
|
/**
|
|
|
* sock服务的卸载
|
|
|
* @return [成功:TRUE 失败:FALSE]
|
|
|
*/
|
|
|
bool UnInitWSA();
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 创建SOCKET
|
|
|
* @param[in] af 地址族
|
|
|
* @param[in] type sock类型
|
|
|
* @param[in] protocol 套接口所用的协议
|
|
|
* @return [成功:返回套接字 失败:返回NULL ]
|
|
|
*/
|
|
|
SOCKET HvCreateSocket(int af=AF_INET, int type=SOCK_STREAM, int protocol=0);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [HvSetRecvTimeOut 设置接收超时]
|
|
|
* @param hSocket [套接字]
|
|
|
* @param iMS [超时 毫秒]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvSetRecvTimeOut(const SOCKET& hSocket, int iMS);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [HvSetSendTimeOut 设置发送超时]
|
|
|
* @param hSocket [套接字]
|
|
|
* @param iMS [超时 毫秒]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvSetSendTimeOut(const SOCKET& hSocket, int iMS);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [HvListen 监听一体机连接]
|
|
|
* @param hSocket [套接字]
|
|
|
* @param nPort [端口]
|
|
|
* @param backlog [返回日志]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvListen(const SOCKET& hSocket, int nPort, int backlog);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [HvAccept 等待一体机连接]
|
|
|
* @param hSocket [本地套接字]
|
|
|
* @param hNewSocket [远程套接字]
|
|
|
* @param iTimeout [超时时间 单位:毫秒]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvAccept(const SOCKET& hSocket, SOCKET& hNewSocket, int iTimeout/*=-1*/);
|
|
|
|
|
|
/**
|
|
|
* 输出日志
|
|
|
* @param pszLog [日志内容]
|
|
|
*/
|
|
|
void WriteLog(const char *pszLog);
|
|
|
|
|
|
/**
|
|
|
* [RecvAll 完整接收socket上的数据]
|
|
|
* @param socket [套接字]
|
|
|
* @param pBuffer [接收数据缓冲区]
|
|
|
* @param iRecvLen [缓冲区长度]
|
|
|
* @return [实际接收的数据长度]
|
|
|
*/
|
|
|
int RecvAll( int socket, char *pBuffer, int iRecvLen );
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [RecvAll 完整接收socket上的数据]
|
|
|
* @param socket [套接字]
|
|
|
* @param pBuffer [接收数据缓冲区]
|
|
|
* @param iRecvLen [缓冲区长度]
|
|
|
* @param iRealRecvLen [实际接收的数据长度]
|
|
|
* @return [实际接收的数据长度]
|
|
|
*/
|
|
|
int RecvAll(int socket, char *pBuffer, int iRecvLen , int& iRealRecvLen) ;
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [ExecXmlExtCmd 发送执行xml协议命令]
|
|
|
* @param szIP [设备IP]
|
|
|
* @param szXmlCmd [发送的xml数据]
|
|
|
* @param szRetBuf [返回的xml数据]
|
|
|
* @param nBufLen [返回的xml数据长度]
|
|
|
* @return [成功:TRUE 失败:FALSE]
|
|
|
*/
|
|
|
bool ExecXmlExtCmd(char* szIP, char* szXmlCmd, char* szRetBuf, int& nBufLen);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [ExecXmlExtCmd 发送执行xml协议命令]
|
|
|
* @param szXmlCmd [发送的xml数据]
|
|
|
* @param szRetBuf [返回的xml数据]
|
|
|
* @param iBufLen [返回的xml数据长度]
|
|
|
* @param sktSend [设备套接字]
|
|
|
* @return [成功:TRUE 失败:FALSE]
|
|
|
*/
|
|
|
bool ExecXmlExtCmd(char* szXmlCmd, char* szRetBuf,
|
|
|
int& iBufLen, SOCKET sktSend);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [IsNewProtocol 是否为支持的设备新协议]
|
|
|
* @param szIP [设备IP]
|
|
|
* @return [成功:TRUE 失败:FALSE]
|
|
|
*/
|
|
|
bool IsNewProtocol(char *szIP);
|
|
|
|
|
|
/**
|
|
|
* [SearchHVDeviceCount 获取局域网内的设备数]
|
|
|
* @param pdwCount [设备数]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT SearchHVDeviceCount(DWORD32 *pdwCount);
|
|
|
|
|
|
/**
|
|
|
* [GetHVDeviceAddr 根据索引查询设备网络参数]
|
|
|
* @param iIndex [索引号]
|
|
|
* @param pdw64MacAddr [网卡物理地址]
|
|
|
* @param pdwIP [设备IP]
|
|
|
* @param pdwMask [子网掩码]
|
|
|
* @param pdwGateway [网关]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT GetHVDeviceAddr(int iIndex,
|
|
|
DWORD64 *pdw64MacAddr,
|
|
|
DWORD32 *pdwIP,
|
|
|
DWORD32 *pdwMask,
|
|
|
DWORD32 *pdwGateway);
|
|
|
|
|
|
/**
|
|
|
* [SetIPFromMac 通过MAC修改IP]
|
|
|
* @param dw64MacAddr [网卡物理地址]
|
|
|
* @param dwIP [修改后的IP]
|
|
|
* @param dwMask [修改后的子网]
|
|
|
* @param dwGateway [修改后的网关]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT SetIPFromMac(DWORD64 dw64MacAddr, DWORD dwIP,DWORD dwMask, DWORD dwGateway);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [BuildHvCmdXml 生成xml数据]
|
|
|
* @param pXmlBuf [保存xml数据的缓冲区地址]
|
|
|
* @param pCmdName [命令]
|
|
|
* @param iArgCount [命令个数]
|
|
|
* @param rgszName [参数名数组]
|
|
|
* @param rgszValue [参数所带的值数组]
|
|
|
* @return [生成的xml长度]
|
|
|
*/
|
|
|
int BuildHvCmdXml(
|
|
|
char* pXmlBuf,
|
|
|
char* pCmdName,
|
|
|
int iArgCount,
|
|
|
const char rgszName[][IVN_MAX_SIZE],
|
|
|
const char rgszValue[][IVN_MAX_SIZE]
|
|
|
);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [GetParamStringFromXml 从HvXml协议信息中 获取指定参数的 Vaule(String)]
|
|
|
* @param pCmdArgElement [xml对象]
|
|
|
* @param pszParamName [参数名]
|
|
|
* @param pszParamValue [参数值]
|
|
|
* @param nParamValueSize [参数值长度]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT GetParamStringFromXml(
|
|
|
const TiXmlElement* pCmdArgElement,
|
|
|
const char *pszParamName,
|
|
|
char *pszParamValue,
|
|
|
int nParamValueSize
|
|
|
);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [GetParamIntFromXml 从HvXml协议信息中 获取指定参数的 Vaule(int)]
|
|
|
* @param pCmdArgElement [xml对象]
|
|
|
* @param pszParamName [参数名]
|
|
|
* @param pnParamValue [参数值]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT GetParamIntFromXml(
|
|
|
const TiXmlElement* pCmdArgElement,
|
|
|
const char *pszParamName,
|
|
|
int *pnParamValue
|
|
|
);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [HvGetDeviceExteInfo 获取设备扩展信息]
|
|
|
* @param iIndex [设备索引号]
|
|
|
* @param lpExtInfo [获取的扩展信息]
|
|
|
* @param iBufLen [获取的扩展信息长度]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvGetDeviceExteInfo(int iIndex, LPSTR lpExtInfo, int iBufLen);
|
|
|
|
|
|
/**
|
|
|
* [HvGetXmlProtocolVersion 获取协议版本]
|
|
|
* @param szIP [设备IP]
|
|
|
* @param pdwVersionType [设备类型枚举]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvGetXmlProtocolVersion(char* szIP, DWORD *pdwVersionType);
|
|
|
|
|
|
/**
|
|
|
* [ConnectCamera 连接设备]
|
|
|
* @param szIp [设备IP]
|
|
|
* @param wPort [端口]
|
|
|
* @param hSocket [套接字]
|
|
|
* @param iTryTimes [重试次数]
|
|
|
* @param iReceiveTimeOutMs [接收超时 单位:毫秒]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
bool ConnectCamera( char *szIp, WORD wPort, int &hSocket, int iTryTimes=0, int iReceiveTimeOutMs = 20000);
|
|
|
|
|
|
/**
|
|
|
* [HvGetRecordImage 从结果数据解析图片集到结果图片集结构体]
|
|
|
* @param pbRecordData [结果数据]
|
|
|
* @param dwRecordDataLen [结果数据长度]
|
|
|
* @param pRecordImag [结果图片集结构体]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvGetRecordImage(PBYTE pbRecordData, DWORD dwRecordDataLen, RECORD_IMAGE_GROUP_EX* pRecordImag);
|
|
|
|
|
|
/**
|
|
|
* [HvGetRecordImage_Mercury 根据图片附加信息,从结果数据解析图片集到结果图片集结构体]
|
|
|
* @param szAppendInfo [输出图片附加信息]
|
|
|
* @param pbRecordData [结果数据]
|
|
|
* @param dwRecordDataLen [结果数据长度]
|
|
|
* @param pcRecordImage [结果图片集结构体]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvGetRecordImage_Mercury(const char* szAppendInfo, PBYTE pbRecordData, DWORD dwRecordDataLen, RECORD_IMAGE_GROUP_EX* pcRecordImage);
|
|
|
|
|
|
/**
|
|
|
* [HvMakeXmlInfoByString 判断及解析Xml或Xml字符串命令,并生成Xml数据]
|
|
|
* @param fNewProtocol [是否新的协议类型]
|
|
|
* @param inXmlOrStrBuf [输入的命令字或xml]
|
|
|
* @param nInlen [命令字长度]
|
|
|
* @param szOutXmlBuf [xml数据缓存区]
|
|
|
* @param nOutlen [xml数据缓冲区长度]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvMakeXmlInfoByString(bool fNewProtocol, const char*inXmlOrStrBuf, int nInlen,
|
|
|
char* szOutXmlBuf, int &nOutlen);
|
|
|
|
|
|
/**
|
|
|
* [HvMakeXmlCmdByString 判断及解析Xml或Xml字符串命令,并生成Xml数据]
|
|
|
* @param fNewProtocol [是否新的协议类型]
|
|
|
* @param inXmlOrStrBuf [输入的命令字或xml]
|
|
|
* @param nInlen [命令字长度]
|
|
|
* @param szOutXmlBuf [xml数据缓存区]
|
|
|
* @param nOutlen [xml数据缓冲区长度]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvMakeXmlCmdByString(bool fNewProtocol, const char* inXmlOrStrBuf, int nInlen, char *szOutXmlBuf, int &nOutlen);
|
|
|
|
|
|
/**
|
|
|
* [HvMakeXmlCmdByString 判断及解析Xml或Xml字符串命令,并生成Xml数据]
|
|
|
* @param inXmlOrStrBuf [输入的命令字或xml]
|
|
|
* @param nInlen [命令字长度]
|
|
|
* @param szOutXmlBuf [xml数据缓存区]
|
|
|
* @param nOutlen [xml数据缓冲区长度]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvMakeXmlCmdByString( const char* inXmlOrStrBuf, int nInlen, char *szOutXmlBuf, int &nOutlen);
|
|
|
|
|
|
/**
|
|
|
* [HvParseXmlCmdRespRetcode2 从XML2.0协议信息命令执行返回的结果中解析出指定信息]
|
|
|
* @param szXmlBuf [输入设备端返回的xml]
|
|
|
* @param szCmdName [命令名]
|
|
|
* @param nInfoValueName [参数名]
|
|
|
* @param szInfoValueText [参数值]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvParseXmlCmdRespRetcode2(char*szXmlBuf, char* szCmdName,
|
|
|
char* nInfoValueName, char* szInfoValueText);
|
|
|
|
|
|
/**
|
|
|
* [HvParseXmlCmdRespRetcode 从HvXml协议命令执行返回的结果中解析出返回码]
|
|
|
* @param szXmlBuf [输入设备端返回的xml]
|
|
|
* @param szCommand [命令字]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvParseXmlCmdRespRetcode(char* szXmlBuf, char* szCommand);
|
|
|
|
|
|
/**
|
|
|
* [HvParseXmlInfoRespValue 从HvXml协议信息获取执行返回的结果中解析出指定信息]
|
|
|
* @param szXmlBuf [输入设备端返回的xml]
|
|
|
* @param szInfoName [命令字]
|
|
|
* @param nCmdValueName [参数名]
|
|
|
* @param szCmdValueText [参数值]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvParseXmlInfoRespValue(char*szXmlBuf, char* szInfoName,
|
|
|
char* nCmdValueName, char* szCmdValueText);
|
|
|
|
|
|
/**
|
|
|
* [HvSendXmlCmd 向设备发送xml命令]
|
|
|
* @param szIP [设备IP]
|
|
|
* @param szCmd [含命令的xml]
|
|
|
* @param szRetBuf [设备返回xml数据缓冲区]
|
|
|
* @param iBufLen [缓冲区长度]
|
|
|
* @param piRetLen [实际返回长度]
|
|
|
* @param sktSend [发送套接字]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvSendXmlCmd(char *szIP, LPCSTR szCmd, LPSTR szRetBuf, INT iBufLen, INT *piRetLen, int sktSend);
|
|
|
|
|
|
/**
|
|
|
* [HvSendXmlCmd 向设备发送xml命令]
|
|
|
* @param szCmd [含命令的xml]
|
|
|
* @param szRetBuf [设备返回xml数据缓冲区]
|
|
|
* @param iBufLen [缓冲区长度]
|
|
|
* @param piRetLen [实际返回长度]
|
|
|
* @param dwXmlVersion [xml协议版本 保留]
|
|
|
* @param sktSend [发送套接字]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvSendXmlCmd(LPCSTR szCmd, LPSTR szRetBuf, INT iBufLen, INT* piRetLen, DWORD dwXmlVersion, SOCKET sktSend);
|
|
|
|
|
|
/**
|
|
|
* [ExecXmlExtCmdEx 向设备发送xml命令]
|
|
|
* @param szIP [设备IP]
|
|
|
* @param szXmlCmd [含命令的xml]
|
|
|
* @param szRetBuf [缓冲区长度]
|
|
|
* @param iBufLen [缓冲区长度]
|
|
|
* @param sktSend [发送套接字]
|
|
|
* @return [成功: TRUE 失败: FALSE]
|
|
|
*/
|
|
|
bool ExecXmlExtCmdEx(char *szIP, char *szXmlCmd, char *szRetBuf, int &iBufLen, int sktSend);
|
|
|
|
|
|
/**
|
|
|
* [ExecXmlExtCmdMercury 向设备发送xml命令]
|
|
|
* @param szIP [设备IP]
|
|
|
* @param szXmlCmd [含命令的xml]
|
|
|
* @param szRetBuf [缓冲区长度]
|
|
|
* @param iBufLen [缓冲区长度]
|
|
|
* @param sktSend [发送套接字]
|
|
|
* @return [成功: TRUE 失败: FALSE]
|
|
|
*/
|
|
|
bool ExecXmlExtCmdMercury(char* szIP, char* szXmlCmd, char* szRetBuf, int& iBufLen, int sktSend);
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [ExecXmlExtCmd 通过指定的SOCKET执行Xml命令]
|
|
|
* @param szXmlCmd [含命令的xml]
|
|
|
* @param szRetBuf [缓冲区长度]
|
|
|
* @param iBufLen [缓冲区长度]
|
|
|
* @param sktSend [发送套接字]
|
|
|
* @return [成功: TRUE 失败: FALSE]
|
|
|
*/
|
|
|
bool ExecXmlExtCmd(char* szXmlCmd, char* szRetBuf,
|
|
|
int& iBufLen, SOCKET sktSend);
|
|
|
|
|
|
/**
|
|
|
* [HvSafeCloseThread 安全关闭线程]
|
|
|
* @param pthreadHandle [线程句柄]
|
|
|
*/
|
|
|
void HvSafeCloseThread(pthread_t &pthreadHandle);
|
|
|
|
|
|
/**
|
|
|
* [ForceCloseSocket 强制关闭套接字]
|
|
|
* @param iNetSocket [套接字]
|
|
|
* @return [成功 0 失败 SOCKET_ERROR]
|
|
|
*/
|
|
|
int ForceCloseSocket(int &iNetSocket);
|
|
|
|
|
|
/**
|
|
|
* [Yuv2BMP Yuv数据转为bmp格式]
|
|
|
* @param pbDest [输出BMP数据的缓冲区指针]
|
|
|
* @param iDestBufLen [输出缓冲区大小]
|
|
|
* @param piDestLen [实际输出数据大小]
|
|
|
* @param pbSrc [输入YUV数据的缓冲区指针]
|
|
|
* @param iSrcWidth [图像宽度]
|
|
|
* @param iSrcHeight [图像高度;]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT Yuv2BMP(
|
|
|
BYTE *pbDest,
|
|
|
int iDestBufLen,
|
|
|
int *piDestLen,
|
|
|
BYTE *pbSrc,
|
|
|
int iSrcWidth,
|
|
|
int iSrcHeight
|
|
|
);
|
|
|
|
|
|
/**
|
|
|
* [Bin2BMP 二值图数据转换为BMP格式]
|
|
|
* @param pbBinData [二值图数据]
|
|
|
* @param pbBmpData [bmp数据]
|
|
|
* @param nBmpLen [bmp实际长度]
|
|
|
*/
|
|
|
void Bin2BMP(PBYTE pbBinData, PBYTE pbBmpData, INT& nBmpLen);
|
|
|
|
|
|
/**
|
|
|
* [HvEnhanceTrafficLight 设置红灯加红]
|
|
|
* @param pbSrcImg [源图片]
|
|
|
* @param dwiSrcImgDataLen [源图片数据长度]
|
|
|
* @param iRedLightCount [红灯数量]
|
|
|
* @param pbRedLightPos [红灯位置]
|
|
|
* @param pbDestImgBuf [目的图片缓存区]
|
|
|
* @param dwDestImgBufLen [目的图片缓冲区长度]
|
|
|
* @param iBrightness [图片亮度增强]
|
|
|
* @param iHueThreshold [红灯加红色度阀值]
|
|
|
* @param iCompressRate [回红后图片压缩率]
|
|
|
* @return [description]
|
|
|
*/
|
|
|
HRESULT HvEnhanceTrafficLight(PBYTE pbSrcImg, DWORD dwiSrcImgDataLen, int iRedLightCount,
|
|
|
PBYTE pbRedLightPos, PBYTE pbDestImgBuf, DWORD& dwDestImgBufLen,
|
|
|
INT iBrightness, INT iHueThreshold, INT iCompressRate);
|
|
|
|
|
|
/**
|
|
|
* [HvMakeXmlCmdByString1 制作协议1的xml]
|
|
|
* @param inXmlOrStrBuf [命令字]
|
|
|
* @param nInlen [命令长度]
|
|
|
* @param szOutXmlBuf [输出xml缓冲]
|
|
|
* @param nOutlen [输出xml缓冲长度]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvMakeXmlCmdByString1(const char* inXmlOrStrBuf, int nInlen,
|
|
|
char* szOutXmlBuf, int& nOutlen);
|
|
|
|
|
|
/**
|
|
|
* [HvMakeXmlCmdByString2 制作协议2的xml]
|
|
|
* @param inXmlOrStrBuf [命令字]
|
|
|
* @param nInlen [命令长度]
|
|
|
* @param szOutXmlBuf [输出xml缓冲]
|
|
|
* @param nOutlen [输出xml缓冲长度]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvMakeXmlCmdByString2(const char* inXmlOrStrBuf, int nInlen,
|
|
|
char* szOutXmlBuf, int& nOutlen);
|
|
|
|
|
|
/**
|
|
|
* [HvMakeXmlCmdByString3 制作协议3的xml]
|
|
|
* @param inXmlOrStrBuf [命令字]
|
|
|
* @param nInlen [命令长度]
|
|
|
* @param szOutXmlBuf [输出xml缓冲]
|
|
|
* @param nOutlen [输出xml缓冲长度]
|
|
|
* @return [成功:S_OK;失败:E_FAIL]
|
|
|
*/
|
|
|
HRESULT HvMakeXmlCmdByString3(const char* inXmlOrStrBuf, int nInlen,
|
|
|
char* szOutXmlBuf, int& nOutlen);
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* [GetProtocolVersion 根据IP获取设备协议类型]
|
|
|
* @param szIP [设备IP]
|
|
|
* @return [协议类型枚举]
|
|
|
*/
|
|
|
PROTOCOL_VERSION GetProtocolVersion(char* szIP);
|
|
|
|
|
|
HRESULT HvGetDeviceType(LPCSTR szDeviceIp, WORD wAddPort, PROTOCOL_VERSION sProtocol, CHAR* szDeviceType);
|
|
|
|
|
|
#endif // _HVDEVICEUTILS_H_
|
|
|
|