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 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
- ar4 = AR4(hex(dev.mac), dev.slot, dev.hub_name.str)
44
- if ar4.init():
45
- self._devices[dev.mac] = ar4
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
- while ptr and ptr.contents.mac != 0:
112
- devices.append(ptr.contents)
113
- ptr = ptr[1]
114
- if isinstance(ptr, Ar4Device):
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
- _dll.ar4_sdk_register_trigger_notify(self._handle, self._trigger_callback)
238
- except Exception as e:
239
- logger.error(f"ar4 {self._box_mac} 停止采集异常: {str(e)}")
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)}")
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.2
2
2
  Name: qlsdk2
3
- Version: 0.1.4
3
+ Version: 0.1.6
4
4
  Summary: SDK for quanlan device
5
5
  Home-page: https://github.com/hehuajun/qlsdk
6
6
  Author: hehuajun
@@ -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("程序结束。")
@@ -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