Skip to content

Commit bdd19ce

Browse files
author
NEVSTOP
committed
feat(CSM-TCP-Router): 添加周期性检查配置并改进消息处理
在CSM-TCP-Router配置中添加周期性检查相关参数 修改Python客户端API以支持字节类型消息处理,不再强制使用UTF-8编码
1 parent 5da0191 commit bdd19ce

File tree

2 files changed

+19
-10
lines changed

2 files changed

+19
-10
lines changed

SDK/PythonClientAPI/tcp_router_client.py

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -61,21 +61,27 @@ def disconnect(self):
6161
if self.recv_thread:
6262
self.recv_thread.join(timeout=2)
6363

64-
def send_message(self, message, packet_type=PacketType.CMD, flag1=0, flag2=0):
64+
def send_message(self, message, packet_type, flag1=0, flag2=0):
6565
"""发送消息到服务器"""
6666
if not self.connected:
6767
print("未连接到服务器")
6868
return False
6969

7070
try:
71+
# 确保消息为字节类型
72+
if isinstance(message, str):
73+
message_bytes = message.encode() # 使用系统默认编码
74+
else:
75+
message_bytes = message
76+
7177
# 计算数据长度
72-
data_len = len(message.encode('utf-8'))
78+
data_len = len(message_bytes)
7379
# 构建数据包
7480
header = struct.pack('!IBBBB', data_len, 0x01, packet_type.value, flag1, flag2)
7581
# 发送数据包
7682
with self.lock:
7783
self.socket.sendall(header)
78-
self.socket.sendall(message.encode('utf-8'))
84+
self.socket.sendall(message_bytes)
7985
return True
8086
except Exception as e:
8187
print(f"发送消息失败: {e}")
@@ -84,7 +90,7 @@ def send_message(self, message, packet_type=PacketType.CMD, flag1=0, flag2=0):
8490

8591
def send_message_and_wait_for_reply(self, message, timeout=5):
8692
"""发送消息并等待回复"""
87-
if not self.send_message(message):
93+
if not self.send_message(message, PacketType.CMD):
8894
return None
8995

9096
try:
@@ -96,11 +102,11 @@ def send_message_and_wait_for_reply(self, message, timeout=5):
96102

97103
def post_message(self, message):
98104
"""发送异步消息"""
99-
return self.send_message(message)
105+
return self.send_message(message, PacketType.CMD)
100106

101107
def post_no_rep_message(self, message):
102108
"""发送无返回异步消息"""
103-
return self.send_message(message)
109+
return self.send_message(message, PacketType.CMD)
104110

105111
def ping(self, timeout=2):
106112
"""Ping服务器"""
@@ -114,7 +120,7 @@ def ping(self, timeout=2):
114120
def register_status_change(self, status_name, module_name, callback=None):
115121
"""注册状态变化通知"""
116122
cmd = f"{status_name}@{module_name} -><register>"
117-
success = self.send_message(cmd)
123+
success = self.send_message(cmd, PacketType.CMD)
118124
if success and callback:
119125
with self.lock:
120126
self.status_callbacks[(status_name, module_name)] = callback
@@ -123,7 +129,7 @@ def register_status_change(self, status_name, module_name, callback=None):
123129
def unregister_status_change(self, status_name, module_name):
124130
"""取消注册状态变化通知"""
125131
cmd = f"{status_name}@{module_name} -><unregister>"
126-
success = self.send_message(cmd)
132+
success = self.send_message(cmd, PacketType.CMD)
127133
if success:
128134
with self.lock:
129135
key = (status_name, module_name)
@@ -153,8 +159,8 @@ def _receive_thread(self):
153159
# 解析包头
154160
data_len, version, packet_type, flag1, flag2 = struct.unpack('!IBBBB', header)
155161

156-
# 接收数据
157-
data = self._receive_all(data_len).decode('utf-8')
162+
# 接收数据(保持字节类型)
163+
data = self._receive_all(data_len)
158164

159165
# 处理不同类型的数据包
160166
if packet_type == PacketType.RESP.value:

src/CSM-TCP-Router.lvcsm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,9 @@ Item 28 = "action: end loop"
128128
[CSM Debug Console]
129129
Response Timeout(s) = 30
130130
History Length = 50
131+
Periodic Enable = TRUE
132+
Periodic threashold(#/s) = 0.500000
133+
Periodic Check Peroid(s) = 3.000000
131134

132135
[CSMModule.CSM TCP Router]
133136
VIName = "CSM-TCP-Router.lvlib:CSM-TCP-Router.vi"

0 commit comments

Comments
 (0)