Commit c3cb585c authored by liyuanhong's avatar liyuanhong

完成云镜模拟器告警功能开发

parent 87d867d9
......@@ -11,7 +11,7 @@ class ClientWebSocket():
def __init__(self):
self.ws = None # websocket 对象
self.wsUrl = "ws://api-test.vandyo.com/mirror/websocket/" # webosocket 连接地址
self.wsCode = "868142043390091" # 连接编号
self.wsCode = "868142043390091" # 连接编号
self.isEnableTrace = 0 # 是否显示websocket连接信息 0:否 1:是
def setWsUrl(self,data):
......
#coding: utf-8
import json
import sys
import time
import requests
import wx
from ui import globalParams
class EventAndOtherArea():
def __init__(self, frame):
self.frame = frame
self.mainPanel = None
self.sendEvtUrl = "http://api-test.vandyo.com/mirror/event" # 事件发送地址
self.sendEvtUrlTextCtr = None # 发送事件消息地址框
self.accStatusCombox = None # 点火状态设置框
self.acrTextCtr = None # 定位精度设置框
self.altTextCtr = None # 海拔设置框
self.ctpTextCtr = None # 坐标系类型设置框
self.drtTextCtr = None # 方向角设置框
self.gacrComboBox = None # 卫星信号强度设置框
self.gtmTextCtr = None # 时间设置框
self.latTextCtr = None # 维度设置框
self.lngTextCtr = None # 经度设置框
self.ltpTextCtr = None # 定位结果来源设置框
self.satlTextCtr = None # 定位星数设置框
self.scnlTextCtr = None # 室内外置信度设置框
self.spdlTextCtr = None # 速度设置框
self.trsComboBox = None # 定位可信度设置框
self.logTextCtr = None # 日志输出框
#################################################
# 创建一个顶级pannel
......@@ -13,19 +38,246 @@ class EventAndOtherArea():
def create(self):
self.mainPanel = wx.Panel(self.frame)
boxSizer = wx.BoxSizer(wx.VERTICAL)
gpsPannel= wx.Panel(self.mainPanel)
gpsPannelSizer = wx.BoxSizer(wx.VERTICAL)
gpsPannel.SetBackgroundColour("RED")
aaa = wx.StaticBox(gpsPannel,-1,"gps数据")
gpsPannelSizer.Add(aaa, 1, flag=wx.EXPAND | wx.ALL)
wx.Button(aaa, label="设置设备号", pos=(610, 5))
topPanel = self.getTopPanel()
bottomPanel = self.getBottomPanel()
boxSizer.Add(topPanel,5,flag=wx.EXPAND | wx.ALL)
boxSizer.Add(bottomPanel,1, flag=wx.EXPAND | wx.TOP , border=5)
self.mainPanel.SetSizer(boxSizer)
return self.mainPanel
#################################################
# 获取顶部pannel的内容
#################################################
def getTopPanel(self):
topPanel = wx.Panel(self.mainPanel)
topPanel.SetBackgroundColour("GREEN")
topPanelSizer = wx.BoxSizer(wx.VERTICAL)
basicInfoPanel = wx.Panel(topPanel, -1, size=(wx.EXPAND, 40),style=wx.BORDER_SIMPLE)
wx.StaticText(basicInfoPanel, label='发送地址:', pos=(10, 10))
self.sendEvtUrlTextCtr = wx.TextCtrl(basicInfoPanel, pos=(80, 5), size=wx.Size(350, -1), value=self.sendEvtUrl)
gpsPannel = wx.StaticBox(topPanel, -1, "gps数据:", size=(wx.EXPAND, 120))
wx.StaticText(gpsPannel, label='点熄火状态:',pos=(10, 20))
self.accStatusCombox = wx.ComboBox(gpsPannel, pos=(90, 15), choices=['点火', '熄火'], value="点火",
size=wx.Size(60, -1))
wx.StaticText(gpsPannel, label='定位精度:', pos=(160, 20))
self.acrTextCtr = wx.TextCtrl(gpsPannel, pos=(230, 15), size=wx.Size(70, -1), value="98.88")
wx.StaticText(gpsPannel, label='海拔(米):', pos=(310, 20))
self.altTextCtr = wx.TextCtrl(gpsPannel, pos=(390, 15), size=wx.Size(70, -1), value="100.0")
wx.StaticText(gpsPannel, label='坐标系类型:', pos=(470, 20))
self.ctpTextCtr = wx.TextCtrl(gpsPannel, pos=(550, 15), size=wx.Size(70, -1), value="1")
wx.StaticText(gpsPannel, label='方向角:', pos=(630, 20))
self.drtTextCtr = wx.TextCtrl(gpsPannel, pos=(690, 15), size=wx.Size(70, -1), value="48.5")
wx.StaticText(gpsPannel, label='卫星信号强度:', pos=(770, 20))
self.gacrComboBox = wx.ComboBox(gpsPannel, pos=(860, 15), choices=['好', '差'], value="好",
size=wx.Size(60, -1))
wx.StaticText(gpsPannel, label='时间:', pos=(10, 55))
times = self.getCurTime()
self.gtmTextCtr = wx.TextCtrl(gpsPannel, pos=(60, 50), size=wx.Size(130, -1), value=times)
wx.StaticText(gpsPannel, label='纬度:', pos=(200, 55))
self.latTextCtr = wx.TextCtrl(gpsPannel, pos=(240, 50), size=wx.Size(100, -1), value="29.569187")
wx.StaticText(gpsPannel, label='经度:', pos=(350, 55))
self.lngTextCtr = wx.TextCtrl(gpsPannel, pos=(390, 50), size=wx.Size(100, -1), value="106.592613")
wx.StaticText(gpsPannel, label='定位结果来源:', pos=(500, 55))
self.ltpTextCtr = wx.TextCtrl(gpsPannel, pos=(590, 50), size=wx.Size(80, -1), value="1")
wx.StaticText(gpsPannel, label='定位星数:', pos=(680, 55))
self.satlTextCtr = wx.TextCtrl(gpsPannel, pos=(760, 50), size=wx.Size(80, -1), value="2")
wx.StaticText(gpsPannel, label='室内外置信度:', pos=(10, 90))
self.scnlTextCtr = wx.TextCtrl(gpsPannel, pos=(100, 85), size=wx.Size(80, -1), value="89")
wx.StaticText(gpsPannel, label='速度:', pos=(190, 90))
self.spdlTextCtr = wx.TextCtrl(gpsPannel, pos=(230, 85), size=wx.Size(80, -1), value="60.8")
wx.StaticText(gpsPannel, label='定位可信度:', pos=(320, 90))
self.trsComboBox = wx.ComboBox(gpsPannel, pos=(400, 85), choices=['非常可信', '可信度一般','可信度较低','非常不可信'], value="可信度一般",
size=wx.Size(100, -1))
ctrlPannel = wx.StaticBox(topPanel, -1, "控制:", size=(wx.EXPAND, 50))
disDrivingCrashButton = wx.Button(ctrlPannel, label="停车碰撞", pos=(10, 20))
self.frame.Bind(wx.EVT_BUTTON, lambda evt: self.sendDisDrivingCrashEvt(evt),
disDrivingCrashButton)
drivingCrashButton = wx.Button(ctrlPannel, label="行车碰撞", pos=(90, 20))
self.frame.Bind(wx.EVT_BUTTON, lambda evt: self.sendDrivingCrashEvt(evt),
drivingCrashButton)
helpButton = wx.Button(ctrlPannel, label="一键救援", pos=(170, 20))
self.frame.Bind(wx.EVT_BUTTON, lambda evt: self.sendHelpEvt(evt),
helpButton)
topPanelSizer.Add(basicInfoPanel, 0.7, flag=wx.EXPAND | wx.ALL)
topPanelSizer.Add(gpsPannel, 2, flag=wx.EXPAND | wx.ALL)
topPanelSizer.Add(ctrlPannel, 1, flag=wx.EXPAND | wx.ALL)
otherPannel = wx.Panel(topPanel,-1, size=(wx.EXPAND, 50))
topPanelSizer.Add(otherPannel, 4, flag=wx.EXPAND | wx.ALL)
topPanel.SetSizer(topPanelSizer)
return topPanel
#################################################
# 获取底部pannel的内容
#################################################
def getBottomPanel(self):
bottomPanel = wx.Panel(self.mainPanel)
boxSizer.Add(gpsPannel, 1, flag=wx.EXPAND | wx.ALL)
boxSizer.Add(topPanel,1,flag=wx.EXPAND | wx.ALL)
boxSizer.Add(bottomPanel,2, flag=wx.EXPAND | wx.TOP , border=5)
self.mainPanel.SetSizer(boxSizer)
boxSizer_bottom = wx.BoxSizer(wx.HORIZONTAL)
logArea = wx.Panel(bottomPanel)
logStaticText = wx.StaticText(logArea, label='日志:')
self.logTextCtr = wx.TextCtrl(logArea, style=wx.TE_MULTILINE)
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)
logArea.SetSizer(boxSizer_logArea)
ctrArea = wx.Panel(bottomPanel)
ctrText = wx.StaticText(ctrArea, label='控制:')
ctrPanel = wx.Panel(ctrArea, style=wx.BORDER_SIMPLE)
clearLogButton = wx.Button(ctrPanel, label="清空日志", pos=(5, 5))
self.frame.Bind(wx.EVT_BUTTON, lambda evt: self.clearLog(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)
bottomPanel.SetSizer(boxSizer_bottom)
return bottomPanel
####################################################
# 发送停车告警碰撞事件
####################################################
def sendDisDrivingCrashEvt(self,evt):
data = {}
eventTime = int(time.time())
eventType = 1
imei = globalParams.homeArea.getDevCodeText().GetValue()
data["eventTime"] = eventTime
data["eventType"] = eventType
data["gpsData"] = self.getGpsData()
data["imei"] = imei
url = self.sendEvtUrlTextCtr.GetValue()
headers = {'Content-Type': 'application/json'}
res = requests.post(url, headers=headers,data=json.dumps(data))
curTime = self.getCurTimeTxt()
self.logTextCtr.WriteText(curTime + res.text + "\n")
####################################################
# 发送行车告警碰撞事件
####################################################
def sendDrivingCrashEvt(self,evt):
data = {}
eventTime = int(time.time())
eventType = 2
imei = globalParams.homeArea.getDevCodeText().GetValue()
data["eventTime"] = eventTime
data["eventType"] = eventType
data["gpsData"] = self.getGpsData()
data["imei"] = imei
url = self.sendEvtUrlTextCtr.GetValue()
headers = {'Content-Type': 'application/json'}
res = requests.post(url, headers=headers, data=json.dumps(data))
curTime = self.getCurTimeTxt()
self.logTextCtr.WriteText(curTime + res.text + "\n")
####################################################
# 发送一键救援事件事件
####################################################
def sendHelpEvt(self,evt):
data = {}
eventTime = int(time.time())
eventType = 3
imei = globalParams.homeArea.getDevCodeText().GetValue()
data["eventTime"] = eventTime
data["eventType"] = eventType
data["gpsData"] = self.getGpsData()
data["imei"] = imei
url = self.sendEvtUrlTextCtr.GetValue()
headers = {'Content-Type': 'application/json'}
res = requests.post(url, headers=headers, data=json.dumps(data))
curTime = self.getCurTimeTxt()
self.logTextCtr.WriteText(curTime + res.text + "\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 getCurTimeTxt(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 clearLog(self,evt):
self.setLogRedirect()
self.logTextCtr.SetValue("")
####################################################
# 日志重定向到日志框
####################################################
def setLogRedirect(self):
if globalParams.isLogRedirect == 1:
sys.stdout = self.logTextCtr
sys.stderr = self.logTextCtr
####################################################
# 获取gps数据
####################################################
def getGpsData(self):
data = {}
acc = self.accStatusCombox.GetValue()
accVal = 0
if acc == "点火":
accVal = 1
acrVal = float(self.acrTextCtr.GetValue())
altVal = float(self.altTextCtr.GetValue())
ctpVal = int(self.ctpTextCtr.GetValue())
drtVal = float(self.drtTextCtr.GetValue())
gacr = self.gacrComboBox.GetValue()
gacrVal = 0
if gacr == "好":
gacrVal = 1
gtm = self.gtmTextCtr.GetValue()
gtmVal = int(time.mktime(time.strptime(gtm, "%Y-%m-%d %H:%M:%S")))
latVal = float(self.latTextCtr.GetValue())
lngVal = float(self.lngTextCtr.GetValue())
ltpVal = int(self.ltpTextCtr.GetValue())
saltVal = int(self.satlTextCtr.GetValue())
scnVal = int(self.scnlTextCtr.GetValue())
spdVal = float(self.spdlTextCtr.GetValue())
trs = self.trsComboBox.GetValue()
trsVal = 0
if trs == "非常可信":
trsVal = 3
elif trs == "可信度一般":
trsVal = 2
elif trs == "可信度较低":
trsVal = 1
data["acc"] = accVal
data["acr"] = acrVal
data["alt"] = altVal
data["ctp"] = ctpVal
data["drt"] = drtVal
data["gacr"] = gacrVal
data["gtm"] = gtmVal
data["lat"] = latVal
data["lng"] = lngVal
data["ltp"] = ltpVal
data["salt"] = saltVal
data["scn"] = scnVal
data["spd"] = spdVal
data["trs"] = trsVal
return data
return self.mainPanel
\ No newline at end of file
......@@ -43,6 +43,9 @@ class HomeArea():
def setDevCode(self,data):
self.devCode = data
def getDevCodeText(self):
return self.devCodeText
#################################################
# 创建一个顶级pannel
#################################################
......
......@@ -42,6 +42,7 @@ class MainWindow():
nodeBook = wx.Notebook(mainPanel)
homeArea = HomeArea(nodeBook)
globalParams.homeArea = homeArea
page0 = homeArea.create()
nodeBook.AddPage(page0, "云镜首页")
......
# coding:utf-8
homeArea = None # 首页对象
camera_1 = None # 相机1
camera_2 = None # 相机2
camera_3 = None # 相机3
......
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