The Time Tagger software allows you to access the device over the network from one or more clients. Two different approaches are possible (the second one only employing Python):
The TimeTaggerNetwork functionality, that is an integral part of the Time Tagger engine, allows you to send the time-tag stream to remote clients so that each client can process the stream independently. Multiple clients can connect to the server and subscribe to the channels they want to receive the stream. You can choose if the clients can change the hardware settings, like trigger level, deadtime, etc. This is done through server access mode. The direct operation to the time tagger object on the server always provides full access. The Time Tagger network server does not provide more fine-grained access control management. It is the user’s responsibility to distribute channels among the clients and define how they access them.
We also provide a Python package that takes a different approach. It does not send the time tag stream over the network, and all the processing of the time tag stream occurs at the computer with the Time Tagger device connected. The user can create measurements remotely through an RPC interface that mimics the programming of an actual device. This works only with Python . Multiple clients can connect to the same time tagger object. Access control is also the responsibility of the user to prevent possible interference between multiple clients.
Both of these approaches have their pros and cons:
TimeTaggerNetwork has the strongest decoupling between the clients, and on the Listen access mode, the clients cannot interfere with each other, but also cannot change the hardware settings. NetworkTimeTagger sends a stream of time tags over the network, and depending on the total data rate on the subscribed channels, the network bandwidth requirements may be very high. In a 1 Gbps Ethernet network, achieving up to 26 MTags/s of the total outgoing data rate from the server is possible. CPU load will depend on the data rate as the timetag stream is compressed before sending to the clients. However, no analysis calculations are performed on the server (unless this is coded directly on the server PC). Clients can do as complicated processing as they want without much effect on the server (except in SynchronousControl access mode).
TimeTaggerRPC does not require much network bandwidth as all the timetag stream does not leave the server computer. However, measurements created by clients are all running on the same server PC and may interfere when the CPU resources become limited (i.e., someone starts a heavy measurement and makes the whole CPU 100% busy). This may lead to overflows or slow processing. Therefore, having a powerful multicore server is important. Also, not all functionality is available through the RPC connection. For instance, it is impossible to stream time tags (TimeTagStream measurement) or use FileWriter/FileReader.
For TimeTaggerRPC, you can find the functional code samples in the documentation under these links:
For TimeTaggerNetwork, the example scripts are in the installation folder. These are available for different programming languages.