qlsdk2 0.1.4__py3-none-any.whl → 0.1.6__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/ar4m/__init__.py +7 -6
- qlsdk/ar4m/ar4sdk.py +35 -10
- {qlsdk2-0.1.4.dist-info → qlsdk2-0.1.6.dist-info}/METADATA +1 -1
- qlsdk2-0.1.6.dist-info/RECORD +9 -0
- qlsdk/ar4m/ar4m.py +0 -44
- qlsdk/ar4m/example.py +0 -51
- qlsdk2-0.1.4.dist-info/RECORD +0 -11
- {qlsdk2-0.1.4.dist-info → qlsdk2-0.1.6.dist-info}/WHEEL +0 -0
- {qlsdk2-0.1.4.dist-info → qlsdk2-0.1.6.dist-info}/top_level.txt +0 -0
qlsdk/ar4m/__init__.py
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
__path__ = __import__("pkgutil").extend_path(__path__, __name__)
|
|
2
2
|
|
|
3
|
-
from .ar4m import AR4M
|
|
4
3
|
from .ar4sdk import AR4SDK, AR4, Packet, AR4Packet
|
|
5
4
|
|
|
6
5
|
|
|
@@ -34,15 +33,17 @@ class AR4M(object):
|
|
|
34
33
|
def _search_ar4(self):
|
|
35
34
|
try:
|
|
36
35
|
devices = AR4SDK.enum_devices()
|
|
37
|
-
logger.debug(f"_search_ar4 devices size: {len(devices)}")
|
|
36
|
+
# logger.debug(f"_search_ar4 devices size: {len(devices)}")
|
|
38
37
|
for dev in devices:
|
|
39
|
-
logger.debug(f"slot: {dev.slot}, mac: {dev.mac}-{hex(dev.mac)}, hub_name: {dev.hub_name.str}")
|
|
38
|
+
# logger.debug(f"slot: {dev.slot}, mac: {dev.mac}-{hex(dev.mac)}, hub_name: {dev.hub_name.str}")
|
|
40
39
|
if dev.mac in list(self._devices.keys()):
|
|
41
40
|
ar4 = self._devices[dev.mac]
|
|
42
41
|
ar4.update_info()
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
42
|
+
else:
|
|
43
|
+
ar4 = AR4(hex(dev.mac), dev.slot, dev.hub_name.str.decode("utf-8"))
|
|
44
|
+
if ar4.init():
|
|
45
|
+
self._devices[dev.mac] = ar4
|
|
46
|
+
logger.info(f"add device mac: {ar4.box_mac} slot: {ar4.slot} hub_name: {ar4.hub_name}")
|
|
46
47
|
except Exception as e:
|
|
47
48
|
logger.error(f"_search_ar4 异常: {str(e)}")
|
|
48
49
|
finally:
|
qlsdk/ar4m/ar4sdk.py
CHANGED
|
@@ -11,7 +11,8 @@ from time import sleep, time
|
|
|
11
11
|
import os
|
|
12
12
|
|
|
13
13
|
real_path = os.path.realpath(__file__)
|
|
14
|
-
dll_path = f'{real_path}/libs/libAr4SDK.dll'
|
|
14
|
+
dll_path = f'{os.path.dirname(real_path)}/libs/libAr4SDK.dll'
|
|
15
|
+
|
|
15
16
|
# 加载 DLL
|
|
16
17
|
if platform.system() == 'Windows':
|
|
17
18
|
_dll = ctypes.CDLL(dll_path)
|
|
@@ -107,13 +108,19 @@ class AR4SDK:
|
|
|
107
108
|
"""枚举可用设备"""
|
|
108
109
|
devices = []
|
|
109
110
|
ptr = _dll.ar4_sdk_enum_device()
|
|
111
|
+
if not ptr:
|
|
112
|
+
logger.info("没有找到ar4设备")
|
|
113
|
+
return devices
|
|
110
114
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
if
|
|
115
|
-
logger.debug(f"enum_devices break with {ptr}")
|
|
115
|
+
index = 0
|
|
116
|
+
while True:
|
|
117
|
+
device = ptr[index]
|
|
118
|
+
if not device or device.mac == 0:
|
|
116
119
|
break
|
|
120
|
+
# logger.debug(f"get device: {device.slot}, mac: {hex(device.mac)}, hub_name: {device.hub_name.str}")
|
|
121
|
+
devices.append(device)
|
|
122
|
+
index += 1
|
|
123
|
+
|
|
117
124
|
return devices
|
|
118
125
|
|
|
119
126
|
@classmethod
|
|
@@ -158,6 +165,8 @@ class AR4(object):
|
|
|
158
165
|
self._connected = False
|
|
159
166
|
self._conn_time = None
|
|
160
167
|
self._last_time = None
|
|
168
|
+
|
|
169
|
+
self._acq_info = {}
|
|
161
170
|
# 回调函数
|
|
162
171
|
self._data_callback = FuncAr4DataNotify(self._wrap_data_accept())
|
|
163
172
|
self._trigger_callback = FuncAr4TriggerNotify(self._trigger_accept)
|
|
@@ -168,7 +177,14 @@ class AR4(object):
|
|
|
168
177
|
@property
|
|
169
178
|
def box_mac(self):
|
|
170
179
|
return self._box_mac
|
|
180
|
+
@property
|
|
181
|
+
def slot(self):
|
|
182
|
+
return self._slot
|
|
183
|
+
@property
|
|
184
|
+
def hub_name(self):
|
|
185
|
+
return self._hub_name
|
|
171
186
|
def init(self):
|
|
187
|
+
# logger.info(f"init ar4 {self.box_mac}")
|
|
172
188
|
if not self._handle:
|
|
173
189
|
self._connected = self.connect()
|
|
174
190
|
if self._connected:
|
|
@@ -225,6 +241,8 @@ class AR4(object):
|
|
|
225
241
|
logger.info(f"ar4 {self._box_mac} 启动数据采集...")
|
|
226
242
|
"""启动数据采集"""
|
|
227
243
|
|
|
244
|
+
self._acq_info["start_time"] = _get_time()
|
|
245
|
+
|
|
228
246
|
if self._handle:
|
|
229
247
|
# 设置信号数据回调
|
|
230
248
|
try:
|
|
@@ -233,10 +251,10 @@ class AR4(object):
|
|
|
233
251
|
logger.error(f"ar4 {self._box_mac} 停止采集异常: {str(e)}")
|
|
234
252
|
|
|
235
253
|
# 设置trigger数据回调
|
|
236
|
-
try:
|
|
237
|
-
|
|
238
|
-
except Exception as e:
|
|
239
|
-
|
|
254
|
+
# try:
|
|
255
|
+
# _dll.ar4_sdk_register_trigger_notify(self._handle, self._trigger_callback)
|
|
256
|
+
# except Exception as e:
|
|
257
|
+
# logger.error(f"ar4 {self._box_mac} 停止采集异常: {str(e)}")
|
|
240
258
|
# 启动采集
|
|
241
259
|
try:
|
|
242
260
|
logger.debug(f"ar4 {self._box_mac} 启动采集: {self._handle}")
|
|
@@ -253,6 +271,10 @@ class AR4(object):
|
|
|
253
271
|
def stop_acquisition(self):
|
|
254
272
|
"""停止采集"""
|
|
255
273
|
if self._handle:
|
|
274
|
+
try:
|
|
275
|
+
self.get_acq_start_time()
|
|
276
|
+
except Exception as e:
|
|
277
|
+
logger.error(f"ar4 {self._box_mac} 获取开始采集时间异常: {str(e)}")
|
|
256
278
|
try:
|
|
257
279
|
return _dll.ar4_sdk_stop_acq(self._handle) == 0
|
|
258
280
|
except Exception as e:
|
|
@@ -275,6 +297,9 @@ class AR4(object):
|
|
|
275
297
|
def get_acq_start_time(self):
|
|
276
298
|
try:
|
|
277
299
|
ret = _dll.ar4_sdk_get_acq_start_time(self._handle)
|
|
300
|
+
# 更新采样开始时间
|
|
301
|
+
if ret:
|
|
302
|
+
self._acq_info["start_time"] = ret
|
|
278
303
|
logger.debug(f"ar4 {self._box_mac} 获取采样开始时间: {ret}")
|
|
279
304
|
except Exception as e:
|
|
280
305
|
logger.error(f"ar4 {self._box_mac} 获取采样开始时间异常: {str(e)}")
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
qlsdk/__init__.py,sha256=pHMMwFiz7AGYlWvxo-81Obd7gIkojhLAEUGe0yuiAJI,372
|
|
2
|
+
qlsdk/ar4m/__init__.py,sha256=HCFv58t9vYoH2nNN9EiswwdRngiDmh_7h-uwhW-id1I,1784
|
|
3
|
+
qlsdk/ar4m/ar4sdk.py,sha256=bIgjVm5NA3dLYcfNJ9t2oJm-R_yBxrT3a2SDlntr7zA,14838
|
|
4
|
+
qlsdk/ar4m/libs/libAr4SDK.dll,sha256=kZp9_DRwPdAJ5OgTFQSqS8tEETxUs7YmmETuBP2g60U,15402132
|
|
5
|
+
qlsdk/ar4m/libs/libwinpthread-1.dll,sha256=W77ySaDQDi0yxpnQu-ifcU6-uHKzmQpcvsyx2J9j5eg,52224
|
|
6
|
+
qlsdk2-0.1.6.dist-info/METADATA,sha256=DKHe7l7vZIYUHzglcBzEDae7oM14GoULBVcRvpGT3WA,7001
|
|
7
|
+
qlsdk2-0.1.6.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
8
|
+
qlsdk2-0.1.6.dist-info/top_level.txt,sha256=2CHzn0SY-NIBVyBl07Suh-Eo8oBAQfyNPtqQ_aDatBg,6
|
|
9
|
+
qlsdk2-0.1.6.dist-info/RECORD,,
|
qlsdk/ar4m/ar4m.py
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
from ar4sdk import AR4SDK, AR4
|
|
2
|
-
from time import sleep, time
|
|
3
|
-
from threading import Lock, Timer
|
|
4
|
-
from loguru import logger
|
|
5
|
-
|
|
6
|
-
class AR4M(object):
|
|
7
|
-
def __init__(self):
|
|
8
|
-
self._lock = Lock()
|
|
9
|
-
self._search_timer = None
|
|
10
|
-
self._search_running = False
|
|
11
|
-
self._devices: dict[str, AR4] = {}
|
|
12
|
-
|
|
13
|
-
@property
|
|
14
|
-
def devices(self):
|
|
15
|
-
return self._devices
|
|
16
|
-
def search(self):
|
|
17
|
-
if not self._search_running:
|
|
18
|
-
self._search_running = True
|
|
19
|
-
self._search()
|
|
20
|
-
|
|
21
|
-
def _search(self):
|
|
22
|
-
if self._search_running:
|
|
23
|
-
|
|
24
|
-
self._search_timer = Timer(2, self._search_ar4)
|
|
25
|
-
self._search_timer.daemon = True
|
|
26
|
-
self._search_timer.start()
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
def _search_ar4(self):
|
|
30
|
-
try:
|
|
31
|
-
devices = AR4SDK.enum_devices()
|
|
32
|
-
logger.debug(f"_search_ar4 devices size: {len(devices)}")
|
|
33
|
-
for dev in devices:
|
|
34
|
-
logger.debug(f"slot: {dev.slot}, mac: {dev.mac}-{hex(dev.mac)}, hub_name: {dev.hub_name.str}")
|
|
35
|
-
if dev.mac in list(self._devices.keys()):
|
|
36
|
-
ar4 = self._devices[dev.mac]
|
|
37
|
-
ar4.update_info()
|
|
38
|
-
ar4 = AR4(hex(dev.mac), dev.slot, dev.hub_name.str)
|
|
39
|
-
if ar4.init():
|
|
40
|
-
self._devices[dev.mac] = ar4
|
|
41
|
-
except Exception as e:
|
|
42
|
-
logger.error(f"_search_ar4 异常: {str(e)}")
|
|
43
|
-
finally:
|
|
44
|
-
self._search()
|
qlsdk/ar4m/example.py
DELETED
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
from time import sleep
|
|
2
|
-
from loguru import logger
|
|
3
|
-
import os
|
|
4
|
-
from threading import Thread
|
|
5
|
-
|
|
6
|
-
from ar4m import AR4M
|
|
7
|
-
|
|
8
|
-
#------------------------------------------------------------------
|
|
9
|
-
# 日志文件配置
|
|
10
|
-
#------------------------------------------------------------------
|
|
11
|
-
LOG_DIR = os.path.expanduser("./logs")
|
|
12
|
-
LOG_FILE = os.path.join(LOG_DIR, "app_{time}.log")
|
|
13
|
-
if not os.path.exists(LOG_DIR):
|
|
14
|
-
os.mkdir(LOG_DIR)
|
|
15
|
-
|
|
16
|
-
logger.add(LOG_FILE, rotation = "50MB")
|
|
17
|
-
|
|
18
|
-
def consumer(q):
|
|
19
|
-
t = Thread(target=deal_data, args=(q,))
|
|
20
|
-
t.daemon = True
|
|
21
|
-
t.start()
|
|
22
|
-
|
|
23
|
-
def deal_data(q):
|
|
24
|
-
while True:
|
|
25
|
-
data = q.get()
|
|
26
|
-
if data is None:
|
|
27
|
-
break
|
|
28
|
-
logger.info(data)
|
|
29
|
-
|
|
30
|
-
# 主函数
|
|
31
|
-
if __name__ == "__main__":
|
|
32
|
-
try:
|
|
33
|
-
ar4m = AR4M()
|
|
34
|
-
ar4m.search()
|
|
35
|
-
sleep(6)
|
|
36
|
-
for dev in list( ar4m.devices.values()):
|
|
37
|
-
ret = dev.start_acquisition()
|
|
38
|
-
topic, queue = dev.subscribe()
|
|
39
|
-
logger.info(f"启动{dev.box_mac}的数据采集{'成功' if ret else '失败'}")
|
|
40
|
-
|
|
41
|
-
sleep(60)
|
|
42
|
-
|
|
43
|
-
for dev in list( ar4m.devices.values()):
|
|
44
|
-
ret = dev.stop_acquisition()
|
|
45
|
-
dev.get_acq_start_time()
|
|
46
|
-
logger.info(f"关闭{dev.box_mac}的数据采集{'成功' if ret else '失败'}")
|
|
47
|
-
sleep(1)
|
|
48
|
-
except Exception as e:
|
|
49
|
-
logger.error(f"程序运行异常: {str(e)}")
|
|
50
|
-
finally:
|
|
51
|
-
logger.info("程序结束。")
|
qlsdk2-0.1.4.dist-info/RECORD
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
qlsdk/__init__.py,sha256=pHMMwFiz7AGYlWvxo-81Obd7gIkojhLAEUGe0yuiAJI,372
|
|
2
|
-
qlsdk/ar4m/__init__.py,sha256=cKGc8qW2e8JDnaDbxxS7GQhtOQF2PlekNf4WA2LmWXY,1640
|
|
3
|
-
qlsdk/ar4m/ar4m.py,sha256=AOYvvo04dD0W4EMrKDCx63pUzwL1f_CVcM_N4rebhQc,1524
|
|
4
|
-
qlsdk/ar4m/ar4sdk.py,sha256=A0-YRC_TAjw7b15mNa9UFwtsp8xMIxCv9WQKgGtb6ZY,14017
|
|
5
|
-
qlsdk/ar4m/example.py,sha256=cm0HeRb53roKw5HYZ4uqnDZ6suaSUdqOW_hCTcGY8lo,1501
|
|
6
|
-
qlsdk/ar4m/libs/libAr4SDK.dll,sha256=kZp9_DRwPdAJ5OgTFQSqS8tEETxUs7YmmETuBP2g60U,15402132
|
|
7
|
-
qlsdk/ar4m/libs/libwinpthread-1.dll,sha256=W77ySaDQDi0yxpnQu-ifcU6-uHKzmQpcvsyx2J9j5eg,52224
|
|
8
|
-
qlsdk2-0.1.4.dist-info/METADATA,sha256=U7-5HjSjE57ptTxzDNQdC_IF-4ZztkP9s_jfvv2D6uQ,7001
|
|
9
|
-
qlsdk2-0.1.4.dist-info/WHEEL,sha256=In9FTNxeP60KnTkGw7wk6mJPYd_dQSjEZmXdBdMCI-8,91
|
|
10
|
-
qlsdk2-0.1.4.dist-info/top_level.txt,sha256=2CHzn0SY-NIBVyBl07Suh-Eo8oBAQfyNPtqQ_aDatBg,6
|
|
11
|
-
qlsdk2-0.1.4.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|