''' Simple program for receiving data over two UART channels to a TTL UART to RS485 converter, printing it out over Serial console. Inspired by and partly based on Waveshare's example code to the 2 Channel RS485 HAT for the Pi Pico. Copyright (C) 2024 Benjamin Burkhardt This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see . ''' from machine import UART, Pin import time uart0 = UART(0, baudrate=115200, tx=Pin(0), rx=Pin(1)) uart1 = UART(1, baudrate=115200, tx=Pin(4), rx=Pin(5)) print('Starting RS485 simple receive...') module0_mode = Pin(2, Pin.OUT) # define pinout for the receiver/driver enable pins (shortened together) module1_mode = Pin(3, Pin.OUT) # define pinout for the receiver/driver enable pins (shortened together) module0_mode.low() # logic 0 = receive; logic 1 = send module1_mode.low() # logic 0 = receive; logic 1 = send rxData0concatenated = '' rxData1concatenated = '' while True: rxData0 = uart0.readline() if rxData0 is not None: rxData0decoded = rxData0.decode('utf-8') if not '\n' in rxData0decoded: rxData0concatenated += rxData0decoded else: rxData0concatenated += rxData0decoded print(f"[CH0] Received data: {rxData0concatenated}", end="") rxData0concatenated = '' rxData1 = uart1.readline() if rxData1 is not None: rxData1decoded = rxData1.decode('utf-8') if not '\n' in rxData1decoded: rxData1concatenated += rxData1decoded else: rxData1concatenated += rxData1decoded print(f"[CH1] Received data: {rxData1concatenated}", end="") rxData1concatenated = ''