火山软件开发平台

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 火山 源码 类库
查看: 2524|回复: 8
打印 上一主题 下一主题

[类库封装] 关于大华类库的封装

[复制链接]

14

主题

59

帖子

1044

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1044
跳转到指定楼层
楼主
发表于 2021-6-12 16:17:10 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 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)





回复

使用道具 举报

17

主题

794

帖子

2639

积分

金牌会员

Rank: 6Rank: 6

积分
2639
沙发
发表于 2021-6-12 17:24:19 | 只看该作者
帮你顶。。。。
回复

使用道具 举报

14

主题

59

帖子

1044

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1044
板凳
 楼主| 发表于 2021-6-12 18:58:43 | 只看该作者
我不顶了
回复

使用道具 举报

15

主题

132

帖子

3445

积分

贵宾

Rank: 9Rank: 9Rank: 9

积分
3445
地板
发表于 2021-6-12 19:07:43 | 只看该作者
看了一下,你的问题的本质是结构体这里有问题,,
你可以打开自带的例子里面 参考 结构类这个的封装,就是用属性读和属性写这种方式来封装
因为这种方法提供了取结构体指针,所以可以拷贝和易差不多,,,
回复

使用道具 举报

14

主题

59

帖子

1044

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1044
5#
 楼主| 发表于 2021-6-15 21:11:27 | 只看该作者
我看看
回复

使用道具 举报

12

主题

415

帖子

1235

积分

金牌会员

Rank: 6Rank: 6

积分
1235
6#
发表于 2021-6-16 10:09:10 来自手机 | 只看该作者
我记得有个api可以用来拷贝内存
回复

使用道具 举报

14

主题

59

帖子

1044

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
1044
7#
 楼主| 发表于 2021-6-16 20:00:56 | 只看该作者
已经做好了,谢谢大家,
@ @<IP类型> = ((DEVICE_NET_INFO_EX*)@<指针>)->iIPVersion;
回复

使用道具 举报

0

主题

5

帖子

34

积分

新手上路

Rank: 1

积分
34
8#
发表于 2023-6-13 10:38:26 | 只看该作者
能分享下写好的类库吗???
回复

使用道具 举报

20

主题

242

帖子

2084

积分

核心用户

Rank: 9Rank: 9Rank: 9

积分
2084
9#
发表于 2024-2-8 21:12:25 | 只看该作者
xtfje 发表于 2021-6-16 20:00
已经做好了,谢谢大家,
@ @ = ((DEVICE_NET_INFO_EX*)@)->iIPVersion;

直接用内嵌了啊.现在新版的火山pc的结构体试试可以了吗
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|火山软件开发平台 ( 鄂ICP备18029190号 )

GMT+8, 2024-5-20 10:34 , Processed in 0.099110 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表