Live demo — data resets daily at 03:00 UTC. Nothing you enter is saved. Server UI →

Comm — Raw Bus Transactions

Perform raw bus transactions over I2C, UART, SPI, and TCP sockets. All byte data is hex-encoded on the wire; the client handles encoding and decoding transparently so callers work with plain bytes objects.

Methods

Method Returns Description
i2c(device_name, address, action, ...) BusTransactionResponse I2C bus transaction.
uart(device_name, action, ...) BusTransactionResponse UART transaction.
spi(device_name, action, ...) BusTransactionResponse SPI transaction.
socket(device_name, action, ...) BusTransactionResponse TCP socket transaction.

All methods return a BusTransactionResponse with:

Field Type Description
device_name str Device used for the transaction
action str Action performed
received bytes Received data (decoded from hex)
number_of_bytes_received int Number of bytes received

I2C

client.comm.i2c(device_name, address, action,
                data_to_send=None, number_of_bytes_to_receive=0,
                max_retries=-1)
Parameter Type Description
device_name str Device name as registered in the hardware manager
address int I2C 7-bit device address (0–127)
action BusActions SEND, RECEIVE, SEND_RECEIVE, or SCAN
data_to_send bytes Bytes to transmit (required for Send/SendReceive)
number_of_bytes_to_receive int Expected byte count for Receive/SendReceive
max_retries int Retry limit on NAK (-1 = device default)

Examples

from accordionq2.enums import BusActions

# Scan the bus for connected devices
resp = client.comm.i2c("0.ESH10000597.I2C00", address=0x00,
                       action=BusActions.SCAN)
for addr in resp.received:
    print(f"Found device at 0x{addr:02X}")

# Write two bytes to address 0x50
client.comm.i2c("0.ESH10000597.I2C00", address=0x50,
                action=BusActions.SEND,
                data_to_send=bytes([0x00, 0x10]))

# Read 4 bytes from address 0x50
resp = client.comm.i2c("0.ESH10000597.I2C00", address=0x50,
                       action=BusActions.RECEIVE,
                       number_of_bytes_to_receive=4)
print(resp.received.hex())  # e.g. "aabbccdd"

# Write-then-read (SendReceive)
resp = client.comm.i2c("0.ESH10000597.I2C00", address=0x50,
                       action=BusActions.SEND_RECEIVE,
                       data_to_send=bytes([0x00]),
                       number_of_bytes_to_receive=2)

UART

client.comm.uart(device_name, action,
                 baud_rate=9600,
                 bus_type=UartBusTypes.RS232,
                 flow_control=FlowControlTypes.NONE,
                 parity=ParityTypes.NONE,
                 use_termination_byte=False, termination_byte=0x0A,
                 data_to_send=None, number_of_bytes_to_receive=0,
                 timeout_ms=1000)
Parameter Type Default Description
device_name str Device name as registered in the hardware manager
action BusActions SEND, RECEIVE, SEND_RECEIVE, or CLEAR_BUFFERS
baud_rate int 9600 Baud rate (e.g. 9600, 115200)
bus_type UartBusTypes RS232 Electrical standard
flow_control FlowControlTypes NONE Flow control mode
parity ParityTypes NONE Parity setting
use_termination_byte bool False Whether to use termination_byte as a receive boundary
termination_byte int 0x0A Termination byte value (0–255)
data_to_send bytes None Bytes to transmit (required for Send/SendReceive)
number_of_bytes_to_receive int 0 Expected receive count
timeout_ms int 1000 Receive timeout in milliseconds

Example

from accordionq2.enums import BusActions, FlowControlTypes, ParityTypes, UartBusTypes

# Send a SCPI query at 115200 baud and read the response
resp = client.comm.uart(
    "MyUartDevice",
    action=BusActions.SEND_RECEIVE,
    baud_rate=115200,
    bus_type=UartBusTypes.RS232,
    parity=ParityTypes.NONE,
    flow_control=FlowControlTypes.NONE,
    data_to_send=b"*IDN?\n",
    number_of_bytes_to_receive=64,
    timeout_ms=2000,
)
print(resp.received.decode("ascii"))

SPI

client.comm.spi(device_name, action,
                data_to_send=None, number_of_bytes_to_receive=0)
Parameter Type Description
device_name str Device name as registered in the hardware manager
action BusActions SEND, RECEIVE, or SEND_RECEIVE
data_to_send bytes Bytes to clock out
number_of_bytes_to_receive int Expected receive count

Example

# Full-duplex SPI transfer
resp = client.comm.spi("MySpiDevice",
                       action=BusActions.SEND_RECEIVE,
                       data_to_send=bytes([0xAA, 0xBB]),
                       number_of_bytes_to_receive=2)
print(resp.received.hex())

Socket (TCP/IP)

client.comm.socket(device_name, action,
                   host_name="", port=0,
                   data_to_send=None, number_of_bytes_to_receive=0,
                   termination_byte=0, use_termination_byte=False,
                   timeout_ms=1000)
Parameter Type Description
device_name str Device name as registered in the hardware manager
action BusActions SEND, RECEIVE, or SEND_RECEIVE
host_name str Remote host name or IP address
port int Remote TCP port number
data_to_send bytes Bytes to send
number_of_bytes_to_receive int Expected receive count
termination_byte int Byte value used as a message boundary (0–255)
use_termination_byte bool Whether to use termination_byte as end-of-message marker
timeout_ms int Receive timeout in milliseconds

Example

# Send a SCPI query over TCP
resp = client.comm.socket("MySocketDevice",
                          action=BusActions.SEND_RECEIVE,
                          host_name="192.168.1.10", port=5025,
                          data_to_send=b"*IDN?\n",
                          number_of_bytes_to_receive=64)
print(resp.received.decode("ascii"))
An unhandled error has occurred. Reload 🗙

Rejoining the server...

Rejoin failed... trying again in seconds.

Failed to rejoin.
Please retry or reload the page.

The session has been paused by the server.

Failed to resume the session.
Please retry or reload the page.