极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 14970|回复: 9

数据类型转换问题

[复制链接]
发表于 2016-12-16 20:38:11 | 显示全部楼层 |阅读模式
本人现在正在使用射频模块RC522,接收卡号,在串口接收到一系列的十六进制数, 这是卡的号码 515937D5EA --------->0x51,0x59,0x37,0xD5,0xEA,我想帮这个卡号编成字符串:'5','1','5','9','3','7','D','5','E','A',然后在LCD12864上显示,尝试了好长时间,一直都是乱码。。。麻烦大神们帮我想想办法,谢了
回复

使用道具 举报

发表于 2016-12-16 22:15:20 | 显示全部楼层
就把每個位元組的分離出來然後轉換成對應的ASCII 碼像這樣

unsigned char A;
unsigned char B;
unsigned char Code = 0x51;

A = ( (Code & 0xF0) >> 4) + '0';
B = ( (Code & 0x0F) ) + '0';

回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-16 23:05:03 | 显示全部楼层
croma 发表于 2016-12-16 22:15
就把每個位元組的分離出來然後轉換成對應的ASCII 碼像這樣

unsigned char A;

感谢感谢  我会试一下  好人一生平安
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-16 23:21:42 | 显示全部楼层
croma 发表于 2016-12-16 22:15
就把每個位元組的分離出來然後轉換成對應的ASCII 碼像這樣

unsigned char A;

我试过了,之前我有想过这个办法,但是后面加多少我不知道(就是'0'),所以就没考虑,对于大写英文字母来说,这个就不全部适用了,大写字母就要把'0'变换成'7',是吗
回复 支持 反对

使用道具 举报

发表于 2016-12-17 03:04:24 | 显示全部楼层
本帖最后由 croma 于 2016-12-17 03:06 编辑

設定成一個陣列的轉換表就行了
unsigned char codeArray[] = "0123456789ABCDEF";
unsigned char A,B;
unsigned char Code = 0x53;

A = ( (Code & 0xF0) >> 4 );
A = codeArray[A];
B = ( (Code & 0x0F) );
B = codeArray[B];
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-17 12:10:44 | 显示全部楼层
croma 发表于 2016-12-17 03:04
設定成一個陣列的轉換表就行了
unsigned char codeArray[] = "0123456789ABCDEF";
unsigned char A,B;

感谢你的回复,我会尝试一下
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-17 21:26:13 | 显示全部楼层
croma 发表于 2016-12-17 03:04
設定成一個陣列的轉換表就行了
unsigned char codeArray[] = "0123456789ABCDEF";
unsigned char A,B;

还有问题  要问你   看看我GPS 经度纬度 显示   是乱码  怎么改
回复 支持 反对

使用道具 举报

发表于 2016-12-22 02:06:11 | 显示全部楼层
?? 沒看到東西啊
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-22 17:26:28 | 显示全部楼层
/**
读卡器与M1卡之间的通讯,首先要寻卡(Answer To Request),验证卡片类型
----》防冲突检查(Anticollision Loop)选择一张卡片,返回该卡序列号;
-----》选择卡片(Select Tag),选择被选中的卡的序列号,返回卡的容量代码;
-----》三次互相确认(3 Pass Authentication)通过密码校验之后,三次互相认证之后可以通讯。
*/
///////////////////RC522库///////////////////
#include <SPI.h>
#include <RFID.h>
#include <Arduino.h>
///////////////////LCD12864库///////////////////
#include "LCD12864RSPI.h"
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
//////////////////GPS串口设置//////////////////  
#define GpsSerial  Serial1
#define DebugSerial Serial
//////////////薄膜键盘加密码库//////////////
#include <Password.h>
#include <Keypad.h>

Password password = Password( "9" ); //设置密码

const byte ROWS = 4; // Four rows
const byte COLS = 4; //  columns
// Define the Keymap
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {31,33,35,37};// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = {39,41,43,45};// Connect keypad COL0, COL1 and COL2 to these Arduino pins.


// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

#define MAX_LEN 16

//////////////////GPS结构体定义////////////////
struct
{
        char GPS_Buffer[80];
        bool isGetData;                //是否获取到GPS数据
        bool isParseData;        //是否解析完成
        char UTCTime[11];                //UTC时间
        char latitude[11];                //纬度
        char N_S[2];                //N/S
        char longitude[12];                //经度
        char E_W[2];                //E/W
        bool isUsefull;                //定位信息是否有效
} Save_Data;

const unsigned int gpsRxBufferLength = 600;
char gpsRxBuffer[gpsRxBufferLength];
unsigned int ii = 0;
int L = 13; //LED指示灯引脚

unsigned char charserNum[10];
unsigned char codeArray[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
unsigned char id[5];
char la[5],lo[6];
unsigned char latitude_jx[12],longitude_jx[12];
unsigned char sectorNewKeyA[16][16] = {
        {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
        {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
        {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},};

RFID rfid(53,5);   //Arduino UNO R3 D10--读卡器SDA引脚、D5--读卡器RST引脚
                   //Arduino Mega 2560 --读卡器SDA引脚、D5--读卡器RST引脚

/////////定义显示屏上的汉字和图像///////////
unsigned char show0[]={0xD0,0xA1,0xD7,0xE9,0xB3,0xC9,0xD4,0xB1};//小组成员
unsigned char show1[]={0xC1,0xF5,0xBA,0xAE,0xD2,0xDD};//刘寒逸
unsigned char show2[]={0xBA,0xAB,0xEA,0xBB,0xD4,0xF3};//韩昊泽
unsigned char show3[]={0xC1,0xF5,0xB7,0xBD,0xC8,0xF3};//刘方润
unsigned char show4[]={0xD4,0xAC,0xD1,0xEF};//袁扬
unsigned char show5[]={0xCF,0xD4,0xCA,0xBE,0xD0,0xC5,0xCF,0xA2,0x3A,0x00};//显示信息:
unsigned char show6[]={0xBF,0xA8,0xBA,0xC5,0x3A,0x00};//卡号:
unsigned char show7[]={'E','r','r','o','r','!'};
unsigned char show8[]={0xBE,0xAD,0xB6,0xC8,0x3A,0x00};//经度:
unsigned char show9[]={0xCE,0xB3,0xB6,0xC8,0x3A,0x00};//纬度:
unsigned char show10[]={0xA1,0xE3};//°
unsigned char show11[]={0xBB,0xB6,0xD3,0xAD,0xCA,0xB9,0xD3,0xC3,0xB1,0xBE,0xC9,0xE8,0xBC,0xC6}; //欢迎使用本设计
unsigned char show12[]={0xC7,0xEB,0xCA,0xE4,0xC8,0xEB,0xC3,0xDC,0xC2,0xEB,0x3A,0x00};//请输入密码:
unsigned char show13[]={0xC3,0xDC,0xC2,0xEB,0xD5,0xFD,0xC8,0xB7,0x2C,0x00,0xC7,0xEB,0xB5,0xC8,0xB4,0xFD};//密码正确,请等待
unsigned char show14[]={0xC3,0xDC,0xC2,0xEB,0xB4,0xED,0xCE,0xF3,0x2C,0x00,0xC7,0xEB,0xD6,0xD8,0xCA,0xD4};//密码错误,请重试
unsigned char logo0[]={                                         //笑脸
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
      0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
      0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
      0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,
      0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,
      0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,
      0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
      0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,
      0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,
      0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,
      0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,
      0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,
      0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,
      0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,
      0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
      0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x38,0x00,0x40,0x00,
      0x00,0x80,0x1C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x78,0x03,0xF8,0x00,
      0x07,0xF0,0x1E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x70,0x07,0xFE,0x00,
      0x0F,0xFC,0x0E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xF0,0x1F,0xBF,0x00,
      0x3F,0x7E,0x0F,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xE0,0x3E,0x0F,0x80,
      0x7C,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xE0,0x7C,0x07,0xC0,
      0xF8,0x0F,0x87,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xE0,0xF8,0x01,0xE1,
      0xF0,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0xF0,0x01,0xE1,
      0xE0,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0xE0,0x00,0xE1,
      0xC0,0x01,0xC3,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,
      0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
      0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
      0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xF0,0x00,0x0C,0x00,
      0x0C,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x70,0x00,0x1E,0x00,
      0x1E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x78,0x00,0x1F,0x00,
      0x3E,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x38,0x00,0x07,0x80,
      0xF8,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x3C,0x00,0x03,0xE1,
      0xF0,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x1E,0x00,0x01,0xFF,
      0xE0,0x00,0x78,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0xFF,
      0x80,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x3F,
      0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,
      0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,
      0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,
      0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,
      0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
      0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,
      0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,
      0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,
      0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
      0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
      0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
      0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char logo1[] =                 
{
      0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x1C,0x1F,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x3C,0x1F,0xF8,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x3C,0x3F,0xF8,
      0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x38,0x7F,0xC0,
      0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0x00,
      0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,
      0xF8,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x08,0x7F,0xFC,0x00,
      0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x10,0x7F,0xFC,0x31,
      0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x10,0xF0,0xFF,0xF3,
      0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x20,0xC0,0xFF,0xE3,
      0x0C,0x23,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x40,0x01,0xFF,0xC7,
      0x0C,0x63,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xC0,0x0F,0xFE,0x07,
      0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xA0,0x1F,0xFC,0x07,
      0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x80,0x3F,0xF8,0x07,
      0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0x80,0x7F,0xF0,0x07,
      0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0x00,0x71,0xF0,0x0F,
      0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0x00,0xE1,0xF1,0xFF,
      0xE0,0x03,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x02,0x00,0x01,0xFF,0xFF,
      0xE1,0x87,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x06,0x00,0x07,0xFF,0xFF,
      0xE1,0x0F,0xFF,0xFF,0xE0,0x00,0x00,0x00,
      0x00,0x00,0x00,0x06,0x00,0x3F,0xFF,0xFF,
      0xFC,0x3F,0xFF,0xFF,0xFE,0x00,0x00,0x00,
      0x00,0x00,0x00,0x06,0x00,0xFF,0xFF,0x1F,
      0xFF,0xFC,0x00,0x00,0x07,0x00,0x00,0x00,
      0x00,0x00,0x00,0x04,0x07,0xFF,0xF8,0x3F,
      0xFF,0xF0,0x00,0x00,0x03,0x80,0x00,0x00,
      0x00,0x00,0x00,0x04,0x3F,0xFF,0xF0,0x3F,
      0xFF,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,
      0x00,0x00,0x00,0x06,0x7F,0xFF,0x81,0xFF,
      0xC0,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
      0x00,0x00,0x00,0x07,0xFF,0xFE,0x03,0xE0,
      0x00,0x00,0xF8,0x00,0x00,0x3F,0x80,0x00,
      0x00,0x00,0x00,0x0F,0xFF,0xF8,0x03,0x00,
      0x00,0x0F,0xF8,0x00,0x00,0x00,0x80,0x00,
      0x00,0x00,0x00,0x3F,0xFF,0xF0,0x06,0x00,
      0x00,0x1F,0xF8,0x00,0x00,0x00,0x30,0x00,
      0x00,0x00,0x00,0xFF,0xFF,0x80,0x0C,0x3E,
      0x00,0x7F,0xF0,0x00,0x00,0x00,0x38,0x00,
      0x00,0x00,0x01,0xFF,0xFF,0x00,0x0C,0x7E,
      0x00,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,
      0x00,0x00,0x07,0xFF,0xFC,0x00,0x0C,0xFE,
      0x00,0xF8,0x00,0x00,0x01,0xFF,0x00,0x00,
      0x00,0x00,0x0F,0xFF,0xF8,0x00,0x0C,0x7C,
      0x00,0xF0,0x00,0x00,0xFF,0xC0,0x00,0x00,
      0x00,0x00,0x3F,0xFF,0xE0,0x00,0x1C,0x3C,
      0x61,0xF1,0xC0,0x1F,0xF8,0x00,0x00,0x00,
      0x00,0x00,0x7F,0xFF,0xC0,0x00,0x18,0x3F,
      0xE1,0xE1,0xC3,0xFE,0x00,0x00,0x00,0x00,
      0x00,0x00,0x7F,0xFF,0x00,0x00,0x18,0xFF,
      0xE1,0xE3,0xFF,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xFE,0x00,0x04,0x39,0xFF,
      0xC1,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xFE,0x00,0x0E,0x3B,0xF9,
      0xE3,0xFF,0xE0,0x0F,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xF6,0x00,0x1E,0x3B,0xF9,
      0xFF,0xFF,0x80,0x3D,0xF0,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xE3,0x00,0x1F,0x73,0xF9,
      0xFF,0xC3,0x80,0x78,0x38,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xC3,0x00,0x1F,0xF3,0xFF,
      0xFE,0x03,0x00,0xE0,0x08,0x00,0x00,0x00,
      0x00,0x00,0x3F,0x81,0x80,0x3F,0xE3,0xFF,
      0xF0,0x07,0x98,0xC0,0x0C,0x00,0x00,0x00,
      0x00,0x00,0x7F,0x01,0x80,0x38,0xE3,0xFF,
      0x80,0x2F,0xC1,0xC0,0x0C,0x00,0x00,0x00,
      0x00,0x00,0x7C,0x00,0x80,0x78,0xE3,0xFC,
      0x00,0xC7,0x01,0x0F,0xC0,0x00,0x00,0x00,
      0x00,0x00,0xF8,0x00,0xC0,0x71,0xE7,0xF0,
      0x03,0x87,0x03,0x19,0x80,0x00,0x00,0x00,
      0x00,0x00,0xF0,0x00,0x60,0x61,0xCF,0xE0,
      0x07,0x07,0x07,0x10,0x00,0x00,0x00,0x00,
      0x00,0x01,0xE0,0x00,0x60,0x01,0xC7,0xC3,
      0xC7,0x06,0x06,0x00,0x00,0x00,0x00,0x00,
      0x00,0x01,0xC0,0x00,0x30,0x03,0xC3,0xC7,
      0xC7,0x0F,0x0E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x03,0x80,0x00,0x18,0x03,0xC3,0xC7,
      0xC7,0x0F,0x1C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x07,0x00,0x00,0x08,0x07,0xC3,0xC7,
      0xC7,0x1E,0x18,0x00,0x00,0x00,0x00,0x00,
      0x00,0x06,0x00,0x00,0x06,0x07,0x83,0x87,
      0xC7,0xFC,0x30,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x03,0x07,0x87,0x03,
      0x87,0xFC,0x60,0x00,0x04,0x22,0x13,0xF8,
      0x00,0x08,0x00,0x00,0x01,0x8F,0xFF,0x00,
      0x03,0xF8,0xC0,0x00,0x04,0x22,0x10,0x08,
      0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,
      0x01,0xE3,0x80,0x00,0x04,0x22,0x10,0x10,
      0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,
      0x00,0x07,0x00,0x00,0x04,0x22,0x10,0x20,
      0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,
      0x00,0x0E,0x00,0x00,0x07,0xE3,0xF0,0x40,
      0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,
      0x00,0x3C,0x00,0x00,0x04,0x22,0x10,0x80,
      0x00,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,
      0x00,0xF0,0x00,0x00,0x04,0x22,0x11,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,
      0x07,0xC0,0x00,0x00,0x04,0x22,0x12,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,
      0x3E,0x00,0x00,0x00,0x04,0x22,0x13,0xF8,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
      0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char logo2[]={
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFE,0xDF,0x00,0x1C,0x0E,0x1D,0xFE,
      0xAF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFE,0xBF,0xF5,0xFD,0xEF,0xD0,0x21,
      0xB7,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0x81,0x80,0x3C,0x0E,0xD7,0xBD,
      0xBF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xF9,0x7D,0xB5,0xBD,0xEE,0xD0,0x20,
      0x03,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xF4,0xEF,0x80,0x3C,0x0E,0xD7,0xFD,
      0xBF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0xAB,0xF7,0xFF,0xFE,0x10,0x3D,
      0x37,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0xAB,0x00,0x00,0x03,0xD2,0xB8,
      0xAF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0x6D,0xEE,0xFB,0x7F,0x90,0x25,
      0xDF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFC,0xED,0xC5,0xF9,0x06,0x4A,0xBD,
      0x9B,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0xEF,0xF8,0xF6,0x7F,0xDA,0xBC,
      0x6B,0x7B,0xEF,0xBD,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0x8F,0x07,0x2F,0x03,0x1F,0x31,
      0xF3,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xEA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xE1,0xFF,0xFD,0xFF,0xF8,0x00,0x00,0x00,
      0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xE0,0x3F,0xDC,0xFF,0xF8,0x00,0x00,0x00,
      0xC0,0x2F,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,
      0xFF,0xBD,0x8C,0xFF,0xF8,0x00,0x00,0x00,
      0xF1,0xFF,0xFF,0xFF,0xC7,0xEF,0xFF,0xFC,
      0xFF,0xB9,0x04,0xFF,0xF8,0x00,0x00,0x00,
      0xE8,0xFF,0xFF,0xFF,0x07,0x1F,0x7F,0xFF,
      0x3F,0xF0,0x20,0xFF,0xF8,0x00,0x00,0x00,
      0xDB,0x7F,0xFF,0xFC,0x0C,0x1C,0x7F,0x7F,
      0xCF,0xEE,0x71,0xFF,0xF8,0x00,0x00,0x00,
      0xFB,0xF7,0xE3,0xF8,0x00,0x10,0xDF,0x8F,
      0xF3,0xFE,0x7D,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFB,0xC1,0xF0,0x00,0x00,0x97,0xC1,
      0xF8,0xFE,0xFF,0xEF,0xF8,0x00,0x00,0x00,
      0xFB,0xEB,0x98,0xE0,0x00,0x39,0x10,0xF0,
      0x3C,0x3F,0xFF,0xBF,0xF8,0x00,0x00,0x00,
      0xFF,0xF1,0xA4,0xE0,0x00,0x04,0x10,0x1C,
      0x06,0x1F,0x8F,0x97,0xF8,0x00,0x00,0x00,
      0xFF,0xD1,0x8A,0xC0,0x00,0x00,0x30,0x00,
      0x01,0x0F,0x07,0x8F,0xF8,0x00,0x00,0x00,
      0xFF,0xE0,0x8A,0x00,0x00,0x00,0x30,0x38,
      0x00,0x06,0x33,0x1B,0xF8,0x00,0x00,0x00,
      0xFF,0xA0,0x44,0x00,0x00,0x00,0x50,0x40,
      0x00,0x06,0x4B,0x17,0xF8,0x00,0x00,0x00,
      0xFF,0xC0,0x60,0x00,0x0F,0xC0,0x48,0x00,
      0x00,0x02,0xA2,0x05,0xF8,0x00,0x00,0x00,
      0xFF,0x40,0x70,0x00,0x3F,0xE0,0x88,0x00,
      0x00,0x00,0xA2,0x03,0xF8,0x00,0x00,0x00,
      0xFF,0x80,0xF8,0x00,0x00,0xF1,0x04,0x07,
      0xE0,0x00,0x44,0x01,0xF8,0x00,0x00,0x00,
      0xFE,0x81,0xE8,0x00,0x01,0xC2,0x04,0x4F,
      0xF8,0x00,0x0F,0x03,0xF8,0x00,0x00,0x00,
      0xFF,0x00,0x08,0x00,0x01,0x84,0x02,0x3E,
      0x00,0x00,0x1F,0x82,0xF8,0x00,0x00,0x00,
      0xFD,0x00,0x10,0x00,0x00,0x88,0x01,0x06,
      0x00,0x00,0x10,0x41,0xF8,0x00,0x00,0x00,
      0xFE,0x01,0xE0,0x01,0x13,0x08,0x00,0x87,
      0x00,0x00,0x10,0x01,0xB8,0x00,0x00,0x00,
      0xFF,0x06,0x20,0x00,0x88,0x10,0x00,0x43,
      0x00,0x00,0x10,0x01,0x18,0x00,0x00,0x00,
      0xFD,0x0A,0x10,0x01,0x44,0x10,0x00,0x22,
      0x00,0x00,0x18,0x01,0xB8,0x00,0x00,0x00,
      0xF8,0x11,0x10,0x00,0x80,0x10,0x00,0x21,
      0x91,0x00,0x14,0x01,0xF8,0x00,0x00,0x00,
      0xFC,0x10,0x88,0x70,0x00,0x10,0x00,0x10,
      0x22,0x03,0xE0,0x00,0xB8,0x00,0x00,0x00,
      0xFE,0x20,0x84,0x4C,0x00,0x20,0x00,0x10,
      0x45,0x05,0x31,0x00,0xF8,0x00,0x00,0x00,
      0xF4,0x20,0x43,0x8B,0x80,0xC0,0x00,0x10,
      0x02,0x08,0x88,0x80,0xB8,0x00,0x00,0x00,
      0xFC,0x20,0x40,0x08,0xFF,0x00,0x00,0x10,
      0x00,0x18,0x40,0x40,0x78,0x00,0x00,0x00,
      0xF6,0x20,0x40,0x08,0x80,0x00,0x00,0x08,
      0x00,0x68,0x40,0x00,0xD8,0x00,0x00,0x00,
      0xFC,0x20,0x40,0x08,0x80,0x00,0x00,0x06,
      0x03,0x90,0x20,0x20,0x68,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};
/////////////////////////////////////////////////////////




////////////////////////////////主程序//////////////////////////////////
void setup() {
  Serial.begin(9600);
  SPI.begin();    //SPI启动
  rfid.init();    //RFID初始化
  lcd12864_initdisplay();//12864初始化显示
  GPS_init();//GPS初始化
  keypad.addEventListener(keypadEvent);//增加对键盘的侦听
}

void loop() {

  unsigned char status;
  unsigned char blockAddr; //选择操作的块地址0~63
  unsigned char str[MAX_LEN];
  
  //LCDA.DisplayString(0,1,show11,AR_SIZE(show11));
  //LCDA.DisplayString(1,0,show12,AR_SIZE(show12));
  //keypad.getKey();
  
  
/////////////显示相关信息//////////////  
  LCDA.DisplayString(0,0,show5,AR_SIZE(show5));  //显示信息:
  LCDA.DisplayString(1,0,show6,AR_SIZE(show6));  //卡号:
  LCDA.DisplayString(2,0,show9,AR_SIZE(show8));  //纬度:   
  //LCDA.DisplayString(2,6,show10,AR_SIZE(show10));
  LCDA.DisplayString(3,0,show8,AR_SIZE(show9));  //经度:
  //LCDA.DisplayString(3,6,show10,AR_SIZE(show10));
  //找卡
  
  if (rfid.isCard()) {
    Serial.println("Find the card!");
   
   // Show card type
    ShowCardType(str);
   
    //读取卡序列号
    if (rfid.readCardSerial()) {
      Serial.print("The card's number is  : ");
      Serial.print(rfid.serNum[0],HEX);
      Serial.print(rfid.serNum[1],HEX);
      Serial.print(rfid.serNum[2],HEX);
      Serial.print(rfid.serNum[3],HEX);
      Serial.print(rfid.serNum[4],HEX);
      Serial.println(" ");
      
      for(int i=0;i<9;i+=2)                                                               
     {                                                                                       
      charserNum[i]= ((rfid.serNum[i] & 0xF0)>>4);
      charserNum[i] = codeArray[charserNum[i]];
      charserNum[i+1]= ((rfid.serNum[i+1] & 0x0F));
      charserNum[i+1] = codeArray[charserNum[i+1]];
    }
    //LCDA.DisplayString(1,3,charserNum,AR_SIZE(charserNum));  
      unsigned char* id = rfid.serNum;
        if(id[0]==0x51 && id[1]==0x59 && id[2]==0x37 && id[3]==0xD5 && id[4]==0xEA) {//&& id[4]==0xDA
            gpsRead();        //获取GPS数据
            parseGpsBuffer();//解析GPS数据
            printGpsBuffer();//输出解析后的数据
            memcpy(latitude_jx,Save_Data.latitude,8);
            memcpy(longitude_jx,Save_Data.longitude,8);
            LCDA.CLEAR();
            LCDA.DisplayString(1,3,charserNum,AR_SIZE(charserNum));
            Read_Date();
            
////////////数据类型转换//////////重点
            int m_1 = atoi((char*) latitude_jx);
            float n_1 = m_1/100.0;
            Serial.println(n_1);
            dtostrf(n_1,2,2,la);
            int m_2 = atoi((char*) longitude_jx);
            float n_2 = m_2/100.0;
            dtostrf(n_2,3,3,lo);
//////////////////////////////////////
            LCDA.DisplayString(2,3,(unsigned char*)la,AR_SIZE(la));
            LCDA.DisplayString(2,5,show10,AR_SIZE(show10));
            LCDA.DisplayString(3,3,(unsigned char*)lo,AR_SIZE(lo));
            LCDA.DisplayString(3,6,show10,AR_SIZE(show10));
        }
    else if(id[0]==0xF0 && id[1]==0xD3 && id[2]==0x3A && id[3]==0xD5) {
            LCDA.CLEAR();
            LCDA.DrawFullScreen(logo1);
        }
    else{
            LCDA.CLEAR();
            LCDA.DisplayString(1,3,charserNum,AR_SIZE(charserNum));  
            LCDA.DisplayString(2,3,show7,AR_SIZE(show7));
            LCDA.DisplayString(3,3,show7,AR_SIZE(show7));
        }
    }
    //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
    rfid.selectTag(rfid.serNum);
  }
  
/* blockAddr = 7;                //数据块7
  status = rfid.auth(PICC_AUTHENT1A, blockAddr, sectorNewKeyA[blockAddr/4], rfid.serNum);
  if (status == MI_OK)  //认证
  {
    //读数据
    blockAddr = blockAddr - 3 ; //数据块4
    if( rfid.read(blockAddr, str) == MI_OK)
    {
      Serial.print("Read from the card ,the data is : ");
      Serial.println((char *)str);
    }
  }*/
   
  rfid.halt();
  
}
//}


////////////LCD12864初始化//////////////
void lcd12864_initdisplay(){
    LCDA.initDriverPin(8,12,13); // E--8  RS---12  R/W---13  MEGA
    LCDA.Initialise(); // 屏幕初始化
    delay(100);
    LCDA.CLEAR();//清屏
    delay(100);
    LCDA.DisplayString(0,2,show0,AR_SIZE(show0));//第一行第三格开始
    delay(100);
    LCDA.DisplayString(1,1,show1,AR_SIZE(show1));
    LCDA.DisplayString(1,5,show2,AR_SIZE(show2));
    LCDA.DisplayString(2,1,show3,AR_SIZE(show3));
    LCDA.DisplayString(2,5,show4,AR_SIZE(show4));
    delay(2000);
    LCDA.CLEAR();//清屏
    delay(100);
    LCDA.DrawFullScreen(logo0);
    delay(2000);
    LCDA.CLEAR();
    delay(100);
}

/*
* Function:ShowCardType
* Description:Show Card type
* Input parameter:Type string
* Return:Null
*/
void ShowCardType(unsigned char* type)
{
    Serial.print("Card type: ");
    if(type[0]==0x04&&type[1]==0x00)
        Serial.println("MFOne-S50");
    else if(type[0]==0x02&&type[1]==0x00)
        Serial.println("MFOne-S70");
    else if(type[0]==0x44&&type[1]==0x00)
        Serial.println("MF-UltraLight");
    else if(type[0]==0x08&&type[1]==0x00)
        Serial.println("MF-Pro");
    else if(type[0]==0x44&&type[1]==0x03)
        Serial.println("MF Desire");
    else
        Serial.println("Unknown");
}


/////////////////GPS初始化///////////////////
void GPS_init(){
        GpsSerial.begin(9600);                        //定义波特率9600
        DebugSerial.begin(9600);
        DebugSerial.println("GPS is Linking!");
        DebugSerial.println("Wating...");

        Save_Data.isGetData = false;
        Save_Data.isParseData = false;
        Save_Data.isUsefull = false;
}

void errorLog(int num)
{
        DebugSerial.print("ERROR");
        DebugSerial.println(num);
        while (1)
        {
                digitalWrite(L, HIGH);
                delay(300);
                digitalWrite(L, LOW);
                delay(300);
        }
}

//////////////输出解析后的数据//////////////
void printGpsBuffer()
{
        if (Save_Data.isParseData)
        {
                Save_Data.isParseData = false;
               
                DebugSerial.print("Save_Data.UTCTime = ");
                DebugSerial.println(Save_Data.UTCTime);

                if(Save_Data.isUsefull)
                {
                        Save_Data.isUsefull = false;
                        DebugSerial.print("Save_Data.latitude = ");
                        DebugSerial.println(Save_Data.latitude);
                        DebugSerial.print("Save_Data.N_S = ");
                        DebugSerial.println(Save_Data.N_S);
                        DebugSerial.print("Save_Data.longitude = ");
                        DebugSerial.println(Save_Data.longitude);
                        DebugSerial.print("Save_Data.E_W = ");
                        DebugSerial.println(Save_Data.E_W);
                }
                else
                {
                        DebugSerial.println("GPS DATA is not usefull!");
                }
               
        }
}

//////////////解析GPS数据///////////////
void parseGpsBuffer()
{
        char *subString;
        char *subStringNext;
        if (Save_Data.isGetData)
        {
                Save_Data.isGetData = false;
                DebugSerial.println("**************");
                DebugSerial.println(Save_Data.GPS_Buffer);

               
                for (int i = 0 ; i <= 6 ; i++)
                {
                        if (i == 0)
                        {
                                if ((subString = strstr(Save_Data.GPS_Buffer, ",")) == NULL)
                                        errorLog(1);        //解析错误
                        }
                        else
                        {
                                subString++;
                                if ((subStringNext = strstr(subString, ",")) != NULL)
                                {
                                        char usefullBuffer[2];
                                        switch(i)
                                        {
                                                case 1:memcpy(Save_Data.UTCTime, subString, subStringNext - subString);break;        //获取UTC时间
                                                case 2:memcpy(usefullBuffer, subString, subStringNext - subString);break;        //获取UTC时间
                                                case 3:memcpy(Save_Data.latitude, subString, subStringNext - subString);break;        //获取纬度信息
                                                case 4:memcpy(Save_Data.N_S, subString, subStringNext - subString);break;        //获取N/S
                                                case 5:memcpy(Save_Data.longitude, subString, subStringNext - subString);break;        //获取纬度信息
                                                case 6:memcpy(Save_Data.E_W, subString, subStringNext - subString);break;        //获取E/W

                                                default:break;
                                        }

                                        subString = subStringNext;
                                        Save_Data.isParseData = true;
                                        if(usefullBuffer[0] == 'A')
                                                Save_Data.isUsefull = true;
                                        else if(usefullBuffer[0] == 'V')
                                                Save_Data.isUsefull = false;

                                }
                                else
                                {
                                        errorLog(2);        //解析错误
                                }
                        }


                }
        }
}

///////////////获取GPS数据/////////////////
void gpsRead() {
        while (GpsSerial.available())
        {
                gpsRxBuffer[ii++] = GpsSerial.read();
                if (ii == gpsRxBufferLength)clrGpsRxBuffer();
        }

        char* GPS_BufferHead;
        char* GPS_BufferTail;
        if ((GPS_BufferHead = strstr(gpsRxBuffer, "$GPRMC,")) != NULL || (GPS_BufferHead = strstr(gpsRxBuffer, "$GNRMC,")) != NULL )
        {
                if (((GPS_BufferTail = strstr(GPS_BufferHead, "\r\n")) != NULL) && (GPS_BufferTail > GPS_BufferHead))
                {
                        memcpy(Save_Data.GPS_Buffer, GPS_BufferHead, GPS_BufferTail - GPS_BufferHead);
                        Save_Data.isGetData = true;

                        clrGpsRxBuffer();
                }
        }
}

void clrGpsRxBuffer(void)
{
        memset(gpsRxBuffer, 0, gpsRxBufferLength);      //清空
        ii = 0;
}

void Read_Date(){
  unsigned char status;
  unsigned char blockAddr; //选择操作的块地址0~63
  unsigned char str[MAX_LEN];
  
  blockAddr = 7;                //数据块7
  status = rfid.auth(PICC_AUTHENT1A, blockAddr, sectorNewKeyA[blockAddr/4], rfid.serNum);
  if (status == MI_OK)  //认证
  {
    //读数据
    blockAddr = blockAddr - 3 ; //数据块4
    if( rfid.read(blockAddr, str) == MI_OK)
    {
      Serial.print("Read from the card ,the data is : ");
      Serial.println((char *)str);
    }
}
}


void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
    case PRESSED:
        Serial.print("Pressed: ");
        Serial.println(eKey);
        switch (eKey){
          case '*': checkPassword(); break;
          case '#': password.reset(); break;
          default: password.append(eKey);
     }
  }
}

void checkPassword(){
  if (password.evaluate()){
    LCDA.DisplayString(3,1,show13,AR_SIZE(show13));
    delay(2000);
    //Add code to run if it works
  }else{
    LCDA.DisplayString(3,1,show14,AR_SIZE(show14));
    //add code to run if it did not work
  }
}
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-12-22 17:26:52 | 显示全部楼层
/**
读卡器与M1卡之间的通讯,首先要寻卡(Answer To Request),验证卡片类型
----》防冲突检查(Anticollision Loop)选择一张卡片,返回该卡序列号;
-----》选择卡片(Select Tag),选择被选中的卡的序列号,返回卡的容量代码;
-----》三次互相确认(3 Pass Authentication)通过密码校验之后,三次互相认证之后可以通讯。
*/
///////////////////RC522库///////////////////
#include <SPI.h>
#include <RFID.h>
#include <Arduino.h>
///////////////////LCD12864库///////////////////
#include "LCD12864RSPI.h"
#define AR_SIZE( a ) sizeof( a ) / sizeof( a[0] )
//////////////////GPS串口设置//////////////////  
#define GpsSerial  Serial1
#define DebugSerial Serial
//////////////薄膜键盘加密码库//////////////
#include <Password.h>
#include <Keypad.h>

Password password = Password( "9" ); //设置密码

const byte ROWS = 4; // Four rows
const byte COLS = 4; //  columns
// Define the Keymap
char keys[ROWS][COLS] = {
  {'1','2','3','A'},
  {'4','5','6','B'},
  {'7','8','9','C'},
  {'*','0','#','D'}
};

byte rowPins[ROWS] = {31,33,35,37};// Connect keypad ROW0, ROW1, ROW2 and ROW3 to these Arduino pins.
byte colPins[COLS] = {39,41,43,45};// Connect keypad COL0, COL1 and COL2 to these Arduino pins.


// Create the Keypad
Keypad keypad = Keypad( makeKeymap(keys), rowPins, colPins, ROWS, COLS );

#define MAX_LEN 16

//////////////////GPS结构体定义////////////////
struct
{
        char GPS_Buffer[80];
        bool isGetData;                //是否获取到GPS数据
        bool isParseData;        //是否解析完成
        char UTCTime[11];                //UTC时间
        char latitude[11];                //纬度
        char N_S[2];                //N/S
        char longitude[12];                //经度
        char E_W[2];                //E/W
        bool isUsefull;                //定位信息是否有效
} Save_Data;

const unsigned int gpsRxBufferLength = 600;
char gpsRxBuffer[gpsRxBufferLength];
unsigned int ii = 0;
int L = 13; //LED指示灯引脚

unsigned char charserNum[10];
unsigned char codeArray[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
unsigned char id[5];
char la[5],lo[6];
unsigned char latitude_jx[12],longitude_jx[12];
unsigned char sectorNewKeyA[16][16] = {
        {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
        {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
        {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xff,0x07,0x80,0x69, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},};

RFID rfid(53,5);   //Arduino UNO R3 D10--读卡器SDA引脚、D5--读卡器RST引脚
                   //Arduino Mega 2560 --读卡器SDA引脚、D5--读卡器RST引脚

/////////定义显示屏上的汉字和图像///////////
unsigned char show0[]={0xD0,0xA1,0xD7,0xE9,0xB3,0xC9,0xD4,0xB1};//小组成员
unsigned char show1[]={0xC1,0xF5,0xBA,0xAE,0xD2,0xDD};//刘寒逸
unsigned char show2[]={0xBA,0xAB,0xEA,0xBB,0xD4,0xF3};//韩昊泽
unsigned char show3[]={0xC1,0xF5,0xB7,0xBD,0xC8,0xF3};//刘方润
unsigned char show4[]={0xD4,0xAC,0xD1,0xEF};//袁扬
unsigned char show5[]={0xCF,0xD4,0xCA,0xBE,0xD0,0xC5,0xCF,0xA2,0x3A,0x00};//显示信息:
unsigned char show6[]={0xBF,0xA8,0xBA,0xC5,0x3A,0x00};//卡号:
unsigned char show7[]={'E','r','r','o','r','!'};
unsigned char show8[]={0xBE,0xAD,0xB6,0xC8,0x3A,0x00};//经度:
unsigned char show9[]={0xCE,0xB3,0xB6,0xC8,0x3A,0x00};//纬度:
unsigned char show10[]={0xA1,0xE3};//°
unsigned char show11[]={0xBB,0xB6,0xD3,0xAD,0xCA,0xB9,0xD3,0xC3,0xB1,0xBE,0xC9,0xE8,0xBC,0xC6}; //欢迎使用本设计
unsigned char show12[]={0xC7,0xEB,0xCA,0xE4,0xC8,0xEB,0xC3,0xDC,0xC2,0xEB,0x3A,0x00};//请输入密码:
unsigned char show13[]={0xC3,0xDC,0xC2,0xEB,0xD5,0xFD,0xC8,0xB7,0x2C,0x00,0xC7,0xEB,0xB5,0xC8,0xB4,0xFD};//密码正确,请等待
unsigned char show14[]={0xC3,0xDC,0xC2,0xEB,0xB4,0xED,0xCE,0xF3,0x2C,0x00,0xC7,0xEB,0xD6,0xD8,0xCA,0xD4};//密码错误,请重试
unsigned char logo0[]={                                         //笑脸
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
      0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
      0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
      0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,
      0x7F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x0F,0xF0,0x00,
      0x0F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,
      0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
      0x00,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,
      0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,
      0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,
      0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x07,0xC0,0x00,0x00,
      0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,
      0x00,0x00,0xE0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0x00,
      0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,
      0x00,0x00,0x78,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x3C,0x00,0x00,0x00,
      0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x38,0x00,0x40,0x00,
      0x00,0x80,0x1C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x78,0x03,0xF8,0x00,
      0x07,0xF0,0x1E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x70,0x07,0xFE,0x00,
      0x0F,0xFC,0x0E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xF0,0x1F,0xBF,0x00,
      0x3F,0x7E,0x0F,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xE0,0x3E,0x0F,0x80,
      0x7C,0x1F,0x07,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xE0,0x7C,0x07,0xC0,
      0xF8,0x0F,0x87,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xE0,0xF8,0x01,0xE1,
      0xF0,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0xF0,0x01,0xE1,
      0xE0,0x03,0xC3,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0xE0,0x00,0xE1,
      0xC0,0x01,0xC3,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x03,0x80,0x00,0x00,0x00,
      0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x01,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0xE0,0x00,0x00,0x00,
      0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
      0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xE0,0x00,0x00,0x00,
      0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xF0,0x00,0x0C,0x00,
      0x0C,0x00,0x0F,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x70,0x00,0x1E,0x00,
      0x1E,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x78,0x00,0x1F,0x00,
      0x3E,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x38,0x00,0x07,0x80,
      0xF8,0x00,0x1C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x3C,0x00,0x03,0xE1,
      0xF0,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x1E,0x00,0x01,0xFF,
      0xE0,0x00,0x78,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x0F,0x00,0x00,0xFF,
      0x80,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x3F,
      0x00,0x00,0xF0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x07,0x80,0x00,0x00,
      0x00,0x01,0xE0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x03,0xE0,0x00,0x00,
      0x00,0x07,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x01,0xF0,0x00,0x00,
      0x00,0x0F,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0xF8,0x00,0x00,
      0x00,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x3E,0x00,0x00,
      0x00,0x7E,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x1F,0x80,0x00,
      0x01,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x0F,0xE0,0x00,
      0x07,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x03,0xFE,0x00,
      0x3F,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,
      0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0xFF,
      0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x01,0xFF,
      0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char logo1[] =                 
{
      0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x80,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x03,0x80,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x80,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x1F,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x1C,0x1F,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x3C,0x1F,0xF8,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x3C,0x3F,0xF8,
      0x03,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x38,0x7F,0xC0,
      0x1F,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x7F,0xFF,0x00,
      0x7F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x7F,0xFE,0x00,
      0xF8,0x7C,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x08,0x7F,0xFC,0x00,
      0xE0,0x0F,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x10,0x7F,0xFC,0x31,
      0xC0,0x07,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x10,0xF0,0xFF,0xF3,
      0x80,0x03,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x20,0xC0,0xFF,0xE3,
      0x0C,0x23,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x40,0x01,0xFF,0xC7,
      0x0C,0x63,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xC0,0x0F,0xFE,0x07,
      0x00,0x03,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0xA0,0x1F,0xFC,0x07,
      0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x80,0x3F,0xF8,0x07,
      0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0x80,0x7F,0xF0,0x07,
      0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0x00,0x71,0xF0,0x0F,
      0xC0,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x01,0x00,0xE1,0xF1,0xFF,
      0xE0,0x03,0x80,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x02,0x00,0x01,0xFF,0xFF,
      0xE1,0x87,0xC0,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x06,0x00,0x07,0xFF,0xFF,
      0xE1,0x0F,0xFF,0xFF,0xE0,0x00,0x00,0x00,
      0x00,0x00,0x00,0x06,0x00,0x3F,0xFF,0xFF,
      0xFC,0x3F,0xFF,0xFF,0xFE,0x00,0x00,0x00,
      0x00,0x00,0x00,0x06,0x00,0xFF,0xFF,0x1F,
      0xFF,0xFC,0x00,0x00,0x07,0x00,0x00,0x00,
      0x00,0x00,0x00,0x04,0x07,0xFF,0xF8,0x3F,
      0xFF,0xF0,0x00,0x00,0x03,0x80,0x00,0x00,
      0x00,0x00,0x00,0x04,0x3F,0xFF,0xF0,0x3F,
      0xFF,0xE0,0x00,0x00,0x07,0x80,0x00,0x00,
      0x00,0x00,0x00,0x06,0x7F,0xFF,0x81,0xFF,
      0xC0,0x00,0x00,0x00,0x07,0xF8,0x00,0x00,
      0x00,0x00,0x00,0x07,0xFF,0xFE,0x03,0xE0,
      0x00,0x00,0xF8,0x00,0x00,0x3F,0x80,0x00,
      0x00,0x00,0x00,0x0F,0xFF,0xF8,0x03,0x00,
      0x00,0x0F,0xF8,0x00,0x00,0x00,0x80,0x00,
      0x00,0x00,0x00,0x3F,0xFF,0xF0,0x06,0x00,
      0x00,0x1F,0xF8,0x00,0x00,0x00,0x30,0x00,
      0x00,0x00,0x00,0xFF,0xFF,0x80,0x0C,0x3E,
      0x00,0x7F,0xF0,0x00,0x00,0x00,0x38,0x00,
      0x00,0x00,0x01,0xFF,0xFF,0x00,0x0C,0x7E,
      0x00,0xFE,0x00,0x00,0x00,0x0F,0xF0,0x00,
      0x00,0x00,0x07,0xFF,0xFC,0x00,0x0C,0xFE,
      0x00,0xF8,0x00,0x00,0x01,0xFF,0x00,0x00,
      0x00,0x00,0x0F,0xFF,0xF8,0x00,0x0C,0x7C,
      0x00,0xF0,0x00,0x00,0xFF,0xC0,0x00,0x00,
      0x00,0x00,0x3F,0xFF,0xE0,0x00,0x1C,0x3C,
      0x61,0xF1,0xC0,0x1F,0xF8,0x00,0x00,0x00,
      0x00,0x00,0x7F,0xFF,0xC0,0x00,0x18,0x3F,
      0xE1,0xE1,0xC3,0xFE,0x00,0x00,0x00,0x00,
      0x00,0x00,0x7F,0xFF,0x00,0x00,0x18,0xFF,
      0xE1,0xE3,0xFF,0xC0,0x00,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xFE,0x00,0x04,0x39,0xFF,
      0xC1,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xFE,0x00,0x0E,0x3B,0xF9,
      0xE3,0xFF,0xE0,0x0F,0xC0,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xF6,0x00,0x1E,0x3B,0xF9,
      0xFF,0xFF,0x80,0x3D,0xF0,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xE3,0x00,0x1F,0x73,0xF9,
      0xFF,0xC3,0x80,0x78,0x38,0x00,0x00,0x00,
      0x00,0x00,0x3F,0xC3,0x00,0x1F,0xF3,0xFF,
      0xFE,0x03,0x00,0xE0,0x08,0x00,0x00,0x00,
      0x00,0x00,0x3F,0x81,0x80,0x3F,0xE3,0xFF,
      0xF0,0x07,0x98,0xC0,0x0C,0x00,0x00,0x00,
      0x00,0x00,0x7F,0x01,0x80,0x38,0xE3,0xFF,
      0x80,0x2F,0xC1,0xC0,0x0C,0x00,0x00,0x00,
      0x00,0x00,0x7C,0x00,0x80,0x78,0xE3,0xFC,
      0x00,0xC7,0x01,0x0F,0xC0,0x00,0x00,0x00,
      0x00,0x00,0xF8,0x00,0xC0,0x71,0xE7,0xF0,
      0x03,0x87,0x03,0x19,0x80,0x00,0x00,0x00,
      0x00,0x00,0xF0,0x00,0x60,0x61,0xCF,0xE0,
      0x07,0x07,0x07,0x10,0x00,0x00,0x00,0x00,
      0x00,0x01,0xE0,0x00,0x60,0x01,0xC7,0xC3,
      0xC7,0x06,0x06,0x00,0x00,0x00,0x00,0x00,
      0x00,0x01,0xC0,0x00,0x30,0x03,0xC3,0xC7,
      0xC7,0x0F,0x0E,0x00,0x00,0x00,0x00,0x00,
      0x00,0x03,0x80,0x00,0x18,0x03,0xC3,0xC7,
      0xC7,0x0F,0x1C,0x00,0x00,0x00,0x00,0x00,
      0x00,0x07,0x00,0x00,0x08,0x07,0xC3,0xC7,
      0xC7,0x1E,0x18,0x00,0x00,0x00,0x00,0x00,
      0x00,0x06,0x00,0x00,0x06,0x07,0x83,0x87,
      0xC7,0xFC,0x30,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x03,0x07,0x87,0x03,
      0x87,0xFC,0x60,0x00,0x04,0x22,0x13,0xF8,
      0x00,0x08,0x00,0x00,0x01,0x8F,0xFF,0x00,
      0x03,0xF8,0xC0,0x00,0x04,0x22,0x10,0x08,
      0x00,0x00,0x00,0x00,0x00,0x7F,0xFC,0x00,
      0x01,0xE3,0x80,0x00,0x04,0x22,0x10,0x10,
      0x00,0x00,0x00,0x00,0x00,0x3F,0xF8,0x00,
      0x00,0x07,0x00,0x00,0x04,0x22,0x10,0x20,
      0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,
      0x00,0x0E,0x00,0x00,0x07,0xE3,0xF0,0x40,
      0x00,0x00,0x00,0x00,0x00,0x03,0x80,0x00,
      0x00,0x3C,0x00,0x00,0x04,0x22,0x10,0x80,
      0x00,0x00,0x00,0x00,0x00,0x01,0xF0,0x00,
      0x00,0xF0,0x00,0x00,0x04,0x22,0x11,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x3C,0x00,
      0x07,0xC0,0x00,0x00,0x04,0x22,0x12,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x03,0xC0,
      0x3E,0x00,0x00,0x00,0x04,0x22,0x13,0xF8,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x3F,
      0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
unsigned char logo2[]={
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFE,0xDF,0x00,0x1C,0x0E,0x1D,0xFE,
      0xAF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFE,0xBF,0xF5,0xFD,0xEF,0xD0,0x21,
      0xB7,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0x81,0x80,0x3C,0x0E,0xD7,0xBD,
      0xBF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xF9,0x7D,0xB5,0xBD,0xEE,0xD0,0x20,
      0x03,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xF4,0xEF,0x80,0x3C,0x0E,0xD7,0xFD,
      0xBF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0xAB,0xF7,0xFF,0xFE,0x10,0x3D,
      0x37,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0xAB,0x00,0x00,0x03,0xD2,0xB8,
      0xAF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0x6D,0xEE,0xFB,0x7F,0x90,0x25,
      0xDF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFC,0xED,0xC5,0xF9,0x06,0x4A,0xBD,
      0x9B,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0xEF,0xF8,0xF6,0x7F,0xDA,0xBC,
      0x6B,0x7B,0xEF,0xBD,0xF8,0x00,0x00,0x00,
      0xFF,0xFD,0x8F,0x07,0x2F,0x03,0x1F,0x31,
      0xF3,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xFF,0xFF,0xFF,0xFF,0xF8,0x00,0x00,0x00,
      0xEA,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xE1,0xFF,0xFD,0xFF,0xF8,0x00,0x00,0x00,
      0xF1,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,
      0xE0,0x3F,0xDC,0xFF,0xF8,0x00,0x00,0x00,
      0xC0,0x2F,0xFF,0xFF,0xF3,0xFF,0xFF,0xFF,
      0xFF,0xBD,0x8C,0xFF,0xF8,0x00,0x00,0x00,
      0xF1,0xFF,0xFF,0xFF,0xC7,0xEF,0xFF,0xFC,
      0xFF,0xB9,0x04,0xFF,0xF8,0x00,0x00,0x00,
      0xE8,0xFF,0xFF,0xFF,0x07,0x1F,0x7F,0xFF,
      0x3F,0xF0,0x20,0xFF,0xF8,0x00,0x00,0x00,
      0xDB,0x7F,0xFF,0xFC,0x0C,0x1C,0x7F,0x7F,
      0xCF,0xEE,0x71,0xFF,0xF8,0x00,0x00,0x00,
      0xFB,0xF7,0xE3,0xF8,0x00,0x10,0xDF,0x8F,
      0xF3,0xFE,0x7D,0xFF,0xF8,0x00,0x00,0x00,
      0xFF,0xFB,0xC1,0xF0,0x00,0x00,0x97,0xC1,
      0xF8,0xFE,0xFF,0xEF,0xF8,0x00,0x00,0x00,
      0xFB,0xEB,0x98,0xE0,0x00,0x39,0x10,0xF0,
      0x3C,0x3F,0xFF,0xBF,0xF8,0x00,0x00,0x00,
      0xFF,0xF1,0xA4,0xE0,0x00,0x04,0x10,0x1C,
      0x06,0x1F,0x8F,0x97,0xF8,0x00,0x00,0x00,
      0xFF,0xD1,0x8A,0xC0,0x00,0x00,0x30,0x00,
      0x01,0x0F,0x07,0x8F,0xF8,0x00,0x00,0x00,
      0xFF,0xE0,0x8A,0x00,0x00,0x00,0x30,0x38,
      0x00,0x06,0x33,0x1B,0xF8,0x00,0x00,0x00,
      0xFF,0xA0,0x44,0x00,0x00,0x00,0x50,0x40,
      0x00,0x06,0x4B,0x17,0xF8,0x00,0x00,0x00,
      0xFF,0xC0,0x60,0x00,0x0F,0xC0,0x48,0x00,
      0x00,0x02,0xA2,0x05,0xF8,0x00,0x00,0x00,
      0xFF,0x40,0x70,0x00,0x3F,0xE0,0x88,0x00,
      0x00,0x00,0xA2,0x03,0xF8,0x00,0x00,0x00,
      0xFF,0x80,0xF8,0x00,0x00,0xF1,0x04,0x07,
      0xE0,0x00,0x44,0x01,0xF8,0x00,0x00,0x00,
      0xFE,0x81,0xE8,0x00,0x01,0xC2,0x04,0x4F,
      0xF8,0x00,0x0F,0x03,0xF8,0x00,0x00,0x00,
      0xFF,0x00,0x08,0x00,0x01,0x84,0x02,0x3E,
      0x00,0x00,0x1F,0x82,0xF8,0x00,0x00,0x00,
      0xFD,0x00,0x10,0x00,0x00,0x88,0x01,0x06,
      0x00,0x00,0x10,0x41,0xF8,0x00,0x00,0x00,
      0xFE,0x01,0xE0,0x01,0x13,0x08,0x00,0x87,
      0x00,0x00,0x10,0x01,0xB8,0x00,0x00,0x00,
      0xFF,0x06,0x20,0x00,0x88,0x10,0x00,0x43,
      0x00,0x00,0x10,0x01,0x18,0x00,0x00,0x00,
      0xFD,0x0A,0x10,0x01,0x44,0x10,0x00,0x22,
      0x00,0x00,0x18,0x01,0xB8,0x00,0x00,0x00,
      0xF8,0x11,0x10,0x00,0x80,0x10,0x00,0x21,
      0x91,0x00,0x14,0x01,0xF8,0x00,0x00,0x00,
      0xFC,0x10,0x88,0x70,0x00,0x10,0x00,0x10,
      0x22,0x03,0xE0,0x00,0xB8,0x00,0x00,0x00,
      0xFE,0x20,0x84,0x4C,0x00,0x20,0x00,0x10,
      0x45,0x05,0x31,0x00,0xF8,0x00,0x00,0x00,
      0xF4,0x20,0x43,0x8B,0x80,0xC0,0x00,0x10,
      0x02,0x08,0x88,0x80,0xB8,0x00,0x00,0x00,
      0xFC,0x20,0x40,0x08,0xFF,0x00,0x00,0x10,
      0x00,0x18,0x40,0x40,0x78,0x00,0x00,0x00,
      0xF6,0x20,0x40,0x08,0x80,0x00,0x00,0x08,
      0x00,0x68,0x40,0x00,0xD8,0x00,0x00,0x00,
      0xFC,0x20,0x40,0x08,0x80,0x00,0x00,0x06,
      0x03,0x90,0x20,0x20,0x68,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00

};
/////////////////////////////////////////////////////////




////////////////////////////////主程序//////////////////////////////////
void setup() {
  Serial.begin(9600);
  SPI.begin();    //SPI启动
  rfid.init();    //RFID初始化
  lcd12864_initdisplay();//12864初始化显示
  GPS_init();//GPS初始化
  keypad.addEventListener(keypadEvent);//增加对键盘的侦听
}

void loop() {

  unsigned char status;
  unsigned char blockAddr; //选择操作的块地址0~63
  unsigned char str[MAX_LEN];
  
  //LCDA.DisplayString(0,1,show11,AR_SIZE(show11));
  //LCDA.DisplayString(1,0,show12,AR_SIZE(show12));
  //keypad.getKey();
  
  
/////////////显示相关信息//////////////  
  LCDA.DisplayString(0,0,show5,AR_SIZE(show5));  //显示信息:
  LCDA.DisplayString(1,0,show6,AR_SIZE(show6));  //卡号:
  LCDA.DisplayString(2,0,show9,AR_SIZE(show8));  //纬度:   
  //LCDA.DisplayString(2,6,show10,AR_SIZE(show10));
  LCDA.DisplayString(3,0,show8,AR_SIZE(show9));  //经度:
  //LCDA.DisplayString(3,6,show10,AR_SIZE(show10));
  //找卡
  
  if (rfid.isCard()) {
    Serial.println("Find the card!");
   
   // Show card type
    ShowCardType(str);
   
    //读取卡序列号
    if (rfid.readCardSerial()) {
      Serial.print("The card's number is  : ");
      Serial.print(rfid.serNum[0],HEX);
      Serial.print(rfid.serNum[1],HEX);
      Serial.print(rfid.serNum[2],HEX);
      Serial.print(rfid.serNum[3],HEX);
      Serial.print(rfid.serNum[4],HEX);
      Serial.println(" ");
      
      for(int i=0;i<9;i+=2)                                                               
     {                                                                                       
      charserNum[i]= ((rfid.serNum[i] & 0xF0)>>4);
      charserNum[i] = codeArray[charserNum[i]];
      charserNum[i+1]= ((rfid.serNum[i+1] & 0x0F));
      charserNum[i+1] = codeArray[charserNum[i+1]];
    }
    //LCDA.DisplayString(1,3,charserNum,AR_SIZE(charserNum));  
      unsigned char* id = rfid.serNum;
        if(id[0]==0x51 && id[1]==0x59 && id[2]==0x37 && id[3]==0xD5 && id[4]==0xEA) {//&& id[4]==0xDA
            gpsRead();        //获取GPS数据
            parseGpsBuffer();//解析GPS数据
            printGpsBuffer();//输出解析后的数据
            memcpy(latitude_jx,Save_Data.latitude,8);
            memcpy(longitude_jx,Save_Data.longitude,8);
            LCDA.CLEAR();
            LCDA.DisplayString(1,3,charserNum,AR_SIZE(charserNum));
            Read_Date();
            
////////////数据类型转换//////////重点
            int m_1 = atoi((char*) latitude_jx);
            float n_1 = m_1/100.0;
            Serial.println(n_1);
            dtostrf(n_1,2,2,la);
            int m_2 = atoi((char*) longitude_jx);
            float n_2 = m_2/100.0;
            dtostrf(n_2,3,3,lo);
//////////////////////////////////////
            LCDA.DisplayString(2,3,(unsigned char*)la,AR_SIZE(la));
            LCDA.DisplayString(2,5,show10,AR_SIZE(show10));
            LCDA.DisplayString(3,3,(unsigned char*)lo,AR_SIZE(lo));
            LCDA.DisplayString(3,6,show10,AR_SIZE(show10));
        }
    else if(id[0]==0xF0 && id[1]==0xD3 && id[2]==0x3A && id[3]==0xD5) {
            LCDA.CLEAR();
            LCDA.DrawFullScreen(logo1);
        }
    else{
            LCDA.CLEAR();
            LCDA.DisplayString(1,3,charserNum,AR_SIZE(charserNum));  
            LCDA.DisplayString(2,3,show7,AR_SIZE(show7));
            LCDA.DisplayString(3,3,show7,AR_SIZE(show7));
        }
    }
    //选卡,可返回卡容量(锁定卡片,防止多数读取),去掉本行将连续读卡
    rfid.selectTag(rfid.serNum);
  }
  
/* blockAddr = 7;                //数据块7
  status = rfid.auth(PICC_AUTHENT1A, blockAddr, sectorNewKeyA[blockAddr/4], rfid.serNum);
  if (status == MI_OK)  //认证
  {
    //读数据
    blockAddr = blockAddr - 3 ; //数据块4
    if( rfid.read(blockAddr, str) == MI_OK)
    {
      Serial.print("Read from the card ,the data is : ");
      Serial.println((char *)str);
    }
  }*/
   
  rfid.halt();
  
}
//}


////////////LCD12864初始化//////////////
void lcd12864_initdisplay(){
    LCDA.initDriverPin(8,12,13); // E--8  RS---12  R/W---13  MEGA
    LCDA.Initialise(); // 屏幕初始化
    delay(100);
    LCDA.CLEAR();//清屏
    delay(100);
    LCDA.DisplayString(0,2,show0,AR_SIZE(show0));//第一行第三格开始
    delay(100);
    LCDA.DisplayString(1,1,show1,AR_SIZE(show1));
    LCDA.DisplayString(1,5,show2,AR_SIZE(show2));
    LCDA.DisplayString(2,1,show3,AR_SIZE(show3));
    LCDA.DisplayString(2,5,show4,AR_SIZE(show4));
    delay(2000);
    LCDA.CLEAR();//清屏
    delay(100);
    LCDA.DrawFullScreen(logo0);
    delay(2000);
    LCDA.CLEAR();
    delay(100);
}

/*
* Function:ShowCardType
* Description:Show Card type
* Input parameter:Type string
* Return:Null
*/
void ShowCardType(unsigned char* type)
{
    Serial.print("Card type: ");
    if(type[0]==0x04&&type[1]==0x00)
        Serial.println("MFOne-S50");
    else if(type[0]==0x02&&type[1]==0x00)
        Serial.println("MFOne-S70");
    else if(type[0]==0x44&&type[1]==0x00)
        Serial.println("MF-UltraLight");
    else if(type[0]==0x08&&type[1]==0x00)
        Serial.println("MF-Pro");
    else if(type[0]==0x44&&type[1]==0x03)
        Serial.println("MF Desire");
    else
        Serial.println("Unknown");
}


/////////////////GPS初始化///////////////////
void GPS_init(){
        GpsSerial.begin(9600);                        //定义波特率9600
        DebugSerial.begin(9600);
        DebugSerial.println("GPS is Linking!");
        DebugSerial.println("Wating...");

        Save_Data.isGetData = false;
        Save_Data.isParseData = false;
        Save_Data.isUsefull = false;
}

void errorLog(int num)
{
        DebugSerial.print("ERROR");
        DebugSerial.println(num);
        while (1)
        {
                digitalWrite(L, HIGH);
                delay(300);
                digitalWrite(L, LOW);
                delay(300);
        }
}

//////////////输出解析后的数据//////////////
void printGpsBuffer()
{
        if (Save_Data.isParseData)
        {
                Save_Data.isParseData = false;
               
                DebugSerial.print("Save_Data.UTCTime = ");
                DebugSerial.println(Save_Data.UTCTime);

                if(Save_Data.isUsefull)
                {
                        Save_Data.isUsefull = false;
                        DebugSerial.print("Save_Data.latitude = ");
                        DebugSerial.println(Save_Data.latitude);
                        DebugSerial.print("Save_Data.N_S = ");
                        DebugSerial.println(Save_Data.N_S);
                        DebugSerial.print("Save_Data.longitude = ");
                        DebugSerial.println(Save_Data.longitude);
                        DebugSerial.print("Save_Data.E_W = ");
                        DebugSerial.println(Save_Data.E_W);
                }
                else
                {
                        DebugSerial.println("GPS DATA is not usefull!");
                }
               
        }
}

//////////////解析GPS数据///////////////
void parseGpsBuffer()
{
        char *subString;
        char *subStringNext;
        if (Save_Data.isGetData)
        {
                Save_Data.isGetData = false;
                DebugSerial.println("**************");
                DebugSerial.println(Save_Data.GPS_Buffer);

               
                for (int i = 0 ; i <= 6 ; i++)
                {
                        if (i == 0)
                        {
                                if ((subString = strstr(Save_Data.GPS_Buffer, ",")) == NULL)
                                        errorLog(1);        //解析错误
                        }
                        else
                        {
                                subString++;
                                if ((subStringNext = strstr(subString, ",")) != NULL)
                                {
                                        char usefullBuffer[2];
                                        switch(i)
                                        {
                                                case 1:memcpy(Save_Data.UTCTime, subString, subStringNext - subString);break;        //获取UTC时间
                                                case 2:memcpy(usefullBuffer, subString, subStringNext - subString);break;        //获取UTC时间
                                                case 3:memcpy(Save_Data.latitude, subString, subStringNext - subString);break;        //获取纬度信息
                                                case 4:memcpy(Save_Data.N_S, subString, subStringNext - subString);break;        //获取N/S
                                                case 5:memcpy(Save_Data.longitude, subString, subStringNext - subString);break;        //获取纬度信息
                                                case 6:memcpy(Save_Data.E_W, subString, subStringNext - subString);break;        //获取E/W

                                                default:break;
                                        }

                                        subString = subStringNext;
                                        Save_Data.isParseData = true;
                                        if(usefullBuffer[0] == 'A')
                                                Save_Data.isUsefull = true;
                                        else if(usefullBuffer[0] == 'V')
                                                Save_Data.isUsefull = false;

                                }
                                else
                                {
                                        errorLog(2);        //解析错误
                                }
                        }


                }
        }
}

///////////////获取GPS数据/////////////////
void gpsRead() {
        while (GpsSerial.available())
        {
                gpsRxBuffer[ii++] = GpsSerial.read();
                if (ii == gpsRxBufferLength)clrGpsRxBuffer();
        }

        char* GPS_BufferHead;
        char* GPS_BufferTail;
        if ((GPS_BufferHead = strstr(gpsRxBuffer, "$GPRMC,")) != NULL || (GPS_BufferHead = strstr(gpsRxBuffer, "$GNRMC,")) != NULL )
        {
                if (((GPS_BufferTail = strstr(GPS_BufferHead, "\r\n")) != NULL) && (GPS_BufferTail > GPS_BufferHead))
                {
                        memcpy(Save_Data.GPS_Buffer, GPS_BufferHead, GPS_BufferTail - GPS_BufferHead);
                        Save_Data.isGetData = true;

                        clrGpsRxBuffer();
                }
        }
}

void clrGpsRxBuffer(void)
{
        memset(gpsRxBuffer, 0, gpsRxBufferLength);      //清空
        ii = 0;
}

void Read_Date(){
  unsigned char status;
  unsigned char blockAddr; //选择操作的块地址0~63
  unsigned char str[MAX_LEN];
  
  blockAddr = 7;                //数据块7
  status = rfid.auth(PICC_AUTHENT1A, blockAddr, sectorNewKeyA[blockAddr/4], rfid.serNum);
  if (status == MI_OK)  //认证
  {
    //读数据
    blockAddr = blockAddr - 3 ; //数据块4
    if( rfid.read(blockAddr, str) == MI_OK)
    {
      Serial.print("Read from the card ,the data is : ");
      Serial.println((char *)str);
    }
}
}


void keypadEvent(KeypadEvent eKey){
  switch (keypad.getState()){
    case PRESSED:
        Serial.print("Pressed: ");
        Serial.println(eKey);
        switch (eKey){
          case '*': checkPassword(); break;
          case '#': password.reset(); break;
          default: password.append(eKey);
     }
  }
}

void checkPassword(){
  if (password.evaluate()){
    LCDA.DisplayString(3,1,show13,AR_SIZE(show13));
    delay(2000);
    //Add code to run if it works
  }else{
    LCDA.DisplayString(3,1,show14,AR_SIZE(show14));
    //add code to run if it did not work
  }
}
回复 支持 反对

使用道具 举报

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

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

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 07:46 , Processed in 0.053071 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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