极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9466|回复: 2

数据类型搞不清!求大侠指点!

[复制链接]
发表于 2013-4-9 10:03:08 | 显示全部楼层 |阅读模式
各位朋友,我想搞个GPS数据读取和处理程序练手,但下面程序总是在    comdata = char(Serial.read());这一句出错,提示好像是数据类型不对。求大侠指点!

#include <LiquidCrystal.h>   
#define data 1
String comdata = "";
int i=1;
int j=1;
LiquidCrystal lcd(8, 13, 9, 4, 5, 6, 7);
void setup()
{
    Serial.begin(2400);
  lcd.clear(); //Clear LCD
  lcd.begin(16,2);
  lcd.print("DEMO");
//  lcd.setCursor(0, 2); //set cursor on LCD at col 0 and row 2
//  lcd.print("Arduino GPS");
  delay(1000);
  lcd.clear();
}
void loop()
{//y
   while (Serial.available() > 0)
{   //y
for (i=0;i>1;i--); //用I变量控制是否是数据头$,并在后面判断过了六个逗号后读取逗号后面的数据(速度)。
{
   comdata = char(Serial.read());
    delay(2);
   if (char comdata='$')
   {
   for (j=1;j>=7;j++);//开始判断逗号,六个说明后面已缓冲区已到了我需要的速度数据了,但是读速度数据的语句还没加,应为前面一直不能编译。
   {
    comdata = char(Serial.read());
    delay(2);
    if (comdata =',')
    {
    j==j+1;
    Serial.print(comdata);     
    if (j=7)//判断到了需要读速度数据的位置了
    {
   i=5 ;//跳出循环,以便读速度数据
    }
    }
    }
  }
}

//该处应加入读速度数据和处理语句,但还没加。
}
if (comdata.length() > 0)
    {
Serial.print(comdata);//打印看是否正确
  lcd.setCursor(4, 1);
  lcd.print((comdata));
  lcd.setCursor(10, 1);
  lcd.print(i);  
}//y
}//y


程序也不长,求大侠们给看看!万分感谢!
出错提示如下:
comm2.ino: In function 'void loop()':
comm2:24: error: invalid conversion from 'char' to 'const char*'
comm2:24: error: initializing argument 1 of 'String& String::operator=(const char*)'
请问如何修改错误并可以按我的设想完成程序?
回复

使用道具 举报

发表于 2013-4-9 10:45:34 | 显示全部楼层
本帖最后由 瘦网虫 于 2013-4-9 10:47 编辑

while (Serial.available() > 0)  
  {
      comdata += char(Serial.read());
  }

修改下全部读出串口数据后再处理,试试看。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-4-9 19:03:21 | 显示全部楼层
谢谢网虫兄,已按您的意思修改,能正常显示了,但如何从字符串里取到我要的字符,我正在研究。谢谢您啊!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-5-13 22:29 , Processed in 0.040040 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表