Skip to content

rs-232 pal demos #2847

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Jul 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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()
Loading