uno上能用但是mega2560上用不了-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 4318|回复: 5

[未解决] uno上能用但是mega2560上用不了

[复制链接]
发表于 2019-8-17 19:21 | 显示全部楼层 |阅读模式
本帖最后由 我很飞 于 2019-8-19 09:34 编辑

#define gpsSerial Serial

char nmeaSentence[68];
String latitude;                //纬度
String longitude;                //经度
String lndSpeed;                //速度
String gpsTime;                        //UTC时间,本初子午线经度0度的时间,和北京时间差8小时
String beiJingTime;                //北京时间
void setup()        //初始化内容
{
  gpsSerial.begin(9600);                        //定义波特率9600
}

void loop()                //主循环
{
  // For one second we parse GPS data and report some key values
  for (unsigned long start = millis(); millis() - start < 1000;)        //一秒钟内不停扫描GPS信息
  {
    gpsSerial.println("pass")          这句话在uno和mega2560上都能显示
    while (gpsSerial.available())        //串口获取到数据开始解析
    {
      gpsSerial.println("2 pass")         这句话在mega2560上无法显示
      char c = gpsSerial.read();        //读取一个字节获取的数据
      switch(c)                                        //判断该字节的值
      {
      case '$':                                        //若是$,则说明是一帧数据的开始
        gpsSerial.readBytesUntil('*', nmeaSentence, 67);                //读取接下来的数据,存放在nmeaSentence字符数组中,最大存放67个字节
        //Serial.println(nmeaSentence);
        latitude = parseGprmcLat(nmeaSentence);        //获取纬度值
        longitude = parseGprmcLon(nmeaSentence);//获取经度值
        lndSpeed = parseGprmcSpeed(nmeaSentence);//获取速度值
        gpsTime = parseGprmcTime(nmeaSentence);//获取GPS时间

        if(latitude > "")                //当不是空时候打印输出
        {
          gpsSerial.println("------------------------------------");
          gpsSerial.println("latitude: " + latitude);
        }

        if(longitude > "")                //当不是空时候打印输出
        {
          gpsSerial.println("longitude: " + longitude);
        }  

        if(lndSpeed > "")                //当不是空时候打印输出
        {
          gpsSerial.println("Speed (knots): " + lndSpeed);
        }

        if(gpsTime > "")                //当不是空时候打印输出
        {
          gpsSerial.println("gpsTime: " + gpsTime);
          beiJingTime = getBeiJingTime(gpsTime);        //获取北京时间
          gpsSerial.println("beiJingTime: " + beiJingTime);        
        }               
      }
    }
  }
  delay(3000);
}

发表于 2019-8-18 15:04 | 显示全部楼层
uno上能用但是mega2560上用不了   www.tdszx.com  www.gztpcj.com  www.jyhxjm.com
 楼主| 发表于 2019-8-19 09:32 | 显示全部楼层
魅力舞兵 发表于 2019-8-18 15:04
uno上能用但是mega2560上用不了   www.tdszx.com  www.gztpcj.com  www.jyhxjm.com

嗯,是的,有什么办法能在mega2560上也能用吗?
 楼主| 发表于 2019-12-18 15:12 | 显示全部楼层
问题已解决
发表于 2021-4-25 19:06 | 显示全部楼层
楼主怎么解决的,求助啊
发表于 2021-4-25 20:28 | 显示全部楼层
UNO和Mega2560串口不同,改下程序就行了
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 07:48 , Processed in 0.105084 second(s), 16 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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