nsqdriver 0.4.3__cp310-cp310-win_amd64.whl → 0.5.7__cp310-cp310-win_amd64.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.

Potentially problematic release.


This version of nsqdriver might be problematic. Click here for more details.

nsqdriver/NS_MCI.py CHANGED
@@ -203,13 +203,13 @@ class Driver(BaseDriver):
203
203
  values.update(system_parameter)
204
204
  for name, value in values.items():
205
205
  if value is not None:
206
- self.handle.rpc_set(name, value, 0, False)
206
+ self.fast_rpc.rpc_set(name, value, 0, False)
207
207
  print_debug('Driver: 后端参数配置成功')
208
208
 
209
209
  # 系统开启前必须进行过一次初始化
210
210
  result &= self.__init_system()
211
211
  print_debug('Driver: 后端RF配置成功')
212
- result &= self.handle.rpc_set('Reset')
212
+ result &= self.fast_rpc.rpc_set('Reset')
213
213
  print_debug('Driver: 后端缓存配置成功')
214
214
  return result
215
215
 
@@ -218,19 +218,13 @@ class Driver(BaseDriver):
218
218
  """
219
219
  关闭设备
220
220
  """
221
- if getattr(self, 'handle', None) is not None:
222
- self.handle.close()
223
- self.handle = None
224
- if getattr(self, 'fast_rpc', None) is not None:
225
- self.fast_rpc = None
221
+ ...
226
222
 
227
223
  def write(self, name: str, value, **kw):
228
224
  channel = kw.get('ch', 1)
229
225
  if name in {'Coefficient'}:
230
226
  data, f_list, numberOfPoints, phases = get_coef(value, 4e9)
231
227
  self.set('DemodulationParam', data, channel)
232
- elif name in {'CaptureMode', 'SystemSync', 'ResetTrig', 'TrigPeriod', 'TrigFrom'}:
233
- pass
234
228
  else:
235
229
  return self.set(name, value, channel)
236
230
 
@@ -264,23 +258,18 @@ class Driver(BaseDriver):
264
258
  value = {}
265
259
  self.init_device(system_parameter=value)
266
260
  return
267
- elif name in {'CaptureMode', 'SystemSync', 'ResetTrig', 'TrigPeriod', 'TrigFrom'}:
268
- return
269
261
 
270
262
  value = RPCValueParser.dump(value)
271
- if name in {'Waveform', 'GenWave', 'MultiGenWave', 'GenWaveIQ', 'DemodulationParam', 'Coefficient',
272
- 'Instruction'}:
273
- func = self.fast_rpc.rpc_set
274
- name = 'GenWave' if name == 'Waveform' and value[0] == RPCValueParser.dump_tag_waveform else name
275
- else:
276
- func = self.handle.rpc_set
263
+ func = self.fast_rpc.rpc_set
264
+ name = 'GenWave' if name == 'Waveform' and value[0] == RPCValueParser.dump_tag_waveform else name
277
265
 
278
266
  if self.has_start_capture and name == 'StartCapture':
279
267
  return
280
268
  self.has_start_capture = name == 'StartCapture'
281
269
 
282
270
  if not func(name, value, channel):
283
- raise xmlrpc.client.Fault(400, f'指令{name}执行失败, 请重新open板卡')
271
+ ...
272
+ # raise xmlrpc.client.Fault(400, f'指令{name}执行失败, 请重新open板卡')
284
273
 
285
274
  @solve_rpc_exception
286
275
  def get(self, name, channel=1, value=0):
@@ -320,11 +309,13 @@ class Driver(BaseDriver):
320
309
  if key.endswith('version'):
321
310
  version = version[key][1:].split('-')[0]
322
311
  version = tuple(int(v) for v in version.split('.'))
312
+ break
323
313
  else:
324
314
  version = (0, 0, 0)
325
315
  self.backend_version = version
326
316
  if version >= (1, 2, 7):
327
- return self.set('InitSystem')
317
+ self.set('InitSystem')
318
+ return True
328
319
  else:
329
320
  return self.__exec_command('初始化')
330
321
 
@@ -352,13 +343,15 @@ class Driver(BaseDriver):
352
343
  return sock
353
344
 
354
345
  def _show_system_status(self):
355
- import json
356
346
  keys = ['device_type', 'backend_version', 'ad_num', 'da_num', 'cpu_temp', 'memory_use']
357
347
  status: dict = self.handle.get_all_status(False)
358
348
  _string = [f'*********设备{self.addr}开启成功*********']
359
349
  for key in keys:
360
350
  _string.append(f'{key}: {status.get(key, "nan")}')
361
351
  print('\n'.join(_string))
352
+ if self.backend_version >= (2, 0, 1):
353
+ print('available chnl: ')
354
+ print(self.get('ChnlInfo'))
362
355
 
363
356
 
364
357
  class RPCFaultPack:
nsqdriver/NS_QSYNC.py CHANGED
@@ -235,6 +235,12 @@ class Driver(BaseDriver):
235
235
  self.change_ref(value)
236
236
  elif name == 'UpdateFirmware':
237
237
  self.update_firmware(value)
238
+ elif name == 'SetMask':
239
+ if not isinstance(value, list):
240
+ print(f'SetMask set value {value} is not a list')
241
+ return
242
+ data = self.__fmt_qsync_mask(*value)
243
+ self._send_command(data)
238
244
 
239
245
  else:
240
246
  self.param[name] = value
@@ -441,6 +447,18 @@ class Driver(BaseDriver):
441
447
 
442
448
  return struct.pack('=' + 'I' * len(cmd_pack), *cmd_pack)
443
449
 
450
+ @lru_cache(maxsize=32)
451
+ def __fmt_qsync_mask(self, *mask):
452
+ cmd_pack = (
453
+ 0x5F5F5F5F,
454
+ 0x51000001,
455
+ 0x00000000,
456
+ 80,
457
+ *mask
458
+ )
459
+
460
+ return struct.pack('=' + 'I' * len(cmd_pack), *cmd_pack)
461
+
444
462
  @lru_cache(maxsize=32)
445
463
  def __fmt_qsync_start(self, src, period, shots, width, delay):
446
464
  cmd_pack = (
@@ -544,11 +562,11 @@ class DeviceCmdHandle:
544
562
  res = []
545
563
  errors = []
546
564
  for board, future in zip(boards, futures):
547
- if board.has_ip and board.has_dma:
548
- _id = (board.dma_id & 0xFF) << 24
565
+ if board.has_cmd_link and board.has_stream_link:
566
+ _id = (board.ds_id & 0xFF) << 24
549
567
  _res = struct.unpack('IIIII', future.result())[-1] & 0xFFFFFF
550
568
  if _res:
551
- errors.append(f'指令{cmd_data[4:8].tobytes()}向{board.board_ip}转发失败\n')
569
+ errors.append(f'指令{cmd_data[4:8].tobytes()}向{board.cs_target}转发失败\n')
552
570
  res.append(_id + _res)
553
571
  return b''.join((head, cmd_data[4:12], struct.pack('=I' + 'I' * len(res), 16 + len(res) * 4, *res))), errors
554
572
 
@@ -556,8 +574,8 @@ class DeviceCmdHandle:
556
574
  def packing_fake_result(boards: Iterable["MCIBoard"], cmd_data: memoryview, head: bytes) -> bytes:
557
575
  res = []
558
576
  for board in boards:
559
- if board.has_ip and board.has_dma:
560
- _id = (board.dma_id & 0xFF) << 24
577
+ if board.has_cmd_link and board.has_stream_link:
578
+ _id = (board.ds_id & 0xFF) << 24
561
579
  res.append(_id + 0)
562
580
  return b''.join((head, cmd_data[4:12], struct.pack('=I' + 'I' * len(res), 16 + len(res) * 4, *res)))
563
581
 
@@ -669,3 +687,35 @@ class InfoSharedList:
669
687
 
670
688
  # threading.Thread(target=do_scanning, daemon=True, name='qsync_scanning_device').start()
671
689
  SHARED_DEVICE_MEM = InfoSharedList()
690
+
691
+
692
+ if __name__ == '__main__':
693
+ ins = Driver('127.0.0.1')
694
+
695
+ count = 1024
696
+ period = 400e-6
697
+ delay = 0
698
+ source = 0
699
+
700
+ # ins.set('ResetTrig')
701
+
702
+ for ch in [1, 2, 3, 4, 5, 6, 7]:
703
+ ins.set('Shot', count, channel=ch)
704
+ ins.set('TrigPeriod', period, channel=ch)
705
+ ins.set('TrigDelay', delay, channel=ch)
706
+ ins.set('TrigFrom', source, channel=ch)
707
+
708
+ for ch in [8]:
709
+ ins.set('Shot', count, channel=ch)
710
+ ins.set('TrigWidth', 1600e-9, channel=ch)
711
+ ins.set('TrigPeriod', period, channel=ch)
712
+ ins.set('SubTriggerCount', 4, channel=ch)
713
+ ins.set('TrigDelayList', [1600e-9 * i for i in range(4)])
714
+ ins.set('TrigFrom', source, channel=ch)
715
+
716
+ for i in range(1):
717
+ # ins.set('GenerateTrig')
718
+ ins.set('GeneratePrtTrig')
719
+ import time
720
+
721
+ time.sleep(1)
nsqdriver/__init__.py CHANGED
@@ -4,7 +4,7 @@ from .NS_CST import Driver as CSTDriver
4
4
  from .compiler.ns_wave import InsChannel
5
5
  from .compiler.py_wave_asm import nsw_config, AssemblyError
6
6
 
7
- version_pack = (0, 4, 3)
7
+ version_pack = (0, 5, 7)
8
8
 
9
9
  __version__ = '.'.join(str(_) for _ in version_pack)
10
10
  __all__ = ['MCIDriver', 'QSYNCDriver', 'CSTDriver', 'InsChannel']
@@ -16,7 +16,7 @@ SEGMENT_ENABLE = False
16
16
  class DAChannelData:
17
17
  seg_waves: "Sized|Iterable[np.ndarray]" = tuple()
18
18
  delays: "Sized|Iterable[float]" = tuple()
19
- data: np.ndarray = np.array([0])
19
+ data = np.array([0])
20
20
  updated: bool = False
21
21
 
22
22
  @property
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: nsqdriver
3
- Version: 0.4.3
3
+ Version: 0.5.7
4
4
  Summary: Naishu Q series quantum measurement and control equipment driver interface
5
5
  Home-page: https://g2hoyqcmh4.feishu.cn/wiki/wikcnzvyMd82DLZUe2NsI6HxsFc
6
6
  Author: Naishu Technology
@@ -0,0 +1,18 @@
1
+ nsqdriver/NS_CST.py,sha256=zA5YcM65v66EqwBnplDvA6HM0I-y8damDOerE2CKyZE,8137
2
+ nsqdriver/NS_MCI.py,sha256=CAOzRpRfpVMmGrY5_oko9yGXEe1PoUAVChIFXJTDcJo,21355
3
+ nsqdriver/NS_QSYNC.py,sha256=quXScV0Z1JnPlrtToO1D_3YWHywAhOL7PJAVWcykZ9o,25464
4
+ nsqdriver/__init__.py,sha256=qzGWMsVndThZhn7lqHlBEXAPVrcnNicRJpS5cs1T6do,381
5
+ nsqdriver/common.py,sha256=5BRActb9TgNdVwWtfuZ_gki47H1WbABzYr5XbxLKlh4,519
6
+ nsqdriver/compiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
+ nsqdriver/compiler/assembler.cp310-win_amd64.pyd,sha256=2mYgrcZkNb62nLWkMrFRWZlZq7LOaqrPkMBB8QL9BP0,349184
8
+ nsqdriver/compiler/ns_wave.cp310-win_amd64.pyd,sha256=7b2f6Kq0t662KKkdya8XAgGNvS9lMLYzLkUABLASAko,237568
9
+ nsqdriver/compiler/ns_wave.pyi,sha256=axQaxrMaKRPx8k9sDVlRj3SjR03AmXUDzkVW4D_2RJw,3975
10
+ nsqdriver/compiler/py_wave_asm.cp310-win_amd64.pyd,sha256=XdSkcaAIaGhLofTk5aibb8HmYTb5JmcgAQ_0itC2cW0,330752
11
+ nsqdriver/compiler/py_wave_asm.pyi,sha256=PqEZuNt83CCu_FJUczUjStowOz2TBgvfIytGanFPHuQ,685
12
+ nsqdriver/wrapper/AWG_ADC.py,sha256=wLtkbJe39hDcnbWZ-8jyGZ78RQtn7iAZ7P7H0n-2IWU,19733
13
+ nsqdriver/wrapper/ND_NSMCI.py,sha256=e0j7BUdfrhfYb1GqBPlO4vSoZPXTKyictXy1nPvoMFE,6533
14
+ nsqdriver/wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
15
+ nsqdriver-0.5.7.dist-info/METADATA,sha256=7-OxNt4IzibGrtrg2guFnbC6vtW_bNsuek0Bi-XyFj0,4463
16
+ nsqdriver-0.5.7.dist-info/WHEEL,sha256=lO6CqtLHCAi38X3Es1a4R1lAjZFvN010IMRCFo2S7Mc,102
17
+ nsqdriver-0.5.7.dist-info/top_level.txt,sha256=o7EbQoFO6BoaG3KGbS9Lg_aRheZSY5KYzoYuI9vx-AI,10
18
+ nsqdriver-0.5.7.dist-info/RECORD,,
@@ -1,5 +1,5 @@
1
1
  Wheel-Version: 1.0
2
- Generator: bdist_wheel (0.41.2)
2
+ Generator: bdist_wheel (0.43.0)
3
3
  Root-Is-Purelib: false
4
4
  Tag: cp310-cp310-win_amd64
5
5
 
@@ -1,17 +0,0 @@
1
- nsqdriver/NS_CST.py,sha256=zA5YcM65v66EqwBnplDvA6HM0I-y8damDOerE2CKyZE,8137
2
- nsqdriver/NS_MCI.py,sha256=1Uxc6fsanYkZz9h6aLwpGsA6Stw-189ySkW9OBrz3wM,21810
3
- nsqdriver/NS_QSYNC.py,sha256=ugITl8OUqoqJw5ZUyF1VNA_1yT9GfWnLAj0AzGQLPF0,24022
4
- nsqdriver/__init__.py,sha256=9WDh1BpI-Mov7n0G6HFUUlXtvT2HFKKDSLt7-SRpLXI,381
5
- nsqdriver/common.py,sha256=5BRActb9TgNdVwWtfuZ_gki47H1WbABzYr5XbxLKlh4,519
6
- nsqdriver/compiler/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
7
- nsqdriver/compiler/ns_wave.cp310-win_amd64.pyd,sha256=D_j-gm-SYdO0cEo3ZOffAZr-3V12r9HQNiwtSg2nuxc,237568
8
- nsqdriver/compiler/ns_wave.pyi,sha256=axQaxrMaKRPx8k9sDVlRj3SjR03AmXUDzkVW4D_2RJw,3975
9
- nsqdriver/compiler/py_wave_asm.cp310-win_amd64.pyd,sha256=2C4Dvxubaao57YESD3P9hMymYthKARI0yQztjeQyLoM,328192
10
- nsqdriver/compiler/py_wave_asm.pyi,sha256=PqEZuNt83CCu_FJUczUjStowOz2TBgvfIytGanFPHuQ,685
11
- nsqdriver/wrapper/AWG_ADC.py,sha256=I4nPtbQTHxqAqFuXTHb_oDLW-ycRxSUpBUyD67eq_dA,19745
12
- nsqdriver/wrapper/ND_NSMCI.py,sha256=e0j7BUdfrhfYb1GqBPlO4vSoZPXTKyictXy1nPvoMFE,6533
13
- nsqdriver/wrapper/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
14
- nsqdriver-0.4.3.dist-info/METADATA,sha256=oKh5OxgA9zdhI5CGVnGDdUD-q1BSRwUZUqCxSgyhrK8,4463
15
- nsqdriver-0.4.3.dist-info/WHEEL,sha256=yrvteVAZzxQvtDnzdCRh4dP01sPIxYhLXIXplC7o50E,102
16
- nsqdriver-0.4.3.dist-info/top_level.txt,sha256=o7EbQoFO6BoaG3KGbS9Lg_aRheZSY5KYzoYuI9vx-AI,10
17
- nsqdriver-0.4.3.dist-info/RECORD,,