{% extends "protocolTools/index.html" %} {% block title %}carSimulater{% endblock %} {% block content_01 %} <script src="../../static/js/protocolTools/carsimulater.js"></script> <style> .nav-pills li { margin-bottom:5px; } .form-control { display:inline; width:160px; } .protocol_content:after{ clear:both; display:block; content:" "; } .protocol_content li { width:250px; _background:yellow; list-style:none; margin-top:5px; float:left; } .protocol_content label{ width:90px; text-align:right; } </style> <div id="container2" style="width:83%;min-height:750px;float:left;_background:grey;margin-top:50px;"> {% block content_02 %} <ul class="nav nav-pills" style="font-size:14px;"> <li role="presentation"><a id="setting_tab" {% if arg.path[2]=="M_setting_page" %} class="link-tab" {% endif %} onclick="carSimulaterTab(this)">设置</b></a></li> <li role="presentation"><a id="carsimulater_tab" {% if arg.path[2]=="M_carSimulater_page" %} class="link-tab" {% endif %} onclick="carSimulaterTab(this)">模拟器</b></a></li> <li role="presentation"><a id="carsimulaterData_tab" {% if arg.path[2]=="M_carSimulaterData_page" %} class="link-tab" {% endif %} onclick="carSimulaterTab(this)">查询车数据</b></a></li> </ul> {% endblock %} {% block content_1 %} <div id="container3" style="width:100%;min-height:750px;float:left;_background:green;margin-top:10px;_border-top: 1px solid #eee;"> <div style="width:100%;padding-bottom:10px;border-bottom: 1px solid #eee;"> <span><label>车机Id:</label><input id="carId" type="text" class="form-control" value="M202003060520"></span> <span><label>消息流水号:</label><input id="WATER_CODE" style="width:60px;" type="text" class="form-control" value="1"></span> <span><label>上报间隔(秒):</label><input id="durTime" style="width:60px;" type="text" class="form-control" value="5"></span> <span><label>设置超时时间:</label><input style="width:80px;" id="timeout" type="text" class="form-control" value="36000"></span> </div> <div style="width:100%;padding-bottom:10px;border-bottom: 1px solid #eee;"> <h4>点击登录按钮发送报文:</h4> <div style="display: block; width: 100%; border-width: 1px; border-style: solid; border-color: darkgray; border-radius: 10px; padding: 2px; margin-top: 5px;"> <h5><b>登录报文数据:</b></h5> <ul class="protocol_content" style="padding:0px;"> <li style="width:320px;"><label>CPU-ID:</label><input style="width:220px;" id="cpuId" type="text" class="form-control" value="CPU-ID001122334455667788"></li> <li><label style="word-break:break-all;font-size:12px;">SIM卡IMSI号:</label><input id="imsi" type="text" class="form-control" value="IMSI13145678902"></li> <li style="width:300px;"><label style="word-break:break-all;font-size:12px;">SIM卡CCID号:</label><input style="width:200px;" id="ccid" type="text" class="form-control" value="CCID1122334455667788"></li> <li><label style="word-break:break-all;font-size:10px;">GSM模块IMEI码:</label><input id="imei" type="text" class="form-control" value="IMEI12233445566"></li> </ul> <ul class="protocol_content" style="padding:0px;"> <li style="width:320px;"><label style="word-break:break-all;font-size:12px;">车机版本信息:</label><input style="width:220px;" id="verInfo" type="text" class="form-control" value="M100AB01010.0000"></li> <li><label>编译日期:</label><input id="compileDate" type="text" class="form-control" value="2020-03-23"></li> <li style="width:300px;"><label style="word-break:break-all;font-size:12px;">GSM模块型号:</label><input style="width:200px;" id="GSM" type="text" class="form-control" value="GSM_123456"></li> </ul> </div> </div> <div style="display: block; width: 100%; border-width: 1px; border-style: solid; border-color: darkgray; border-radius: 10px; padding: 2px; margin-top: 5px;"> <h5><b>GPS行驶轨迹设置:</b></h5> <div class="input-group" style="width:380px;padding-bottom:10px;margin-left:10px;display:inline;"> <form id="form" enctype="multipart/form-data"> <input type="file" id="fileAttach" name="file" class="form-control" style="display:inline;width:250px;"/> <input type="button" onclick="uploadFile()" value="上传" class="form-control" style="display:inline;width:80px;font-weight: bolder;"/> </form> </div> <span style="margin-left:10px;"><label>选择轨迹:</label><select id="selectGPSLine" class="form-control" style="width:250px;"> {% for key,value in arg["gpsLines"].items() %} <option value="{{ key }}">{{ value }}</option> {% endfor %} </select></span> <a style="margin-left:10px;font-weight:bold;" onclick="download_sample()">下载示例轨迹</a> <!-- <label><input style="margin-left:30px;" type="checkbox" id="ignition" />轨迹管理</label>--> <!-- <div style="display: block;margin:10px; width: 95%; border-width: 1px; border-style: solid; border-color: darkgray; border-radius: 10px; padding: 2px; margin-top: 5px;">--> <!-- </div>--> </div> <div style="display: block; width: 100%; border-width: 1px; border-style: solid; border-color: darkgray; border-radius: 10px; padding: 2px; margin-top: 5px;"> <h5><b>行驶参数设置:</b></h5> <span><label>速度(Km/h):</label><input type="text" id="carSpeed" class="form-control" style="display:inline;width:80px;" value="60"/></span> <span><label>油耗(Km/L):</label><input type="text" id="oilExpend" class="form-control" style="display:inline;width:80px;" value="10"/></span> <span><label>是否循环行驶:</label><select style="width:80px;" id="travelLoop" class="form-control"> <option value="0">否</option> <option value="1">是</option></select><label style="font-size:9px;width: 100px;">开启后会在所选择的轨迹上来回行驶</label></span> </div> <div style="width:100%;padding-bottom:10px;border-bottom: 1px solid #eee;"> <h3>操作:</h3> <button id="connect_B" type="button" class="btn btn-primary" onclick="connect()">1、连网</button> <button id="fire_B" type="button" class="btn btn-primary" onclick="login()">2、登录</button> <button id="login_B" type="button" class="btn btn-primary" onclick="fire()">3、点火</button> <button id="run_B" type="button" class="btn btn-primary" onclick="startTravel()">4、行驶</button> <button id="stopRun_B" type="button" class="btn btn-primary" onclick="stopTravel()">5、停止行驶</button> <button id="unFire_B" type="button" class="btn btn-primary" onclick="unFire()">6、熄火</button> <button id="unConnect_B" type="button" class="btn btn-primary" onclick="stopConnect()">7、断网</button> <button id="unConnectAll_B" type="button" class="btn btn-danger" onclick="reset()">复位</button> <button id="clear_B" type="button" class="btn btn-warning" onclick="clearlog()">清空日志</button> <span style="margin-left:20px;"><label>当前状态:</label><input id="curStatus" value="断网" disabled="disabled" class="form-control" style="font-weight: bold;width:85px;color:red;border-width: 1px; border-style: solid; border-color: darkgray; border-radius: 10px;"></span> </div> <div style="width:100%;padding-bottom:60px;border-bottom: 1px solid #eee;"> <h3>日志:</h3> <textarea id="showFeedback" style="width:100%;padding:5px;padding-bottom:60px;" rows="10"></textarea> </div> <div style="width:100%;padding-bottom:10px;border-bottom: 1px solid #eee;"> <h4>查询今日车机行驶数据</h4> <span> <button id="searchCarData" type="button" class="btn btn-primary" id="saveSetting">查询</button> </span> </div> <H3 style="border-bottom: 1px solid #eee;">返回信息:</H3> <div style="width:100%;padding:5px;margin-top:10px;"> <textarea id="searchCardataShow" style="width:100%;padding:5px;" rows="8"></textarea> </div> </div> <script> //通过函数获取页面参数 function getPageData(){ var data = {}; var carId = $("#carId").val() var WATER_CODE = $("#WATER_CODE").val() var durTime = $("#durTime").val() var timeout = $("#timeout").val() data["carId"] = carId data["WATER_CODE"] = WATER_CODE data["durTime"] = durTime data["timeout"] = timeout //登录数据 data["login"] = {} var cpuId = $("#cpuId").val() var imsi = $("#imsi").val() var ccid = $("#ccid").val() var imei = $("#imei").val() data["login"]["cpuId"] = cpuId data["login"]["imsi"] = imsi data["login"]["ccid"] = ccid data["login"]["imei"] = imei //版本数据 data["version"] = {} var verInfo = $("#verInfo").val() var compileDate = $("#compileDate").val() var GSM = $("#GSM").val() data["version"]["verInfo"] = verInfo data["version"]["compileDate"] = compileDate data["version"]["GSM"] = GSM //GPS轨迹数据 var gpsLine = $("#selectGPSLine").val() data["gpsLine"] = gpsLine //行驶参数数据 data["travelData"] = {} var carSpeed = $("#carSpeed").val() var oilExpend = $("#oilExpend").val() var travelLoop = $("#travelLoop").val() data["travelData"]["carSpeed"] = carSpeed data["travelData"]["oilExpend"] = oilExpend data["travelData"]["travelLoop"] = travelLoop return data; } //连接 function connect(){ var data = getPageData() url = "/protocolTools/M_carSimulater_process/createConect"; sendjson(data,url); //setTimeout(function(){ // WebSocketTest() //},1000); //1秒之后启动websocket连接 WebSocketTest() $("#curStatus").val("连网") } //登录 function login(){ var data = getPageData() $("#curStatus").val("登录") url = "/protocolTools/M_carSimulater_process/login"; sendjson(data,url); } //点火 function fire(){ var data = getPageData() url = "/protocolTools/M_carSimulater_process/fire"; sendjson(data,url); $("#curStatus").val("点火") } //行驶 function startTravel(){ var data = getPageData() url = "/protocolTools/M_carSimulater_process/startTravel"; sendjson(data,url); $("#curStatus").val("行驶") } //停止行驶 function stopTravel(){ var data = {}; url = "/protocolTools/M_carSimulater_process/stopTravel"; send(data,url); $("#curStatus").val("点火") } //熄火 function unFire(){ var data = getPageData() url = "/protocolTools/M_carSimulater_process/unFire"; sendjson(data,url); $("#curStatus").val("熄火") } //断开连接 function stopConnect(){ var data = {}; url = "/protocolTools/M_carSimulater_process/closeConect"; send(data,url); endService() $("#curStatus").val("断网") } //复位 function reset(){ var data = {}; url = "/protocolTools/M_carSimulater_process/reset"; send(data,url); $("#showFeedback").val("") endService() $("#curStatus").val("断网") } //清空日志 function clearlog(){ $("#showFeedback").val("") } //非json方式发送数据 function send(data,url){ var host = window.location.host; $.ajax({ //url:"http://" + host + "/protocolTools/M_carSimulater_process/porcessSocketSetting", url:"http://" + host + url, type:"post", data:data, dataType:"json", success:function(data){ if(data.status == 200){ //window.location.reload() var curTime = getCurTime(); var txt = $("#showFeedback").val() txt = txt + "[" + curTime + "] " + data.message + "\n" $("#showFeedback").val(txt) }else{ var curTime = getCurTime(); var txt = $("#showFeedback").val() txt = txt + "[" + curTime + "] " + data.message + "\n" $("#showFeedback").val(txt) alert(data.message); } } }); } //json方式发送数据 function sendjson(data,url){ var host = window.location.host; $.ajax({ //url:"http://" + host + "/protocolTools/M_carSimulater_process/porcessSocketSetting", url:"http://" + host + url, type:"post", data:JSON.stringify(data), contentType:"application/json", dataType:"json", success:function(data){ if(data.status == 200){ //window.location.reload() var curTime = getCurTime(); var txt = $("#showFeedback").val() txt = txt + "[" + curTime + "] " + data.message + "\n" $("#showFeedback").val(txt) }else{ var curTime = getCurTime(); var txt = $("#showFeedback").val() txt = txt + "[" + curTime + "] " + data.message + "\n" $("#showFeedback").val(txt) alert(data.message); } } }); } ///////////////////////////////// websocket 代码开始 ///////////////////////////////// client = "0" ws = null; i = 1; (function(){ ws = null; i = 1; })() function WebSocketTest(){ if ("WebSocket" in window){ console.log("您的浏览器支持 WebSocket!"); var domain = document.domain; ws = new WebSocket("ws://" + domain + ":5005"); ws.onopen = function(){ console.log("socket 已经连接上!") }; ws.onmessage = function (evt) { var received_msg = JSON.parse(evt.data) var curTime = getCurTime(); if(received_msg["code"] == "0001"){ //0001代表连接消息通信 client = received_msg["client"] } var text = $("#showFeedback").val() if(text == ""){ text = text + "[" + curTime + "] " + received_msg["msg"] + "\n"; }else{ text = text + "[" + curTime + "] " + received_msg["msg"] + "\n"; $('#showFeedback').scrollTop($('#showFeedback')[0].scrollHeight); } $("#showFeedback").val(text) }; ws.onclose = function(){ alert("连接已关闭..."); // 关闭 websocket }; }else{ alert("您的浏览器不支持 WebSocket!"); // 浏览器不支持 WebSocket } } function sendMsg(){ var msg = $("#sendMsg").val() var data = {}; data["code"] = "0002"; //0002代表普通消息通信 data["client"] = client; data["msg"] = msg; data = JSON.stringify(data) ws.send(data); } function endService(){ var msg = "" var data = {}; data["code"] = "0003"; //0002代表普通消息通信 data["client"] = client; data["msg"] = msg; data = JSON.stringify(data) ws.send(data); } function myclose(){ var data = {}; data["code"] = "0000"; //0000代表关闭服务器套接字程序 data["client"] = client; data["msg"] = ""; data = JSON.stringify(data); ws.send(data); ws.close(); console.log("执行了socket服务的关闭操作..."); } ///////////////////////////////// websocket 代码结束 ///////////////////////////////// function uploadFile(){ var form = new FormData(document.getElementById("form")); var host = window.location.host; $.ajax({ url:"http://" + host + "/protocolTools/M_carSimulater_process/fileUplad", type:"post", data:form, cache: false, processData: false, contentType: false, success:function(data){ //提交成功 if (data.status == "200") { $("#fileAttach").val("") $("#selectGPSLine").prepend("<option value=" + data.file.filenameOri + ">" + data.file.filename + "</option>") alert("sucess") }else{ alert("fail") } }, error:function(data){ var result=document.getElementById("Result"); result.innerHTML="服务器错误"; } }); } function download_sample(){ var host = window.location.host; window.location.href = "http://" + host + "/protocolTools/M_carSimulater_process/sampleDowload" } //查询车机今日行驶数据 $("#searchCarData").click(function(){ var carId = $("#carId").val(); var data = {}; data["carId"] = carId; var host = window.location.host; $.ajax({ url:"http://" + host + "/protocolTools/M_carSimulater_process/searchCarsimulaterData", type:"post", data:data, dataType:"json", success:function(data){ if(data.status == 200){ //window.location.reload() msg = data.message $("#searchCardataShow").val(msg) }else{ $("#searchCardataShow").val(data.message) alert(data.message); } } }); }); </script> {% endblock %} </div> {% endblock %}