import serial, subprocess, time import busio from digitalio import DigitalInOut, Direction, Pull import board from pyLoraRFM9x import LoRa, ModemConfig addr = '/tmp/rfmtty' addr_client = '/tmp/rfmtty_client' cmd=['/usr/bin/socat','-d','-d','PTY,link=%s,raw,echo=0' % addr, 'PTY,link=%s,raw,echo=0' % addr_client] socat_proc = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) time.sleep(1) ser = serial.serial_for_url(addr) def on_recv(payload): print(f'Received lora byte: {payload.message}') ser.write(payload.message) lora_address = 2 lora = LoRa(1, 5, lora_address, reset_pin = 25, modem_config=ModemConfig.Bw125Cr45Sf128, tx_power=14, acks=True) lora.on_recv = on_recv while True: ser_data = bytearray() while ser.inWaiting() > 0 and len(ser_data) <= 248: recieved_byte = ser.read(1) ser_data += recieved_byte if ser_data == b'': pass else: print(f'Received serial data: {ser_data}') lora.send_to_wait(bytes(ser_data), 255, retries=2) socat_proc.kill()