fangtaonj 发表于 2013-4-11 09:11:36

求助,程序运行很蹊跷!

本帖最后由 fangtaonj 于 2013-4-11 09:15 编辑

再次请大伙帮忙(不好意思,本人小白,处处都遇到困难),这个程序是串口读取GPS字符串,取出其中经度、维度、速度信息显示和串口打印出来。运行结果很蹊跷,现象如下:代码中两个做记号的语句为31行语句A:Serial.print(comdata);   //A和34行语句b://comdata="$GPRMC,091859.800,A,3204.8736,N,11853.4971,E,1.46,14.92,280313,,,A*56";//B,若B不屏蔽(这么用是为了调试)则屏幕和串口显示一切正常。但这个数据不是来自串口,真的程序是屏蔽语句B,这样comdata数据来自串口,通过打开语句A,发现执行语句A的结果显示comdata就是$GPRMC,091859.800,A,3204.8736,N,11853.4971,E,1.46,14.92,280313,,,A*56,和赋值语句B的内容一样,但此时打印和显示都没有了,一切都不正常,似乎B语句后的程序都不执行了一样,无法显示和打印。我感觉很奇怪但始终找不到原因,求高手帮助找明原因,谢谢!
!代码如下:#include <LiquidCrystal.h>   
String comdata = "";
String text4;
String text5;
String text6;
int i;
LiquidCrystal lcd(8, 9, 4, 5, 6, 7);
void setup()
{

lcd.clear();
Serial.begin(9600);
//delay(3000);
// Serial.print ("PMTK251,115200");
// Serial.print ("PMTK300,100,0,0,0,0");
Serial.print ("$$$$$$$$$$$$$$$$PMTK314,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0*29");
lcd.begin(16,2);
lcd.print("GPS DEMO");
delay(3000);
lcd.clear();
}
void loop()
{//y
   while (Serial.available() > 0)
{   //y
   for (byte i=1;i<=70;i++);
   {
comdata += char(Serial.read());
    delay(2);
   }
Serial.print(comdata);   //A
//comdata.toUpperCase();
// comdata.trim();
//comdata="$$$$$$$$$$$$$$$$GPRMC,091859.800,A,3204.8736,N,11853.4971,E,1.46,14.92,280313,,,A*56";//B

text4=(comdata.substring(comdata.indexOf('$$')));
//Serial.println(text4);
text5=(text4.substring(text4.indexOf('A')+2));
text6=(text5.substring(0,text5.indexOf(',')));
Serial.print(text6);
lcd.setCursor(0, 0);
lcd.print((text6));

text5=(text4.substring(text4.indexOf('N')+2));
text6=(text5.substring(0,text5.indexOf(',')));
Serial.print(text6);
lcd.setCursor(0, 1);
lcd.print((text6));

text5=(text4.substring(text4.indexOf('E')+2));
text6=(text5.substring(0,text5.indexOf(',')));
Serial.print(text6);
lcd.setCursor(10, 0);
lcd.print((text6));
//    lcd.clear();
comdata = "";

}//y
}

fangtaonj 发表于 2013-4-11 09:17:54

代码第36行36.text4=(comdata.substring(comdata.indexOf('$$')));
只有一个$,不知为何变成两个,还改不掉,请复制程序的朋友注意。

蓝色斗鱼 发表于 2014-1-26 21:27:58

估计又是内存不够惹的祸
页: [1]
查看完整版本: 求助,程序运行很蹊跷!