Een Raspberry Pi 4 met een WaveShare 2 kanaals RS232 module heb ik gebruikt om 2 apparaten via RS232 met elkaar te laten communiceren.
Merk en model van beide apparaten zijn niet compatible, dus moest de string onderweg aangepast worden zodat het ontvangende apparaat er wat mee kan.
De gegevens komen binnen via ttySC0, de gegevens worden aangepast en vervolgens verzonden via ttySC1.
De code is zo eenvoudig dat ik hem hieronder plaats en dus niet via GitHub:
using System;
using System.IO.Ports;
using System.Text.RegularExpressions;
public class SerialportStringConverter
{
public static void Main()
{
// Create new SerialPorts object with default settings.
SerialPort SerialPort01 = new SerialPort();
SerialPort01.PortName = "/dev/ttySC0";
SerialPort01.BaudRate = 2400;
SerialPort01.Parity = Parity.Even;
SerialPort01.DataBits = 7;
SerialPort01.StopBits = StopBits.One;
SerialPort01.Handshake = Handshake.None;
SerialPort SerialPort02 = new SerialPort();
SerialPort02.PortName = "/dev/ttySC1";
SerialPort02.BaudRate = 9600;
SerialPort02.Parity = Parity.None;
SerialPort02.DataBits = 8;
SerialPort02.StopBits = StopBits.One;
SerialPort02.Handshake = Handshake.None;
// Set read/write timeouts
SerialPort01.ReadTimeout = 5000;
SerialPort02.WriteTimeout = 5000;
SerialPort01.Open();
SerialPort02.Open();
while (true)
{
string message = SerialPort01.ReadLine();
//do something with string and send it with SerialPort02
SerialPort02.WriteLine(message);
}
catch (TimeoutException)
{
SerialPort02.WriteLine("TimeOut");
}
}
}
}