Commit 3c893d79 authored by liyuanhong's avatar liyuanhong

优化了日志输出

parent 41e4b06a
......@@ -44,6 +44,7 @@ class StreamH264Flv():
self.isOpenVideoLog = 0 # 是否开启视频日志 0:不开启 1:开启
self.isOpenAudioLog = 0 # 是否开启音频日志 0:不开启 1:开启
self.protocal_1078 = Protocal_1078()
self.autoClose = 0 # 视频推流完是否自动关闭连接 0:否 1:是
def setMobile(self,data):
......@@ -76,6 +77,9 @@ class StreamH264Flv():
self.isOpenVideoLog = data
def setIsOpenAudioLog(self,data):
self.isOpenAudioLog = data
def setAutoClose(self,data):
self.autoClose = data
####################################################
......@@ -95,6 +99,7 @@ class StreamH264Flv():
####################################################
def disConnectServer(self):
self.client.close()
self.client = None
####################################################
# 读取flv文件,并发送 (h264编码,并且音频为aac编码格式)
......@@ -161,8 +166,13 @@ class StreamH264Flv():
timeCur = self.getCurTime()
self.multiPushStatus = self.multiPushStatus + 1
self.timeStampSeek = timeStamp + 1000
self.logTextCtr.WriteText(timeCur + "视频推流完,自动结束推流!\n")
# self.client.close()
self.logTextCtr.WriteText(timeCur + "视频推流结束,自动结束推流!\n")
if self.autoClose == 1:
self.client.close()
self.client = None
curTime = self.getCurTime()
msgTxt = curTime + "视频推流结束,自动结束推流!(同时断开了连接)"
wx.CallAfter(pub.sendMessage, "closeMsg" + str(self.channel), msg=msgTxt)
####################################################
# 停止发送消息
......@@ -178,7 +188,8 @@ class StreamH264Flv():
res = json.loads(res)
url = res["data"]["url"]
# url = self.replaceHost(res["data"]["url"],"video-test.vandyo.com:")
print("播放地址:" + url)
wx.CallAfter(pub.sendMessage, "showLog" + str(self.channel), msg="播放地址:" + url + "\n")
# print("播放地址:" + url)
####################################################
# 替换url的host
......@@ -217,7 +228,7 @@ class StreamH264Flv():
if self.isOpenVideoLog != 0:
# print("发送视频消息:" + msg)
msgTxt = "发送视频消息:" + msg
wx.CallAfter(pub.sendMessage, "showLog", msg=msgTxt)
wx.CallAfter(pub.sendMessage, "showLog" + str(self.channel), msg=msgTxt)
try:
self.client.send(binascii.a2b_hex(msg))
except:
......@@ -241,7 +252,7 @@ class StreamH264Flv():
if self.isOpenAudioLog != 0:
# print("发送音频消息:" + msg)
msgTxt = "发送音频消息:" + msg
wx.CallAfter(pub.sendMessage, "showLog", msg=msgTxt)
wx.CallAfter(pub.sendMessage, "showLog" + str(self.channel), msg=msgTxt)
self.client.send(binascii.a2b_hex(msg))
time.sleep(self.sendDur)
......@@ -311,7 +322,6 @@ class StreamH264Flv():
frameData["frames"] = frames
elif frameData["AVCPkgType"] == 2:
frameData["frames"] = []
# print("2222222----------" + AVTag)
else:
frameData["frames"] = []
return frameData
......
......@@ -2,7 +2,8 @@
import ssl
import time
from gevent import thread
import wx
from pubsub import pub
import websocket
......@@ -33,15 +34,18 @@ class ClientWebSocket():
def on_message(self, message):
print("收到消息:" + message)
wx.CallAfter(pub.sendMessage, "msgRev", msg=message)
def on_error(self, error):
print(error)
def on_close(self):
print("websocket 已经断开!!!")
curTime = self.getCurTime()
print(curTime + "websocket 已经断开!!!")
def on_open(self):
print("websocket 已连接......")
curTime = self.getCurTime()
print(curTime + "websocket 已连接......")
print(self.wsUrl + self.wsCode)
##################################################
......@@ -56,6 +60,16 @@ class ClientWebSocket():
def close(self):
self.ws.close()
####################################################
# 获取当前时间
####################################################
def getCurTime(self):
timeCur = int(time.time() * 1000)
timeArray = time.localtime(timeCur / 1000)
timeCur = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
timeCur = "[" + timeCur + "] "
return timeCur
if __name__ == "__main__":
ClientWebSocket().connect()
......@@ -15,6 +15,7 @@ import yaml
from pubsub import pub
from lib.service.StreamH264Flv import StreamH264Flv
from ui import globalParams
class CameraArea():
......@@ -40,6 +41,7 @@ class CameraArea():
self.msgSendDurText = None # 发送间隔文本框
self.audioCombox = None # 音频开关按钮
self.videoPlayText = None # 获取播放地址文本框
self.audioCloseCombox = None # 控制是否自动断连开关
self.isShowFrame = 0 # 是否展示帧预览画面 0:不显示 1:显示
def setDevId(self,data):
......@@ -47,6 +49,11 @@ class CameraArea():
def setChannel(self,data):
self.channel = data
def getDevIdText(self):
return self.devIdText
def getPushObj(self):
return self.pushObj
#################################################
# 创建一个顶级pannel
#################################################
......@@ -58,6 +65,10 @@ class CameraArea():
boxSizer.Add(topPanel,1,flag=wx.EXPAND | wx.ALL)
boxSizer.Add(bottomPanel,2, flag=wx.EXPAND | wx.TOP , border=5)
self.mainPanel.SetSizer(boxSizer)
pub.subscribe(self.showAVLog, "showLog" + str(self.channel))
pub.subscribe(self.processAutoClose, "closeMsg" + str(self.channel))
return self.mainPanel
#################################################
......@@ -96,6 +107,9 @@ class CameraArea():
self.msgSendDurText = wx.TextCtrl(paramView, pos=(150, 125), size=wx.Size(40, -1), value="7") # 消息发送间隔
wx.StaticText(paramView, label='音频:', pos=(200, 130))
self.audioCombox = wx.ComboBox(paramView, pos=(240,125), choices=['开', '关'],value="开",size=wx.Size(50,-1))
wx.StaticText(paramView, label='推完自动断连:', pos=(300, 130))
self.audioCloseCombox = wx.ComboBox(paramView, pos=(390, 125), choices=['是', '否'], value="是", size=wx.Size(50, -1))
wx.StaticText(paramView, label='播放地址:', pos=(10, 190))
self.videoPlayText = wx.TextCtrl(paramView, pos=(70, 185), size=wx.Size(350, -1)) # 视频播放地址
getPlayUrlButton = wx.Button(paramView, label="获取播放地址", pos=(425, 185))
......@@ -180,11 +194,14 @@ class CameraArea():
boxSizer_bottom.Add(ctrArea, 40, flag=wx.EXPAND | wx.LEFT,border=10)
bottomPanel.SetSizer(boxSizer_bottom)
pub.subscribe(self.showAVLog, "showLog")
return bottomPanel
def showAVLog(self,msg):
self.logTextCtr.WriteText(msg + "\n")
def processAutoClose(self,msg):
self.logTextCtr.WriteText(msg + "\n")
self.pushStatusText.SetValue("未连接")
self.pushObj = None
#################################################
# 打开文件选择对话框
#################################################
......@@ -208,6 +225,7 @@ class CameraArea():
# 获取视频播放地址
####################################################
def doGetPlayUrl(self,textCtr):
self.setLogRedirect()
devId = self.devIdText.GetValue()
channel = self.channelText.GetValue()
res = requests.post(self.getGetPlayUrl, data=json.dumps({'devId': devId, 'chan': str(channel)})).text
......@@ -215,8 +233,6 @@ class CameraArea():
url = res["data"]["url"]
textCtr.SetValue(url)
def getPlayUrl(self,evt,textCtr):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
if self.getOsName() == "Windows":
threadObj = threading.Thread(target=self.doGetPlayUrl,args=(textCtr,))
else:
......@@ -238,8 +254,7 @@ class CameraArea():
# 连网
####################################################
def connect(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
isSendAudio = self.getAudioStatus()
if self.pushObj == None:
if self.getOsName() == "Windows":
......@@ -258,8 +273,6 @@ class CameraArea():
sendDur = self.msgSendDurText.GetValue()
isSendAudio = self.getAudioStatus()
flvPath = self.videoPathText.GetValue()
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
obj = StreamH264Flv()
obj.setHost(host)
obj.setPort(int(port))
......@@ -272,6 +285,8 @@ class CameraArea():
obj.setMainFrame(self.mainPanel)
obj.setLogTextCtr(self.logTextCtr)
obj.setPushStatusText(self.pushStatusText)
if self.audioCloseCombox.GetValue() == "是":
obj.setAutoClose(1)
self.pushObj = obj
self.pushObj.connectServer()
timeCur = self.getCurTime()
......@@ -292,8 +307,7 @@ class CameraArea():
# 断网
####################################################
def disConnect(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
self.pushObj.disConnectServer()
self.pushObj = None
self.pushStatusText.SetValue("未连网")
......@@ -304,8 +318,7 @@ class CameraArea():
# 开始推流
####################################################
def startPush(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
try:
timeCur = self.getCurTime()
if self.pushObj != None:
......@@ -318,8 +331,6 @@ class CameraArea():
except:
traceback.print_exc()
def pushStream(self):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
try:
self.pushObj.readFlvAndSend()
except:
......@@ -329,16 +340,13 @@ class CameraArea():
# 暂停推流
####################################################
def pausePush(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
if self.getOsName() == "Windows":
threadObj = threading.Thread(target=self.doPausePush)
else:
threadObj = threading.Thread(target=self.doPausePush())
threadObj.start()
def doPausePush(self):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
timeCur = self.getCurTime()
self.logTextCtr.WriteText(timeCur + "暂停推流!\n")
self.pushStatusText.SetValue("推流暂停")
......@@ -348,16 +356,13 @@ class CameraArea():
# 继续推流
####################################################
def continuePush(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
if self.getOsName() == "Windows":
threadObj = threading.Thread(target=self.doContinuePush)
else:
threadObj = threading.Thread(target=self.doContinuePush())
threadObj.start()
def doContinuePush(self):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
timeCur = self.getCurTime()
self.logTextCtr.WriteText(timeCur + "继续推流!\n")
self.pushStatusText.SetValue("推流中")
......@@ -367,16 +372,13 @@ class CameraArea():
# 停止推流
####################################################
def stopPush(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
if self.getOsName() == "Windows":
threadObj = threading.Thread(target=self.doStopPush)
else:
threadObj = threading.Thread(target=self.doStopPush())
threadObj.start()
def doStopPush(self):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
timeCur = self.getCurTime()
self.logTextCtr.WriteText(timeCur + "推流停止!\n")
self.pushStatusText.SetValue("连网")
......@@ -401,14 +403,14 @@ class CameraArea():
# 实时显示帧画面
####################################################
def showFrame(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
if self.getOsName() == "Windows":
threadObj = threading.Thread(target=self.doShowFrame)
else:
threadObj = threading.Thread(target=self.doShowFrame())
threadObj.start()
def doShowFrame(self):
self.setLogRedirect()
self.isShowFrame = 1
devId = self.devIdText.GetValue()
channel = self.channelText.GetValue()
......@@ -439,8 +441,7 @@ class CameraArea():
# 停止显示帧画面
####################################################
def stopShowFrame(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
if self.getOsName() == "Windows":
threadObj = threading.Thread(target=self.stopDoShowFrame)
else:
......@@ -453,8 +454,7 @@ class CameraArea():
# 播放视频地址
###################################################
def playFrame(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
if self.getOsName() == "Windows":
threadObj = threading.Thread(target=self.doPlayFrame)
else:
......@@ -480,6 +480,7 @@ class CameraArea():
# 控制是否显示视频日志
###################################################
def isVideoLogOpenChange(self,evt):
self.setLogRedirect()
val = evt.GetEventObject().GetValue()
if val == "视频日志(开)":
self.pushObj.setIsOpenVideoLog(1)
......@@ -490,6 +491,7 @@ class CameraArea():
# 控制是否显示音频日志
###################################################
def isAudioLogOpenChange(self,evt):
self.setLogRedirect()
val = evt.GetEventObject().GetValue()
if val == "音频日志(开)":
self.pushObj.setIsOpenAudioLog(1)
......@@ -500,6 +502,7 @@ class CameraArea():
# 改变消息发送间隔
####################################################
def changeSendDur(self,evt,textCtr):
self.setLogRedirect()
curVal = int(textCtr.GetValue())
self.pushObj.setSendDur(curVal / 1000)
self.msgSendDurText.SetValue(str(curVal))
......@@ -508,10 +511,19 @@ class CameraArea():
# 实时改变音频发送
####################################################
def changeIsSendAudio(self,evt):
self.setLogRedirect()
val = evt.GetEventObject().GetValue()
if val == "音频(开)":
self.pushObj.setIsSendAudio(1)
self.audioCombox.SetValue("开")
else:
self.pushObj.setIsSendAudio(0)
self.audioCombox.SetValue("关")
\ No newline at end of file
self.audioCombox.SetValue("关")
####################################################
# 日志重定向到日志框
####################################################
def setLogRedirect(self):
if globalParams.isLogRedirect == 1:
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
\ No newline at end of file
#coding: utf-8
import hashlib
import json
import sys
import threading
import time
import wx
from pubsub import pub
from lib.socket.ClientWebSocket import ClientWebSocket
from ui import globalParams
class HomeArea():
def __init__(self, frame):
self.frame = frame
self.wsUrl = "ws://api-test.vandyo.com/mirror/websocket/" # webosocket 连接地址
self.wsUrl = "ws://api-test.vandyo.com/mirror/websocket/" # webosocket 连接地址
self.devCode = "868142043390091" # 设备id
self.ws = None
self.mainPanel = None
self.heartBeatTime = 60 # 心跳时间
self.isHeartBeat = 1 # 是否开启心跳 0:不开启 1:开启
self.wsUrlText = None # webSocket 连接地址文本框
self.devCodeText = None # 设备号文本框
self.heartBeatTimeText = None # 心跳时间文本框
self.heartBeatCombox = None # 心跳开关设置
self.logTextCtr = None # 日志显示框
def setWsUrl(self,data):
self.wsUrl = data
def setDevCode(self,data):
......@@ -36,6 +48,8 @@ class HomeArea():
boxSizer.Add(topPanel,1,flag=wx.EXPAND | wx.ALL)
boxSizer.Add(bottomPanel,2, flag=wx.EXPAND | wx.TOP , border=5)
self.mainPanel.SetSizer(boxSizer)
pub.subscribe(self.processRevCmd, "msgRev")
return self.mainPanel
def getTopPanel(self):
......@@ -46,18 +60,23 @@ class HomeArea():
wx.StaticText(topPanel, label='设备 号:', pos=(430, 10))
self.devCodeText = wx.TextCtrl(topPanel, pos=(485, 5), size=wx.Size(120, -1), value=self.devCode)
setDevCodeButton = wx.Button(topPanel, label="设置设备号", pos=(610, 5))
connectButton = wx.Button(topPanel, label="连接设备", pos=(695, 5))
self.frame.Bind(wx.EVT_BUTTON, lambda evt: self.setDevCode(evt),
setDevCodeButton)
wx.StaticText(topPanel, label='心跳时间(秒):', pos=(10, 40))
self.heartBeatTimeText = wx.TextCtrl(topPanel, pos=(110,35), size=wx.Size(60, -1), value=str(self.heartBeatTime))
wx.StaticText(topPanel, label='是否开启心跳:', pos=(180, 40))
self.heartBeatCombox = wx.ComboBox(topPanel, pos=(270, 35), choices=['开', '关'], value="关",
size=wx.Size(50, -1))
connectButton = wx.Button(topPanel, label="连接设备", pos=(610, 35))
self.frame.Bind(wx.EVT_BUTTON, lambda evt: self.connect(evt),
connectButton)
disConnectButton = wx.Button(topPanel, label="断开连接", pos=(775, 5))
disConnectButton = wx.Button(topPanel, label="断开连接", pos=(690, 35))
self.frame.Bind(wx.EVT_BUTTON, lambda evt: self.disConnect(evt),
disConnectButton)
wx.StaticText(topPanel, label='状态:',pos=(855, 10))
self.connectStatusText = wx.TextCtrl(topPanel, pos=(895, 5), size=wx.Size(80, -1), value="未连接",style=wx.TE_READONLY)
wx.StaticText(topPanel, label='状态:',pos=(780, 40))
self.connectStatusText = wx.TextCtrl(topPanel, pos=(820, 35), size=wx.Size(80, -1), value="未连接",style=wx.TE_READONLY)
self.connectStatusText.SetForegroundColour(wx.RED)
connectButton1 = wx.Button(topPanel, label="连接设备", pos=(695, 100))
return topPanel
#################################################
......@@ -69,8 +88,6 @@ class HomeArea():
logArea = wx.Panel(bottomPanel)
logStaticText = wx.StaticText(logArea, label='日志:')
self.logTextCtr = wx.TextCtrl(logArea, size=wx.Size(40, -1),style=wx.TE_MULTILINE)
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
boxSizer_logArea = wx.BoxSizer(wx.VERTICAL)
boxSizer_logArea.Add(logStaticText, 2, flag=wx.EXPAND | wx.TOP ,border=10)
boxSizer_logArea.Add(self.logTextCtr, 100, flag=wx.EXPAND | wx.ALL)
......@@ -82,28 +99,42 @@ class HomeArea():
clearLogButton = wx.Button(ctrPanel, label="清空日志", pos=(5, 5))
self.frame.Bind(wx.EVT_BUTTON, lambda evt: self.clearLog(evt),
clearLogButton)
clearLogButton = wx.Button(ctrPanel, label="关闭心跳", pos=(85, 5))
self.frame.Bind(wx.EVT_BUTTON, lambda evt: self.stopHeartBeat(evt),
clearLogButton)
boxSizer_ctrArea = wx.BoxSizer(wx.VERTICAL)
boxSizer_ctrArea.Add(ctrText,2, flag=wx.EXPAND | wx.TOP ,border=10)
boxSizer_ctrArea.Add(ctrPanel,100, flag=wx.EXPAND | wx.ALL)
ctrArea.SetSizer(boxSizer_ctrArea)
boxSizer_bottom.Add(logArea,70,flag=wx.EXPAND | wx.ALL)
boxSizer_bottom.Add(ctrArea, 30, flag=wx.EXPAND | wx.LEFT,border=10)
boxSizer_bottom.Add(logArea,60,flag=wx.EXPAND | wx.ALL)
boxSizer_bottom.Add(ctrArea, 40, flag=wx.EXPAND | wx.LEFT,border=10)
bottomPanel.SetSizer(boxSizer_bottom)
return bottomPanel
#################################################
# 设置设备号
#################################################
def setDevCode(self,evt):
globalParams.camera_1.getDevIdText().SetValue(self.devCodeText.GetValue()[3:])
globalParams.camera_2.getDevIdText().SetValue(self.devCodeText.GetValue()[3:])
globalParams.camera_3.getDevIdText().SetValue(self.devCodeText.GetValue()[3:])
#################################################
# 连接设备
#################################################
def connect(self,evt):
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
self.setLogRedirect()
self.ws = ClientWebSocket()
self.ws.setWsUrl(self.wsUrlText.GetValue())
self.ws.setWsCode(self.devCodeText.GetValue())
threadObj = threading.Thread(target=self.doConnect, args=())
threadObj.start()
if self.heartBeatCombox.GetValue() == "开":
self.isHeartBeat = 1
self.startHeartBeat()
self.connectStatusText.SetValue("已连接")
def doConnect(self):
self.ws.connect()
......@@ -112,11 +143,113 @@ class HomeArea():
# 断开连接
#################################################
def disConnect(self,evt):
self.setLogRedirect()
self.stopHeartBeat(None)
self.ws.close()
self.connectStatusText.SetValue("未连接")
# self.stopHeartBeat(None)
# self.ws.close()
# self.connectStatusText.SetValue("未连接")
# curTime = self.getCurTime()
# self.logTextCtr.WriteText(curTime + "websocket连接已经断开")
#################################################
# 清空日志
#################################################
def clearLog(self,evt):
self.setLogRedirect()
self.logTextCtr.SetValue("")
#################################################
# 启动发送心跳服务
#################################################
def startHeartBeat(self):
self.setLogRedirect()
threadObj = threading.Thread(target=self.sendHeartBeatService, args=())
threadObj.start()
#################################################
# 发送心跳服务
#################################################
def sendHeartBeatService(self):
self.setLogRedirect()
while self.isHeartBeat == 1:
time.sleep(int(self.heartBeatTimeText.GetValue()))
if self.isHeartBeat == 1:
timeCur = int(time.time() * 1000)
skeyOrg = str(timeCur) + self.devCodeText.GetValue()
m = hashlib.md5()
m.update(skeyOrg.encode("utf8"))
skey = m.hexdigest()
msg = {}
msg["data"] = {}
msg["skey"] = skey
msg["type"] = "9" # 心跳指令上报
msg = json.dumps(msg)
self.ws.sendMsg(msg)
curTime = self.getCurTime()
self.logTextCtr.WriteText(curTime + "发送心跳:" + msg + "\n")
#################################################
# 停止发送心跳服务
#################################################
def stopHeartBeat(self,evt):
self.setLogRedirect()
self.isHeartBeat = 0
curTime = self.getCurTime()
self.logTextCtr.WriteText(curTime + "停止了心跳服务!\n")
####################################################
# 获取当前时间
####################################################
def getCurTime(self):
timeCur = int(time.time() * 1000)
timeArray = time.localtime(timeCur / 1000)
timeCur = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
timeCur = "[" + timeCur + "] "
return timeCur
####################################################
# 处理服务端下发的指令
####################################################
def processRevCmd(self,msg):
self.setLogRedirect()
msgJson = json.loads(msg)
msgType = msgJson["type"]
if msgType == "1":
cam = msgJson["data"]["cam"]
if cam == 1:
if globalParams.camera_1.getPushObj() == None :
globalParams.camera_1.doConnect()
globalParams.camera_1.startPush(None)
else:
curTime = self.getCurTime()
self.logTextCtr.WriteText(curTime + "消息: 摄像头1连接中!!!\n")
elif cam == 2:
if globalParams.camera_2.getPushObj() == None:
globalParams.camera_2.doConnect()
globalParams.camera_2.startPush(None)
else:
curTime = self.getCurTime()
self.logTextCtr.WriteText(curTime + "消息: 摄像头2连接中!!!\n")
elif cam == 3:
if globalParams.camera_3.getPushObj() == None:
globalParams.camera_3.doConnect()
globalParams.camera_3.startPush(None)
else:
curTime = self.getCurTime()
self.logTextCtr.WriteText(curTime + "消息: 摄像头3连接中!!!\n")
####################################################
# 日志重定向到日志框
####################################################
def setLogRedirect(self):
if globalParams.isLogRedirect == 1:
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
......@@ -6,6 +6,7 @@ from ui.CameraArea import CameraArea
from ui.CodecArea import CodecArea
from ui.EventAndOtherArea import EventAndOtherArea
from ui.HomeArea import HomeArea
from ui import globalParams
'''
定义主窗体
......@@ -45,15 +46,18 @@ class MainWindow():
nodeBook.AddPage(page0, "云镜首页")
cameraArea1 = CameraArea(nodeBook)
globalParams.camera_1 = cameraArea1
page1 = cameraArea1.create()
nodeBook.AddPage(page1,"摄像头1")
cameraArea2 = CameraArea(nodeBook)
globalParams.camera_2 = cameraArea2
cameraArea2.setChannel(2)
page2 = cameraArea2.create()
nodeBook.AddPage(page2, "摄像头2")
cameraArea3 = CameraArea(nodeBook)
globalParams.camera_3 = cameraArea3
cameraArea3.setChannel(3)
page3 = cameraArea3.create()
nodeBook.AddPage(page3, "摄像头3")
......
# coding:utf-8
camera_1 = None # 相机1
camera_2 = None # 相机2
camera_3 = None # 相机3
isLogRedirect = 0 # 日志是否重定向到日志文本框 0: 不重定向 (用于调试) 1:重定向 (用于给别人用)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment