#!/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), # 序列号
('byAlarmInPortNum', BYTE), # 报警输入个数
('byAlarmOutPortNum', BYTE), # 报警输出个数
('byDiskNum', BYTE), # 硬盘个数
('byDVRType', BYTE), # 设备类型, 1:DVR 2:ATM DVR 3:DVS
('byChanNum', BYTE), # 模拟通道个数
('byStartChan', BYTE), # 起始通道号,例如DVS-1,DVR - 1
('byAudioChanNum', BYTE), # 语音通道数
('byIPChanNum', BYTE), # 最大数字通道个数,低位
('byZeroChanNum', BYTE), # 零通道编码个数 //2010-01-16
('byMainProto', BYTE), # 主码流传输协议类型 0-private, 1-rtsp,2-同时支持private和rtsp
('bySubProto', BYTE), # 子码流传输协议类型0-private, 1-rtsp,2-同时支持private和rtsp
('bySupport', BYTE), # 能力,位与结果为0表示不支持,1表示支持
('bySupport1', BYTE), # 能力集扩充,位与结果为0表示不支持,1表示支持
('bySupport2', BYTE), # 能力,位与结果为0表示不支持,非0表示支持
('wDevType', WORD), # 设备型号
('bySupport3', BYTE), # 能力集扩展,位与结果为0表示不支持,1表示支持
('byMultiStreamProto', BYTE), # 是否支持多码流,按位表示,0-不支持,1-支持,bit1-码流3,bit2-码流4,bit7-主码流,bit-8子码流
('byStartDChan', BYTE), # 起始数字通道号,0表示无效
('byStartDTalkChan', BYTE), # 起始数字对讲通道号,区别于模拟对讲通道号,0表示无效
('byHighDChanNum', BYTE), # 数字通道个数,高位
('bySupport4', BYTE), # 能力集扩展,位与结果为0表示不支持,1表示支持
('byLanguageType', BYTE), # 支持语种能力,按位表示,每一位0-不支持,1-支持
('byVoiceInChanNum', BYTE), # 音频输入通道数
('byStartVoiceInChanNo', BYTE), # 音频输入起始通道号 0表示无效
('bySupport5', BYTE), # 按位表示,0-不支持,1-支持,bit0-支持多码流
('bySupport6', BYTE), # 能力,按位表示,0-不支持,1-支持
('byMirrorChanNum', BYTE), # 镜像通道个数,<录播主机中用于表示导播通道
('wStartMirrorChanNo', WORD), # 起始镜像通道号
('bySupport7', BYTE), # 能力,按位表示,0-不支持,1-支持
('byRes2', 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), # 设备信息结构体
('bySupportLock', BYTE), # 设备支持锁定功能,该字段由SDK根据设备返回值来赋值的
('byRetryLoginTime', BYTE), # 剩余可尝试登陆的次数,用户名,