mirror of
https://github.com/slsdetectorgroup/slsDetectorPackage.git
synced 2025-04-20 02:40:03 +02:00
74 lines
1.8 KiB
Python
74 lines
1.8 KiB
Python
import json
|
|
import zmq
|
|
import numpy as np
|
|
|
|
from slsdet import Detector
|
|
import matplotlib.pyplot as plt
|
|
|
|
det = Detector()
|
|
|
|
zmqIp = det.zmqip
|
|
zmqport = det.zmqport
|
|
zmq_stream = det.rx_zmqstream
|
|
|
|
|
|
def zmq_receiver():
|
|
context = zmq.Context()
|
|
socket = context.socket(zmq.SUB)
|
|
socket.connect(f"tcp://{zmqIp}:{zmqport}")
|
|
socket.subscribe("")
|
|
|
|
while True:
|
|
msg = socket.recv_multipart()
|
|
if len(msg) == 2:
|
|
header, data = msg
|
|
jsonHeader = json.loads(header)
|
|
print(jsonHeader)
|
|
print(f'Data size: {len(data)}')
|
|
data_array = np.array(np.frombuffer(data, dtype=np.uint16))
|
|
break
|
|
return data_array
|
|
|
|
|
|
def analog(data_array):
|
|
adc_numbers = [
|
|
9, 8, 11, 10, 13, 12, 15, 14, 1, 0, 3, 2, 5, 4, 7, 6, 23, 22, 21, 20, 19, 18, 17, 16, 31, 30, 29, 28, 27, 26,
|
|
25, 24
|
|
]
|
|
|
|
n_pixels_per_sc = 5000
|
|
|
|
sc_width = 25
|
|
analog_frame = np.zeros((400, 400))
|
|
order_sc = np.zeros((400, 400))
|
|
|
|
for n_pixel in range(n_pixels_per_sc):
|
|
#these_dbits = int(digital_data[n_pixel])
|
|
|
|
for i_sc, adc_nr in enumerate(adc_numbers):
|
|
# ANALOG
|
|
col = ((adc_nr % 16) * sc_width) + (n_pixel % sc_width)
|
|
if i_sc < 16:
|
|
row = 199 - int(n_pixel / sc_width)
|
|
else:
|
|
row = 200 + int(n_pixel / sc_width)
|
|
|
|
index_min = n_pixel * 32 + i_sc
|
|
|
|
pixel_value = data_array[index_min]
|
|
analog_frame[row, col] = pixel_value
|
|
order_sc[row, col] = i_sc
|
|
return analog_frame
|
|
|
|
|
|
fig, ax = plt.subplots()
|
|
data = analog(data_array=zmq_receiver())
|
|
im = ax.imshow(data)
|
|
ax.invert_yaxis()
|
|
fig.colorbar(im)
|
|
plt.show()
|
|
# pg.image(data, title="test")
|
|
|
|
# if __name__ == '__main__':
|
|
# pg.QtWidgets.QApplication.exec_()
|