AFHBA404
AFHBA404 connects ACQ2106 to PCI-Express
rtm-t-stream.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 
3 import os
4 import ctypes
5 import numpy
6 import time
7 import threading
8 import traceback
9 
10 class STREAM(threading.Thread):
11  lib = ctypes.CDLL(os.path.realpath(os.path.dirname(__file__)+'/librtm-t-stream.so'))
12  def __init__(self, NBUF, NMOD, NCHAN):
13  super(STREAM, self).__init__(name=self.__class__.__name__)
14  self.HANDLE = ctypes.c_void_p()
15  self.NBUF = NBUF
16  self.NMOD = NMOD
17  self.NCHAN = NCHAN
18 
19  def stop(self):
20  self.lib.RtmStreamStop(self.HANDLE)
21 
22  def run(self):
23  buflen = ctypes.c_int32(-1)
24  if self.lib.RtmStreamStart(ctypes.byref(self.HANDLE), 0, self.NBUF*self.NMOD, ctypes.byref(buflen)):
25  raise Exception("start_stream")
26  try:
27  BUFLEN = int(buflen.value)
28  shape = (BUFLEN//2//self.NCHAN, self.NMOD*self.NCHAN)
29  for i in range(self.NBUF):
30  buf = (ctypes.c_char*(self.NMOD*BUFLEN))()
31  for off in range(0, self.NMOD*BUFLEN, BUFLEN):
32  err = self.lib.RtmStreamGetBuffer(self.HANDLE, ctypes.byref(buf, off), buflen)
33  if err:
34  if err < 0:
35  raise Exception("get_buffer")
36  else:
37  return
38  arr = numpy.frombuffer(buf, dtype=numpy.int16).reshape(shape).T
39  print(arr[0],arr[1])
40  except Exception:
41  traceback.print_exc()
42  print(self.lib.RtmStreamClose(self.HANDLE))
43 
44 stream = STREAM(100, 6, 16)
45 stream.start()
46 stream.join(5)
47 if stream.is_alive():
48  print("stop")
49  stream.stop()
50 stream.join(1)
51 print(stream.is_alive())
rtm-t-stream.STREAM.__init__
def __init__(self, NBUF, NMOD, NCHAN)
Definition: rtm-t-stream.py:12
RtmStreamClose
EXPORT int RtmStreamClose(void *handle)
Definition: rtm-t-stream.cpp:171
rtm-t-stream.STREAM
Definition: rtm-t-stream.py:10
RtmStreamStart
EXPORT int RtmStreamStart(void **handle, const int devnum, const int NBUFS, int *const maxlen)
Definition: rtm-t-stream.cpp:137
rtm-t-stream.STREAM.lib
lib
Definition: rtm-t-stream.py:11
rtm-t-stream.STREAM.NMOD
NMOD
Definition: rtm-t-stream.py:16
rtm-t-stream.STREAM.stop
def stop(self)
Definition: rtm-t-stream.py:19
RtmStreamStop
EXPORT int RtmStreamStop(void *handle)
Definition: rtm-t-stream.cpp:162
rtm-t-stream.STREAM.NCHAN
NCHAN
Definition: rtm-t-stream.py:17
rtm-t-stream.STREAM.run
def run(self)
Definition: rtm-t-stream.py:22
rtm-t-stream.STREAM.HANDLE
HANDLE
Definition: rtm-t-stream.py:14
rtm-t-stream.STREAM.NBUF
NBUF
Definition: rtm-t-stream.py:15
RtmStreamGetBuffer
EXPORT int RtmStreamGetBuffer(void *handle, void *const buf, const int buflen)
Definition: rtm-t-stream.cpp:181