SoftwareSerial - Pins verändern

Hallo,

Gibt es eine Möglichkeit die Pins für ein SoftwareSerial zur Laufzeit zuändern?

Derzeit nutze ich folgenden Codeschnipsel in einer Library:

#include "Arduino.h"
#include "MaestroServo.h"
#include "SoftwareSerial.h"

SoftwareSerial maestroSerial(3, 4);

MaestroServo::MaestroServo(unsigned char rxPin, unsigned char txPin, int baudRate, unsigned char resetPin, unsigned char commandSendPin)
{
    // start the communication
    maestroSerial.begin(baudRate);
    
    // define pin modes
    pinMode(resetPin, OUTPUT);
    pinMode(commandSendPin, OUTPUT);
    
    // save for later internal use
    _rxPin = rxPin;
    _txPin = txPin;
    _baudRate = baudRate;
    _resetPin = resetPin;
    _commandSendPin = commandSendPin;
}

So richtig weiß ich nur nicht wie ich die SoftwareSerial Pins im Constructor der Klasse verändern kann.

Geht es einfach mit einem:

SoftwareSerial maestroSerial(rxPin, txPin)

Gruß
Stefan

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
};

Was ich vor habe ist, dass wenn der Benutzer meine Library verwendet er beim Initialisieren der Klasse, die Pins übergeben kann, die genutzt werden für die SoftwareSerial.

Ich möchte ungerne feste Werte innerhalb der Lib verwenden.

habe oben nochmals editiert.

Es über einen Pointer zu machen ist natürlich auch eine gute Variante. Ich glaube das werde ich direkt so von dir übernehmen wenn du gestattest.