I have written this little snippet of code to interface with EM408 GPS.
#include <SoftwareSerial.h>
SoftwareSerial GPS = SoftwareSerial(2,3); //rx,tx
void setup()
{
GPS.begin(4800);
Serial.begin(9600);
}
void loop()
{
//Serial.print(GPS.read(), BYTE);
Serial.write(byte(GPS.read())); //as of Arduino 1.0
}
Hardware side i have these connections:
ENABLE: 3.3V
Vcc : 3.3V
Ground: Ground
Rx, Tx correctly connected to arduino and correctly initialized with SoftwareSerial
However, the values i get are just junk data
ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿ
I get these without ending... I experimenting with changing the baud rate, still the same thing goes on. Any ideas?
EDIT:
I used to get random junk data before with the EM406 gps module, but i solved it by casting everything to BYTE. I have tried both approaches here, but the results are the same...
1 Answer 1
The problem you get is that read()
does not wait for a byte to be available, it just returns -1
if there is no byte available; converted as an unsigned byte that becomes 255
.
In ISO-8859-1, which I guess is the encoding that your serial monitor is using, 255
translates to ÿ
, so this is exactly what you observe.
Fixing this problem is straightforward, just check that a byte is available on SoftwareSerial
before reading it:
void loop()
{
if (GPS.available()) {
Serial.write(byte(GPS.read())); //as of Arduino 1.0
}
}
-
Thanks, but when i use this method, i receive nothing at all, with all baud rates combination and independent of time passed...user1584421– user15844212014年05月19日 19:42:44 +00:00Commented May 19, 2014 at 19:42
-
If you receive nothing, that may come from your wiring: voltage level, crossed connections, short-circuit...jfpoilpret– jfpoilpret2014年05月19日 19:59:11 +00:00Commented May 19, 2014 at 19:59
-
1Note that in your current code, you don't receive either, as I have explained, if
ÿ
is the only thing you get, it means yourGPS
stream never receives anything...jfpoilpret– jfpoilpret2014年05月19日 20:00:47 +00:00Commented May 19, 2014 at 20:00
Serial.write((byte)(GPS.read()));
?