From 35d329fe12a4d0dddfe1e0ba77110a1a6e41948c Mon Sep 17 00:00:00 2001 From: Thomas Haag <thomas.haag@erdw.ethz.ch> Date: Wed, 14 Nov 2018 14:33:14 +0100 Subject: [PATCH] - try to replace hardware driver - new route: replace interface to hardware --- dug_seis/acquisition/one_card.py | 10 ++++-- dug_seis/acquisition/one_card_std_init.py | 15 +++++--- dug_seis/acquisition/simulated_hardware.py | 11 ++++++ dug_seis/acquisition/star_hub.py | 10 ++++-- log.txt | 40 ++++++++++++++++++++++ testByref.py | 32 +++++++++++++++++ 6 files changed, 108 insertions(+), 10 deletions(-) create mode 100644 dug_seis/acquisition/simulated_hardware.py create mode 100644 log.txt create mode 100644 testByref.py diff --git a/dug_seis/acquisition/one_card.py b/dug_seis/acquisition/one_card.py index 03115a6..548ff61 100644 --- a/dug_seis/acquisition/one_card.py +++ b/dug_seis/acquisition/one_card.py @@ -8,12 +8,17 @@ import logging import dug_seis.acquisition.hardware_driver.regs as regs import dug_seis.acquisition.hardware_driver.spcerr as err +from ctypes import byref, c_int32 from dug_seis.acquisition.one_card_std_init import init_card as sdt_init_card -from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwSetParam_i32, spcm_dwGetParam_i32, spcm_vClose +if True: + print("Simulating hardware") +else: + print("Running on real hardware") + from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwSetParam_i32, spcm_dwGetParam_i32, spcm_vClose + -from ctypes import byref, c_int32 class Card: @@ -31,6 +36,7 @@ class Card: """Initialise card. Setup card parameters. Reserve buffers for DMA data transfer.""" logging.info("init card: {}\n".format(self.card_nr)) if self.card_nr == 0 or self.card_nr == 1: + print(sdt_init_card(param, self.card_nr)) self.h_card, self.pv_buffer = sdt_init_card(param, self.card_nr) else: logging.error("card_nr needs to be 0 or 1, received:{}".format(self.card_nr)) diff --git a/dug_seis/acquisition/one_card_std_init.py b/dug_seis/acquisition/one_card_std_init.py index aac7a97..523397f 100644 --- a/dug_seis/acquisition/one_card_std_init.py +++ b/dug_seis/acquisition/one_card_std_init.py @@ -5,14 +5,19 @@ import logging import dug_seis.acquisition.hardware_driver.regs as regs -from dug_seis.acquisition.hardware_driver.pyspcm import spcm_hOpen, spcm_dwGetParam_i32 -from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwSetParam_i32, spcm_dwGetContBuf_i64 -from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwDefTransfer_i64 -from dug_seis.acquisition.hardware_driver.pyspcm import SPCM_BUF_DATA, SPCM_DIR_CARDTOPC - from ctypes import c_int32, c_uint64 from ctypes import create_string_buffer, byref, c_void_p +if True: + print("Simulating hardware") + from dug_seis.acquisition.simulated_hardware import spcm_hOpen, spcm_dwGetParam_i32 +else: + print("Running on real hardware") + from dug_seis.acquisition.hardware_driver.pyspcm import spcm_hOpen, spcm_dwGetParam_i32 + from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwSetParam_i32, spcm_dwGetContBuf_i64 + from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwDefTransfer_i64 + from dug_seis.acquisition.hardware_driver.pyspcm import SPCM_BUF_DATA, SPCM_DIR_CARDTOPC + def sz_type_to_name(l_card_type): """sz_type_to_name: doing name translation.""" diff --git a/dug_seis/acquisition/simulated_hardware.py b/dug_seis/acquisition/simulated_hardware.py new file mode 100644 index 0000000..6b7b795 --- /dev/null +++ b/dug_seis/acquisition/simulated_hardware.py @@ -0,0 +1,11 @@ +from ctypes import byref + + +def spcm_hOpen(dev): + print("simulating {}".format(dev)) + return "card", "buffer" + + +def spcm_dwGetParam_i32(h_card, reg, card_type): + print(card_type) + diff --git a/dug_seis/acquisition/star_hub.py b/dug_seis/acquisition/star_hub.py index bca6b6e..712d6c7 100644 --- a/dug_seis/acquisition/star_hub.py +++ b/dug_seis/acquisition/star_hub.py @@ -11,12 +11,16 @@ stop and synchronise the cards. import logging import dug_seis.acquisition.hardware_driver.regs as regs -from dug_seis.acquisition.hardware_driver.pyspcm import spcm_hOpen, spcm_dwSetParam_i32, spcm_dwGetParam_i32 -from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwGetErrorInfo_i32, spcm_vClose from ctypes import create_string_buffer, byref - from ctypes import c_int32 +if True: + print("Simulating hardware") +else: + print("Running on real hardware") + from dug_seis.acquisition.hardware_driver.pyspcm import spcm_hOpen, spcm_dwSetParam_i32, spcm_dwGetParam_i32 + from dug_seis.acquisition.hardware_driver.pyspcm import spcm_dwGetErrorInfo_i32, spcm_vClose + class StarHub: def __init__(self): diff --git a/log.txt b/log.txt new file mode 100644 index 0000000..512505f --- /dev/null +++ b/log.txt @@ -0,0 +1,40 @@ +2018-11-13 17:22:08,225 INFO DUG-Seis started +2018-11-13 17:22:08,245 INFO Acquisition script started +2018-11-13 17:22:08,245 INFO init card: 0 + +2018-11-13 17:22:08,246 ERROR card 0 not found... + +2018-11-13 17:22:08,247 ERROR card 0 not found... + +2018-11-13 17:23:26,441 INFO DUG-Seis started +2018-11-13 17:23:26,459 INFO Acquisition script started +2018-11-13 17:23:26,459 INFO init card: 0 + +2018-11-13 17:25:01,023 INFO DUG-Seis started +2018-11-13 17:25:01,041 INFO Acquisition script started +2018-11-13 17:25:01,041 INFO init card: 0 + +2018-11-14 13:39:00,987 INFO DUG-Seis started +2018-11-14 13:39:01,007 INFO Acquisition script started +2018-11-14 13:39:01,007 INFO init card: 0 + +2018-11-14 13:39:01,008 ERROR Card: unknown type sn 00000 not supported by example + +2018-11-14 13:39:01,011 ERROR Card: unknown type sn 00000 not supported by example + +2018-11-14 13:42:55,184 INFO DUG-Seis started +2018-11-14 13:42:55,202 INFO Acquisition script started +2018-11-14 13:42:55,203 INFO init card: 0 + +2018-11-14 13:42:55,204 ERROR Card: unknown type sn 00000 not supported by example + +2018-11-14 13:42:55,206 ERROR Card: unknown type sn 00000 not supported by example + +2018-11-14 14:03:57,058 INFO DUG-Seis started +2018-11-14 14:03:57,075 INFO Acquisition script started +2018-11-14 14:03:57,075 INFO init card: 0 + +2018-11-14 14:03:57,076 ERROR Card: unknown type sn 00000 not supported by example + +2018-11-14 14:03:57,078 ERROR Card: unknown type sn 00000 not supported by example + diff --git a/testByref.py b/testByref.py new file mode 100644 index 0000000..d4e0734 --- /dev/null +++ b/testByref.py @@ -0,0 +1,32 @@ + +from ctypes import c_int32, byref, cast, POINTER, pointer, addressof + + +def f(x): + x._obj.value = 55 + print("in func: {}".format(x._obj.value)) + + +l_card_type = c_int32(99) +""" +print(l_card_type) +print(type(l_card_type)) +print(byref(l_card_type)) +print(type(byref(l_card_type))) +print(l_card_type.value) +print(type(l_card_type.value)) +""" + +f(byref(l_card_type)) +print(byref(l_card_type)) + +pc = pointer(l_card_type) + +pc.contents.value = 77 # or pc[0] = 77 + +print("{}".format(pc.contents.value)) + +print(byref(pc)) +print(addressof(pc)) +print(l_card_type.value) + -- GitLab