极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 9983|回复: 0

求大神看下蓝牙(串口监视器模拟)接收和12864显示结合程序的问题

[复制链接]
发表于 2015-3-30 21:29:07 | 显示全部楼层 |阅读模式
程序见下方,借用的工坊里面大神的12864的方法
现在出现的主要问题是每次在arduinoIDE自带的串口监视器(模拟蓝牙输入,因为蓝牙坏了还没来得及买T T)里面输入例如“+0=”以后,12864就会一直重复清屏——显示“+0=”代表的数据——清屏,这样的循环
如果我再输入类似“+2=”的数据的时候则会直接不显示任何东西T T
求各位大大看一下程序结构有没有错误


程序:

#include <SPI.h>
#include "LCD12864RSPI.h"
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
String comdata="";   //用于存放蓝牙传输过来的命令,初始为""
byte mark=0;   //用于确认是否有命令输入
unsigned char show0[]={0xCF,0xDF,0xC2,0xB7,0xA3,0xBA,0x32,0x31,0xC2,0xB7};//线路:21路
unsigned char show1[]={0xBE,0xE0,0xC0,0xEB,0xA3,0xBA,0x30,0x32,0xB9,0xAB,0xC0,0xEF};//距离:02公里
unsigned char show2[]={0xD4,0xA4,0xBC,0xC6,0xCA,0xB1,0xBC,0xE4,0xA3,0xBA,0x30,0x32,0xB7,0xD6,0xD6,0xD3};//预计时间:02分钟
unsigned char show3[]={0xCF,0xDF,0xC2,0xB7,0xA3,0xBA,0x35,0x39,0xC2,0xB7};//线路:59路
unsigned char show4[]={0xD4,0xD8,0xBF,0xCD,0xC2,0xCA,0xA3,0xBA,0x20,0x30,0x25};//载客率0%
unsigned char show5[]={0xD4,0xD8,0xBF,0xCD,0xC2,0xCA,0xA3,0xBA,0x32,0x30,0x25};//载客率20%
unsigned char show6[]={0xD4,0xD8,0xBF,0xCD,0xC2,0xCA,0xA3,0xBA,0x34,0x30,0x25};//载客率40%
unsigned char show7[]={0xD4,0xD8,0xBF,0xCD,0xC2,0xCA,0xA3,0xBA,0x36,0x30,0x25};//载客率60%
unsigned char show8[]={0xBE,0xE0,0xC0,0xEB,0xA3,0xBA,0x30,0x31,0xB9,0xAB,0xC0,0xEF};//距离:01公里
unsigned char show9[]={0xD4,0xA4,0xBC,0xC6,0xCA,0xB1,0xBC,0xE4,0xA3,0xBA,0x30,0x31,0xB7,0xD6,0xD6,0xD3};//预计时间:01分钟
unsigned char show10[]={0xBE,0xE0,0xC0,0xEB,0xA3,0xBA,0x30,0x33,0xB9,0xAB,0xC0,0xEF};//距离:03公里
unsigned char show11[]={0xD4,0xA4,0xBC,0xC6,0xCA,0xB1,0xBC,0xE4,0xA3,0xBA,0x30,0x33,0xB7,0xD6,0xD6,0xD3};//预计时间:03分钟

void setup()
{
  digitalWrite(10, HIGH); //
  LCDA.Initialise(); // 屏幕初始化  
  delay(100);
  Serial.begin(9600);
  SPI.begin();
}

void loop()
{
  while(Serial.available()>0)  // 检测是否有内容发送过来,有则进入循环
  {
    char t=char(Serial.read());  //读取一个字符(串口读取只能一个个字符读取,这里的方法也是用论坛精华帖的)
    comdata+=t; //将读取的字符存为字符串
    delay(2);     //延迟否则读取会出错
    if(t=='=') break;   //如果读到终止符号则停止,跳出循环
    mark=1;     //标记有命令输入
  }
  if(comdata[0]!='+' || comdata[comdata.length()-1]!='=') mark=0;    //判断命令合法性

  if(mark==1)    //如果命令合法则让1602液晶输出
  {

//  HX711:
  if(comdata=="+0=")
  
{
   LCDA.CLEAR();//清屏
  delay(100);
    LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
    LCDA.DisplayString(1,0,show8,AR_SIZE(show8));;//第二行第一格开始,显示文字距离:01公里
    LCDA.DisplayString(2,0,show9,AR_SIZE(show9));;//第三行第一格开始,显示文字预计时间:01分钟  
    LCDA.DisplayString(3,0,show4,AR_SIZE(show4));//第四行第一格开始,显示文字载客率0%
    delay(5000);
  
  }
else if(comdata=="+1=")
{
  LCDA.CLEAR();//清屏
  delay(100);
  LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
  LCDA.DisplayString(1,0,show1,AR_SIZE(show1));;//第二行第一格开始,显示文字距离:02公里
  LCDA.DisplayString(2,0,show2,AR_SIZE(show2));;//第三行第一格开始,显示文字预计时间:02分钟   
  LCDA.DisplayString(3,0,show4,AR_SIZE(show4));//第四行第一格开始,显示文字载客率0%
  delay(5000);
  }
else if(comdata=="+2=")
  {
   LCDA.CLEAR();//清屏
  delay(100);  
  LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
  LCDA.DisplayString(1,0,show10,AR_SIZE(show10));;//第二行第一格开始,显示文字距离:03公里
  LCDA.DisplayString(2,0,show11,AR_SIZE(show11));;//第三行第一格开始,显示文字预计时间:03分钟
  LCDA.DisplayString(3,0,show4,AR_SIZE(show4));//第四行第一格开始,显示文字载客率0%
  delay(5000);
  }
else if(comdata=="+3=")
  {
   LCDA.CLEAR();//清屏
   delay(100);
   LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
   LCDA.DisplayString(1,0,show8,AR_SIZE(show8));;//第二行第一格开始,显示文字距离:01公里
   LCDA.DisplayString(2,0,show9,AR_SIZE(show9));;//第三行第一格开始,显示文字预计时间:01分钟   
   LCDA.DisplayString(3,0,show5,AR_SIZE(show5));//第四行第一格开始,显示文字载客率20%
   delay(5000);
  }
else if(comdata=="+4=")
  {
   LCDA.CLEAR();//清屏
   delay(100);
   LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
   LCDA.DisplayString(1,0,show1,AR_SIZE(show1));;//第二行第一格开始,显示文字距离:02公里
   LCDA.DisplayString(2,0,show2,AR_SIZE(show2));;//第三行第一格开始,显示文字预计时间:02分钟  
   LCDA.DisplayString(3,0,show5,AR_SIZE(show5));//第四行第一格开始,显示文字载客率20%
   delay(5000);
  }
else if(comdata=="+5=")
  {
   LCDA.CLEAR();//清屏
   delay(100);
   LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
   LCDA.DisplayString(1,0,show10,AR_SIZE(show10));;//第二行第一格开始,显示文字距离:03公里
   LCDA.DisplayString(2,0,show11,AR_SIZE(show11));;//第三行第一格开始,显示文字预计时间:03分钟
   LCDA.DisplayString(3,0,show5,AR_SIZE(show5));//第四行第一格开始,显示文字载客率20%
   delay(5000);
  }
else if(comdata=="+6=")
  {
   LCDA.CLEAR();//清屏
   delay(100);
   LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
   LCDA.DisplayString(1,0,show8,AR_SIZE(show8));;//第二行第一格开始,显示文字距离:01公里
   LCDA.DisplayString(2,0,show9,AR_SIZE(show9));;//第三行第一格开始,显示文字预计时间:01分钟   
   LCDA.DisplayString(3,0,show6,AR_SIZE(show6));//第四行第一格开始,显示文字载客率40%
   delay(5000);
  }
else if(comdata=="+7=")
  {
   LCDA.CLEAR();//清屏
   delay(100);
   LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
   LCDA.DisplayString(1,0,show1,AR_SIZE(show1));;//第二行第一格开始,显示文字距离:02公里
   LCDA.DisplayString(2,0,show2,AR_SIZE(show2));;//第三行第一格开始,显示文字预计时间:02分钟  
   LCDA.DisplayString(3,0,show6,AR_SIZE(show6));//第四行第一格开始,显示文字载客率40%
   delay(5000);
  }
else if(comdata=="+8=")
  {
   LCDA.CLEAR();//清屏
   delay(100);
   LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
   LCDA.DisplayString(1,0,show10,AR_SIZE(show10));;//第二行第一格开始,显示文字距离:03公里
   LCDA.DisplayString(2,0,show11,AR_SIZE(show11));;//第三行第一格开始,显示文字预计时间:03分钟
   LCDA.DisplayString(3,0,show6,AR_SIZE(show6));//第四行第一格开始,显示文字载客率40%
   delay(5000);
  }
else if(comdata=="+9=")
  {
   LCDA.CLEAR();//清屏
   delay(100);
   LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
   LCDA.DisplayString(1,0,show8,AR_SIZE(show8));;//第二行第一格开始,显示文字距离:01公里
   LCDA.DisplayString(2,0,show9,AR_SIZE(show9));;//第三行第一格开始,显示文字预计时间:01分钟   
   LCDA.DisplayString(3,0,show7,AR_SIZE(show7));//第四行第一格开始,显示文字载客率60%
   delay(5000);
  }
else if(comdata=="+10=")
  {
   LCDA.CLEAR();//清屏
   delay(100);
   LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
   LCDA.DisplayString(1,0,show1,AR_SIZE(show1));;//第二行第一格开始,显示文字距离:02公里
   LCDA.DisplayString(2,0,show2,AR_SIZE(show2));;//第三行第一格开始,显示文字预计时间:02分钟  
   LCDA.DisplayString(3,0,show7,AR_SIZE(show7));//第四行第一格开始,显示文字载客率60%
   delay(5000);
  }
else if(comdata=="+11=")
  {
   LCDA.CLEAR();//清屏
   delay(100);
   LCDA.DisplayString(0,0,show0,AR_SIZE(show0));//第一行第一格开始,显示文字线路:21路
   LCDA.DisplayString(1,0,show10,AR_SIZE(show10));;//第二行第一格开始,显示文字距离:03公里
   LCDA.DisplayString(2,0,show11,AR_SIZE(show11));;//第三行第一格开始,显示文字预计时间:03分钟
   LCDA.DisplayString(3,0,show7,AR_SIZE(show7));//第四行第一格开始,显示文字载客率60%
   delay(5000);
  }
     LCDA.CLEAR();//清屏
   delay(100);
  }

  
   LCDA.CLEAR();//清屏
  delay(100);  

  
  }
回复

使用道具 举报

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

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-8 05:28 , Processed in 0.035466 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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