Skip to content

Commit

Permalink
Merge pull request #2847 from adafruit/rs-232_pal
Browse files Browse the repository at this point in the history
rs-232 pal demos
  • Loading branch information
BlitzCityDIY authored Jul 11, 2024
2 parents 4df862a + b5ee85a commit 879a245
Show file tree
Hide file tree
Showing 3 changed files with 88 additions and 0 deletions.
Empty file.
46 changes: 46 additions & 0 deletions RS-232_Pal_Demos/Arduino_RS-232_Pal/Arduino_RS-232_Pal.ino
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
// SPDX-FileCopyrightText: 2024 Liz Clark for Adafruit Industries
//
// SPDX-License-Identifier: MIT

#include <SoftwareSerial.h>

// update this for your RS-232 device baud rate
#define baud 38400
// define RX and TX pins for the software serial port
#define RS232_RX_PIN 2
#define RS232_TX_PIN 3

SoftwareSerial rs232Serial(RS232_RX_PIN, RS232_TX_PIN);

void setup() {
Serial.begin(115200);
while ( !Serial ) delay(10);

rs232Serial.begin(baud);

Serial.println("Enter commands to send to the RS-232 device.");
Serial.println();
}

void loop() {

if (Serial.available() > 0) {
String userInput = Serial.readStringUntil('\n');
userInput.trim(); // remove any trailing newlines or spaces
if (userInput.length() > 0) {
// send the command with a telnet newline (CR + LF)
rs232Serial.print(userInput + "\r\n");
Serial.print("Sent: ");
Serial.println(userInput);
}
}

// check for incoming data from RS-232 device
while (rs232Serial.available() > 0) {
char response = rs232Serial.read();
// print the incoming data
Serial.print(response);
}

delay(50);
}
42 changes: 42 additions & 0 deletions RS-232_Pal_Demos/CircuitPython/code.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
# SPDX-FileCopyrightText: 2024 Liz Clark for Adafruit Industries
# SPDX-License-Identifier: MIT

import time
import board

# baud rate for your device
baud = 38400
# Initialize UART for the CH9328
# check for Raspberry Pi
# pylint: disable=simplifiable-condition
if "CE0" and "CE1" in dir(board):
import serial

uart = serial.Serial("/dev/ttyS0", baudrate=baud, timeout=3000)
# otherwise use busio
else:
import busio

uart = busio.UART(board.TX, board.RX, baudrate=baud)

print("Enter commands to send to the RS-232 device. Press Ctrl+C to exit.")
while True:
user_input = input("Please enter your command: ").strip()
if user_input:
# send the command with a telnet newline (CR + LF)
uart.write((user_input + "\r\n").encode('ascii'))

# empty buffer to collect the incoming data
response_buffer = bytearray()

# check for data
time.sleep(1)
while uart.in_waiting:
data = uart.read(uart.in_waiting)
if data:
response_buffer.extend(data)

# decode and print
if response_buffer:
print(response_buffer.decode('ascii'), end='')
print()

0 comments on commit 879a245

Please sign in to comment.