ich verstehe nicht genau, zu welchem Zeitpunkt du die Pins ändern willst. In der SoftwareSerial Library ist keine Möglichkeit vorgesehen, um den RX und TX Pin ausserhalb des Konstruktors festzulegen/ zu ändern. Wenn du dir die Library anpasst und die Funktionen
void setTX(uint8_t transmitPin);
void setRX(uint8_t receivePin);
von private nach public verschiebst, funktioniert das vielleicht...
und btw. Ich löse das so, wenn ich SoftwareSerial in einer eigenen Klasse verwenden will.
Aufruf in der Arduino ino Datei
#include <SoftwareSerial.h>
#include <kellerbus.h>
SoftwareSerial mySerial(10,11);
CKellerBus kbus(&mySerial,9600,5,100);
void setup() {
;
}
void loop() {
;
}
cpp
#include <kellerbus.h>
CKellerBus::CKellerBus(SoftwareSerial* serialPort, uint16_t _baudrate, uint8_t _rts, uint16_t _timeout)
{
swSerial = serialPort;
swSerial->begin(baudrate);
}
und die header Datei
#include <Arduino.h>
#include <SoftwareSerial.h>
class CKellerBus
{
private:
SoftwareSerial *swSerial;
public:
CKellerBus(SoftwareSerial*, uint16_t, uint8_t, uint16_t); // constructor for SoftSerial
};