Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
N
new-socketemulator
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
李远洪
new-socketemulator
Commits
df3a9adb
Commit
df3a9adb
authored
Feb 27, 2020
by
liyuanhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
并发线程类初步设计完成
parent
d1d6f7f7
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
205 additions
and
77 deletions
+205
-77
lib/multiThread/Base.py
lib/multiThread/Base.py
+12
-0
lib/multiThread/SendMultMsgThread.py
lib/multiThread/SendMultMsgThread.py
+109
-0
lib/multiThread/ThreadBase.py
lib/multiThread/ThreadBase.py
+7
-0
lib/multiThread/__init__.py
lib/multiThread/__init__.py
+0
-0
lib/protocol/message/DataUpstreamTransport_msg.py
lib/protocol/message/DataUpstreamTransport_msg.py
+1
-1
lib/protocol/message/Location_msg.py
lib/protocol/message/Location_msg.py
+9
-13
lib/protocol/message/TerminalRegister_msg.py
lib/protocol/message/TerminalRegister_msg.py
+14
-14
lib/protocol/message/data/AlarmEvent_data.py
lib/protocol/message/data/AlarmEvent_data.py
+28
-25
lib/protocol/message/data/CarSafeStatusInfo.py
lib/protocol/message/data/CarSafeStatusInfo.py
+11
-11
lib/protocol/message/data/SaloonCarOBD_data.py
lib/protocol/message/data/SaloonCarOBD_data.py
+7
-7
lib/socket/messageTest.py
lib/socket/messageTest.py
+5
-4
templates/messageTools/message/terminalRegister_msg_page.html
...lates/messageTools/message/terminalRegister_msg_page.html
+1
-1
views/messageTools/message_process.py
views/messageTools/message_process.py
+1
-1
No files found.
lib/multiThread/Base.py
0 → 100644
View file @
df3a9adb
#coding:utf-8
#########################################################
#
# 定义基类,供所有类继承
#
#########################################################
import
threading
class
Base
(
threading
.
Thread
):
def
__init__
(
self
):
pass
lib/multiThread/SendMultMsgThread.py
0 → 100644
View file @
df3a9adb
#coding:utf-8
import
binascii
import
json
import
socket
import
threading
import
time
from
lib.multiThread.ThreadBase
import
ThreadBase
class
SendMultMsgThread
():
def
__init__
(
self
,
host
=
"10.100.11.20"
,
port
=
9001
,
msg
=
""
):
self
.
host
=
host
self
.
port
=
port
self
.
msg
=
msg
self
.
timeOut
=
1
#socket超时时间
self
.
BUF_SIZE
=
1024
#接收消息缓存
self
.
threadCount
=
10
#并发线程数
self
.
totalTime
=
0
#所有线程的运行总和
self
.
threadArr
=
{}
#保存每个线程的信息
self
.
failThreadCount
=
0
#失败线程数
pass
############################################
# 设置host
############################################
def
setHost
(
self
,
host
):
self
.
host
=
host
############################################
# 设置端口号
############################################
def
setPort
(
self
,
port
):
self
.
port
=
port
############################################
# 设置消息
############################################
def
setMsg
(
self
,
msg
):
self
.
msg
=
msg
############################################
# 设置并发线程数
############################################
def
setThreadCount
(
self
,
threadCount
):
self
.
threadCount
=
threadCount
############################################
# 发送一条消息
############################################
def
sendMsg
(
self
,
msg
,
threadName
):
msg
=
msg
client
=
socket
.
socket
(
socket
.
AF_INET
,
socket
.
SOCK_STREAM
)
client
.
setsockopt
(
socket
.
SOL_SOCKET
,
socket
.
SO_KEEPALIVE
,
1
)
# 在客户端开启心跳
client
.
settimeout
(
self
.
timeOut
)
startTime
=
int
(
time
.
time
()
*
1000
)
try
:
client
.
connect
((
self
.
host
,
self
.
port
))
client
.
send
(
binascii
.
a2b_hex
(
msg
))
except
BaseException
as
e
:
client
.
close
()
self
.
threadArr
[
threadName
][
"status"
]
=
1
self
.
failThreadCount
=
self
.
failThreadCount
+
1
print
(
"连接超时,socket断开"
)
return
try
:
data
=
client
.
recv
(
self
.
BUF_SIZE
)
# print(data)
except
BaseException
as
e
:
# traceback.print_exc()
client
.
close
()
# raise RuntimeError('socket 接收消息超时!')
self
.
threadArr
[
threadName
][
"status"
]
=
1
self
.
failThreadCount
=
self
.
failThreadCount
+
1
print
(
'socket 接收消息超时!'
)
return
endTime
=
int
(
time
.
time
()
*
1000
)
timeExpend
=
endTime
-
startTime
self
.
threadArr
[
threadName
][
"timeExp"
]
=
timeExpend
self
.
totalTime
=
self
.
totalTime
+
timeExpend
client
.
close
()
############################################
# 启动并发线程
############################################
def
startThread
(
self
):
timeStart
=
int
(
time
.
time
()
*
1000
)
for
i
in
range
(
0
,
self
.
threadCount
):
threadName
=
"thread"
+
str
(
i
)
theThread
=
threading
.
Thread
(
target
=
self
.
sendMsg
,
args
=
(
self
.
msg
,
threadName
,))
threadInfo
=
{}
threadInfo
[
"name"
]
=
threadName
threadInfo
[
"status"
]
=
0
self
.
threadArr
[
threadName
]
=
threadInfo
theThread
.
start
()
timeEnd
=
int
(
time
.
time
()
*
1000
)
timeExpend
=
timeEnd
-
timeStart
print
(
"耗时:"
+
str
(
timeExpend
)
+
" 毫秒"
)
print
(
"并发数据每秒发送:"
+
str
(
int
(
self
.
threadCount
/
(
timeExpend
/
1000
))))
time
.
sleep
(
2
)
print
(
"平均响应时间:"
+
str
(
self
.
totalTime
/
self
.
threadCount
)
+
"毫秒"
)
print
(
"响应失败个数:"
+
str
(
self
.
failThreadCount
))
print
(
json
.
dumps
(
self
.
threadArr
))
if
__name__
==
"__main__"
:
t
=
SendMultMsgThread
(
msg
=
""
)
t
.
setMsg
(
"7e0002000001314620111800065b7e"
)
# t.setMsg("7e020001020131462011190001fffc7fff001c010401c0a6380659ad7a02090042003b200204185704310102EA6600010400000000000204001e7c1f0003050A0001f400000405020001d4c000050400057d0240000604000119400007040007530000100c0004006403f203f203f203f2001114ffffffffffffffffffff00200000000000000000001202002400130106001D0101EB7960C0020bb860D0013c62f00203216050014c60F0015860B001146330011c646001416490012060A00201146014010160100102610002022661100201f561F0020e746210040000119c6040012c60700200e660E00203206701010067020100670301016704024e20670502000067060200416707040000017d02097e")
t
.
startThread
()
lib/multiThread/ThreadBase.py
0 → 100644
View file @
df3a9adb
#coding:utf-8
from
lib.multiThread.Base
import
Base
class
ThreadBase
(
Base
):
def
__init__
(
self
):
pass
\ No newline at end of file
lib/multiThread/__init__.py
0 → 100644
View file @
df3a9adb
lib/protocol/message/DataUpstreamTransport_msg.py
View file @
df3a9adb
...
@@ -39,7 +39,7 @@ class DataUpstreamTransport_msg(MessageBase):
...
@@ -39,7 +39,7 @@ class DataUpstreamTransport_msg(MessageBase):
# 0xF2 故障码数据(状态改变发送)
# 0xF2 故障码数据(状态改变发送)
# 0xF3 休眠进入(进入休眠模式发送)
# 0xF3 休眠进入(进入休眠模式发送)
# 0xF4 休眠唤醒(退出休眠模式发送)
# 0xF4 休眠唤醒(退出休眠模式发送)
msgType
=
"F
3
"
msgType
=
"F
2
"
msgContent
=
""
msgContent
=
""
if
msgType
==
"F1"
:
if
msgType
==
"F1"
:
msgContent
=
self
.
getDrivingData
()
#驾驶行程数据(熄火发送)
msgContent
=
self
.
getDrivingData
()
#驾驶行程数据(熄火发送)
...
...
lib/protocol/message/Location_msg.py
View file @
df3a9adb
...
@@ -66,7 +66,6 @@ class Location_msg(MessageBase):
...
@@ -66,7 +66,6 @@ class Location_msg(MessageBase):
#######################################################
#######################################################
def
getLocationExtraInfo
(
self
):
def
getLocationExtraInfo
(
self
):
data
=
""
data
=
""
extraInfoId
=
self
.
int2hexStringByBytes
(
1
)
# 里程,DWORD,1 / 10km,对应车上里程表读数;不支持OBD时,为基于GPS车速统计的车辆累计行驶总里程。
# 里程,DWORD,1 / 10km,对应车上里程表读数;不支持OBD时,为基于GPS车速统计的车辆累计行驶总里程。
extra_01
=
"01"
+
self
.
int2hexStringByBytes
(
4
)
+
self
.
int2hexStringByBytes
(
20202020
,
4
)
extra_01
=
"01"
+
self
.
int2hexStringByBytes
(
4
)
+
self
.
int2hexStringByBytes
(
20202020
,
4
)
#油量,WORD,1/10L,对应车上油量表读数
#油量,WORD,1/10L,对应车上油量表读数
...
@@ -96,15 +95,12 @@ class Location_msg(MessageBase):
...
@@ -96,15 +95,12 @@ class Location_msg(MessageBase):
#报警事件 ID 数据项列表
#报警事件 ID 数据项列表
extra_FA
=
"FA"
+
self
.
int2hexStringByBytes
(
int
(
len
(
AlarmEvent_data
()
.
generateAlarmEvent_data
())
/
2
))
+
AlarmEvent_data
()
.
generateAlarmEvent_data
()
extra_FA
=
"FA"
+
self
.
int2hexStringByBytes
(
int
(
len
(
AlarmEvent_data
()
.
generateAlarmEvent_data
())
/
2
))
+
AlarmEvent_data
()
.
generateAlarmEvent_data
()
data
=
extra_01
+
extra_02
+
extra_31
+
extra_FA
# data = extra_01 + extra_02 + extra_11 + extra_31 + extra_EA + extra_EB + extra_FA
data
=
extra_31
+
extra_EA
+
extra_EB
# data = extra_01 + extra_02 + extra_11 + extra_12 + extra_13
# data = extra_01 + extra_02 + extra_11 + extra_12 + extra_13
# data = data + extra_2A + extra_30 + extra_31 + extra_EA + extra_EB
# data = data + extra_2A + extra_30 + extra_31 + extra_EA + extra_EB
# data = data + extra_EC
# data = data +extra_FA
extraInfoLen
=
self
.
int2hexStringByBytes
(
int
(
len
(
data
)
/
2
))
if
int
(
len
(
data
)
/
2
)
>
255
:
raise
RuntimeError
(
'附加信息长度超长!'
)
data
=
extraInfoId
+
extraInfoLen
+
data
return
data
return
data
...
@@ -217,13 +213,13 @@ class Location_msg(MessageBase):
...
@@ -217,13 +213,13 @@ class Location_msg(MessageBase):
return
dataHex
return
dataHex
'''行驶总里程'''
'''行驶总里程'''
def
getTotalMileage
(
self
):
def
getTotalMileage
(
self
):
caculateType
=
"0
1
"
caculateType
=
"0
A
"
totalMileage
=
self
.
int2hexStringByBytes
(
128000
,
4
)
#行驶总里程(单位米)
totalMileage
=
self
.
int2hexStringByBytes
(
128000
,
4
)
#行驶总里程(单位米)
data
=
caculateType
+
totalMileage
data
=
caculateType
+
totalMileage
return
data
return
data
'''行驶总油耗'''
'''行驶总油耗'''
def
getTotalOil
(
self
):
def
getTotalOil
(
self
):
caculateType
=
"0
1
"
caculateType
=
"0
2
"
totalOil
=
self
.
int2hexStringByBytes
(
120000
,
4
)
#总油耗(单位 mL)
totalOil
=
self
.
int2hexStringByBytes
(
120000
,
4
)
#总油耗(单位 mL)
data
=
caculateType
+
totalOil
data
=
caculateType
+
totalOil
return
data
return
data
...
@@ -283,7 +279,7 @@ class Location_msg(MessageBase):
...
@@ -283,7 +279,7 @@ class Location_msg(MessageBase):
# 获取时间
# 获取时间
#######################################################
#######################################################
def
getInfoTime
(
self
,
data
=
"2020-02-04 18:57:04"
):
def
getInfoTime
(
self
,
data
=
"2020-02-04 18:57:04"
):
now_time
=
datetime
.
datetime
.
now
()
.
strftime
(
'
%
Y-
%
m-
%
d
%
H:
%
M:
%
S'
)
#
now_time = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
data
=
data
data
=
data
data
=
data
.
replace
(
"-"
,
""
)
data
=
data
.
replace
(
"-"
,
""
)
data
=
data
.
replace
(
" "
,
""
)
data
=
data
.
replace
(
" "
,
""
)
...
@@ -401,10 +397,10 @@ class Location_msg(MessageBase):
...
@@ -401,10 +397,10 @@ class Location_msg(MessageBase):
# 获取状态
# 获取状态
#######################################################
#######################################################
def
getStatus
(
self
):
def
getStatus
(
self
):
ACCStatus
=
1
#0:ACC 关;1: ACC 开 (1)
ACCStatus
=
0
#0:ACC 关;1: ACC 开 (1)
locationStatus
=
2
#0:未定位;1:定位 (2)
locationStatus
=
2
#0:未定位;1:定位 (2)
latitudeStatus
=
0
#0:北纬;1:南纬 (4)
latitudeStatus
=
1
#0:北纬;1:南纬 (4)
longitudeStatus
=
0
#0:东经;1:西经 (8)
longitudeStatus
=
1
#0:东经;1:西经 (8)
runStatus
=
0
#0:运营状态;1:停运状态 (16)
runStatus
=
0
#0:运营状态;1:停运状态 (16)
isLocationEncrypt
=
0
#0:经纬度未经保密插件加密;1:经纬度已经保密插件加密 (32)
isLocationEncrypt
=
0
#0:经纬度未经保密插件加密;1:经纬度已经保密插件加密 (32)
retain6_7
=
0
retain6_7
=
0
...
...
lib/protocol/message/TerminalRegister_msg.py
View file @
df3a9adb
...
@@ -27,7 +27,7 @@ class TerminalRegister_msg(MessageBase):
...
@@ -27,7 +27,7 @@ class TerminalRegister_msg(MessageBase):
return
msg
return
msg
# 生成一条完整的消息,针对图形界面,可传递参数
# 生成一条完整的消息,针对图形界面,可传递参数
def
generateMsg_GUI
(
self
,
msgID
=
"0100"
,
phoneNum
=
"13146201119"
,
msgWaterCode
=
1
,
encryptionType
=
0
,
subPkg
=
0
,
provinceId
=
"0103"
,
\
def
generateMsg_GUI
(
self
,
msgID
=
"0100"
,
phoneNum
=
"13146201119"
,
msgWaterCode
=
1
,
encryptionType
=
0
,
subPkg
=
0
,
provinceId
=
103
,
\
manufacturerId
=
"11010"
,
terminalType
=
"a865h643gfdj64fd7432"
,
terminalId
=
"H6uyt08"
,
\
manufacturerId
=
"11010"
,
terminalType
=
"a865h643gfdj64fd7432"
,
terminalId
=
"H6uyt08"
,
\
licencePlateColor
=
1
,
carSign
=
"渝B23CX"
):
licencePlateColor
=
1
,
carSign
=
"渝B23CX"
):
msg
=
""
msg
=
""
...
@@ -49,21 +49,21 @@ class TerminalRegister_msg(MessageBase):
...
@@ -49,21 +49,21 @@ class TerminalRegister_msg(MessageBase):
# msgNums = self.int2hexStringByBytes(1,2)
# msgNums = self.int2hexStringByBytes(1,2)
# msgNumber = self.int2hexStringByBytes(1,2)
# msgNumber = self.int2hexStringByBytes(1,2)
#市县域 ID (标示终端安装车辆所在的省域,0 保留,由平台取默认值。省 域 ID 采用 GB/T 2260 中规定的行政区划代 码六位中前两)
#市县域 ID (标示终端安装车辆所在的省域,0 保留,由平台取默认值。省 域 ID 采用 GB/T 2260 中规定的行政区划代 码六位中前两)
provinceId
=
"0103"
provinceId
=
self
.
int2hexStringByBytes
(
50
,
2
)
#市县域 ID
countyId
=
self
.
int2hexStringByBytes
(
103
,
2
)
#制造商 ID (5 个字节,终端制造商编码)
#制造商 ID (5 个字节,终端制造商编码)
manufacturerId
=
self
.
str2Hex
(
"
11010
"
)
manufacturerId
=
self
.
str2Hex
(
"
man03
"
)
#终端型号 (20 个字节,此终端型号由制造商自行定义,位数不足时,后 补“0X00”。)
#终端型号 (20 个字节,此终端型号由制造商自行定义,位数不足时,后 补“0X00”。)
terminalType
=
self
.
str2Hex
(
"a865h643gfdj64fd7432"
)
terminalType
=
self
.
str2Hex
(
"a865h643gfdj64fd7432"
)
#终端 ID (7 个字节,由大写字母和数字组成,此终端 ID 由制造商自行 定义,位数不足时,后补“0X00”)
#终端 ID (7 个字节,由大写字母和数字组成,此终端 ID 由制造商自行 定义,位数不足时,后补“0X00”)
terminalId
=
self
.
str2Hex
(
"H6uyt08"
)
terminalId
=
self
.
str2Hex
(
"H6uyt08"
)
#车牌颜色 (车牌颜色,按照 JT/T415-2006 的 5.4.12。未上牌时,取值 为 0) 1:蓝色 2:黄色 3:黑色 4:白色 9:其他
#车牌颜色 (车牌颜色,按照 JT/T415-2006 的 5.4.12。未上牌时,取值 为 0) 1:蓝色 2:黄色 3:黑色 4:白色 9:其他
licencePlateColor
=
self
.
int2hexStringByBytes
(
1
)
licencePlateColor
=
self
.
int2hexStringByBytes
(
2
)
#车辆标识 (车牌颜色为 0 时,表示车辆 VIN;否则,表示公安交通管理 部门颁发的机动车号牌)
#车辆标识 (车牌颜色为 0 时,表示车辆 VIN;否则,表示公安交通管理 部门颁发的机动车号牌)
carSign
=
str
(
"渝B23CX"
.
encode
(
"gbk"
))
carSign
=
self
.
GBKString2Hex
(
"渝B23CX"
)
carSign
=
carSign
[
2
:
len
(
carSign
)
-
1
]
carSign
=
self
.
str2Hex
(
carSign
)
# msg = msg + msgNums + msgNumber
# msg = msg + msgNums + msgNumber
msg
=
msg
+
provinceId
+
manufacturerId
+
terminalType
+
terminalId
+
licencePlateColor
+
carSign
msg
=
msg
+
provinceId
+
countyId
+
manufacturerId
+
terminalType
+
terminalId
+
licencePlateColor
+
carSign
return
msg
return
msg
# 获取消息体,针对图形界面,可传递参数
# 获取消息体,针对图形界面,可传递参数
...
@@ -73,17 +73,17 @@ class TerminalRegister_msg(MessageBase):
...
@@ -73,17 +73,17 @@ class TerminalRegister_msg(MessageBase):
# msgNums = self.int2hexStringByBytes(1,2)
# msgNums = self.int2hexStringByBytes(1,2)
# msgNumber = self.int2hexStringByBytes(1,2)
# msgNumber = self.int2hexStringByBytes(1,2)
#市县域 ID (标示终端安装车辆所在的省域,0 保留,由平台取默认值。省 域 ID 采用 GB/T 2260 中规定的行政区划代 码六位中前两)
#市县域 ID (标示终端安装车辆所在的省域,0 保留,由平台取默认值。省 域 ID 采用 GB/T 2260 中规定的行政区划代 码六位中前两)
provinceId
=
"0103"
provinceId
=
self
.
int2hexStringByBytes
(
provinceId
,
2
)
#制造商 ID (5 个字节,终端制造商编码)
#制造商 ID (5 个字节,终端制造商编码)
manufacturerId
=
self
.
str2Hex
(
"11010"
)
manufacturerId
=
self
.
str2Hex
(
manufacturerId
)
#终端型号 (20 个字节,此终端型号由制造商自行定义,位数不足时,后 补“0X00”。)
#终端型号 (20 个字节,此终端型号由制造商自行定义,位数不足时,后 补“0X00”。)
terminalType
=
self
.
str2Hex
(
"a865h643gfdj64fd7432"
)
terminalType
=
self
.
str2Hex
(
terminalType
)
#终端 ID (7 个字节,由大写字母和数字组成,此终端 ID 由制造商自行 定义,位数不足时,后补“0X00”)
#终端 ID (7 个字节,由大写字母和数字组成,此终端 ID 由制造商自行 定义,位数不足时,后补“0X00”)
terminalId
=
self
.
str2Hex
(
"H6uyt08"
)
terminalId
=
self
.
str2Hex
(
terminalId
)
#车牌颜色 (车牌颜色,按照 JT/T415-2006 的 5.4.12。未上牌时,取值 为 0) 1:蓝色 2:黄色 3:黑色 4:白色 9:其他
#车牌颜色 (车牌颜色,按照 JT/T415-2006 的 5.4.12。未上牌时,取值 为 0) 1:蓝色 2:黄色 3:黑色 4:白色 9:其他
licencePlateColor
=
self
.
int2hexStringByBytes
(
1
)
licencePlateColor
=
self
.
int2hexStringByBytes
(
licencePlateColor
)
#车辆标识 (车牌颜色为 0 时,表示车辆 VIN;否则,表示公安交通管理 部门颁发的机动车号牌)
#车辆标识 (车牌颜色为 0 时,表示车辆 VIN;否则,表示公安交通管理 部门颁发的机动车号牌)
carSign
=
str
(
"渝B23CX"
.
encode
(
"gbk"
))
carSign
=
str
(
carSign
.
encode
(
"gbk"
))
carSign
=
carSign
[
2
:
len
(
carSign
)
-
1
]
carSign
=
carSign
[
2
:
len
(
carSign
)
-
1
]
carSign
=
self
.
str2Hex
(
carSign
)
carSign
=
self
.
str2Hex
(
carSign
)
# msg = msg + msgNums + msgNumber
# msg = msg + msgNums + msgNumber
...
...
lib/protocol/message/data/AlarmEvent_data.py
View file @
df3a9adb
...
@@ -16,18 +16,18 @@ class AlarmEvent_data(MessageBase):
...
@@ -16,18 +16,18 @@ class AlarmEvent_data(MessageBase):
#####################################################
#####################################################
def
generateAlarmEvent_data
(
self
):
def
generateAlarmEvent_data
(
self
):
data
=
""
data
=
""
ignition
=
"0001"
+
self
.
int2hexStringByBytes
(
1
)
#点火上报
ignition
=
"0001"
+
self
.
int2hexStringByBytes
(
0
)
#点火上报
flameout
=
"0002"
+
self
.
int2hexStringByBytes
(
1
)
#熄火上报
flameout
=
"0002"
+
self
.
int2hexStringByBytes
(
0
)
#熄火上报
setUpDefences
=
"0003"
+
self
.
int2hexStringByBytes
(
1
)
#设防上报
setUpDefences
=
"0003"
+
self
.
int2hexStringByBytes
(
0
)
#设防上报
withdrawGarrision
=
"0004"
+
self
.
int2hexStringByBytes
(
1
)
#撤防上报
withdrawGarrision
=
"0004"
+
self
.
int2hexStringByBytes
(
0
)
#撤防上报
doorOpen
=
"0005"
+
self
.
int2hexStringByBytes
(
1
)
#车门打开
doorOpen
=
"0005"
+
self
.
int2hexStringByBytes
(
0
)
#车门打开
doorClose
=
"0006"
+
self
.
int2hexStringByBytes
(
1
)
#车门关闭
doorClose
=
"0006"
+
self
.
int2hexStringByBytes
(
0
)
#车门关闭
systemStart
=
"0007"
+
self
.
int2hexStringByBytes
(
1
)
#系统启动
systemStart
=
"0007"
+
self
.
int2hexStringByBytes
(
0
)
#系统启动
trailCarAlarm
=
"0101"
+
self
.
int2hexStringByBytes
(
1
)
#拖车报警
trailCarAlarm
=
"0101"
+
self
.
int2hexStringByBytes
(
0
)
#拖车报警
locationTooLong
=
"0102"
+
self
.
int2hexStringByBytes
(
1
)
#定位过长报警
locationTooLong
=
"0102"
+
self
.
int2hexStringByBytes
(
0
)
#定位过长报警
terminalPullOut
=
"0103"
+
self
.
int2hexStringByBytes
(
1
)
#终端拔出报警
terminalPullOut
=
"0103"
+
self
.
int2hexStringByBytes
(
0
)
#终端拔出报警
terminalInsert
=
"0104"
+
self
.
int2hexStringByBytes
(
1
)
#终端插入报警
terminalInsert
=
"0104"
+
self
.
int2hexStringByBytes
(
0
)
#终端插入报警
lowVoltage
=
"0105"
+
self
.
int2hexStringByBytes
(
1
)
#低电压报警
lowVoltage
=
"0105"
+
self
.
int2hexStringByBytes
(
0
)
#低电压报警
#怠速过长报警 附带信息见 表 C6EXT1
#怠速过长报警 附带信息见 表 C6EXT1
idlingSpeedOver
=
"0106"
+
self
.
int2hexStringByBytes
(
9
)
+
self
.
getIdlingSpeedOver
()
idlingSpeedOver
=
"0106"
+
self
.
int2hexStringByBytes
(
9
)
+
self
.
getIdlingSpeedOver
()
#超速报警 附带信息见 表 C6EXT2
#超速报警 附带信息见 表 C6EXT2
...
@@ -36,21 +36,24 @@ class AlarmEvent_data(MessageBase):
...
@@ -36,21 +36,24 @@ class AlarmEvent_data(MessageBase):
fatigueDriving
=
"0108"
+
self
.
int2hexStringByBytes
(
5
)
+
self
.
getFatigueDriving
()
fatigueDriving
=
"0108"
+
self
.
int2hexStringByBytes
(
5
)
+
self
.
getFatigueDriving
()
#水温报警 附带信息见 表 C6EXT4
#水温报警 附带信息见 表 C6EXT4
waterTemperatureAlarm
=
"0109"
+
self
.
int2hexStringByBytes
(
9
)
+
self
.
getWaterTemperatureAlarm
()
waterTemperatureAlarm
=
"0109"
+
self
.
int2hexStringByBytes
(
9
)
+
self
.
getWaterTemperatureAlarm
()
highSpeedNeutralGear
=
"010A"
+
self
.
int2hexStringByBytes
(
1
)
#高速空档滑行报警
highSpeedNeutralGear
=
"010A"
+
self
.
int2hexStringByBytes
(
0
)
#高速空档滑行报警
oilExpendNotSurport
=
"010B"
+
self
.
int2hexStringByBytes
(
1
)
#油耗不支持报警
oilExpendNotSurport
=
"010B"
+
self
.
int2hexStringByBytes
(
0
)
#油耗不支持报警
OBDNotSurport
=
"010C"
+
self
.
int2hexStringByBytes
(
1
)
#OBD 不支持报警
OBDNotSurport
=
"010C"
+
self
.
int2hexStringByBytes
(
0
)
#OBD 不支持报警
lowWaterTemperatureHighSpeed
=
"010D"
+
self
.
int2hexStringByBytes
(
1
)
#低水温高转速
lowWaterTemperatureHighSpeed
=
"010D"
+
self
.
int2hexStringByBytes
(
0
)
#低水温高转速
buslineNotSleep
=
"010E"
+
self
.
int2hexStringByBytes
(
1
)
#总线不睡眠报警
buslineNotSleep
=
"010E"
+
self
.
int2hexStringByBytes
(
0
)
#总线不睡眠报警
illegalOpenDoor
=
"010f"
+
self
.
int2hexStringByBytes
(
1
)
#非法开门
illegalOpenDoor
=
"010f"
+
self
.
int2hexStringByBytes
(
0
)
#非法开门
illegalFire
=
"0110"
+
self
.
int2hexStringByBytes
(
1
)
#非法点火
illegalFire
=
"0110"
+
self
.
int2hexStringByBytes
(
0
)
#非法点火
rapidAccelerateAlarm
=
"0111"
+
self
.
int2hexStringByBytes
(
1
)
#急加速报警
rapidAccelerateAlarm
=
"0111"
+
self
.
int2hexStringByBytes
(
0
)
#急加速报警
sharpSlowdownAlarm
=
"0112"
+
self
.
int2hexStringByBytes
(
1
)
#急减速报警
sharpSlowdownAlarm
=
"0112"
+
self
.
int2hexStringByBytes
(
0
)
#急减速报警
sharpBendAlarm
=
"0113"
+
self
.
int2hexStringByBytes
(
1
)
#急拐弯报警
sharpBendAlarm
=
"0113"
+
self
.
int2hexStringByBytes
(
0
)
#急拐弯报警
crashAlarm
=
"0114"
+
self
.
int2hexStringByBytes
(
1
)
#碰撞报警
crashAlarm
=
"0114"
+
self
.
int2hexStringByBytes
(
0
)
#碰撞报警
rapidChangeLines
=
"0115"
+
self
.
int2hexStringByBytes
(
1
)
#急变道报警
rapidChangeLines
=
"0115"
+
self
.
int2hexStringByBytes
(
0
)
#急变道报警
# data = buslineNotSleep
data
=
data
+
ignition
+
flameout
+
setUpDefences
+
withdrawGarrision
+
doorOpen
data
=
data
+
ignition
+
flameout
+
setUpDefences
+
withdrawGarrision
+
doorOpen
data
=
data
+
doorClose
+
systemStart
+
trailCarAlarm
+
locationTooLong
+
terminalPullOut
data
=
data
+
doorClose
+
systemStart
+
trailCarAlarm
+
locationTooLong
+
terminalPullOut
data
+
data
+
terminalInsert
+
lowVoltage
+
idlingSpeedOver
+
overspeedAlarm
+
fatigueDriving
data
=
data
+
terminalInsert
+
lowVoltage
+
idlingSpeedOver
+
overspeedAlarm
+
fatigueDriving
data
=
data
+
waterTemperatureAlarm
+
highSpeedNeutralGear
+
oilExpendNotSurport
+
OBDNotSurport
+
lowWaterTemperatureHighSpeed
data
=
data
+
waterTemperatureAlarm
+
highSpeedNeutralGear
+
oilExpendNotSurport
+
OBDNotSurport
+
lowWaterTemperatureHighSpeed
data
=
data
+
buslineNotSleep
+
illegalOpenDoor
+
illegalFire
+
rapidAccelerateAlarm
+
sharpSlowdownAlarm
data
=
data
+
buslineNotSleep
+
illegalOpenDoor
+
illegalFire
+
rapidAccelerateAlarm
+
sharpSlowdownAlarm
data
=
data
+
sharpBendAlarm
+
crashAlarm
+
rapidChangeLines
data
=
data
+
sharpBendAlarm
+
crashAlarm
+
rapidChangeLines
...
...
lib/protocol/message/data/CarSafeStatusInfo.py
View file @
df3a9adb
...
@@ -38,13 +38,13 @@ class CarSafeStatusInfo(MessageBase):
...
@@ -38,13 +38,13 @@ class CarSafeStatusInfo(MessageBase):
# 按照高位在前,低位在后的规则
# 按照高位在前,低位在后的规则
#####################################################
#####################################################
def
getSecurityStatusHex
(
self
):
def
getSecurityStatusHex
(
self
):
accStatus
=
1
#acc状态,1:开 0:关
accStatus
=
0
#acc状态,1:开 0:关
defenseStatus
=
2
#设防撤防状态,2:设防 0:撤防
defenseStatus
=
0
#设防撤防状态,2:设防 0:撤防
brakeStatus
=
0
#脚刹状态,4:踩下 0:松开
brakeStatus
=
0
#脚刹状态,4:踩下 0:松开
acceleratorStatus
=
8
#是否踩油门,8:踩下 0:松开
acceleratorStatus
=
0
#是否踩油门,8:踩下 0:松开
handBrakeStatus
=
0
#手刹状态,16:拉起手刹 0:松开手刹
handBrakeStatus
=
0
#手刹状态,16:拉起手刹 0:松开手刹
mainSafetyBelt
=
32
#主驾驶安全带,32:插入安全带 0:松开安全带
mainSafetyBelt
=
0
#主驾驶安全带,32:插入安全带 0:松开安全带
subSafetyBelt
=
64
#副驾驶安全带,64:插入安全带 0:松开安全带
subSafetyBelt
=
0
#副驾驶安全带,64:插入安全带 0:松开安全带
retain
=
0
#预留字段
retain
=
0
#预留字段
val
=
accStatus
+
defenseStatus
+
brakeStatus
+
acceleratorStatus
+
handBrakeStatus
+
mainSafetyBelt
+
subSafetyBelt
+
retain
val
=
accStatus
+
defenseStatus
+
brakeStatus
+
acceleratorStatus
+
handBrakeStatus
+
mainSafetyBelt
+
subSafetyBelt
+
retain
...
@@ -59,8 +59,8 @@ class CarSafeStatusInfo(MessageBase):
...
@@ -59,8 +59,8 @@ class CarSafeStatusInfo(MessageBase):
rfDoorStatus
=
0
#右前门,2:开 0:关
rfDoorStatus
=
0
#右前门,2:开 0:关
lbDoorStatus
=
0
#左后门,4:开 0:关
lbDoorStatus
=
0
#左后门,4:开 0:关
rbDoorStatus
=
0
#右后门,8:开 0:关
rbDoorStatus
=
0
#右后门,8:开 0:关
trunk
=
0
#后备箱,
32
:开 0:关
trunk
=
0
#后备箱,
16
:开 0:关
enginCover
=
0
#发送机盖:64
:开 0:关
enginCover
=
32
#发送机盖:32
:开 0:关
retain1
=
0
#预留字段
retain1
=
0
#预留字段
retain2
=
0
#预留字段
retain2
=
0
#预留字段
...
@@ -144,7 +144,7 @@ class CarSafeStatusInfo(MessageBase):
...
@@ -144,7 +144,7 @@ class CarSafeStatusInfo(MessageBase):
retain2
=
0
retain2
=
0
retain3
=
0
retain3
=
0
retain4
=
0
retain4
=
0
#档位,0:p 16:R 32:N 48:D 64:1挡 80:2挡 96:3挡 112:4挡 128:5挡 144:
1
6挡 160:M挡 176:S挡
#档位,0:p 16:R 32:N 48:D 64:1挡 80:2挡 96:3挡 112:4挡 128:5挡 144:6挡 160:M挡 176:S挡
gears
=
0
gears
=
0
val
=
retain1
+
retain2
+
retain3
+
retain4
+
gears
val
=
retain1
+
retain2
+
retain3
+
retain4
+
gears
...
...
lib/protocol/message/data/SaloonCarOBD_data.py
View file @
df3a9adb
...
@@ -37,7 +37,7 @@ class SaloonCarOBD_data(MessageBase):
...
@@ -37,7 +37,7 @@ class SaloonCarOBD_data(MessageBase):
#燃油压力 , 0 - 500kpa
#燃油压力 , 0 - 500kpa
oilPressure
=
"60A0"
+
self
.
int2hexStringByBytes
(
2
)
+
self
.
int2hexStringByBytes
(
276
,
2
)
oilPressure
=
"60A0"
+
self
.
int2hexStringByBytes
(
2
)
+
self
.
int2hexStringByBytes
(
276
,
2
)
#故障码状态 , 发动机故障码状态
#故障码状态 , 发动机故障码状态
troubleCodeStatus
=
"6014"
+
self
.
int2hexStringByBytes
(
1
)
+
self
.
int2hexStringByBytes
(
0
)
troubleCodeStatus
=
"6014"
+
self
.
int2hexStringByBytes
(
1
)
+
self
.
int2hexStringByBytes
(
1
)
#故障码个数
#故障码个数
troubleCodeNum
=
"6010"
+
self
.
int2hexStringByBytes
(
1
)
+
self
.
int2hexStringByBytes
(
2
)
troubleCodeNum
=
"6010"
+
self
.
int2hexStringByBytes
(
1
)
+
self
.
int2hexStringByBytes
(
2
)
#空气流量 , 0.1 实际值为上传值/10 0.1g/s
#空气流量 , 0.1 实际值为上传值/10 0.1g/s
...
@@ -51,9 +51,9 @@ class SaloonCarOBD_data(MessageBase):
...
@@ -51,9 +51,9 @@ class SaloonCarOBD_data(MessageBase):
#计算负荷值
#计算负荷值
calculateLoadValue
=
"6040"
+
self
.
int2hexStringByBytes
(
1
)
+
self
.
int2hexStringByBytes
(
44
)
calculateLoadValue
=
"6040"
+
self
.
int2hexStringByBytes
(
1
)
+
self
.
int2hexStringByBytes
(
44
)
#长期燃油修正(气缸列 1 和 3)
#长期燃油修正(气缸列 1 和 3)
fuelTrim
=
"6070"
+
self
.
int2hexStringByBytes
(
2
)
+
self
.
int2hexStringByBytes
(
56
,
2
)
fuelTrim
=
"6070"
+
self
.
int2hexStringByBytes
(
2
)
+
self
.
int2hexStringByBytes
(
230
,
2
)
#第一缸点火正时提前角 ,显示值为上传值-64
#第一缸点火正时提前角 ,显示值为上传值-64
fireAngle
=
"60E0"
+
self
.
int2hexStringByBytes
(
2
)
+
self
.
int2hexStringByBytes
(
80
)
fireAngle
=
"60E0"
+
self
.
int2hexStringByBytes
(
2
)
+
self
.
int2hexStringByBytes
(
80
0
,
2
)
#前刹车片磨损 , 0 正常/否则,显示对应数据,单位:级
#前刹车片磨损 , 0 正常/否则,显示对应数据,单位:级
frontBrakeBlockAbrasion
=
"6701"
+
self
.
int2hexStringByBytes
(
1
)
+
self
.
int2hexStringByBytes
(
0
)
frontBrakeBlockAbrasion
=
"6701"
+
self
.
int2hexStringByBytes
(
1
)
+
self
.
int2hexStringByBytes
(
0
)
#后刹车片磨损 , 0 正常/否则,显示对应数据,单位:级
#后刹车片磨损 , 0 正常/否则,显示对应数据,单位:级
...
@@ -67,7 +67,7 @@ class SaloonCarOBD_data(MessageBase):
...
@@ -67,7 +67,7 @@ class SaloonCarOBD_data(MessageBase):
#冷却液液位 , 显示值为上传值-48
#冷却液液位 , 显示值为上传值-48
coolingLiquidLocation
=
"6706"
+
self
.
int2hexStringByBytes
(
2
)
+
self
.
int2hexStringByBytes
(
65
,
2
)
coolingLiquidLocation
=
"6706"
+
self
.
int2hexStringByBytes
(
2
)
+
self
.
int2hexStringByBytes
(
65
,
2
)
#续航里程 0.1 km ; 显示值为上传值/10
#续航里程 0.1 km ; 显示值为上传值/10
enduranceMileage
=
"6707"
+
self
.
int2hexStringByBytes
(
4
)
+
self
.
int2hexStringByBytes
(
38
0
,
4
)
enduranceMileage
=
"6707"
+
self
.
int2hexStringByBytes
(
4
)
+
self
.
int2hexStringByBytes
(
38
2
,
4
)
data
=
data
+
engineSpeed
+
carSpeed
+
surplusOil
+
coolingLiquidTemperature
+
airInletTemperature
data
=
data
+
engineSpeed
+
carSpeed
+
surplusOil
+
coolingLiquidTemperature
+
airInletTemperature
data
=
data
+
intakeManifoldPressure
+
atmosphericPressure
+
envTemperature
+
acceleratorLocation
+
oilPressure
data
=
data
+
intakeManifoldPressure
+
atmosphericPressure
+
envTemperature
+
acceleratorLocation
+
oilPressure
...
@@ -81,9 +81,9 @@ class SaloonCarOBD_data(MessageBase):
...
@@ -81,9 +81,9 @@ class SaloonCarOBD_data(MessageBase):
# 获取剩余油量
# 获取剩余油量
#####################################################
#####################################################
def
getSurplusOil
(
self
):
def
getSurplusOil
(
self
):
# 剩余油量 ,剩余油量,单位
L 或%Bit15=0 百分比%,OBD 都为百分比
Bit15=1 单位 L,显示值为上传值/10 (32768)
# 剩余油量 ,剩余油量,单位
L或% ; Bit15=0 百分比%,OBD都为百分比 ;
Bit15=1 单位 L,显示值为上传值/10 (32768)
units
=
32768
units
=
0
surplusOil
=
80
0
surplusOil
=
80
1
data
=
units
+
surplusOil
data
=
units
+
surplusOil
dataHex
=
self
.
int2hexStringByBytes
(
data
,
2
)
dataHex
=
self
.
int2hexStringByBytes
(
data
,
2
)
return
dataHex
return
dataHex
...
...
lib/socket/messageTest.py
View file @
df3a9adb
...
@@ -47,6 +47,7 @@ def sendSingleMsg(msg):
...
@@ -47,6 +47,7 @@ def sendSingleMsg(msg):
# client.send(bytes.fromhex(msg))
# client.send(bytes.fromhex(msg))
data
=
client
.
recv
(
BUF_SIZE
)
data
=
client
.
recv
(
BUF_SIZE
)
print
(
data
)
print
(
data
)
print
(
PlatformCommon_res
(
data
)
.
getOriginalMsg
())
print
(
PlatformCommon_res
(
data
)
.
getMsg
())
#解析平台通用应答消息
print
(
PlatformCommon_res
(
data
)
.
getMsg
())
#解析平台通用应答消息
# print(TerminalRegister_res(data).getMsg()) #解析终端注册应答消息
# print(TerminalRegister_res(data).getMsg()) #解析终端注册应答消息
# print(PlatefromVersionInfo_res(data).getMsg()) #解析平台版本信息包上传应答
# print(PlatefromVersionInfo_res(data).getMsg()) #解析平台版本信息包上传应答
...
...
templates/messageTools/message/terminalRegister_msg_page.html
View file @
df3a9adb
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
</div>
</div>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置终端注册消息内容:
</H3>
<H3
style=
"border-bottom: 1px solid #eee;"
>
设置终端注册消息内容:
</H3>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<ul
class=
"protocol_content"
style=
"padding:0px;"
>
<li><label>
市县域ID:
</label><input
id=
"provinceId"
type=
"text"
class=
"form-control"
value=
"
0
103"
></li>
<li><label>
市县域ID:
</label><input
id=
"provinceId"
type=
"text"
class=
"form-control"
value=
"103"
></li>
<li><label>
制造商ID:
</label><input
id=
"manufacturerId"
type=
"text"
class=
"form-control"
value=
"11010"
></li>
<li><label>
制造商ID:
</label><input
id=
"manufacturerId"
type=
"text"
class=
"form-control"
value=
"11010"
></li>
<li
style=
"width:500px;"
><label>
终端型号:
</label><input
style=
"width:320px;"
id=
"terminalType"
type=
"text"
class=
"form-control"
value=
"a865h643gfdj64fd7432"
></li>
<li
style=
"width:500px;"
><label>
终端型号:
</label><input
style=
"width:320px;"
id=
"terminalType"
type=
"text"
class=
"form-control"
value=
"a865h643gfdj64fd7432"
></li>
<li><label>
终端ID:
</label><input
id=
"terminalId"
type=
"text"
class=
"form-control"
value=
"H6uyt08"
></li>
<li><label>
终端ID:
</label><input
id=
"terminalId"
type=
"text"
class=
"form-control"
value=
"H6uyt08"
></li>
...
...
views/messageTools/message_process.py
View file @
df3a9adb
...
@@ -71,7 +71,7 @@ def porcessTerminalRegisterMsg():
...
@@ -71,7 +71,7 @@ def porcessTerminalRegisterMsg():
subPkg
=
int
(
request
.
form
.
get
(
"subPkg"
))
subPkg
=
int
(
request
.
form
.
get
(
"subPkg"
))
pkgCounts
=
int
(
request
.
form
.
get
(
"pkgCounts"
))
pkgCounts
=
int
(
request
.
form
.
get
(
"pkgCounts"
))
provinceId
=
request
.
form
.
get
(
"provinceId"
)
provinceId
=
int
(
request
.
form
.
get
(
"provinceId"
)
)
manufacturerId
=
request
.
form
.
get
(
"manufacturerId"
)
manufacturerId
=
request
.
form
.
get
(
"manufacturerId"
)
terminalType
=
request
.
form
.
get
(
"terminalType"
)
terminalType
=
request
.
form
.
get
(
"terminalType"
)
terminalId
=
request
.
form
.
get
(
"terminalId"
)
terminalId
=
request
.
form
.
get
(
"terminalId"
)
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment