diff --git a/Decoder.py b/Decoder.py index 85b6930..a777072 100644 --- a/Decoder.py +++ b/Decoder.py @@ -331,7 +331,7 @@ class Decoder_main(threading.Thread): pad_eeg_test[:, :int(self.sample_length * self.device_info['sample_rate'])] = data choosenNum, features_2 = self.decoder.predict(pad_eeg_test) if isinstance(choosenNum, np.ndarray): - choosenNum = choosenNum[0] + choosenNum = choosenNum[0]-1 algo_log(f"结果:{choosenNum}, rho: {sorted(features_2[0])[-1] - sorted(features_2[0])[-2]}", level="DEBUG") self.zmqServer.broadcast_message('result', int(choosenNum)) algo_log("SSMVEP发送给界面完成。", level="DEBUG") diff --git a/Zmq/zmqServer.py b/Zmq/zmqServer.py index c6bbef0..87f7702 100644 --- a/Zmq/zmqServer.py +++ b/Zmq/zmqServer.py @@ -355,7 +355,6 @@ class zmqServer(threading.Thread): # 写入范式缓冲区 with self.paradigmBufferLock: - self.paradigmBuffer.appendBuffer(data_np) if self.interval_inited: self.epoch_finished = self.detect_event(data_np) if self.pack_contain_event: @@ -420,8 +419,7 @@ class zmqServer(threading.Thread): # -------------------------- 事件检测 -------------------------- def detect_event(self, samples): - pack_contain_event = False - epoch_finished = False + self.pack_contain_event = False # 第65通道为事件通道 events = np.array(samples[-2], dtype=np.int32).tolist() for idx, event in enumerate(events): @@ -433,21 +431,15 @@ class zmqServer(threading.Thread): -%H-%M-%S"), ] ) - if len(self.count_events) > 0: - algo_log(f"当前有事件未采集完成,新事件{new_key}非法,被忽略") - return pack_contain_event, epoch_finished + self.currentLabel = event + if event == self.predict_event: + self.count_events[new_key] = self.latency + 1 else: - self.currentLabel = event - pack_contain_event = True - if event == self.predict_event: - self.count_events[new_key] = self.latency + 1 - else: - self.count_events[new_key] = self.train_latency + 1 - self.event_inner_idx = idx - algo_log(f"事件检测到: {events},索引: {idx}", level="DEBUG") - else: - pack_contain_event = False - + self.count_events[new_key] = self.train_latency + 1 + self.event_inner_idx = idx + algo_log(f"事件检测到: {events},索引: {idx}", level="DEBUG") + self.pack_contain_event = True + # 倒计时并清理过期事件 drop_items = [] for key, value in self.count_events.items(): @@ -455,15 +447,13 @@ class zmqServer(threading.Thread): if value == 0: drop_items.append(key) self.count_events[key] = value - + for key in drop_items: del self.count_events[key] - - if len(drop_items) > 0: - epoch_finished = True - else: - epoch_finished = False - return pack_contain_event, epoch_finished + + if drop_items: + return True + return False # -------------------------- 主循环 -------------------------- diff --git a/config.ini b/config.ini index 609f74c..54fbec0 100644 --- a/config.ini +++ b/config.ini @@ -19,7 +19,7 @@ Decoder_Host = 127.0.0.1 Decoder_Port = 8099 Serial_port = COM44 save_train_data = 0 -zmqServer_host = 127.0.0.1 +zmqServer_host = 192.168.254.103 [algo_log] # ========== 文件日志配置 ========== diff --git a/datamock.py b/datamock.py index fdf08be..f5cdb11 100644 --- a/datamock.py +++ b/datamock.py @@ -163,7 +163,7 @@ def main(): if ext_label is not None: # 将标签写入当前包所有5个采样点的第65通道 (index 64) # 覆盖全部采样点确保 event_inner_idx 无论落在哪个位置都能被正确检测 - packet[:, 64] = float(ext_label) + packet[:, 64][0] = float(ext_label) ts = datetime.now().strftime('%H:%M:%S') print(f"[{ts}] 打标签: label={ext_label} -> ch64[all 5 samples] (global_sample_idx={global_sample_idx})")