/PandABlocks-client

Python client library for talking to PandABlocks-server

Primary LanguagePythonApache License 2.0Apache-2.0

CI Coverage PyPI License

pandablocks

A Python client to control and data ports of the PandABlocks TCP server

Source https://github.com/PandABlocks/PandABlocks-client
PyPI pip install pandablocks
Docker docker run ghcr.io/pandablocks/PandABlocks-client:latest
Documentation https://pandablocks.github.io/PandABlocks-client
Releases https://github.com/PandABlocks/PandABlocks-client/releases

Command line tool features an interactive console, load/save control, and HDF5 writing:

$ pip install pandablocks

$ pandablocks control <panda-hostname>
< PCAP.     # Hit TAB key...
PCAP.ACTIVE     PCAP.BITS1      PCAP.BITS3      PCAP.GATE       PCAP.SAMPLES    PCAP.TRIG       PCAP.TS_END     PCAP.TS_TRIG
PCAP.BITS0      PCAP.BITS2      PCAP.ENABLE     PCAP.HEALTH     PCAP.SHIFT_SUM  PCAP.TRIG_EDGE  PCAP.TS_START
< PCAP.ACTIVE?
OK =1

$ pandablocks hdf <panda-hostname> /tmp/panda-%d.h5
INFO:Opened '/tmp/panda-1.h5' with 60 byte samples stored in 11 datasets
INFO:Closed '/tmp/panda-1.h5' after writing 50000000 samples. End reason is 'Disarmed'

Library features a Sans-IO core with both asyncio and blocking wrappers:

from pandablocks.blocking import BlockingClient
from pandablocks.commands import Get

with BlockingClient("hostname-or-ip") as client:
    # Commands sent to Control port
    idn = client.send(Get("*IDN"))
    print(f"Hello {idn}")
    for data in client.data():
        # Data captured from Data port
        print(f"I got some PCAP data {data}")

See https://pandablocks.github.io/PandABlocks-client for more detailed documentation.