add filter process
This commit is contained in:
59
Decoder.py
59
Decoder.py
@@ -42,49 +42,33 @@ MODEL_FOLDER = "online_Models"
|
||||
class Decoder_main(threading.Thread):
|
||||
def __init__(self, device_info=None):
|
||||
threading.Thread.__init__(self)
|
||||
self.device_info = {
|
||||
'sample_rate': device_info['sample_rate'],
|
||||
'frame_points': device_info['frame_points'],
|
||||
'channel_nums': device_info['channel_nums'],
|
||||
'channel_names': device_info['channel_names'],
|
||||
'channel_index': device_info['channel_index'],
|
||||
}
|
||||
self.device_info = device_info
|
||||
self.Runing=True
|
||||
self.decoder = None
|
||||
self.decoder_class = None #解码器类别
|
||||
|
||||
# 与采集设备通信的状态码,0为异常,1为正常
|
||||
# self.status_code = 0
|
||||
# self.device_info['sample_rate'] = 250 # 采样率
|
||||
# self.energy = 0 # 电量
|
||||
|
||||
|
||||
self.decodingSteps = 0 # 0=停止解码 1=预热 2=解码中 3=解码完成,发送解码结果
|
||||
|
||||
|
||||
self.zmqServer = None
|
||||
self.sliding_filter = None
|
||||
|
||||
self._init_threads()
|
||||
|
||||
def _init_threads(self):
|
||||
"""初始化ZMQ服务和滤波线程"""
|
||||
# 1. 初始化ZMQServer并启动
|
||||
self.zmqServer = zmqServer(device_info=self.device_info)
|
||||
self.zmqServer.start()
|
||||
|
||||
self.filter = SlidingFilter()
|
||||
self.zmqServer.start() # 启动ZMQ接收线程
|
||||
|
||||
# self.zmqClient = zmqClient(_upper_host, _upper_port)
|
||||
# self.zmqClient.set_zmq_server(self.zmqServer)
|
||||
# self.zmqClient.connect()
|
||||
# 2. 初始化滤波线程(关联ZMQServer的环形缓存)
|
||||
self.sliding_filter = SlidingFilter(
|
||||
ring_buffer=self.zmqServer.filterBuffer,
|
||||
n_chan=self.zmqServer.device_info['channel_nums'],
|
||||
srate=self.zmqServer.device_info['sample_rate']
|
||||
)
|
||||
|
||||
|
||||
# def connect(self, device_type=None, device_host=None, device_port=None, upper_host=None, upper_port=None):
|
||||
# self.DeviceType = device_type if device_type is not None else int(IniRead('system', 'Device_type'))
|
||||
# _device_host = device_host if device_host is not None else str(IniRead('system', 'Device_Host'))
|
||||
# _device_port = device_port if device_port is not None else int(IniRead('system', 'Device_Port'))
|
||||
# _upper_host = upper_host if upper_host is not None else str(IniRead('system', 'Upper_Host'))
|
||||
# _upper_port = upper_port if upper_port is not None else int(IniRead('system', 'Upper_Port'))
|
||||
|
||||
# if self.DeviceType == 1:
|
||||
# self.thread_data_server = SunnyLinker64(_device_host, _device_port, self.device_info['sample_rate'], 64, method='tcp')
|
||||
# self.thread_data_server.host = _device_host
|
||||
# self.thread_data_server.port = _device_port
|
||||
|
||||
# self.thread_data_server.toUv = True
|
||||
# self.thread_data_server.start()
|
||||
# 注册滤波结果回调(示例:打印数据形状)
|
||||
self.sliding_filter.set_result_callback(self.zmqServer.send_filtered_data)
|
||||
|
||||
|
||||
def is_valid_signal(self, data, threshold=1e5): # 判断当前信号是否为有效信号
|
||||
@@ -210,6 +194,10 @@ class Decoder_main(threading.Thread):
|
||||
|
||||
def run(self):
|
||||
while self.Runing:
|
||||
# 当滤波数据大于5秒时,启动滤波线程
|
||||
if self.zmqServer.filterBuffer.GetDataLenCount() > self.device_info['sample_rate'] * 5:
|
||||
self.sliding_filter.start()
|
||||
|
||||
if self.zmqServer.decoder_switch or self.zmqServer.changeTarget:
|
||||
print(f"Decoder_class Switch Detected: {self.zmqServer.decoder_class}")
|
||||
self.zmqServer.decoder_switch = False
|
||||
@@ -487,6 +475,7 @@ class Decoder_main(threading.Thread):
|
||||
@return:
|
||||
'''
|
||||
self.zmqServer.stop()
|
||||
self.sliding_filter.stop()
|
||||
self.Runing=False
|
||||
|
||||
def reset_state(self):
|
||||
|
||||
Reference in New Issue
Block a user