import sigrok.core as sr import numpy as np import socket import uart_monitor_config as c MCAST_GRP = c.udp_grp MCAST_PORT = c.udp_raw_port MULTICAST_TTL = c.MULTICAST_TTL driver='fx2lafw' context = sr.Context.create() devices = context.drivers[driver].scan() device = devices[0] device.open() session = context.create_session() session.add_device(device) output_format = 'bits' output = context.output_formats[output_format].create_output(device) sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, socket.IPPROTO_UDP) sock.setsockopt(socket.IPPROTO_IP, socket.IP_MULTICAST_TTL, MULTICAST_TTL) def data_callback(device, packet): if packet.type != sr.PacketType.LOGIC: return text = output.receive(packet) data = packet._payload_logic().data sock.sendto(data, (MCAST_GRP,MCAST_PORT)) device.config_set(sr.ConfigKey.SAMPLERATE,c.samplerate) session.start() session.add_datafeed_callback(data_callback) #~/sr/bin/sigrok-cli --config samplerate=500000 --driver=fx2lafw --samples 1M -P uart:baudrate=57600:tx=D0 -P uart:baudrate=9600:tx=D0 -A uart=tx-data:tx-warning session.run() session.stop()