qlsdk2 0.6.0a10__py3-none-any.whl → 0.6.0a11__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- qlsdk/rsc/device/arskindling.py +42 -3
- qlsdk/rsc/device/base.py +3 -0
- {qlsdk2-0.6.0a10.dist-info → qlsdk2-0.6.0a11.dist-info}/METADATA +1 -1
- {qlsdk2-0.6.0a10.dist-info → qlsdk2-0.6.0a11.dist-info}/RECORD +6 -6
- {qlsdk2-0.6.0a10.dist-info → qlsdk2-0.6.0a11.dist-info}/WHEEL +0 -0
- {qlsdk2-0.6.0a10.dist-info → qlsdk2-0.6.0a11.dist-info}/top_level.txt +0 -0
qlsdk/rsc/device/arskindling.py
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
from multiprocessing import Queue
|
|
2
|
+
from typing import Literal
|
|
2
3
|
from loguru import logger
|
|
3
4
|
from qlsdk.persist import ARSKindlingEDFHandler
|
|
4
5
|
from qlsdk.rsc.interface import IDevice
|
|
@@ -180,6 +181,20 @@ class ARSKindling(QLBaseDevice):
|
|
|
180
181
|
|
|
181
182
|
return list(set(arr))
|
|
182
183
|
|
|
184
|
+
def _produce_impedance(self, body: bytes):
|
|
185
|
+
# 分发阻抗数据包给订阅者
|
|
186
|
+
if len(self._impedance_consumer) > 0:
|
|
187
|
+
packet = ImpedancePacket.transfer(body)
|
|
188
|
+
real_data = self.__impedance_transfer(packet)
|
|
189
|
+
for topic, q in self._impedance_consumer.items():
|
|
190
|
+
try:
|
|
191
|
+
# 队列满了就丢弃最早的数据
|
|
192
|
+
if q.full():
|
|
193
|
+
q.get()
|
|
194
|
+
q.put(real_data, timeout=1)
|
|
195
|
+
except Exception as e:
|
|
196
|
+
logger.error(f"impedance data put to queue exception: {str(e)}")
|
|
197
|
+
|
|
183
198
|
def _produce_signal(self, body: bytes):
|
|
184
199
|
|
|
185
200
|
# 处理信号数据
|
|
@@ -218,7 +233,24 @@ class ARSKindling(QLBaseDevice):
|
|
|
218
233
|
if q.full():
|
|
219
234
|
q.get()
|
|
220
235
|
|
|
221
|
-
q.put(real_data)
|
|
236
|
+
q.put(real_data)
|
|
237
|
+
|
|
238
|
+
# 信号数据转换
|
|
239
|
+
def __impedance_transfer(self, packet: ImpedancePacket):
|
|
240
|
+
channels = {}
|
|
241
|
+
impedance = {}
|
|
242
|
+
#按分区拆分数据格式
|
|
243
|
+
for k in self._channel_spilt.keys():
|
|
244
|
+
logger.trace(f'分区{k}的阻抗数据')
|
|
245
|
+
c, d, p = self.__packet_filter(packet, self._channel_spilt[k], type='impedance')
|
|
246
|
+
if c is not None:
|
|
247
|
+
channels[k] = c
|
|
248
|
+
impedance[k] = d
|
|
249
|
+
packet.channels = channels
|
|
250
|
+
packet.impedance = impedance
|
|
251
|
+
|
|
252
|
+
return packet
|
|
253
|
+
|
|
222
254
|
# 信号数据转换
|
|
223
255
|
def __signal_transfer(self, packet: RscPacket):
|
|
224
256
|
channels = {}
|
|
@@ -241,11 +273,11 @@ class ARSKindling(QLBaseDevice):
|
|
|
241
273
|
|
|
242
274
|
return packet
|
|
243
275
|
|
|
244
|
-
def __packet_filter(self, packet
|
|
276
|
+
def __packet_filter(self, packet, channel_filter=None, type:Literal['signal','impedance']='signal'):
|
|
245
277
|
# 参数检查
|
|
246
278
|
if packet is None or channel_filter is None:
|
|
247
279
|
logger.warning("空数据,忽略")
|
|
248
|
-
return None
|
|
280
|
+
return None, None, None
|
|
249
281
|
|
|
250
282
|
channel_pos = get_sorted_indices_basic(packet.channels, channel_filter)
|
|
251
283
|
|
|
@@ -257,6 +289,13 @@ class ARSKindling(QLBaseDevice):
|
|
|
257
289
|
|
|
258
290
|
# 保留本分区的通道和数据
|
|
259
291
|
channels = [packet.channels[p] for p in channel_pos]
|
|
292
|
+
|
|
293
|
+
#阻抗数据
|
|
294
|
+
if type == 'impedance':
|
|
295
|
+
impedance = [packet.impedance[p] for p in channel_pos]
|
|
296
|
+
return [self._channel_mapping.get(channel_id, []) for channel_id in channels], impedance, None
|
|
297
|
+
|
|
298
|
+
# 信号数据
|
|
260
299
|
eeg = [packet.eeg[p] for p in channel_pos]
|
|
261
300
|
eeg_p = None
|
|
262
301
|
if packet.eeg_p is not None:
|
qlsdk/rsc/device/base.py
CHANGED
|
@@ -137,6 +137,9 @@ class QLBaseDevice(IDevice):
|
|
|
137
137
|
if len(self._impedance_consumer) > 0:
|
|
138
138
|
for topic, q in self._impedance_consumer.items():
|
|
139
139
|
try:
|
|
140
|
+
# 队列满了就丢弃最早的数据
|
|
141
|
+
if q.full():
|
|
142
|
+
q.get()
|
|
140
143
|
q.put(packet, timeout=1)
|
|
141
144
|
except Exception as e:
|
|
142
145
|
logger.error(f"impedance data put to queue exception: {str(e)}")
|
|
@@ -42,8 +42,8 @@ qlsdk/rsc/proxy.py,sha256=9CPdGNGWremwBUh4GvlXAykYB-x_BEPPLqsNvwuwIDE,2736
|
|
|
42
42
|
qlsdk/rsc/command/__init__.py,sha256=iPrPor7NwBIrkQDxz061gVbnlLYK9KE7VXy-NKJy1XQ,12277
|
|
43
43
|
qlsdk/rsc/command/message.py,sha256=nTdG-Vp4MBnltyrgedAWiKD6kzOaPrg58Z_hq6yjhys,12220
|
|
44
44
|
qlsdk/rsc/device/__init__.py,sha256=BzY9lRfssGPUlJ1ys-v3CWNgGihg7mPa2T4X0tl0Vg4,214
|
|
45
|
-
qlsdk/rsc/device/arskindling.py,sha256=
|
|
46
|
-
qlsdk/rsc/device/base.py,sha256=
|
|
45
|
+
qlsdk/rsc/device/arskindling.py,sha256=IVYgCdePI1rnalhZmTWp95eyS05L_xbSo6EhvBTuIvA,11465
|
|
46
|
+
qlsdk/rsc/device/base.py,sha256=isdu4NKQpixWtnsh0t4U7Uecw9QQITmaGyZpKO04aL0,21661
|
|
47
47
|
qlsdk/rsc/device/c16_rs.py,sha256=qXt8m5vwcKQsN8JBllWnAsda5_Y6qkEhfHQQX101TMQ,5826
|
|
48
48
|
qlsdk/rsc/device/c256_rs.py,sha256=7vAEzf_ggNcwrXKmcZMylnKzLFD5ZqtAIfkkI3lQ1iI,1682
|
|
49
49
|
qlsdk/rsc/device/c64_rs.py,sha256=x8wHdwATKDU34j9vXNEXsNSJg23RAWmAKL8pgIGamG8,1091
|
|
@@ -70,7 +70,7 @@ qlsdk/sdk/libs/libAr4SDK.dll,sha256=kZp9_DRwPdAJ5OgTFQSqS8tEETxUs7YmmETuBP2g60U,
|
|
|
70
70
|
qlsdk/sdk/libs/libwinpthread-1.dll,sha256=W77ySaDQDi0yxpnQu-ifcU6-uHKzmQpcvsyx2J9j5eg,52224
|
|
71
71
|
qlsdk/x8/__init__.py,sha256=FDpDK7GAYL-g3vzfU9U_V03QzoYoxH9YLm93PjMlANg,4870
|
|
72
72
|
qlsdk/x8m/__init__.py,sha256=cLeUqEEj65qXw4Qa4REyxoLh6T24anSqPaKe9_lR340,634
|
|
73
|
-
qlsdk2-0.6.
|
|
74
|
-
qlsdk2-0.6.
|
|
75
|
-
qlsdk2-0.6.
|
|
76
|
-
qlsdk2-0.6.
|
|
73
|
+
qlsdk2-0.6.0a11.dist-info/METADATA,sha256=0LHCnkOCM5qaDZAoLglt-mIBltLnZBiaRrta8L9JbHE,1883
|
|
74
|
+
qlsdk2-0.6.0a11.dist-info/WHEEL,sha256=Z4pYXqR_rTB7OWNDYFOm1qRk0RX6GFP2o8LgvP453Hk,91
|
|
75
|
+
qlsdk2-0.6.0a11.dist-info/top_level.txt,sha256=2CHzn0SY-NIBVyBl07Suh-Eo8oBAQfyNPtqQ_aDatBg,6
|
|
76
|
+
qlsdk2-0.6.0a11.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|