This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
#Fri Dec 16 17:37:36 CET 2022
|
||||
#Wed Dec 21 12:36:44 CET 2022
|
||||
spatialCalOffsetY=NaN
|
||||
spatialCalOffsetX=NaN
|
||||
colormapLogarithmic=false
|
||||
|
||||
@@ -1,5 +1,9 @@
|
||||
import org.zeromq.ZMQ as ZMQ
|
||||
import org.zeromq.ZMQ.Socket as Socket
|
||||
import java.nio.ByteBuffer as ByteBuffer
|
||||
import ch.psi.bsread.converter.MatlabByteConverter as Converter
|
||||
import ch.psi.bsread.message.ChannelConfig as ChannelConfig
|
||||
import ch.psi.bsread.message.Type as Type
|
||||
import json
|
||||
|
||||
|
||||
@@ -44,6 +48,7 @@ class Array10(DeviceBase, Readable, Cacheable, Readable.ReadableType):
|
||||
self.array_dev=None
|
||||
self.matrix_dev=None
|
||||
self.message_count=0
|
||||
self.converter=Converter()
|
||||
|
||||
if modulo_array is not None:
|
||||
self.array_dev = Array10Array(self.name + "_array" )
|
||||
@@ -87,18 +92,28 @@ class Array10(DeviceBase, Readable, Cacheable, Readable.ReadableType):
|
||||
self.context = ZMQ.context(1)
|
||||
self.socket = self.context.socket(self.mode)
|
||||
self.socket.connect(self.address)
|
||||
print "Running ", self.mode, self.address
|
||||
if self.mode == ZMQ.SUB:
|
||||
self.socket.subscribe("")
|
||||
self.getLogger().info("Running " + str(self.mode) + " " + str(self.address))
|
||||
first = True
|
||||
while self.running:
|
||||
header = self.socket.recv(ZMQ.NOBLOCK)
|
||||
if (header is not None):
|
||||
if first:
|
||||
print "Received!"
|
||||
first=False
|
||||
if (header is not None):
|
||||
try:
|
||||
self.header=json.loads(''.join(chr(i) for i in header))
|
||||
self.data = self.socket.recv()
|
||||
if self.data is not None:
|
||||
self.shape = self.header.get("shape", None)
|
||||
self.dtype = self.header.get("type", "int8")
|
||||
data = self.socket.recv()
|
||||
if data is not None:
|
||||
if self.dtype != "int8":
|
||||
bb = ByteBuffer.wrap(data)
|
||||
self.bb=bb
|
||||
self.dtype = self.dtype.capitalize()
|
||||
if self.dtype[0]=="U":
|
||||
self.dtype =self.dtype[:1] + self.dtype[1:].capitalize()
|
||||
cfg=ChannelConfig("",Type.valueOf(self.dtype),[len(data)],1,0)
|
||||
data=self.converter.getValue(None,None,cfg,bb,None)
|
||||
self.data=data
|
||||
self.setCache({"header":self.header, "data":self.data}, None)
|
||||
self.message_count=self.message_count+1
|
||||
if self.array_dev is not None:
|
||||
@@ -106,9 +121,8 @@ class Array10(DeviceBase, Readable, Cacheable, Readable.ReadableType):
|
||||
self.array_dev.set(self.data)
|
||||
if self.matrix_dev is not None:
|
||||
if self.message_count % self.matrix_dev.modulo == 0:
|
||||
shape = self.header.get("shape", None)
|
||||
if shape: shape=(shape[1],shape[0]) #TODO: FIXME
|
||||
self.matrix_dev.set(self.data, shape)
|
||||
#if self.shape: self.shape=(self.shape[1],self.shape[0]) #TODO: FIXME
|
||||
self.matrix_dev.set(self.data, self.shape)
|
||||
continue
|
||||
except Exception as e:
|
||||
print e
|
||||
|
||||
@@ -16,7 +16,6 @@ DETECTOR_IMAGE_MODULO = 1
|
||||
run("devices/Array10")
|
||||
|
||||
add_device(Array10("eiger", DETECTOR_ADDRESS, modulo_array=1, modulo_matrix=DETECTOR_IMAGE_MODULO, mode=ZMQ.SUB), True)
|
||||
add_device(eiger.array_dev, True)
|
||||
add_device(eiger.matrix_dev, True)
|
||||
add_device(RegisterMatrixSource("image", eiger.matrix_dev), True)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user