您好,我想在不使用库的情况下在Arduino上进行实时GPS Sim800模块RTC时间,我可以使用库来实现,但是没有库,正确的数据仅在1分钟内出现,而其他的则是垃圾。
请告诉我可以帮助我实现的代码
使用代码,我做了以下事情
#include <SoftwareSerial.h>
SoftwareSerial gsm(10, 11);
String Buffer;
String inData;
int i;
int *year, *month, *day, *hour, *minute, *second;
void setup() {
Serial.begin(9600);
gsm.begin(9600);
delay(5000);
}
void loop() {
Ansh:
delay(500);
gsm.println("AT+CCLK?\r\n");
while (gsm.available()) {
char recieved = gsm.read();
inData += recieved;
delay(100);
// Process message when new line character is recieved
if (recieved == '\n')
{
Serial.print("Arduino Received: ");
Serial.println(inData);
if (inData.substring(1, 5) == "+CCLK") {
Serial.println("Hello");
}
// You can put some if and else here to process the message juste like that:
if (inData == "+++\n") { // DON'T forget to add "\n" at the end of the string.
Serial.println("OK. Press h for help.");
}
inData = ""; // Clear recieved buffer
goto Ansh;
}
/* Buffer = Buffer.substring(Buffer.indexOf("\"") + 1, Buffer.lastIndexOf("\"") - 1);
year = Buffer.substring(0, 2).toInt();
month = Buffer.substring(3, 5).toInt();
day = Buffer.substring(6, 8).toInt();
hour = Buffer.substring(9, 11).toInt();
minute = Buffer.substring(15, 17).toInt();
second = Buffer.substring(18, 20).toInt();
*/
}/*
Serial.println(*hour);
delay(100);
Serial.println(*minute);
delay(100);
Serial.println(*second);
delay(100);
*/
}
但是我没有得到实时输出,但是在1个正确的输出之后,它返回如下垃圾
12:22:38.960->接收到Arduino:+ CCLK:“ 20/10 / 04,12:22:31 + 22” 12:22:38.960-> 12:22:39.672->接收到Arduino:12:22:39.672 -> 12:22:40.596->收到Arduino:OK 12:22:40.596-> 12:22:42.339->收到Arduino:AT + CCLK?
12:22:42.339-> 12:22:44.362->接收到的Arduino:+ CCAT + CCLK?
12:22:44.362-> 12:22:46.067->接收到的Arduino:AT + CCLK?
12:22:46.067-> 12:22:50.344->接收到的Arduino:+ CCLK:“ 20/10 / 04,12ATAT + CAT + CCLK?
12:22:50.344-> 12:22:52.043->收到Arduino:AT + CCLK?
12:22:52.043-> 12:22:54.082->收到Arduino:+ CCAT + CCLK?
12:22:54.082-> 12:22:55.822->收到Arduino:AT + CCLK?
12:22:55.822-> 12:23:00.064->收到Arduino:+ CCLK:“ 20/10 / 04,12:22:49AT + CCLK?
12:23:00.098-> 12:23:01.791->收到Arduino:AT + CCLK?
12:23:01.791-> 12:23:03.810->接收到的Arduino:+ CCAT + CCLK?
12:23:03.845-> 12:23:05.552->接收到Arduino:AT + CCLK?
12:23:05.552-> 12:23:09.803->接收到的Arduino:+ CCLK:“ 20/10 / 04,12:22:58AT + CCLK?
12:23:09.838-> 12:23:11.544->收到Arduino:AT + CCLK?
12:23:11.544-> 12:23:13.563->接收到的Arduino:+ CCAT + CCLK?
12:23:13.563-> 12:23:15.290->接收到的Arduino:AT + CCLK?
12:23:15.290-> 12:23:19.557->接收到的Arduino:+ CCLK:“ 20/10 / 04,12:23:08AT + CCLK?
12:23:19.557-> 12:23:21.278->接收到的Arduino:AT + CCLK?
如果我从代码中删除了延迟,那么我将收到以下输出
12:34:56.406->接收到的Arduino:(⸮⸮SCC⸮CL?⸮
1-⸮
AT + CCLK?
AT + CCL〜Q⸮-j 12:34:56.473-> 12:34:56.541->接收到的Arduino:⸮5⸮⸮AT+ CCLK?
⸮⸮〜⸮⸮1⸮j⸮b-⸮
AT + CCLK?
AT +C⸮〜⸮⸮1-j⸮5⸮⸮(⸮i1-⸮
AV⸮1-j12:34:56.607-> 12:34:56.913->接收到的Arduino:⸮5⸮⸮J⸮jj⸮jAT + CCLK?
AT + CCLK?
AT + CCLK?
AT +CK5Q⸮1⸮j⸮5⸮⸮AT+ CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT +CCLK⸮Q⸮Zj⸮5⸮⸮(⸮⸮1-⸮
⸮
1⸮j⸮5j⸮ը(⸮CCP⸮i1-⸮5Q⸮⸮j⸮jj⸮ը(j⸮jQb⸮⸮E⸮jj⸮(⸮⸮1-⸮5Q⸮Zj⸮5⸮⸮(⸮⸮( j⸮jQ⸮Zj⸮5j⸮ը(⸮j⸮⸮1⸮j⸮⸮5j⸮(⸮⸮(⸮j⸮V1-j 12:34:57.184-> 12:34:57.252-> Arduino收到:⸮ 5⸮⸮D⸮j1-⸮
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?
1-⸮
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT + CCL〜Q⸮-j 12:34:57.354-> 12:34:57.561->接收到的Arduino:⸮5⸮⸮AT+ CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?j AT + CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT +C⸮⸮5Q⸮⸮⸮Ԋi⸮j⸮(Q⸮⸮j⸮jj⸮ը(⸮CCP⸮i⸮j⸮ը(⸮CC⸮⸮⸮K?⸮+ CCLK?
AT +C⸮Q⸮Zj⸮5⸮⸮(Q⸮-j 12:34:57.763-> 12:34:57.763->接收到的Arduino:⸮5⸮⸮E⸮jj⸮jAT + CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT + CCLK?
AT⸮⸮z⸮⸮z⸮⸮b⸮⸮Қ⸮Ҫ⸮Z⸮⸮j12:34:57.866-> 12:34:57.866-> Arduino接收:12:34:57.905-> 12:34:57.905- >收到Arduino:确定12:34:57.968-> 12:34:57.968->收到Arduino:AT + CCLK?
12:34:57.968-> 12:34:57.968->接收到的Arduino:+ CCLK:“ 20/10 / 04,12:34:54 + 22” 12:34:58.037-> 12:34:58.037-> Arduino接收:12:34:58.070-> 12:34:58.070-> Arduino接收:OK 12:34:58.070-> 12:34:58.070-> Arduino接收:AT + CCK⸮⸮'I⸮)j⸮H( ⸮5⸮ꨨH⸮)⸮Қ⸮Ҫ⸮Z⸮⸮j12:34:58.138-> 12:34:58.138-> Arduino接收:12:34:58.172-> 12:34:58.172-> Arduino接收:确定A +⸮1-⸮jRb҂⸮jjZ⸮⸮Ҫ⸮Z⸮⸮Ҫ⸮j12:34:58.207-> 12:34:58.207->收到的Arduino:
尝试这个:
#include <SoftwareSerial.h>
SoftwareSerial gsm(10, 11);
String inData;
void setup() {
Serial.begin(9600);
gsm.begin(9600);
delay(5000);
}
void loop() {
inData = "";
gsm.println("AT+CCLK?");
delay(500);
while (gsm.available()) {
inData += char(gsm.read());
}
Serial.print("Arduino Received: ");
Serial.println(inData);
delay(500);
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句