no message
This commit is contained in:
parent
c91d2dc6d6
commit
6bbe6bac71
Binary file not shown.
@ -257,22 +257,62 @@ def test_command():
|
||||
# 创建响应处理器
|
||||
handler = Command02()
|
||||
|
||||
# 原始测试数据
|
||||
hex_string = "4A5801031767631136065701100019010909371501000000000000000000004D"
|
||||
|
||||
# 解析数据长度字段以确定正确的数据包长度
|
||||
expected_len = 14 + 16 + 1 # 头部(14字节) + 数据域(16字节) + 校验码(1字节)
|
||||
|
||||
# 确保只取需要的字节
|
||||
test_data = bytes.fromhex(hex_string[:expected_len * 2]) # *2是因为hex字符串中一个字节用两个字符表示
|
||||
# 直接使用完整的测试数据,不进行裁剪
|
||||
test_data = bytes.fromhex("4A5801031767631136065701100019010909371501000000000000000000004D")
|
||||
|
||||
print("\n测试数据:")
|
||||
print(f"原始数据: {hex_string}")
|
||||
print(f"处理后数据: {test_data.hex().upper()}")
|
||||
print(f"数据内容: {test_data.hex().upper()}")
|
||||
print(f"数据长度: {len(test_data)}字节")
|
||||
|
||||
# 打印详细字段解析
|
||||
handler.debug_print_fields(test_data)
|
||||
# 修改validate_frame方法来处理多余字节
|
||||
def validate_frame(self, data):
|
||||
"""验证帧格式"""
|
||||
try:
|
||||
print("\n开始验证帧格式:")
|
||||
print(f"数据内容: {data.hex().upper()}")
|
||||
print(f"数据长度: {len(data)}字节")
|
||||
|
||||
# 1. 基本格式检查
|
||||
if len(data) < 14:
|
||||
print("数据长度不足14字节")
|
||||
return False
|
||||
|
||||
if data[0:2] != b'JX':
|
||||
print("帧起始标志不是'JX'")
|
||||
return False
|
||||
|
||||
# 2. 获取数据域长度
|
||||
data_len = struct.unpack("<H", data[12:14])[0]
|
||||
expected_total_len = 14 + data_len + 1 # 头部(14) + 数据域 + 校验码(1)
|
||||
|
||||
print(f"\n数据结构分析:")
|
||||
print(f"起始标识: {data[0:2].hex().upper()}")
|
||||
print(f"命令字: {data[2]:02X}")
|
||||
print(f"桩号: {data[3:11].hex().upper()}")
|
||||
print(f"加密方式: {data[11]:02X}")
|
||||
print(f"数据长度: {data_len}")
|
||||
print(f"数据域: {data[14:14 + data_len].hex().upper()}")
|
||||
print(f"校验码: {data[-1]:02X}")
|
||||
|
||||
# 3. 校验码验证
|
||||
check_data = data[2:-1] # 从命令字节开始到校验码之前
|
||||
calculated_check = 0
|
||||
for b in check_data:
|
||||
calculated_check ^= b
|
||||
|
||||
if calculated_check != data[-1]:
|
||||
print(f"校验码不匹配: 计算值={calculated_check:02X}, 接收值={data[-1]:02X}")
|
||||
return False
|
||||
|
||||
print("校验通过")
|
||||
return True
|
||||
|
||||
except Exception as e:
|
||||
print(f"验证帧格式异常: {str(e)}")
|
||||
return False
|
||||
|
||||
# 覆盖原方法
|
||||
handler.validate_frame = validate_frame.__get__(handler)
|
||||
|
||||
# 创建模拟socket
|
||||
class MockSocket:
|
||||
|
@ -6,3 +6,5 @@
|
||||
2025-01-17 17:12:27,913 - ERROR - 代理服务器错误: [WinError 10013] 以一种访问权限不允许的方式做了一个访问套接字的尝试。
|
||||
2025-01-20 09:45:44,376 - INFO - 代理服务器已启动,监听地址: 0.0.0.0:52461
|
||||
2025-01-20 10:43:46,823 - INFO - 代理服务器已启动,监听地址: 0.0.0.0:52461
|
||||
2025-01-20 14:37:17,844 - INFO - 代理服务器已启动,监听地址: 0.0.0.0:52461
|
||||
2025-01-20 16:13:14,958 - INFO - 代理服务器已启动,监听地址: 0.0.0.0:52461
|
||||
|
Loading…
x
Reference in New Issue
Block a user