AltSoftSerial Library e SoftwareSerial Considerazioni Teoriche Per Noob

Per un mio progetto in cui ho collegato un ricevitore GPS ad Arduino e quest’ultimo collegato al PC, partendo da uno sketch ho iniziato a studiare la teoria che c’è dietro.
la trasmissione seriale

Il mio dubbio iniziale era capire se potessero coesistere all’interno dello stesso Sketch sia la
AltSoft Serial sia la Software Serial. [dubbio risolto]

Da quello che sto capendo, leggendo anche questa documentazione su Serial comunication, non sono delle comunicazioni seriali vere e proprie ma emulano questo tipo di comunicazione.

La comunicazione seriale vera e propria è quella che avviene attraverso la porta UAR o USART. (?)

Approfondendo ho scoperto che le due librerie possono esistere nello stesso sketch.

It is possible to use both SoftwareSerial and AltSoftSerial, and of course HardwareSerial, to have 3 serial ports! However, the baud rates must be chosen carefully!

Non mi è molto chiaro il problema legato latenza, ho capito una parte della teoria che c’è dietro, ma non il problema legato specifico di Arduino e la comunicazione di informazioni

"Because SoftwareSerial creates 10 bit times of latency for other libraries, it should be used for a device needing high baud rate. SoftwareSerial should NOT be used at slow baud rates, because it will interfere with the other ports. SoftwareSerial can not simultaenously transmit and receive, so it should be used with a device that never sends in both directions at once. "

Nello sketch che sto sfruttando ho le seguenti righe di codice:

#include <AltSoftSerial.h>
AltSoftSerial gpsPort(ARDUINO_GPS_TX, ARDUINO_GPS_RX);
#define SerialMonitor Serial

Quello che da Noob mi chiedevo era “E’ la prima volta che mi capita di leggere e definire l’oggetto Serial, come mai?”

Solitamente nei vecchi sketch era automaticamente inserito nel setup

Serial.begin()

Immagino fosse automaticamente riconosciuto da Arduino e in questo caso venga definito SerialMonitor Serial per differenziarlo dalla comunicazione gps? Ma non sono convintissimo di questa mia affermazione

SerialMonitor.begin(9600);
 gpsPort.begin(GPS_BAUD);

Grazie mille per la pazienza e le delucidazioni

RispostaStack.txt (6.24 KB)