Commit d7eb491b authored by liyuanhong's avatar liyuanhong

完成了汽车行驶功能

parent 546db7bf
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
......@@ -36,7 +36,7 @@ class OBDCAN_protocol_m300(M300Base):
#################################################
def generateMsg(self):
msg = self.IDENTIFY
FUNID = "0004" #功能id
FUNID = "0003" #功能id
waterCode = self.waterCode #消息流水号
DEV_ID = self.devid2hexString(self.DEV_ID) #设备id
msgBody = self.getMsgBody() # 消息体
......
......@@ -13,7 +13,7 @@ from lib.protocol.report.ProtocolBase import ProtocolBase
'''
class GPSReport_protocol(ProtocolBase):
def __init__(self,msgCount = 1,WATER_CODE = 1000,DEV_ID = "M121501010001",UTCTime="2020-01-09 18:19:38",latitude=40.22077,longitude=116.23128,speed=60.9,directionAngle=80.8,elevation=2999.9,positionStar=3,Pdop=0.3,Hdop=0.4,Vdop=0.5,statusBit=175,valtage=36.9,OBDSpeed=60.9,engineSpeed=3000,GPSTotalMileage=12800,totalOil=100000,totalTime=2020002,GPSTimestamp=1578565178):
def __init__(self,msgCount = 1,WATER_CODE = 1000,DEV_ID = "M121501010001",UTCTime="2020-01-09 18:19:38",latitude=40.22077,longitude=116.23128,speed=60,directionAngle=80.8,elevation=2999.9,positionStar=3,Pdop=0.3,Hdop=0.4,Vdop=0.5,statusBit=175,valtage=36.9,OBDSpeed=60.9,engineSpeed=3000,GPSTotalMileage=12800,totalOil=100000,totalTime=2020002,GPSTimestamp=1578565178):
super().__init__()
self.msgCount = int(msgCount) # 设置默认要发送的GPS数据包个数
......
......@@ -9,7 +9,7 @@ from lib.protocol.report.ProtocolBase import ProtocolBase
class OBDReport_CAN_protocol(ProtocolBase):
def __init__(self,msgCount = 1,WATER_CODE = 1000,DEV_ID = "M121501010001",infoTime="2020-01-10 16:29:19",dataFlowCode="ffffffffff",protocolType="0101",fireStatus=1,ACCStatus=1,voltage=36.06,troubleLightStatus=0,toubleCodeCount=0,engineSpeed=4000,speed=60,meterMileage=128500,mileageStatisticsStyle="01",totalMileage=4129040,troubleMileage=500,totalOilExpend=3500,surplusOil=505,totalRunTime=50000000,totalEngineTime=5000,airIntoAisleTemperture=42,coolingLiquidTemperture=38,envTemperture=68,ariIntoPress=20,oilPressure=550,atmosphericPressure=120,airFlow=3600,valveLocationSensor=4000,acceleratorLocation=50,engineLoad=55,fuelTrim=34,fireAngle=800,B1S1oxygenSensorVoltage=18,B1S2oxygenSensorVoltage=20,B1S1oxygenSensorElectricity=13000,B1S2oxygenSensorElectricity=13200,momentOilExpend=15,meterOilExpend=20000,engineAbsoluteLoad=32,steeringWheelAngle=10,torquePercentage=31,gearsLocation=1,GPSSpeed=72.4,GPSMileage=380000):
def __init__(self,msgCount = 1,WATER_CODE = 1000,DEV_ID = "M121501010001",infoTime="2020-01-10 16:29:19",dataFlowCode="ffffffffff",protocolType="0101",fireStatus=1,ACCStatus=1,voltage=12,troubleLightStatus=0,toubleCodeCount=0,engineSpeed=4000,speed=60,meterMileage=128500,mileageStatisticsStyle="01",totalMileage=4129040,troubleMileage=500,totalOilExpend=3500,surplusOil=505,totalRunTime=50000000,totalEngineTime=5000,airIntoAisleTemperture=42,coolingLiquidTemperture=38,envTemperture=68,ariIntoPress=20,oilPressure=550,atmosphericPressure=120,airFlow=3600,valveLocationSensor=4000,acceleratorLocation=50,engineLoad=55,fuelTrim=34,fireAngle=800,B1S1oxygenSensorVoltage=18,B1S2oxygenSensorVoltage=20,B1S1oxygenSensorElectricity=13000,B1S2oxygenSensorElectricity=13200,momentOilExpend=15,meterOilExpend=20000,engineAbsoluteLoad=32,steeringWheelAngle=10,torquePercentage=31,gearsLocation=1,GPSSpeed=72.4,GPSMileage=380000):
pass
self.msgCount = int(msgCount) # 设置默认要发送的数据包个数
......@@ -59,6 +59,8 @@ class OBDReport_CAN_protocol(ProtocolBase):
self.GPSSpeed = float(GPSSpeed) # 设置GPS车速
self.GPSMileage = int(GPSMileage) # 设置GPS里程
def setInfoTime(self,data):
self.infoTime = data
def setFireStatus(self,data): #点火状态
self.fireStatus = data
def setACCStatus(self,data): #ACC状态
......@@ -77,6 +79,8 @@ class OBDReport_CAN_protocol(ProtocolBase):
self.totalOilExpend = data
def setSurplusOil(self,data): #剩余油量
self.surplusOil = data
def setTotalRunTime(self,data): #车辆总运行时间
self.totalRunTime = data
#####################################################
......
......@@ -29,11 +29,9 @@ class ProtocolSimulaterService():
self.gpsLineIndex = 0 #GPS 轨迹索引
self.travelStatus = 0 #0,表示为行驶,1表示开始行驶
self.carId = "" #车机号
self.OBDdata = [ #定义要发送的obd数据
{"fireStatus":1,"ACCStatus":0,"engineSpeed":300,"speed":0,"meterMileage":6000,"totailMileage":600,"totalOilExpen":30},
{"fireStatus": 1, "ACCStatus": 0, "engineSpeed": 300, "speed": 0, "meterMileage": 6000,"totailMileage": 600, "totalOilExpen": 30},
{"fireStatus": 1, "ACCStatus": 0, "engineSpeed": 300, "speed": 0, "meterMileage": 6000, "totailMileage": 600, "totalOilExpen": 30},
]
self.sn = 0 #消息流水号
# 定义要发送的obd数据
self.OBDdata = {"fireStatus":1,"ACCStatus":0,"engineSpeed":300,"speed":0,"meterMileage":6000,"totailMileage":600,"totalOilExpen":30,"totalRunTime":10}
self.OBDdataIndex = 0 #发发送OBD数据的索引
#设置套接字
......@@ -71,20 +69,32 @@ class ProtocolSimulaterService():
gpsMsg = self.genGPSMsg(latitude,longitude)
elif self.travelStatus == 1:
if self.gpsLineIndex < len(self.gpsLine):
OBDMsg = self.genOBDMsg()
OBDMsg = self.genOBDMsg(self.OBDdata["fireStatus"],self.OBDdata["ACCStatus"],self.OBDdata["engineSpeed"], \
self.OBDdata["speed"],self.OBDdata["meterMileage"],self.OBDdata["totailMileage"], \
self.OBDdata["totalOilExpen"],self.OBDdata["totalRunTime"])
self.OBDdata["engineSpeed"] = 3000
self.OBDdata["speed"] = 60
self.OBDdata["meterMileage"] = self.OBDdata["meterMileage"] + int(self.sendDur * (self.OBDdata["speed"] * 1000 / 3600))
self.OBDdata["totailMileage"] = self.OBDdata["totailMileage"] + int(self.sendDur * (self.OBDdata["speed"] * 1000 / 3600))
self.OBDdata["totalOilExpen"] = self.OBDdata["totalOilExpen"] + int((self.sendDur * (self.OBDdata["speed"] * 1000 / 3600)) * (1000 / (15 *1000)))
self.OBDdata["totalRunTime"] = self.OBDdata["totalRunTime"] + self.sendDur
latitude = self.gpsLine[self.gpsLineIndex]["lat"]
longitude = self.gpsLine[self.gpsLineIndex]["lng"]
gpsMsg = self.genGPSMsg(latitude, longitude)
self.gpsLineIndex = self.gpsLineIndex + 1
elif self.gpsLineIndex == len(self.gpsLine):
self.stopTravel()
self.websocket.send("gps轨迹跑完,自动停止行驶!")
if OBDMsg != "":
self.sendMsg(OBDMsg)
self.sn = self.sn + 1
type = self.getMsgFunId(OBDMsg)
info = type + ">>>>:" + OBDMsg
self.websocket.send(info)
if gpsMsg != "":
sleep(0.1)
self.sendMsg(gpsMsg)
self.sn = self.sn + 1
type = self.getMsgFunId(gpsMsg)
info = type + ">>>>:" + gpsMsg
self.websocket.send(info)
......@@ -166,16 +176,19 @@ class ProtocolSimulaterService():
if msgFunId == "8205":
msg = Common_response(resId="8205").generateCommonMsg()
self.sendMsg(msg)
self.sn = self.sn + 1
type = self.getMsgFunId(msg)
self.websocket.send(type + ">>>>设置GPSR通信参数应答:" + msg)
elif msgFunId == "8206":
msg = Common_response(resId="8206").generateCommonMsg()
self.sendMsg(msg)
self.sn = self.sn + 1
type = self.getMsgFunId(msg)
self.websocket.send(type + ">>>>设置车辆OBD适配信息应答:" + msg)
elif msgFunId == "8300":
msg = Update_response().generateUpdateMsg()
self.sendMsg(msg)
self.sn = self.sn + 1
type = self.getMsgFunId(msg)
self.websocket.send(type + ">>>>升级_平台通知终端远程升级应答:" + msg)
......@@ -188,29 +201,35 @@ class ProtocolSimulaterService():
#点火,发送点火事件
def fireOn(self):
fireOnEventObj = EventReport_protocol(DEV_ID=self.carId)
fireOnEventObj = EventReport_protocol(DEV_ID=self.carId,WATER_CODE=self.sn)
gpsData = self.genGPSData(self.gpsLine[0]["lat"], self.gpsLine[0]["lng"])
fireOnEventObj.setGPSPkg(gpsData)
fireOnEventObj.setEventType("0010")
firOnEventMsg = fireOnEventObj.generateEventMsg()
type = self.getMsgFunId(firOnEventMsg)
self.sendMsg(firOnEventMsg)
self.sn = self.sn + 1
self.websocket.send(type + ">>>>:" + firOnEventMsg)
sleep(0.1)
gpsMsg = self.genGPSMsg(self.gpsLine[0]["lat"],self.gpsLine[0]["lng"])
type = self.getMsgFunId(gpsMsg)
self.sendMsg(gpsMsg)
self.sn = self.sn + 1
self.websocket.send(type + ">>>>:" + gpsMsg)
sleep(0.1)
OBDMsg = self.genOBDMsg()
type = self.getMsgFunId(OBDMsg)
self.sendMsg(OBDMsg)
self.sn = self.sn + 1
self.websocket.send(type + ">>>>:" + OBDMsg)
# 熄火,发送熄火事件
def fireOff(self):
gpsLineIndex = self.gpsLineIndex
if gpsLineIndex >= len(self.gpsLine):
gpsLineIndex = gpsLineIndex - 1
fireOffEventObj = EventReport_protocol(DEV_ID=self.carId)
gpsData = self.genGPSData(self.gpsLine[self.gpsLineIndex]["lat"],self.gpsLine[self.gpsLineIndex]["lng"])
gpsData = self.genGPSData(self.gpsLine[gpsLineIndex]["lat"],self.gpsLine[gpsLineIndex]["lng"])
fireOffEventObj.setGPSPkg(gpsData)
fireOffEventObj.setEventType("0011")
fireOffEventMsg = fireOffEventObj.generateEventMsg()
......@@ -218,14 +237,15 @@ class ProtocolSimulaterService():
self.sendMsg(fireOffEventMsg)
self.websocket.send(type + ">>>>:" + fireOffEventMsg)
sleep(0.1)
gpsMsg = self.genGPSMsg(self.gpsLine[self.gpsLineIndex]["lat"], self.gpsLine[self.gpsLineIndex]["lng"])
gpsMsg = self.genGPSMsg(self.gpsLine[gpsLineIndex]["lat"], self.gpsLine[gpsLineIndex]["lng"])
type = self.getMsgFunId(gpsMsg)
self.sendMsg(gpsMsg)
self.sn = self.sn + 1
self.websocket.send(type + ">>>>:" + gpsMsg)
#根据特定参数,生成GPS消息
def genGPSMsg(self,latitude,longtitude):
gpsObj = GPSReport_protocol(DEV_ID=self.carId)
gpsObj = GPSReport_protocol(DEV_ID=self.carId,WATER_CODE=self.sn)
gpsObj.setLatitude(latitude)
gpsObj.setLongitude(longtitude)
timeS = int(time.time()) - 8 * 3600
......@@ -237,7 +257,7 @@ class ProtocolSimulaterService():
return msg
#根据特定参数,生成GPS消息体,不包含消息头
def genGPSData(self,latitude,longtitude):
gpsObj = GPSReport_protocol(DEV_ID=self.carId)
gpsObj = GPSReport_protocol(DEV_ID=self.carId,WATER_CODE=self.sn)
gpsObj.setLatitude(latitude)
gpsObj.setLongitude(longtitude)
timeS = int(time.time()) - 8 * 3600
......@@ -250,15 +270,20 @@ class ProtocolSimulaterService():
# 根据特定参数,生成OBD CAN消息
def genOBDMsg(self,fireStatus=1,ACCStatus=0,engineSpeed=300,speed=0,meterMileage=6000, \
totailMileage=600,totalOilExpend=30):
OBDObj = OBDReport_CAN_protocol(DEV_ID=self.carId)
OBDObj.setFireStatus(1)
OBDObj.setACCStatus(0)
OBDObj.setEngineSpeed(300)
OBDObj.setSpeed(0)
OBDObj.setMeterMileage(600)
OBDObj.setTotalMileage(600)
OBDObj.setTotalOilExpend(30)
totailMileage=600,totalOilExpend=30,totalRunTime=10):
OBDObj = OBDReport_CAN_protocol(DEV_ID=self.carId,WATER_CODE=self.sn)
timeS = int(time.time()) - 8 * 3600
timeArray = time.localtime(timeS)
UTCTime = time.strftime("%Y-%m-%d %H:%M:%S", timeArray)
OBDObj.setInfoTime(UTCTime)
OBDObj.setFireStatus(fireStatus)
OBDObj.setACCStatus(ACCStatus)
OBDObj.setEngineSpeed(engineSpeed) # 设置发动机转速
OBDObj.setSpeed(speed) # 设置车辆速度
OBDObj.setMeterMileage(meterMileage) # 设置仪表里程值
OBDObj.setTotalMileage(totailMileage) # 设置总里程值
OBDObj.setTotalOilExpend(totalOilExpend) # 设置总耗油量
OBDObj.setTotalRunTime(totalRunTime) # 设置车辆运行时间
msg = OBDObj.generateOBDReportCANMsg()
return msg
......
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