Creare RS485 su porta specifica

Buongiorno.
La libreria ArduinoRS485, che è una dipendenza di ArduinoModbus, ha come oggetto:

class RS485Class : public Stream {
  public:
    RS485Class(HardwareSerial& hwSerial, int txPin, int dePin, int rePin);

Che però non capisco come poterla inizializzare con miei parametri.
SAMD21 M0+

Se fosse possibile vorrei poter non modificare i sorgenti.

Guarda al fondo del RS485.cpp
Nella libreria viene dichiarato x comodità un oggetto RS485 di classe RS485Class
Fai la stessa cosa ma gli dai un tuo nome esempio:
RS485Class MiaRS485(Serial1, miotxpin, miodepin, miorepin);

oppure:
"Arduino Modbus Library - #2 by pylon"

Grazie, ma mi fai un esempio che non ho capito ?
So poco nulla di C++

Però io devo usare la libreria ArduinoModbus.

?? TCP ? ma non devi andare in seriale ?
Comunque, non mi pare quella modbus permetta di settare quale seriale usare, mi sa che per forza devi modificarti la lib RS485

Vedo in "ModbusRTUClient.h" la riga che dichiara una variabile privata dentro al RTUmodbus (seriale)
RS485Class* _rs485 = &RS485;
aggancia l'oggetto creato dalla lib ArduinoRS485.

Ma cosa devi variare per la RS485, con quali pin lavorare ?

Hai ragione, ho sbagliato esempio.
Dovrò fare modbus in entrambi i modi assieme, spero non vadano in conflitto.
Se è scritta bene non dovrebbe.

Devo usare Serial1 sul SAMD21
D0 RxD
D1 TxD
A1 TxEnable /RxEnable
Spero che non si aspetti l'echo perchè quando trasmetto il Rx, è disabilitato.

Per me ti conviene modificare la libreria ArduinoRS485, nella RS485.cpp al fondo trovi:

#ifdef RS485_SERIAL_PORT
RS485Class RS485(RS485_SERIAL_PORT, RS485_DEFAULT_TX_PIN, RS485_DEFAULT_DE_PIN, RS485_DEFAULT_RE_PIN);
#else
RS485Class RS485(SERIAL_PORT_HARDWARE, RS485_DEFAULT_TX_PIN, RS485_DEFAULT_DE_PIN, RS485_DEFAULT_RE_PIN);
#endif

Non ti so dire quale delle due viene compilata (dipende da quel def che non trovo)
Quello che serve a te dovrebbe essere:
RS485Class RS485(Serial1, ?? TX PIN, ?? DE PIN, ?? RE PIN );
NON so dirti cosa scrivere per i tre pin, non sò come corrispondono ai tuoi D1,D0aA1.
Non so il significato di DE pin e RE pin.
Nel file RS485.h ci sono i pin RS485_DEFAULT_DE_PIN,etc assegnati in base alla board.

Ok, grazie.
Proverò così.
Speravo di poterlo evitare.

Però non ho capito dove modificare.
Chi inizializza l'oggetto ?
E a quella chiamata che bisogna passargli i pin.
L'ultima riga di cpp, mica si può cambiare.

  public:
    RS485Class(HardwareSerial& hwSerial, int txPin, int dePin, int rePin);

Bo, si scusa.
Modificato e va:

RS485Class RS485(Serial1, 1, A1, -1);

:+1:

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.