1 Star 0 Fork 0

曹义/hik

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
sdkService.py 21.21 KB
一键复制 编辑 原始数据 按行查看 历史
曹义 提交于 2024-10-09 09:15 . 11
# -*- coding: utf-8 -*-
# @Time : 2024/7/18 11:05
# @Author : sdk
# 常量定义
from ctypes import Structure, Union, c_byte, c_ulong, POINTER, c_uint16, CFUNCTYPE, c_bool, c_int16, c_uint32, c_void_p, c_long, c_ubyte, c_char_p, c_char
from enum import Enum
NET_SDK_MAX_FILE_PATH = 256
MAX_NAMELEN = 16 # DVR本地登陆名
MAX_RIGHT = 32 # 设备支持的权限(1-12表示本地权限,13-32表示远程权限)
NAME_LEN = 32 # 用户名长度
PASSWD_LEN = 16 # 密码长度
MAX_MASTER_KEY_LEN = 16
MAX_DEVICE_ID_LEN = 256 # 设备ID长度
MAX_DEVNAME_LEN = 32 # 设备名最大长度
MAX_DEVNAME_LEN_EX = 64 # 设备名最大长度
MAX_FULL_SERIAL_NUM_LEN = 64 # 最大完整序列号长度
NET_EHOME_SERIAL_LEN = 12 # 序列号长度
MAX_ANALOG_CHANNUM = 32
MAX_DIGIT_CHANNUM = 480
MAX_ANALOG_ALARMOUT = 32
REGISTER_LISTEN_MODE = 8 # 注册监听模式(5.0用TCP)
'''
枚举定义
'''
class EHOME_REGISTER_TYPE(Enum):
ENUM_DEV_ON = 0 # 设备上线回调
ENUM_DEV_OFF = 1 # 设备下线回调
ENUM_DEV_ADDRESS_CHANGED = 2 # 设备地址发生变化
ENUM_EHOME50_DEV_AUTH = 3 # Ehome5.0 设备认证回调
ENUM_EHOME50_DEV_SESSIONKEY = 4 # Ehome5.0 设备Sessionkey回调
ENUM_EHOME50_DEV_DAS_REQ = 5 # Ehome5.0 设备重定向请求回调
ENUM_DEV_SESSIONKEY_REQ = 6 # EHome5.0设备sessionkey请求回调
ENUM_DEV_DAS_REREGISTER = 7 # 设备重注册回调
ENUM_DEV_DAS_PINGREO = 8 # 设备注册心跳
ENUM_DEV_DAS_EHOMEKEY_ERROR = 9 # 校验密码失败
ENUM_DEV_SESSIONKEY_ERROR = 10 # Sessionkey交互异常
ENUM_DEV_SLEEP = 11 # 设备进入休眠状态(注:休眠状态下,设备无法做预览、回放、语音对讲、配置等CMS中的信令作响应;设备可通过NET_ECMS_WakeUp接口进行唤醒)
# 结构体定义
class NET_EHOME_IPADDRESS(Structure):
_fields_ = [
('szIP', c_byte * 128),
('wPort', c_uint16), # 端口
('byRes', c_byte * 2),
]
# 监听模式结构体
class NET_EHOME_REGISTER_LISTEN_MODE(Structure):
_fields_ = [
('dwSize', c_uint32),
('dwRegisterListenMode', c_uint32), # 0-表示监听TCP和UDP,1表示监听UDP,2表示监听TCP;
('byRes', c_ubyte * 128),
]
# 注册回调函数
DEVICE_REGISTER_CB = CFUNCTYPE(c_bool, c_int16, c_uint32, POINTER(c_void_p), c_uint32, POINTER(c_void_p), c_uint32, POINTER(c_void_p))
# 中心管理服务器监听参数结构体
class NET_EHOME_CMS_LISTEN_PARAM(Structure):
_fields_ = [
('struAddress', NET_EHOME_IPADDRESS), # 本地监听信息
('fnCB', DEVICE_REGISTER_CB), # 注册回调函数
('pUserData', c_void_p), # 用户数据
('dwKeepAliveSec', c_uint32), # 心跳间隔(单位:秒),0:默认30秒
('dwTimeOutCount', c_uint32), # 心跳超时次数(0:默认3次)
('byRes', c_byte * 24) # 保留,设为0
]
# 设备注册信息结构体
class NET_EHOME_DEV_REG_INFO(Structure):
_fields_ = [
('dwSize', c_uint32), # 结构体大小
('dwNetUnitType', c_uint32), # 保留
('byDeviceID', c_byte * 256), # 设备ID,最大长度256
('byFirmwareVersion', c_byte * 24), # 固件版本信息
('struDevAdd', NET_EHOME_IPADDRESS), # 设备地址
('dwDevType', c_uint32), # 设备类型
('dwManufacture', c_uint32), # 制造商代码
('byPassWord', c_byte * 32), # 设备登录中心管理服务器的密码,用户根据需求进行验证
('sDeviceSerial', c_byte * 12), # 设备序列号
('byReliableTransmission', c_byte), # 可靠传输
('byWebSocketTransmission', c_byte), # 网络接口传输
('bySupportRedirect', c_byte), # 设备支持重定向注册 0-不支持 1-支持
('byDevProtocolVersion', c_byte * 6), # 设备协议版本
('bySessionKey', c_byte * 16), # Ehome5.0设备SessionKey
('byMarketType', c_byte), # 0-无效(未知类型),1-经销型,2-行业型
('bySupport', c_byte), # 设备支持的功能情况,支持"与"操作。从右到左,
# 第一位为1表示支持NPQ预览(0b00000001)
# 第二位为1表示支持NPQ回放(0b00000010)
# 第三位为1表示支持预览、回放和语音对讲链路加密传输(0b00000100)
# 第四位为1表示支持HLS回放(0b00001000)
# 第五位为1表示支持语音对讲链路纯广播传输—即只有下行数据无上行数据(0b00010000)
('byRes', c_byte * 25)
]
class NET_EHOME_DEV_REG_INFO_V12(Structure):
_fields_ = [
('struRegInfo', NET_EHOME_DEV_REG_INFO), # 注册信息
('struRegAddr', NET_EHOME_IPADDRESS), # 设备注册的服务器地址
('sDevName', c_byte * 64), # 设备名称
('byDeviceFullSerial', c_byte * 64), # 设备完整序列号,设备型号+日期+短序号+扩展
('byRes', c_byte * 128)
]
LPNET_EHOME_DEV_REG_INFO_V12 = POINTER(NET_EHOME_DEV_REG_INFO_V12)
class NET_EHOME_DEV_SESSIONKEY(Structure):
_fields_ = [
('sDeviceID', c_byte * MAX_DEVICE_ID_LEN), # 设备ID/*256*/
('sSessionKey', c_byte * MAX_MASTER_KEY_LEN) # 设备Sessionkey/*16*/
]
class NET_EHOME_BLACKLIST_SEVER(Structure):
_fields_ = [
('struAdd', NET_EHOME_IPADDRESS), # 服务器地址
('byServerName', c_byte * 32), # 服务器名称
('byUserName', c_byte * 32), # 用户名
('byPassWord', c_byte * 32), # 密码
('byRes', c_byte * 64)
]
class NET_EHOME_SERVER_INFO_V50(Structure):
_fields_ = [
('dwSize', c_uint32),
('dwKeepAliveSec', c_uint32), # 心跳间隔(单位:秒,0:默认为15S)
('dwTimeOutCount', c_uint32), # 心跳超时次数(0:默认为6)
('struTCPAlarmSever', NET_EHOME_IPADDRESS), # 报警服务器地址(TCP协议)
('struUDPAlarmSever', NET_EHOME_IPADDRESS), # 报警服务器地址(UDP协议)
('dwAlarmServerType', c_uint32), # 报警服务器类型0-UDP,1-UDP、TCP,2 - MQTT(服务器地址基于 TCP)。
('struNTPSever', NET_EHOME_IPADDRESS), # NTP服务器地址
('dwNTPInterval', c_uint32), # NTP校时间隔(单位:秒)
('struPictureSever', NET_EHOME_IPADDRESS), # 图片服务器地址
('dwPicServerType', c_uint32), # 图片服务器类型,1-VRB图片服务器,0-Tomcat图片服务,2-云存储3,3-KMS
('struBlackListServer', NET_EHOME_BLACKLIST_SEVER), # 黑名单服务器
('struRedirectSever', NET_EHOME_IPADDRESS), # Redirect Server
('byClouldAccessKey', c_byte * 64), # 云存储AK
('byClouldSecretKey', c_byte * 64), # 云存储SK
('byClouldHttps', c_byte), # 云存储HTTPS使能 1-HTTPS 0-HTTP
('byRes1', c_byte * 3),
('dwAlarmKeepAliveSec', c_uint32), # 报警心跳间隔(单位:秒,0:默认为30s)
('dwAlarmTimeOutCount', c_uint32), # 报警心跳超时次数(0:默认为3)
('dwClouldPoolId', c_uint32), # 云存储PoolId
('byRes', c_byte * 368)
]
# 透传参数结构体
class NET_EHOME_PTXML_PARAM(Structure):
_fields_ = [
('pRequestUrl', c_void_p), # 请求URL
('dwRequestUrlLen', c_uint32), # 请求URL长度
('pCondBuffer', c_void_p), # 条件缓冲区(XML格式数据)
('dwCondSize', c_uint32), # 透传数据指针
('pInBuffer', c_void_p), # 输入缓冲区(XML格式数据)
('dwInSize', c_uint32), # 输入缓冲区大小
('pOutBuffer', c_void_p), # 输出缓冲区(XML格式数据)
('dwOutSize', c_uint32), # 输出缓冲区大小
('dwReturnedXMLLen', c_uint32), # 条实际从设备接收到的XML数据的长度
('dwRecvTimeOut', c_uint32), # 默认5000ms
('dwHandle', c_uint32), # (输出参数)设置了回放异步回调之后,该值为消息句柄,回调中用于标识(新增)
('byRes', c_byte * 24), # 保留
]
LPNET_EHOME_PTXML_PARAM = POINTER(NET_EHOME_PTXML_PARAM)
# AMS相关
class NET_EHOME_ALARM_TYPE(Enum):
EHOME_ALARM_UNKNOWN = 0 #未知报警
ALARM_TYPE_DISK_FULL = 0 # 硬盘已满报警
ALARM_TYPE_DISK_WRERROR = 1 #硬盘读写出错
ALARM_TYPE_VIDEO_LOST = 5 #视频(信号)丢失报警
ALARM_TYPE_EXTERNAL = 6 #外部(信号量)报警
ALARM_TYPE_VIDEO_COVERED = 7 #视频遮盖报警
ALARM_TYPE_MOTION = 8 #移动侦测
ALARM_TYPE_STANDARD_NOTMATCH = 9 #视频制式不匹配报警
ALARM_TYPE_SPEEDLIMIT_EXCEED = 10 #超速报警
ALARM_TYPE_PIR = 11 #PIR 报警
ALARM_TYPE_WIRELESS = 12
ALARM_TYPE_CALL_HELP = 13
ALARM_TYPE_DISARM = 14
ALARM_TYPE_STREAM_PRIVATE = 15
ALARM_TYPE_PIC_UPLOAD_FAIL = 16 #设备上传图片失败报
ALARM_TYPE_LOCAL_REC_EXCEPTION = 17
ALARM_TYPE_UPGRADE_FAIL = 18
ALARM_TYPE_ILLEGAL_ACCESS = 19
ALARM_TYPE_SOUNDLIMIT_EXCEED = 80
ALARM_TYPE_TRIFFIC_VIOLATION = 90
ALARM_TYPE_ALARM_CONTROL = 96
ALARM_TYPE_FACE_DETECTION = 97
ALARM_TYPE_DEFOUSE_DETECTION = 98
ALARM_TYPE_AUDIO_EXCEPTION = 99
ALARM_TYPE_SCENE_CHANGE = 100
ALARM_TYPE_TRAVERSE_PLANE = 101
ALARM_TYPE_ENTER_AREA = 102
ALARM_TYPE_LEAVE_AREA = 103
ALARM_TYPE_INTRUSION = 104
ALARM_TYPE_LOITER = 105
ALARM_TYPE_LEFT_TAKE = 106
ALARM_TYPE_CAR_STOP = 107
ALARM_TYPE_MOVE_FAST = 108
ALARM_TYPE_HIGH_DENSITY = 109 #人员聚集侦测报警
ALARM_TYPE_PDC_BY_TIME = 110
ALARM_TYPE_PDC_BY_FRAME = 111
ALARM_TYPE_LEFT = 112
ALARM_TYPE_TAKE = 113
ALARM_TYPE_ROLLOVER = 114
ALARM_TYPE_COLLISION = 115
ALARM_TYPE_FLOW_OVERRUN = 256
ALARM_TYPE_WARN_FLOW_OVERRUN = 257
ALARM_TYPE_DEV_CHANGED_STATUS = 700 #设备状态改变报警
ALARM_TYPE_CHAN_CHANGED_STATUS = 701
ALARM_TYPE_HD_CHANGED_STATUS = 702
ALARM_TYPE_DEV_TIMING_STATUS = 703 #定时上传设备状态报警
ALARM_TYPE_CHAN_TIMING_STATUS = 704
ALARM_TYPE_HD_TIMING_STATUS = 705
ALARM_TYPE_RECORD_ABNORMAL = 706
ALARM_TYPE_ENV_LIMIT = 8800
ALARM_TYPE_ENV_REAL_TIME = 8801
ALARM_TYPE_ENV_EXCEPTION = 8802
ALARM_TYPE_HIGH_TEMP = 40961 #温度过高报警
ALARM_TYPE_ACC_EXCEPTION = 40962
ALARM_TYPE_RAPID_ACCELERATION = 40963
ALARM_TYPE_RAPID_DECELERATION = 40964
ALARM_TYPE_COLLISION_V40 = 40965
ALARM_TYPE_ROLLOVER_V40 = 40966
ALARM_TYPE_RAPID_TURN_LEFT = 40967
ALARM_TYPE_RAPID_TURN_RIGHT = 40968
ALARM_TYPE_ABNORMAL_DRIVING_BEHAVIOR = 40969
ALARM_TYPE_OVERLOAD = 40970
ALARM_TYPE_LEFT_CROSS_LINE = 40971
ALARM_TYPE_RIGHT_CROSS_LINE = 40972
ALARM_TYPE_OPEN_DOOR_WITH_SPEED = 40973
ALARM_TYPE_ADAS = 40974
ALARM_TYPE_RADAR = 41009
class NET_EHOME_ALARM_MSG(Structure):
_fields_ = [
('dwAlarmType', c_uint32), # 报警类型,报警类型和详情见ISUPSDK 337页
('pAlarmInfo', c_void_p), # 报警信息详情,不同报警类型对应不同报警详情。
('dwAlarmInfoLen', c_uint32), # 保存报警信息详情所需的缓冲区大小。
('pXmlBuf', c_void_p), # XML 格式的报警信息报文。
('dwXmlBufLen', c_uint32), # 保存报警信息 XML 报文所需的缓冲区大小。
('sSerialNumber', c_byte * 12), # 设备序列号。最大长度为 12 字节(对应宏定义为“NET_EHOME_SERIAL_LEN”)。
('pHttpUrl', c_void_p), #URL
('dwHttpUrlLen', c_uint32), #Url大小
('byRes', c_byte * 12) #保留,设为0。最大长度为 12 字节。
]
class NET_EHOME_GPS_INFO(Structure):
_fields_ = [
('dwSize', c_long), #结构体大小。
('bySampleTime', c_char * 32), #GPS 采样时间,格式:YYYY-MM-DD HH:MM:SS。最大取值长度为 32 字节
('byDeviceID', c_char * 256), #设备注册 ID。最大取值长度为 256 字节
('byDivision', c_char * 2), #division[0]的取值:“E”-东经、“W”-西经;division[1]的取值:“N”-北纬、“S”-南纬。最大取值长度为 2 字节。
('bySatelites', c_byte), #卫星数量。
('byPrecision', c_byte), #经度因子,其取值等于原始值×100。
('dwLongitude', c_long), #经度,取值范围为 0 到 180×3600×100,转换公式为:经度=实际度×3600×100+实际分×60×100+实际秒×100。
('dwLatitude',c_long), #纬度,取值范围为 0 到 90×3600×100,转换公式为:纬度=实际度×3600×100+实际分×60×100+实际秒×100。
('dwDirection', c_long), #方向,取值范围为 0 到 359.9×100,0 表示正北方向,转换公式为:方向=实际方向×100。
('dwSpeed', c_long), #速度,取值范围为 0 到 999.9×100000,转换公式为:速度=实际速度×100000,单位:厘米/小时。
('dwHeight', c_long), #高度,单位:厘米。
('byRetransFlag', c_byte), #重传标记:0-实时包、 1-重传包
('byLocateMode', c_byte), #定位模式:0-自主定位、 1-差分、 2-估算、 3-数据无效。仅在 NMEA0183 3.00 版本中该参数可用。
('byRes1', c_byte * 2), #保留。最大取值长度为 2 字节。
('dwMileage', c_long), #设备里程数统计,整型,单位:米。每天第一次开机或者 00:00:00 时统计结果清零,后续累加当天里程数上报至中心。
('byRes', c_byte * 56), #保留。最大取值长度为 56 字节
]
# 报警回调函数
EHomeMsgCallBack = CFUNCTYPE(c_bool, c_long, POINTER(NET_EHOME_ALARM_MSG), POINTER(c_void_p))
LPNET_EHOME_ALARM_MSG = POINTER(NET_EHOME_ALARM_MSG)
# 报警服务器监听参数结构体
class NET_EHOME_ALARM_LISTEN_PARAM(Structure):
_fields_ = [
('struAddress', NET_EHOME_IPADDRESS), # 本地监听信息
('fnMsgCb', EHomeMsgCallBack), # 报警回调函数
('pUserData', c_void_p), # 用户参数
('byProtocolType', c_byte), #协议类型:0-TCP,1-UDP,2-MQTT。注:ISUP5.0接入,AMS报警服务器类型需要设置成2-MQTT,SS存储服务器类型需要设置成2-云存储,SS存储服务器端口建议使用6011
('byUseCmsPort', c_byte), #]是否复用中心管理服务器(CMS)端口:0-不复用,非 0-复用
('byUseThreadPool', c_byte), #]回调报警时,是否使用线程池:0-使用(默认),1-不使用。
('byRes1', c_byte), # 保留,设为0
('dwKeepAliveSec', c_uint32), # 心跳间隔(单位:秒),0:默认30秒
('dwTimeOutCount', c_uint32), # 心跳超时次数(0:默认3次)
('byRes', c_byte * 20) # 保留,设为0
]
# 关于通过 HTTP 上传报警信息的结构体。
class NET_EHOME_ALARM_ISAPI_INFO(Structure):
_fields_ = [
('pAlarmData', c_void_p), # 报警数据
('dwAlarmDataLen', c_uint32), # 报警数据长度
('byDataType', c_byte), # 0-invalid,1-xml,2-json
('byPicturesNumber', c_byte), # 图片数量
('byRes', c_byte * 2), #
('pPicPackData', c_void_p), # 图片变长部分,byPicturesNumber个NET_EHOME_ALARM_ISAPI_PICDATA
('byRes1', c_byte * 32)
]
LPNET_EHOME_ALARM_ISAPI_INFO = POINTER(NET_EHOME_ALARM_ISAPI_INFO)
# 存储服务相关
# 存储服务器的本地加载路径结构体
class NET_EHOME_SS_LOCAL_SDK_PATH(Structure):
_fields_ = [
('sPath', c_char * 260), #加载路径。最大长度为 260 字节(
('byRes', c_byte *128), #保留。最大长度为 128 字节
]
# 监听 https 的参数结构体
class NET_EHOME_SS_LISTEN_HTTPS_PARAM(Structure):
_fields_ = [
('byHttps', c_byte), #是否启用HTTPS: 0-不启用,1-启用。
('byVerifyMode', c_byte), #校验模式:0-单项校验。
('byCertificateFileType', c_byte), #证书类型:0-PEM,1-ANS1
('byPrivateKeyFileType', c_byte), #私钥类型:0-PEM,1-ANS1
('szUserCertificateFile', c_char * 260), # 公钥证书存储路径。最大长度为260字节
('szUserPrivateKeyFile', c_char * 260), #私钥证书存储路径。最大长度为260字节
('dwSSLVersion', c_uint32), # SSL模式:0-SSL23,1-SSL2,2-SSL3,3-TLS1.0,4-TLS1.1,5-TLS1.2。SSL2和SSL3模式兼容,可与最新版本的客户端和服务器匹配。
('byRes3', c_byte * 360), #保留。最大长度为360字节。
]
# 存储信息枚举
class NET_EHOME_SS_MSG_TYPE(Enum):
NET_EHOME_SS_MSG_TOMCAT = 1 #Tomcat回调函数
NET_EHOME_SS_MSG_KMS_USER_PWD = 2 #KMS用户名密码校验
NET_EHOME_SS_MSG_CLOUD_AK = 3 #5.0 版本 ISUP 设备的访问密钥
NET_EHOME_SS_MSG_ADDR = 4 #
#
class NET_EHOME_SS_RW_PARAM(Structure):
_fields_ = [
('pFileName', c_char_p), #文件名
('pFileBuf', c_void_p), #文件内容
('dwFileLen', POINTER(c_ulong)), #文件大小
('pFileUrl', c_char_p), #文件url
('pUser', c_void_p), #
('byAct', c_byte), #读写操作:0-写文件,1-读文件
('byUseRetIndex', c_byte), #是否使用上层返回的pRetIndex:0-不使用,1-使用
('byRes1', c_byte *2), #
('pRetIndex', c_char_p), #//上层设置的索引,pRetIndex为0时,可不设置,pRetIndex为1时候,设置
('byRes', c_char * 56), #
]
class NET_EHOME_SS_CLOUD_PARAM(Structure):
_fileds_ = [
('pPoolId', c_char_p), #资源池 ID
('byPoolIdLength', c_byte), #资源池 ID 长度
('dwErrorCode', c_byte * 3), #云存储错误码
('byRes1', c_byte * 500), #保留,最大长度为 503 字节
]
class NET_EHOME_SS_TOMCAT_PARAM(Structure):
_fileds_ = [
('byRes', c_byte * 512), #保留,最大长度为 512 字节
]
class NET_EHOME_SS_KMS_PARAM(Structure):
_fileds_ = [
('byRes', c_byte * 512), #保留,最大长度为 512 字节
]
class NET_EHOME_SS_VRB_PARAM(Structure):
_fileds_ = [
('byRes', c_byte * 512), #保留,最大长度为 512 字节
]
class NET_EHOME_SS_CENTRAL_PARAM(Structure):
_fields_ = [
('pPoolId', c_char_p), #poolId 资源池id,最大长度32
('pSerialID', c_char_p), #SerialID 设备ID,最大长度64
('pSerialIDUUID', c_char_p), #SerialID+UUID 表示视频文件key,最大长度64(设备ID长度)+32(UUID长度)
('pBeginTime', c_char_p), #开始时间
('pEndTime', c_char_p), #结束时间
('byPoolIdLength', c_byte), #poolid 长度,仅上传文件时生效
('bySerialIDLength', c_byte), #SerialID 长度,仅上传文件时生效
('bySerialIDUUIDLength', c_byte), #SerialID+UUID 长度,仅视频类型为视频文件时有效
('byBeginTimeLength', c_byte), #开始时间长度
('byEndTimeLength', c_byte), #结束时间长度
('byTransform', c_byte), #是否需要转封装:0 - 不需要,1-需要,默认为 0
('byRes1', c_byte), #
('dwRecordType', c_uint32), #录像类型,透传,用户自定义
('dwSourceDataType', c_uint32), #视频文件类型 4:海康视频文件,存储内部进行帧分析;其它:第三方视频文件
('dwHeadSize', c_uint32), #录像头长度
('dwErrorCode', c_uint32), #中心存储错误码
('byRes', c_byte * 468), #
]
class NET_EHOME_SS_Union(Union):
_fields_ = [
('struCloud', NET_EHOME_SS_CLOUD_PARAM),
('struTomcat', NET_EHOME_SS_TOMCAT_PARAM),
('struKms', NET_EHOME_SS_KMS_PARAM),
('struVrb', NET_EHOME_SS_VRB_PARAM),
('struCentral', NET_EHOME_SS_CENTRAL_PARAM)
]
class NET_EHOME_SS_EX_PARAM(Structure):
_fields_ = [
('byProtoType', c_byte), #//存储协议类型 1-云存储,2-tomcat,3-kms,4-vrb, 5-中心存储协议
('byRes', c_byte * 23), #
('unionStoreInfo', NET_EHOME_SS_Union),
]
# 文件信息回调函数
EHomeSSMsgCallBack = CFUNCTYPE(c_bool, c_long, c_byte, POINTER(c_void_p), c_uint32, POINTER(c_char_p), c_uint32, POINTER(c_void_p))
# 存储信息回调函数
EHomeSSStorageCallBack = CFUNCTYPE(c_bool, c_long, c_char_p, POINTER(c_void_p), c_uint32, POINTER(c_char_p), POINTER(c_void_p))
# 读写的回调
EHomeSSRWCallBack = CFUNCTYPE(c_bool, c_long, c_byte, c_char_p, POINTER(c_void_p), POINTER(c_long), c_char_p, POINTER(c_void_p))
# 文件信息回调函数
EHomeSSRWCallBackEx = CFUNCTYPE(c_bool, c_long, NET_EHOME_SS_RW_PARAM, NET_EHOME_SS_EX_PARAM)
# 存储服务监听参数结构体
class NET_EHOME_SS_LISTEN_PARAM(Structure):
_fields_ = [
('struAddress', NET_EHOME_IPADDRESS), # 本地监听信息
('szKMS_UserName', c_byte * 512), #KMS 的用户名。最大长度为 512 字节
('szKMS_Password', c_byte * 512), #KMS 的密码。最大长度为 512 字节
('fnSStorageCb', EHomeSSStorageCallBack), # 存储信息的回调函数。
('fnSMsgCb', EHomeSSMsgCallBack), #文件信息回调函数
('szAccessKey', c_byte * 64), # ISUP5.0 的 AccessKey。最大长度为 64 字节
('szSecretKey', c_byte * 64), # ISUP5.0 的 SecretKey。最大长度为 64 字节
('pUserData', c_void_p), # 用户参数。
('byHttps', c_byte), # 是否启用 HTTPS 通信:0-不启用,1-启用。
('byRes1', c_byte * 3), # 保留,设为0
('fnSSRWCb', EHomeSSRWCallBack), # 读写的回调
('fnSSRWCbEx', EHomeSSRWCallBackEx), # 读写回调函数扩展。
('bySecurityMode', c_byte), # 安全模式开关,默认开启,0-开启,1-关闭。
('byRes', c_byte * 51) # 保留,设为0
]
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/caoyiqiao/hik.git
git@gitee.com:caoyiqiao/hik.git
caoyiqiao
hik
hik
master

搜索帮助