我想连接Arduino nano和GNSS(SIMCom的SIM33ELA独立GNSS模块)。
首先我为rx / tx编写了一个程序,它运行良好,但现在我想使用Software Serial,我得到了错误的数据。
#include <SoftwareSerial.h>
char incomingByte; // for incoming serial data
double tbs;
SoftwareSerial mySerial(8, 9); // RX, TX
void setup() {
Serial.begin(115200);
while (!Serial) {
}
mySerial.begin(115200);
while (!mySerial) {
}
}
void loop() {
if (mySerial.available()) {
tbs = mySerial.read();
incomingByte = (char)tbs;
Serial.print(incomingByte);
}
/*if (Serial.available() > 0) {
incomingByte = Serial.read();
Serial.print(incomingByte);
}*/
}
任何想法?
关于结果的图片:
答案 0 :(得分:0)
大多数情况下,不要将一个字符读入double
个浮点变量。就这样做:
void loop()
{
if (mySerial.available()) {
char c = mySerial.read();
Serial.write( c );
}
}
您还应该在这两个引脚上使用AltSoftSerial。 SoftwareSerial的效率非常低,因为它会长时间禁用中断。它不能同时发送和接收。实际上,当一个角色被传输或时,Arduino无法做任何其他事情。
对于GPS库,您可以尝试NeoGPS。它是唯一可以解析最新设备句子的Arduino库。它比其他所有图书馆都更小,更快,更可靠,更准确。