Files
sfbd/ext/camacquisition.py

42 lines
1.5 KiB
Python

from time import sleep
from tqdm import trange
import h5py
from cam_server_client import PipelineClient
from cam_server_client.utils import get_host_port_from_stream_address
from bsread import source, SUB
from slic.core.acquisition.acquisition import Acquisition
class CamAcquisition(Acquisition):
def getConnection(self,cam):
pipeline_client = PipelineClient()
cam_instance_name = str(cam) + "_sp1"
stream_address = pipeline_client.get_instance_stream(cam_instance_name)
self.host, self.port = get_host_port_from_stream_address(stream_address)
print(self.host,self.port)
def _acquire(self, filename, channels=None, data_base_dir=None, scan_info=None, n_pulses=100, **kwargs):
print("my routine")
print("extra kwargs:", kwargs)
args = (filename, n_pulses, channels)
args = ", ".join(repr(i) for i in args)
print("acquire({})".format(args))
print(f"dummy acquire to {filename}:")
# stream_host,stream_port = getPipeLine(channels[0])
# time.wait(1)
data= []
with source(host=self.host, port=self.port, mode=SUB) as input_stream:
input_stream.connect()
for i in range(n_pulses):
print('Camera Images', i)
message = input_stream.receive()
data.append(message.data.data)
hid = h5py.File(filename,'w')
gid = hid.create_group(channels[0])
for key in data[0].keys():
gid.create_dataset(key, data = [rec[key].value for rec in data])
hid.close()