#!/usr/bin/env python
# -*- coding: utf-8 -*-
from ctypes import *
import sys
from ctypes.wintypes import DWORD
from ctypes.wintypes import WORD
from ctypes.wintypes import LONG
from ctypes.wintypes import BYTE
# 报警信息列表,报一次在回调中加1次记录
alarm_info = []
fun_ctype = WINFUNCTYPE # 指针函数类型
if linux in sys.platform:
fun_ctype = CFUNCTYPE
class NET_DVR_DEVICEINFO_V30(Structure):
pass
NET_DVR_DEVICEINFO_V30._fields_ = [
(sSerialNumber, BYTE * 48), # 序列号
(yAlarmInPortNum, BYTE), # 报警输入个数
(yAlarmOutPortNum, BYTE), # 报警输出个数
(yDiskNum, BYTE), # 硬盘个数
(yDVRType, BYTE), # 设备类型, 1:DVR 2:ATM DVR 3:DVS
(yChanNum, BYTE), # 模拟通道个数
(yStartChan, BYTE), # 起始通道号,例如DVS-1,DVR - 1
(yAudioChanNum, BYTE), # 语音通道数
(yIPChanNum, BYTE), # 最大数字通道个数,低位
(yZeroChanNum, BYTE), # 零通道编码个数 //-01-16
(yMainProto, BYTE), # 主码流传输协议类型 0-private, 1-rtsp,2-同时支持private和rtsp
(ySubProto, BYTE), # 子码流传输协议类型0-private, 1-rtsp,2-同时支持private和rtsp
(ySupport, BYTE), # 能力,位与结果为0表示不支持,1表示支持
(ySupport1, BYTE), # 能力集扩充,位与结果为0表示不支持,1表示支持
(ySupport2, BYTE), # 能力,位与结果为0表示不支持,非0表示支持
(wDevType, WORD), # 设备型号
(ySupport3, BYTE), # 能力集扩展,位与结果为0表示不支持,1表示支持
(yMultiStreamProto, BYTE), # 是否支持多码流,按位表示,0-不支持,1-支持,bit1-码流3,bit2-码流4,bit7-主码流,bit-8子码流
(yStartDChan, BYTE), # 起始数字通道号,0表示无效
(yStartDTalkChan, BYTE), # 起始数字对讲通道号,区别于模拟对讲通道号,0表示无效
(yHighDChanNum, BYTE), # 数字通道个数,高位
(ySupport4, BYTE), # 能力集扩展,位与结果为0表示不支持,1表示支持
(yLanguageType, BYTE), # 支持语种能力,按位表示,每一位0-不支持,1-支持
(yVoiceInChanNum, BYTE), # 音频输入通道数
(yStartVoiceInChanNo, BYTE), # 音频输入起始通道号 0表示无效
(ySupport5, BYTE), # 按位表示,0-不支持,1-支持,bit0-支持多码流
(ySupport6, BYTE), # 能力,按位表示,0-不支持,1-支持
(yMirrorChanNum, BYTE), # 镜像通道个数,<录播主机中用于表示导播通道
(wStartMirrorChanNo, WORD), # 起始镜像通道号
(ySupport7, BYTE), # 能力,按位表示,0-不支持,1-支持
(yRes2, BYTE),
]
LPNET_DVR_DEVICEINFO_V30 = POINTER(NET_DVR_DEVICEINFO_V30)
class tagNET_DVR_DEVICEINFO_V40(Structure):
pass
tagNET_DVR_DEVICEINFO_V40._fields_ = [
(struDeviceV30, NET_DVR_DEVICEINFO_V30), # 设备信息结构体
(ySupportLock, BYTE), # 设备支持锁定功能,该字段由SDK根据设备返回值来赋值的
(yRetryLoginTime, BYTE), # 剩余可尝试登陆的次数,用户名,