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
549993a0
Commit
549993a0
authored
Feb 11, 2020
by
liyuanhong
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
完成查询终端属性应答消息类
parent
df74fb48
Changes
3
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
159 additions
and
3 deletions
+159
-3
lib/protocol/message/MessageBase.py
lib/protocol/message/MessageBase.py
+3
-2
lib/protocol/message/QueryTerminalProperty_res.py
lib/protocol/message/QueryTerminalProperty_res.py
+156
-0
lib/protocol/message/SetTerminalParam_msg.py
lib/protocol/message/SetTerminalParam_msg.py
+0
-1
No files found.
lib/protocol/message/MessageBase.py
View file @
549993a0
...
...
@@ -148,9 +148,9 @@ class MessageBase(Base):
####################################################
# 将10进制转换位8421码
#####################################################
def
int2BCD
(
self
,
data
):
def
int2BCD
(
self
,
data
,
bytescount
=
6
):
data
=
str
(
data
)
while
len
(
data
)
<
1
2
:
while
len
(
data
)
<
bytescount
*
2
:
data
=
"0"
+
data
return
data
...
...
@@ -206,4 +206,5 @@ if __name__ == "__main__":
# print(MessageBase().generateMsg())
print
(
MessageBase
()
.
GBKString2Hex
(
"渝B23CX"
))
print
(
MessageBase
()
.
hex2GBKString
(
"5c7864335c7865354232334358"
))
print
(
MessageBase
()
.
int2BCD
(
123456789012345
,
10
))
lib/protocol/message/QueryTerminalProperty_res.py
0 → 100644
View file @
549993a0
#encoding:utf-8
'''
定义查询终端属性应答消息
'''
from
lib.protocol.message.MessageBase
import
MessageBase
class
QueryTerminalProperty_res
(
MessageBase
):
def
__init__
(
self
):
super
()
.
__init__
()
#不执行该方法,无法使用父类里面定义的属性
pass
#######################################################
# 生成一条完整的消息
#######################################################
def
generateMsg
(
self
):
msg
=
""
msgHeader
=
self
.
getMsgHeader
()
msgBody
=
self
.
getMsgBody
()
checkCode
=
self
.
getCheckCode
(
msgHeader
+
msgBody
)
msg
=
msg
+
self
.
IDENTIFY
info
=
msgHeader
+
msgBody
+
checkCode
info
=
self
.
replace7e7d
(
info
)
msg
=
msg
+
info
msg
=
msg
+
self
.
IDENTIFY
return
msg
#######################################################
# 获取消息体
#######################################################
def
getMsgBody
(
self
):
msg
=
""
# 终端类型
terminalType
=
self
.
getTerminalType
()
# 制造商 ID,5 个字节,终端制造商编码
manufacturerId
=
self
.
str2Hex
(
"id123"
)
#终端型号,20 个字节,此终端型号由制造商自行定义,位数不足时 后补“0X00”。
terminalMode
=
self
.
str2Hex
(
"mode_123456789012345"
)
#终端 ID,7 个字节,由大写字母和数字组成,此终端 ID 由制造商 自行定义,位数不足时,后补“0X00”。
terminalId
=
self
.
str2Hex
(
"id121345"
)
#终端 SIM 卡 ICCID
ICCID
=
self
.
int2BCD
(
6238964579643234
,
10
)
#终端硬件版本号长度
hardwareVersionNumLen
=
self
.
int2hexStringByBytes
(
10
)
#终端硬件版本号
hardwareVersion
=
self
.
GBKString2Hex
(
"version1.2"
)
#终端固件版本号长度
firmwareVersionLen
=
self
.
int2hexStringByBytes
(
11
)
#终端固件版本号
firmwareVersion
=
self
.
GBKString2Hex
(
"firmware1.2"
)
#GNSS 模块属性
GNSSProperty
=
self
.
getGNSSProperty
()
#通信模块属性
communicationProperty
=
self
.
getCommunicationProperty
()
data
=
terminalType
+
manufacturerId
+
terminalMode
+
terminalId
+
ICCID
data
=
data
+
hardwareVersionNumLen
+
hardwareVersion
+
firmwareVersionLen
+
firmwareVersion
+
GNSSProperty
data
=
data
+
communicationProperty
return
data
return
msg
#######################################################
# 获取消息头
#######################################################
def
getMsgHeader
(
self
):
# msgID = self.int2hexStringByBytes(102,2) #消息id
msgID
=
"0107"
subPkg
=
0
msgBodyProperty
=
self
.
getMsgBodyProperty
(
msgBodyLen
=
int
(
len
(
self
.
getMsgBody
())
/
2
),
subPkg
=
subPkg
)
#消息体属性
phoneNum
=
self
.
int2BCD
(
13146201119
)
#终端手机号
msgWaterCode
=
self
.
int2hexStringByBytes
(
1
,
2
)
#消息流水号
if
subPkg
!=
8192
:
subPkgContent
=
""
#消息包封装项
else
:
subPkgContent
=
self
.
getMsgPackage
()
data
=
msgID
+
msgBodyProperty
+
phoneNum
+
msgWaterCode
+
subPkgContent
return
data
#获取消息体属性
def
getMsgBodyProperty
(
self
,
msgBodyLen
=
128
,
encryptionType
=
0
,
subPkg
=
0
):
if
msgBodyLen
>=
512
:
raise
RuntimeError
(
'消息体长度超长!'
)
msgBodyLen
=
msgBodyLen
#消息体长度
encryptionType
=
encryptionType
#加密方式
subPkg
=
subPkg
#分包
retain
=
0
#保留位
data
=
msgBodyLen
+
encryptionType
+
subPkg
+
retain
dataHex
=
self
.
int2hexStringByBytes
(
data
,
2
)
return
dataHex
#######################################################
# 获取终端类型
#######################################################
def
getTerminalType
(
self
):
#bit0,0:不适用客运车辆,1:适用客运车辆; (1)
# bit1,0:不适用危险品车辆,1:适用危险品车辆; (2)
# bit2,0:不适用普通货运车辆,1:适用普通货运车辆 (4)
# bit3,0:不适用出租车辆,1:适用出租车辆; (8)
# bit6,0:不支持硬盘录像,1:支持硬盘录像; (64)
# bit7,0:一体机,1:分体机。 (128)
bit0
=
1
bit1
=
2
bit2
=
4
bit3
=
8
bit6
=
64
bit7
=
128
data
=
bit0
+
bit1
+
bit2
+
bit3
+
bit6
+
bit7
dataHex
=
self
.
int2hexStringByBytes
(
data
,
2
)
return
dataHex
#######################################################
# 获取GNSS 模块属性
#######################################################
def
getGNSSProperty
(
self
):
#bit0,0:不支持 GPS 定位, 1:支持 GPS 定位; (1)
# bit1,0:不支持北斗定位, 1:支持北斗定位; (2)
# bit2,0:不支持 GLONASS 定位, 1:支持 GLONASS 定位 (4)
# bit3,0:不支持 Galileo 定位, 1:支持 Galileo 定位 (8)
bit0
=
1
bit1
=
2
bit2
=
4
bit3
=
8
data
=
bit0
+
bit1
+
bit2
+
bit3
dataHex
=
self
.
int2hexStringByBytes
(
data
)
return
dataHex
#######################################################
# 获取通信模块属性
#######################################################
def
getCommunicationProperty
(
self
):
#bit0,0:不支持 GPRS 通信, 1:支持 GPRS 通信; (1)
# bit1,0:不支持 CDMA 通信, 1:支持 CDMA 通信; (2)
# bit2,0:不支持 TD-SCDMA 通信, 1:支持 TD-SCDMA 通信 (4)
# bit3,0:不支持 WCDMA 通信, 1:支持 WCDMA 通信; (8)
# bit4,0:不支持 CDMA2000 通信, 1:支持 CDMA2000 通信 (16)
# bit5,0:不支持 TD-LTE 通信, 1:支持 TD-LTE 通信; (32)
# bit7,0:不支持其他通信方式, 1:支持其他通信方式 (128)
bit0
=
1
bit1
=
2
bit2
=
4
bit3
=
8
bit4
=
16
bit5
=
32
bit7
=
128
data
=
bit0
+
bit1
+
bit2
+
bit3
+
bit4
+
bit5
+
bit7
dataHex
=
self
.
int2hexStringByBytes
(
data
)
return
dataHex
if
__name__
==
"__main__"
:
print
(
QueryTerminalProperty_res
()
.
generateMsg
())
\ No newline at end of file
lib/protocol/message/SetTerminalParam_msg.py
View file @
549993a0
...
...
@@ -7,7 +7,6 @@ import datetime
from
lib.protocol.message.MessageBase
import
MessageBase
class
SetTerminalParam_msg
(
MessageBase
):
def
__init__
(
self
):
super
()
.
__init__
()
#不执行该方法,无法使用父类里面定义的属性
...
...
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