Certinho mas é isso que estou a fazer. a questão é as próprias rotinas .read e .write. Ou seja, a maneira como vai ler e meter na variavel. Se é caracter a caracter, se lê um byte de uma vez só, se fica toda a informação lida numa variavel e depois é necessário tratamento char a char para dividir a informação em varias variaveis. São essas coisas que ainda não compreendi. copio os exemplos das duas bibliotecas:
Isto é Serial.read:
int incomingByte = 0; // for incoming serial data
void setup() {
Serial.begin(9600); // opens serial port, sets data rate to 9600 bps
}
void loop() {
// send data only when you receive data:
if (Serial.available() > 0) {
// read the incoming byte:
incomingByte = Serial.read();
// say what you got:
Serial.print("I received: ");
Serial.println(incomingByte, DEC);
}
}
e esta a SoftwareSerial.read:
SoftwareSerial mySerial(10,11);
void setup()
{
mySerial.begin(9600);
}
void loop()
{
char c = mySerial.read();
}
Isto são duas maneiras diferentes mas parece-me que com a mesma finalidade.
Neste momento meti a Serial2 a receber a informação do GPS e utilizei um exemplo da TinyGPS, que usava a softwareserial e eu apenas troquei o que instanciava a biblioteca com os pinos de TX e RX, com a Serial2 e já consigo ler algo mas não passa de caracteres estranhos. Resumindo, a minha dúvida é se o que está a falhar aqui é o baudrate da comunicação entre o DUE e o GPS, porque o DUE tem o processador mais rápido que o MEGA, ou se é a questão da leitura dos dados do GPS.
Peço desculpa se a minha dúvida parece confusa mas tentei-me explicar da melhor maneira possivel.
E um obrigado, novamente.