递归火山软件开发平台
标题:
关于大华类库的封装
[打印本页]
作者:
xtfje
时间:
2021-6-12 16:17
标题:
关于大华类库的封装
本帖最后由 xtfje 于 2021-6-12 16:24 编辑
原来在易里做过一个大华的ITC215车辆号牌摄像头识别,并应该在了地磅称重系统上,现在种重新封装一下大华的类库,不能说全部都封装,也要能封装出摄像头的大部分功能,也算一个学习的过程吧.现在遇到一个问题,就是在数据回调里有数据结构体,不知道怎样处理了,请大家帮下忙.API原型是:
// 异步搜索局域网内IPC、NVS等设备,pUserData表示用户数据,不支持多线程调用,
// 接口调用1次只发送搜索信令1次
CLIENT_NET_API LLONG CALL_METHOD CLIENT_StartSearchDevices(fSearchDevicesCB cbSearchDevices, void* pUserData, char* szLocalIp=NULL);
// 异步搜索设备回调(pDevNetInfo内存由SDK内部申请释放)
typedef void (CALLBACK *fSearchDevicesCB)(DEVICE_NET_INFO_EX *pDevNetInfo, void* pUserData);
// 对应CLIENT_StartSearchDevices接口
typedef struct
{
int iIPVersion; // 4 for IPV4, 6 for IPV6
char szIP[64]; // IP IPV4形如"192.168.0.1" IPV6形如"2008::1/64"
int nPort; // tcp端口
char szSubmask[64]; // 子网掩码 IPV6无子网掩码
char szGateway[64]; // 网关
char szMac[DH_MACADDR_LEN]; // MAC地址
char szDeviceType[DH_DEV_TYPE_LEN]; // 设备类型
BYTE byManuFactory; // 目标设备的生产厂商,具体参考EM_IPC_TYPE类
BYTE byDefinition; // 1-标清 2-高清
bool bDhcpEn; // Dhcp使能状态, true-开, false-关
BYTE byReserved1; // 字节对齐
char verifyData[88]; // 校验数据 通过异步搜索回调获取(在修改设备IP时会用此信息进行校验)
char szSerialNo[DH_DEV_SERIALNO_LEN]; // 序列号
char szDevSoftVersion[DH_MAX_URL_LEN]; // 设备软件版本号
char szDetailType[DH_DEV_TYPE_LEN]; // 设备型号
char szVendor[DH_MAX_STRING_LEN]; // OEM客户类型
char szDevName[DH_MACHINE_NAME_NUM]; // 设备名称
char szUserName[DH_USER_NAME_LENGTH_EX]; // 登陆设备用户名(在修改设备IP时需要填写)
char szPassWord[DH_USER_NAME_LENGTH_EX]; // 登陆设备密码(在修改设备IP时需要填写)
unsigned short nHttpPort; // HTTP服务端口号
WORD wVideoInputCh; // 视频输入通道数
WORD wRemoteVideoInputCh; // 远程视频输入通道数
WORD wVideoOutputCh; // 视频输出通道数
WORD wAlarmInputCh; // 报警输入通道数
WORD wAlarmOutputCh; // 报警输出通道数)
BOOL bNewWordLen; // TRUE使用新密码字段szNewPassWord
char szNewPassWord[DH_COMMON_STRING_64]; // 登陆设备密码(在修改设备IP时需要填写)
BYTE byInitStatus; // 设备初始化状态,按位确定初始化状态
// bit0~1:0-老设备,没有初始化功能 1-未初始化账号 2-已初始化账户
// bit2~3:0-老设备,保留 1-公网接入未使能 2-公网接入已使能
// bit4~5:0-老设备,保留 1-手机直连未使能 2-手机直连使能
// bit6~7: 0- 未知 1-不支持密码重置 2-支持密码重置
BYTE byPwdResetWay; // 支持密码重置方式:按位确定密码重置方式,只在设备有初始化账号时有意义
// bit0-支持预置手机号 bit1-支持预置邮箱 bit2-支持文件导出 bit3-支持密保问题 bit4-支持更换手机号
BYTE bySpecialAbility; // 设备初始化能力,按位确定初始化能力,高八位 bit0-2D Code修改IP: 0 不支持 1 支持, bit1-PN制:0 不支持 1支持
char szNewDetailType[DH_COMMON_STRING_64]; // 设备型号
BOOL bNewUserName; // TRUE表示使用新用户名(szNewUserName)字段
char szNewUserName[DH_COMMON_STRING_64]; // 登陆设备用户名(在修改设备IP时需要填写)
BYTE byPwdFindVersion; // 密码找回的版本号,设备支持密码重置时有效;
// 0-设备使用的是老方案的密码重置版本;1-支持预留联系方式进行密码重置操作;
// 2-支持更换联系方式进行密码重置操作;
char cReserved[40];
}DEVICE_NET_INFO_EX;
在易语言里是这样调用的:
(, 下载次数: 36)
上传
点击文件名下载附件
(, 下载次数: 32)
上传
点击文件名下载附件
(, 下载次数: 31)
上传
点击文件名下载附件
但是,在火山里这种情况怎样处理,我也写了一下,但不对.
(, 下载次数: 37)
上传
点击文件名下载附件
有没有高手指点一下.
做好了大家也有用的,我这里有设备,能实际测试.
大华SDK的相关说明,我问了下官方,他说不能只看文档,那个有点老了,要看里面的例子.
设备网络SDK-浙江大华技术股份有限公司 (dahuatech.com)
作者:
伟业
时间:
2021-6-12 17:24
帮你顶。。。。
作者:
xtfje
时间:
2021-6-12 18:58
我不顶了
作者:
dasemimi
时间:
2021-6-12 19:07
看了一下,你的问题的本质是结构体这里有问题,,
你可以打开自带的例子里面 参考 结构类这个的封装,就是用属性读和属性写这种方式来封装
因为这种方法提供了取结构体指针,所以可以拷贝和易差不多,,,
作者:
xtfje
时间:
2021-6-15 21:11
我看看
作者:
hmyroot
时间:
2021-6-16 10:09
我记得有个api可以用来拷贝内存
作者:
xtfje
时间:
2021-6-16 20:00
已经做好了,谢谢大家,
@ @<IP类型> = ((DEVICE_NET_INFO_EX*)@<指针>)->iIPVersion;
作者:
flyfee
时间:
2023-6-13 10:38
能分享下写好的类库吗???
作者:
cxz7411
时间:
2024-2-8 21:12
xtfje 发表于 2021-6-16 20:00
已经做好了,谢谢大家,
@ @ = ((DEVICE_NET_INFO_EX*)@)->iIPVersion;
直接用内嵌了啊.现在新版的火山pc的结构体试试可以了吗
欢迎光临 递归火山软件开发平台 (https://bbs.voldp.com/)
Powered by Discuz! X3.4