This repository has been archived on 2025-03-06. You can view files and clone it, but cannot push or open issues or pull requests.
machines-backup/vendor/arduino/Arduino_MachineControl/examples/RS232/RS232.ino
2024-10-01 19:14:56 +02:00

89 lines
2.1 KiB
C++

/*
RS232 communication
This sketch shows how to use the SP335ECR1 on the Machine
Control as a RS232 interface, how to periodically send
a string on the RS232 TX channel and how to receive data
from the interface RX channel.
Circuit:
- Arduino Portenta Machine Control (PMC)
- Device with RS232 interface
- Connect PMC TXN to RS232 Device RXD
- Connect PMC RXP to RS232 Device TXD
- Connect PMC GND to RS232 Device GND
*/
#include <Arduino_MachineControl.h>
using namespace machinecontrol;
constexpr unsigned long sendInterval { 1000 };
unsigned long sendNow { 0 };
unsigned long counter { 0 };
void setup()
{
Serial.begin(115200);
// Wait for Serial or start after 2.5s
for (auto const timeout = millis() + 2500; !Serial && timeout < millis(); delay(500))
;
delay(2500);
Serial.println("Start RS232 initialization");
// Set the PMC Communication Protocols to default config
comm_protocols.init();
// RS485/RS232 default config is:
// - RS485/RS232 system disabled
// - RS485 mode
// - Half Duplex
// - No A/B and Y/Z 120 Ohm termination enabled
// Enable the RS485/RS232 system
comm_protocols.rs485Enable(true);
// Enable the RS232 mode
comm_protocols.rs485ModeRS232(true);
// Specify baudrate for RS232 communication
comm_protocols.rs485.begin(115200);
// Start in receive mode
comm_protocols.rs485.receive();
Serial.println("Initialization done!");
}
void loop()
{
if (comm_protocols.rs485.available())
Serial.write(comm_protocols.rs485.read());
if (millis() > sendNow) {
String log = "[";
log += sendNow;
log += "] ";
String msg = "hello ";
msg += counter++;
log += msg;
Serial.println(log);
// Disable receive mode before transmission
comm_protocols.rs485.noReceive();
comm_protocols.rs485.beginTransmission();
comm_protocols.rs485.println(msg);
comm_protocols.rs485.endTransmission();
// Re-enable receive mode after transmission
comm_protocols.rs485.receive();
sendNow = millis() + sendInterval;
}
}