This commit is contained in:
gac-x12sa
2022-12-21 17:15:40 +01:00
parent 684f53cf7d
commit 06906eb57e
3 changed files with 25 additions and 12 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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)