Source code for pymepix.util.spidrDummyUDP

# This file is part of Pymepix
#
# In all scientific work using Pymepix, please reference it as
#
# A. F. Al-Refaie, M. Johny, J. Correa, D. Pennicard, P. Svihra, A. Nomerotski, S. Trippel, and J. Küpper:
# "PymePix: a python library for SPIDR readout of Timepix3", J. Inst. 14, P10003 (2019)
# https://doi.org/10.1088/1748-0221/14/10/P10003
# https://arxiv.org/abs/1905.07999
#
# Pymepix is free software: you can redistribute it and/or modify it under the terms of the GNU
# General Public License as published by the Free Software Foundation, either version 3 of the
# License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License along with this program. If not,
# see <https://www.gnu.org/licenses/>.

import argparse
import socket
import struct
import time

import numpy as np


[docs]def main(): parser = argparse.ArgumentParser(description="Dummy UDP sender") parser.add_argument( "--ip", dest="ip", type=str, default='127.0.0.1', help="IP address of Timepix", ) parser.add_argument( "--port", dest="port", type=int, default=50000, help="Port address of Timepix", ) parser.add_argument( "--filename", dest="filename", type=str, default='', help="filename of source data", ) args = parser.parse_args() HOST, PORT = args.ip, args.port # data = " ".join(sys.argv[1:]) # SOCK_DGRAM is the socket type to use for UDP sockets sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) fName = args.filename data = np.fromfile(fName, dtype=np.uint64) total = len(data) last_progress = 0 startTime = time.time() for i, packet in enumerate(data[:]): sock.sendto(struct.pack("Q", packet), (HOST, PORT)) progress = int(i / total * 100) if progress != 0 and progress % 5 == 0 and progress != last_progress: print(f"Progress {i / total * 100:.1f}%") last_progress = progress # received = str(sock.recv(1024), "utf-8") stopTime = time.time() timeDiff = stopTime - startTime print( f"sent {i} packets; {64*i*1e-6:.2f}MBits {(64*i*1e-6)/timeDiff:.2f}MBits/sec; {(64*i*1e-6/8)/timeDiff:.2f}MByte/sec" )
if __name__ == "__main__": main()