update
This commit is contained in:
@@ -5,8 +5,8 @@ import json
|
||||
import queue
|
||||
from typing import Dict
|
||||
# from Device.SunnyLinker import SunnyLinker64
|
||||
from dataBuffer import ParadigmRingBuffer
|
||||
from filterProcess import FilterRingBuffer
|
||||
from Zmq.dataBuffer import ParadigmRingBuffer
|
||||
from Zmq.filterProcess import FilterRingBuffer
|
||||
from PubLibrary.InifileHelper import IniRead
|
||||
from logs.log import algo_log
|
||||
|
||||
@@ -42,22 +42,21 @@ class zmqServer(threading.Thread):
|
||||
self.context = zmq.Context()
|
||||
# 指令通道 (8099) - ROUTER:短JSON命令,低频率
|
||||
self.cmd_socket = self.context.socket(zmq.ROUTER)
|
||||
self.cmd_socket.setsockopt(zmq.RCVHWM, 100) # 指令不需要大缓存,100条足够
|
||||
self.cmd_socket.setsockopt(zmq.SNDHWM, 100)
|
||||
self.cmd_socket.setsockopt(zmq.TCP_NODELAY, 1) # 禁用Nagle算法,降低指令延迟
|
||||
# 通用套接字选项:仍在 SocketOption 中
|
||||
self.cmd_socket.setsockopt(zmq.SocketOption.RCVHWM, 100)
|
||||
self.cmd_socket.setsockopt(zmq.SocketOption.SNDHWM, 100)
|
||||
self.cmd_socket.bind(f"tcp://{self.host}:{cmd_port}")
|
||||
|
||||
# 数据通道 (8100) - ROUTER:高频脑电二进制流
|
||||
self.data_socket = self.context.socket(zmq.ROUTER)
|
||||
self.data_socket.setsockopt(zmq.RCVHWM, 500) # 500包=10秒缓存,足够应对短时卡顿
|
||||
self.data_socket.setsockopt(zmq.TCP_NODELAY, 1) # 禁用Nagle算法,减少数据传输延迟
|
||||
self.data_socket.setsockopt(zmq.SocketOption.RCVHWM, 500)
|
||||
self.data_socket.bind(f"tcp://{self.host}:{data_port}")
|
||||
|
||||
# Poller 轮训器(保持不变)
|
||||
self.poller = zmq.Poller()
|
||||
self.poller.register(self.cmd_socket, zmq.POLLIN)
|
||||
self.poller.register(self.data_socket, zmq.POLLIN)
|
||||
|
||||
|
||||
# 业务变量
|
||||
self.targetFreqs = []
|
||||
self.changeTarget = False # 更换目标频率
|
||||
@@ -287,14 +286,14 @@ class zmqServer(threading.Thread):
|
||||
|
||||
def run(self):
|
||||
self.running = True
|
||||
print(f"ZMQ Server started - CMD Port: {self.cmd_port}, DATA Port: {self.data_port}")
|
||||
algo_log(f"algo ZMQ Server started - CMD Port: {self.cmd_port}, DATA Port: {self.data_port}", level="INFO")
|
||||
|
||||
try:
|
||||
while self.running:
|
||||
# 1. 处理发送队列(命令端口广播)
|
||||
self._process_send_queue()
|
||||
|
||||
# 2. 轮训监听两个Socket的输入事件(10ms超时,避免阻塞)
|
||||
# 2. 轮训监听两个Socket的输入事件
|
||||
socks = dict(self.poller.poll(50))
|
||||
|
||||
# 处理命令端口消息
|
||||
|
||||
Reference in New Issue
Block a user