2025-05-16 16:38:54 +02:00
2025-05-16 15:30:11 +02:00
2025-05-16 15:30:11 +02:00
2025-05-16 16:38:54 +02:00

pxsi: parameter update over serial interface

Markus Zolliker (markus.zolliker@psi.ch)

helper library for micropython on RP2040 (e.g. Arduino Nano Connect or Paspberry Pico)

Code example

from pxsi import Pxsi

# declare variables visibile over serial

with Pxsi('MyBox'):   # idn will be: pxsi,MyBox
    pollinterval = 5.0  # important: add decimal point in case you want this to be a float
    anint = 2
    afloat = 0.0      
    astring = 'text'

# the given variables are now available in the main namespace

# create action functions for some of the variables

def change_afloat(value):
    value = float(value)  # check value is compatible with float
    # write here what to do when t changes
    return value  # return the validated value

# here follows your real code

while True:
    # handle IO, wait at most 0.5 secs
    Pxsi.handle(0.5)
    # read out sensors, do control logic here
    # important: do not sleep here!

In the change_xxx function the validity of has to be checked, and if any conversion happens the converted value has to be returned. When no change function is present, the value is converted to the type of the initial value (e.g. float, int or str)

Serial protocol

Commands:

name         # get value of variable name
name=value   # change value (value must be a valid JSON value)
["name1", ["name2", value]]     # multiple commands: query name1, change name2. must be a valid JSON array
{"name1": null, "name2": value} # alternative form - be aware that order is not guaranteed

The values must match the type of initial values

Special command for identification

*IDN?

returns:

pxsi,<idn>

For all other commands the reply is always a JSON object:

{"name1": value1, "name2", value2}

In case of an error, the result contains an item with the key "error" and a JSON array as value, listing the errors appeared.

Hints for Arduino Nano Connect

For a soft reset send '\x03\x04' (Ctrl-C Ctrl-D). The reply will be quite some text, with the last line:

pxsi:<idn>
Description
parameter exchange over serial interface
Readme 32 KiB
Languages
Python 100%