|  | 
 
| 本帖最后由 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;
 
 
 在易语言里是这样调用的:
 
       但是,在火山里这种情况怎样处理,我也写了一下,但不对.
 
   有没有高手指点一下.
 做好了大家也有用的,我这里有设备,能实际测试.
 
 大华SDK的相关说明,我问了下官方,他说不能只看文档,那个有点老了,要看里面的例子.
 设备网络SDK-浙江大华技术股份有限公司 (dahuatech.com)
 
 
 
 
 
 
 | 
 |