Commit 7abfb059 authored by liyuanhong's avatar liyuanhong

M500模拟器增加了超速报警和疲劳驾驶报警功能

parent d698737c
{"time": {"dateTime": "2020-06-04 15:11:26", "date": "2020-06-04", "time": "15:11:26"}, "curDayTravel": {"todayTotalMilleage": 8523, "todayTotalOil": 778, "todayTotalTime": 598, "theMilleage": 747, "theOil": 62, "theTime": 78}, "travelData": {"totalMilleage": 33624, "totalOil": 3097, "totalTime": 2106}}
\ No newline at end of file
{"time": {"dateTime": "2020-06-09 17:48:22", "date": "2020-06-09", "time": "17:48:22"}, "curDayTravel": {"todayTotalMilleage": 6947, "todayTotalOil": 632, "todayTotalTime": 421, "theMilleage": 6947, "theOil": 632, "theTime": 421}, "travelData": {"totalMilleage": 40571, "totalOil": 3729, "totalTime": 2527}}
\ No newline at end of file
{"time": {"dateTime": "2020-06-04 16:26:36", "date": "2020-06-04", "time": "16:26:36"}, "curDayTravel": {"todayTotalMilleage": 332, "todayTotalOil": 32, "todayTotalTime": 20, "theMilleage": 332, "theOil": 32, "theTime": 20}, "travelData": {"totalMilleage": 344779, "totalOil": 32374, "totalTime": 20483}, "event": {"threeRapid": {"totalRapidlyAccelerate": 19, "totalSharpSlowdown": 18, "totalSharpTurn": 17}}}
\ No newline at end of file
{"time": {"dateTime": "2020-06-09 15:05:39", "date": "2020-06-09", "time": "15:05:39"}, "curDayTravel": {"todayTotalMilleage": 20477, "todayTotalOil": 1862, "todayTotalTime": 1241, "theMilleage": 14223, "theOil": 1293, "theTime": 862}, "travelData": {"totalMilleage": 366916, "totalOil": 34396, "totalTime": 21824}, "event": {"threeRapid": {"totalRapidlyAccelerate": 21, "totalSharpSlowdown": 19, "totalSharpTurn": 19}}}
\ No newline at end of file
......@@ -293,6 +293,16 @@ class EventReport_protocol(ProtocolBase):
theData = eventObj.collisionAlarmExtraInfo(int(eventData["0023"]["totalCount"]),
int(eventData["0023"]["dataProperty"]),)
data = data + "0023" + self.int2hexStringByBytes(int((len(theData) / 2)), 2) + theData
if ("0027" in eventData.keys()): #超速告警
eventObj = EventClass()
theData = eventObj.overSpeedAlarm(int(eventData["0027"]["alarmType"]),
int(eventData["0027"]["durTime"]))
data = data + "0027" + self.int2hexStringByBytes(int((len(theData) / 2)), 2) + theData
if ("0028" in eventData.keys()): #疲劳驾驶告警
eventObj = EventClass()
theData = eventObj.collisionAlarmExtraInfo(int(eventData["0028"]["alarmType"]),
int(eventData["0028"]["durTime"]),)
data = data + "0028" + self.int2hexStringByBytes(int((len(theData) / 2)), 2) + theData
if ("0036" in eventData.keys()): #低档高速报警
eventObj = EventClass()
theData = eventObj.lowGearHighSpeedAlarm(int(eventData["0036"]["alarmType"]),int(eventData["0036"]["durationTime"]))
......
......@@ -27,6 +27,9 @@
width:90px;
text-align:right;
}
button.btn.btn-primary {
margin-bottom: 2px;
}
</style>
<div id="container2" style="width:83%;min-height:750px;float:left;_background:grey;margin-top:50px;">
{% block content_02 %}
......@@ -136,6 +139,8 @@
<label style="padding: 0px 10px;"><input type="checkbox" id="lowGearHighSpeed_check" onclick="eventSelect(this)" checked />低档高速报警 </label>
<label style="padding: 0px 10px;"><input type="checkbox" id="highGearLowSpeed_check" onclick="eventSelect(this)" checked />高档低速报警 </label>
<label style="padding: 0px 10px;"><input type="checkbox" id="surplusOil_check" onclick="eventSelect(this)" checked />剩余油量异常告警 </label>
<label style="padding: 0px 10px;"><input type="checkbox" id="overSpeed_check" onclick="eventSelect(this)" checked />超速报警 </label>
<label style="padding: 0px 10px;"><input type="checkbox" id="tiredDriving_check" onclick="eventSelect(this)" checked />疲劳驾驶 </label>
</div>
<div style="padding:10px;">
<span id="insertAlarm_button" style="display:inline;"><button type="button" class="btn btn-primary" onclick="sendInsertAlarmEvent(this)">终端插入报警</button></label></span>
......@@ -150,6 +155,8 @@
<span id="lowGearHighSpeed_button" style="display:inline;"><button type="button" class="btn btn-primary" onclick="sendLowGearHighSpeedEvent(this)">低挡高速</button></label></span>
<span id="highGearLowSpeed_button" style="display:inline;"><button type="button" class="btn btn-primary" onclick="sendHighGearLowSpeedEvent(this)">高档低速</button></label></span>
<span id="surplusOil_button" style="display:inline;"><button type="button" class="btn btn-primary" onclick="sendSurplusOilAlarmEvent(this)">剩余油量异常</button></label></span>
<span id="overSpeed_button" style="display:inline;"><button type="button" class="btn btn-primary" onclick="sendOverSpeedEvent(this)">超速报警</button></label></span>
<span id="tiredDriving_button" style="display:inline;"><button type="button" class="btn btn-primary" onclick="sendTiredDrivingAlarmEvent(this)">疲劳驾驶</button></label></span>
</div>
</div>
</div>
......@@ -671,6 +678,10 @@ function eventSelect(e){
$("#highGearLowSpeed_button").css("display","inline")
}else if($(e).attr("id") == "surplusOil_check"){
$("#surplusOil_button").css("display","inline")
}else if($(e).attr("id") == "overSpeed_check"){
$("#overSpeed_button").css("display","inline")
}else if($(e).attr("id") == "tiredDriving_check"){
$("#tiredDriving_button").css("display","inline")
}
}else{
if($(e).attr("id") == "insertAlarm_check"){
......@@ -697,6 +708,10 @@ function eventSelect(e){
$("#highGearLowSpeed_button").css("display","none")
}else if($(e).attr("id") == "surplusOil_check"){
$("#surplusOil_button").css("display","none")
}else if($(e).attr("id") == "overSpeed_check"){
$("#overSpeed_button").css("display","none")
}else if($(e).attr("id") == "tiredDriving_check"){
$("#tiredDriving_button").css("display","none")
}
}
}
......@@ -772,6 +787,18 @@ function sendSurplusOilAlarmEvent(){
url = "/protocolTools/M_carSimulater_process/sendSurplusOilAlarmEvent";
sendjson(data,url);
}
//发送超速告警事件消息
function sendOverSpeedEvent(){
var data = getPageData()
url = "/protocolTools/M_carSimulater_process/sendOverSpeedAlarmEvent";
sendjson(data,url);
}
//发送疲劳驾驶告警事件消息
function sendTiredDrivingAlarmEvent(){
var data = getPageData()
url = "/protocolTools/M_carSimulater_process/sendTiredDrivingAlarmEvent";
sendjson(data,url);
}
// -------------------------------- 实时控制js代码-------------------------------------------
//设置隐藏或显示实时控制区域
......
......@@ -306,6 +306,8 @@
<label style="padding: 0px 10px;"><input type="checkbox" id="0022" onclick="eventSelect(this)"/>急转弯 </label>
<label style="padding: 0px 10px;"><input type="checkbox" id="0023" onclick="eventSelect(this)"/>碰撞告警 </label>
<label style="padding: 0px 10px;"><input type="checkbox" id="0027" onclick="eventSelect(this)"/>超速告警 </label>
<label style="padding: 0px 10px;"><input type="checkbox" id="0028" onclick="eventSelect(this)"/>疲劳驾驶告警 </label>
<label style="padding: 0px 10px;"><input type="checkbox" id="0036" onclick="eventSelect(this)"/>低档高速报警 </label>
<label style="padding: 0px 10px;"><input type="checkbox" id="0037" onclick="eventSelect(this)"/>高档低速报警 </label>
......@@ -369,6 +371,22 @@
<option value="2">后10秒的事件采样数据</option>
</select></span>
</div>
<div id="0027_area" style="display:none;margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;_background:skyblue;">
<h5><b>超速报警:</b></h5>
<span><label>报警属性:</label><select style="width:200px;" id="0027_alarmType" class="form-control">
<option value="1">报警触发</option>
<option value="0">报警解除</option>
</select></span>
<span><label>超速持续时间(秒):</label><input style="width:80px;" id="0027_durTime" type="text" class="form-control" value="360"></span>
</div>
<div id="0028_area" style="display:none;margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;_background:skyblue;">
<h5><b>疲劳驾驶报警:</b></h5>
<span><label>报警属性:</label><select style="width:200px;" id="0028_alarmType" class="form-control">
<option value="1">报警触发</option>
<option value="0">报警解除</option>
</select></span>
<span><label>累计驾驶时间(秒):</label><input style="width:80px;" id="0028_durTime" type="text" class="form-control" value="11000"></span>
</div>
<div id="0036_area" style="display:none;margin-top:10px;width:100%;border-width:1px;border-style:solid;border-color:darkgray;border-radius:10px;padding:2px;_background:skyblue;">
<h5><b>低档高速报警:</b></h5>
<span><label>报警属性:</label>
......@@ -606,6 +624,12 @@ function getData(){
if($("#0023").is(':checked')){
data["event"]["0023"] = get0023(); //获取急转弯事件数据
}
if($("#0027").is(':checked')){
data["event"]["0027"] = get0027(); //获取超速报警事件数据
}
if($("#0028").is(':checked')){
data["event"]["0028"] = get0028(); //获取疲劳驾驶事件数据
}
if($("#0036").is(':checked')){
data["event"]["0036"] = get0036(); //低档高速报警
}
......@@ -674,6 +698,18 @@ function get0023(){
data["dataProperty"] = $("#0023_dataProperty").val();
return data
}
function get0027(){
data = {}
data["alarmType"] = $("#0027_alarmType").val();
data["durTime"] = $("#0027_durTime").val();
return data
}
function get0028(){
data = {}
data["alarmType"] = $("#0028_alarmType").val();
data["durTime"] = $("#0028_durTime").val();
return data
}
function get0036(){ //低档高速报警
data = {};
data["alarmType"] = $("#alarmType_1").val();
......@@ -728,6 +764,10 @@ function eventSelect(e){
$("#0022_area").css("display","block")
}else if($(e).attr("id") == "0023"){
$("#0023_area").css("display","block")
}else if($(e).attr("id") == "0027"){
$("#0027_area").css("display","block")
}else if($(e).attr("id") == "0028"){
$("#0028_area").css("display","block")
}else if($(e).attr("id") == "0036"){
$("#0036_area").css("display","block")
}else if($(e).attr("id") == "0037"){
......@@ -750,6 +790,10 @@ function eventSelect(e){
$("#0022_area").css("display","none")
}else if($(e).attr("id") == "0023"){
$("#0023_area").css("display","none")
}else if($(e).attr("id") == "0027"){
$("#0027_area").css("display","none")
}else if($(e).attr("id") == "0028"){
$("#0028_area").css("display","none")
}else if($(e).attr("id") == "0036"){
$("#0036_area").css("display","none")
}else if($(e).attr("id") == "0037"){
......
......@@ -965,6 +965,100 @@ def sendSurplusOilAlarmEvent():
data["message"] = "Error: 发送剩余油量异常告警事件失败!"
return Response(json.dumps(data), mimetype='application/json')
##########################################
# 【接口类型】发送超速报警事件
##########################################
@M_carSimulater_process.route("/sendOverSpeedAlarmEvent",methods=['POST'])
def sendOverSpeedAlarmEvent():
params = request.get_data()
params = json.loads(params.decode("utf-8"))
sessionId = params["session"]["sessionId"]
data = {}
if not sessionId in connects.keys():
data["status"] = "4003"
data["message"] = "Error: 未启动服务,不可发送超速告警事件!"
return Response(json.dumps(data), mimetype='application/json')
service = connects[sessionId]["service"]
travelStatus = service.getTravelStatus() #获取汽车行驶状态
if travelStatus == 0 or travelStatus == 2:
data["status"] = "4003"
data["message"] = "Error: 汽车还未行驶,不可发送超速告警事件!"
elif travelStatus == 1:
try:
jdata = {"WATER_CODE": "0003", "DEV_ID": "M121501010001",
"gpsInfo": {"UTCTime": "2020-04-30 14:59:33", "latitude": "40.22077", "longitude": "116.23128",
"speed": "80.8", "directionAngle": "80.8", "elevation": "2999.9", "positionStar": "3",
"Pdop": "0.3", "Hdop": "0.4", "Vdop": "0.5", "statusBit": 162, "valtage": "36.9",
"OBDSpeed": "60.9", "engineSpeed": "3000", "GPSTotalMileage": "12800", "totalOil": "100000",
"totalTime": "2020002", "GPSTimestamp": "1588229973"},
"securityData": {"securityStatus": 107, "doorStatus": 0, "lockStatus": 0, "windowStatus": 0,
"lightStatus": 0, "onoffStatusA": 0, "onoffStatusB": 112, "dataByte": 249}, "event": {
"0027": {"alarmType": "1", "durTime": "360"}}}
jdata["DEV_ID"] = params["carId"]
obj = EventReport_protocol(data=jdata)
gpsData = service.genGPSData2()
obj.setGPSPkg(gpsData)
obj.setEventType("004A")
msg = obj.generateEventMsg()
service.serviceSendMsg(msg, "超速告警事件")
service.setSn(service.getSn() + 1)
data["status"] = "200"
data["message"] = "发送超速告警事件成功!"
except BaseException as e:
# 打印异常信息
traceback.print_exc()
data["status"] = "4003"
data["message"] = "Error: 发送超速告警事件失败!"
return Response(json.dumps(data), mimetype='application/json')
##########################################
# 【接口类型】发送疲劳驾驶报警事件
##########################################
@M_carSimulater_process.route("/sendTiredDrivingAlarmEvent",methods=['POST'])
def sendTiredDrivingAlarmEvent():
params = request.get_data()
params = json.loads(params.decode("utf-8"))
sessionId = params["session"]["sessionId"]
data = {}
if not sessionId in connects.keys():
data["status"] = "4003"
data["message"] = "Error: 未启动服务,不可发送疲劳驾驶告警事件!"
return Response(json.dumps(data), mimetype='application/json')
service = connects[sessionId]["service"]
travelStatus = service.getTravelStatus() #获取汽车行驶状态
if travelStatus == 0 or travelStatus == 2:
data["status"] = "4003"
data["message"] = "Error: 汽车还未行驶,不可发送疲劳驾驶告警事件!"
elif travelStatus == 1:
try:
jdata = {"WATER_CODE": "0003", "DEV_ID": "M121501010001",
"gpsInfo": {"UTCTime": "2020-04-30 14:59:33", "latitude": "40.22077", "longitude": "116.23128",
"speed": "80.8", "directionAngle": "80.8", "elevation": "2999.9", "positionStar": "3",
"Pdop": "0.3", "Hdop": "0.4", "Vdop": "0.5", "statusBit": 162, "valtage": "36.9",
"OBDSpeed": "60.9", "engineSpeed": "3000", "GPSTotalMileage": "12800", "totalOil": "100000",
"totalTime": "2020002", "GPSTimestamp": "1588229973"},
"securityData": {"securityStatus": 107, "doorStatus": 0, "lockStatus": 0, "windowStatus": 0,
"lightStatus": 0, "onoffStatusA": 0, "onoffStatusB": 112, "dataByte": 249}, "event": {
"0028": {"alarmType": "1", "durTime": "1100"}}}
jdata["DEV_ID"] = params["carId"]
obj = EventReport_protocol(data=jdata)
gpsData = service.genGPSData2()
obj.setGPSPkg(gpsData)
obj.setEventType("004A")
msg = obj.generateEventMsg()
service.serviceSendMsg(msg, "疲劳驾驶告警事件")
service.setSn(service.getSn() + 1)
data["status"] = "200"
data["message"] = "发送疲劳驾驶告警事件成功!"
except BaseException as e:
# 打印异常信息
traceback.print_exc()
data["status"] = "4003"
data["message"] = "Error: 发送疲劳驾驶告警事件失败!"
return Response(json.dumps(data), mimetype='application/json')
#--------------------------------------- 实时控制逻辑 ---------------------------------------
##########################################
# 【接口类型】改变车速
......
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