hi55234 发表于 2014-11-13 21:06:12

双328p 初版 完结

本帖最后由 hi55234 于 2014-11-16 20:54 编辑

起因:
328p的程序空间30,720字节,作为菜鸟,只会用现成的库,可这库加不了几个,空间就告罄了·········悲剧啊·····

所以,果断双芯走起

思路如下:



----------------------------------------------
程序见 8、9、10楼

纯蓝牙控制:

控制命令暂时4条
$AT,A*78
$AT,B*7B
$AT,C*7A
$AT,D*7D

分别设定:
普通GPX记录模式、
蓝牙GPS 输出模式 、
1602向前翻页(仅普通模式有效)、
1602向后翻译(仅普通模式有效)

要说有啥特别的话,估计就是命令都用了异或校验~~~装作很稳定的样子{:soso_e113:}

要说有啥问题的话:
1、SD卡状态获取了,但没显示,出来~~~这个坑爹~~~(暂时没想到怎么显示比较好)
2、在蓝牙模式下,真心不知道这个GPS定位没有,因为没做这块的定义

加冰的可乐 发表于 2014-11-13 21:09:07

2560 欢迎你:lol

fuwen0202 发表于 2014-11-13 22:45:57

你的1602不会用i2c接口么

幻生幻灭 发表于 2014-11-14 08:39:37

@microduino 有个双核呢

____消失灬 发表于 2014-11-14 08:48:06

单独用个328驱动1602呗

沧海笑1122 发表于 2014-11-14 17:45:59

IIC的oled,只需一根pin,物美价廉。

hi55234 发表于 2014-11-15 19:45:22

本帖最后由 hi55234 于 2014-11-16 21:32 编辑

基本思路:
A   提取GPS信息,并通过串口把所提取的信息发送给B,B通过串口显示出来
A   通过提取的GPS信息,在SD卡中生成GPX文件
B   通过传感器采集到的温度、湿度啥的信息,通过串口发送给A,A把相关信息加在GPX文件当中,完成地点、环境的对应
B负责蓝牙互动啥的,毕竟A已经没程序空间了,而且内存也快没了


实践方式:仿GPS的字符串:
$起始符
*结束符
带2位异或检验,以保证信息的正确与有效










hi55234 发表于 2014-11-15 20:11:20

本帖最后由 hi55234 于 2014-11-16 20:31 编辑

A的EEPROM写入程序


#include<EEPROM.h>

void setup() {

Serial.begin(9600);

EEPROM.write(0,0);
EEPROM.write(1,0);
EEPROM.write(2,10);
EEPROM.write(3,0);
EEPROM.write(4,0);
EEPROM.write(5,0);
EEPROM.write(6,0);
EEPROM.write(7,0);
EEPROM.write(8,1);
EEPROM.write(9,1);



char TrackA0 = "<?xml version=\"1.0\"?><gpx>";
for(int i=0;i<27;i++) EEPROM.write(i+50,TrackA0);


char TrackA1 = "<name>Track";
for(int i=0;i<12;i++) EEPROM.write(i+77,TrackA1);

char TrackA2 = "</name><trk><trkseg>";
for(int i=0;i<21;i++) EEPROM.write(i+89,TrackA2);


char TrackA3= "<trkpt lat=\"";
for(int i=0;i<13;i++) EEPROM.write(i+110,TrackA3);

char TrackA4= "\" lon=\"";
   for(int i=0;i<8;i++) EEPROM.write(i+123,TrackA4);


char TrackA5= "\"><time>";
for(int i=0;i<9;i++) EEPROM.write(i+131,TrackA5);


char TrackA6= "Z</time></trkpt>";
for(int i=0;i<17;i++) EEPROM.write(i+140,TrackA6);


char TrackA7 = "</trkseg></trk>";
    for(int i=0;i<16;i++) EEPROM.write(i+158,TrackA7);


char TrackA8 = "</gpx>";
    for(int i=0;i<7;i++) EEPROM.write(i+174,TrackA8);


Serial.println("EEPROM Write is completed , Please re-download new program");


}



void loop()
{

}





hi55234 发表于 2014-11-15 23:50:22

本帖最后由 hi55234 于 2014-11-16 20:40 编辑

A的程序


#include <SoftwareSerial.h>
SoftwareSerial gps(8, 9);
char tempx;
char tempxB;
char GPRMC;
char GPGGA;
char MS;
char AT;
int gpschangertest;
boolean gpschanger;
int weiduA;
unsigned long weiduB,weiduC;
int jingduA;
unsigned long jingduB,jingduC;

boolean GPGGAget=0;
boolean GPRMCget=0;
boolean ATget=0;
boolean MSget=0;

unsigned long gpstimes;
boolean konghangpanduan;
boolean konghangpanduanB;
boolean gpsshuchuqiehuanB;
int jsq1=0;
int jsq2=0;
int jsq3=0;
int jsq4=0;
int jsq5=0;
int jsq6=0;
int jsq7=0;
int GPGGAlong=0;
int GPRMClong=0;
int ATlong=0;
int MSlong=0;
int asllong=0;
int yawlong=0;
int sudulong=0;
int chuankouzhuanyong;
boolean jiaoyanjieguoA,jiaoyanjieguoC;
float sudu;
String jianyan="";
int yihuoyunsuan;

boolean dingweiok=0;
/*---------------------GPS end---------------------------------*/
int gpsshuchuqiehuanA;


#include<EEPROM.h>
int EEPROMvalue;


#include <SD.h>

const int chipSelect = 10;

boolean gpxstart;
boolean gpxmiddleA;
boolean gpxmiddleB=1;
boolean gpxendA;
boolean gpxendB;

int gpxjilujiangeA;
int gpxjilujiangeB=256;

int gpxjiludianshu;
int gpxjiluguijishu;


char TrackAL="000";
char TrackAN="00000";

char TrackB0="-0000.0";
char TrackB1="00.0000000";
char TrackB2="000.0000000";
char TrackB4="2000-00-00T00:00:00";
char TrackB5="0000.00";
char TrackB6="000.00";

char SDzhuangtai="SDwait";

boolean weiduxuweitiao=0;
boolean jingduxuweitiao=0;
int weiduzhanwei,jingduzhanwei;





unsigned long fentodu;
int Linenumber;
int Tracknumber;

void setup() {





Serial.begin(9600);
gps.begin(9600);

EEPROMvalue= EEPROM.read(0);
if(EEPROMvalue==0)gpsshuchuqiehuanB=0;
else gpsshuchuqiehuanB=1;



EEPROMvalue= EEPROM.read(1);
if(EEPROMvalue==255) EEPROMvalue=0;

Linename();
Trackname();


EEPROMvalue= EEPROM.read(2);
if(EEPROMvalue==0)gpxjilujiangeA=1;
else gpxjilujiangeA=EEPROMvalue;



EEPROMvalue= EEPROM.read(3);
gpxjiludianshu=EEPROMvalue*25;
   
EEPROMvalue++;
EEPROM.write(3, EEPROMvalue);



pinMode(10, OUTPUT);


if (!SD.begin(chipSelect)) {
Serial.println("$MS,SD Card failed! ,*xx");
    return;
}
}

void loop() {
while (Serial.available() > 0) {

gpstimes=millis();
konghangpanduanB=0;
if(ATget){
AT=Serial.read();
if(AT=='*'){
ATlong=chuankouzhuanyong;
ATget=0;
chuankouzhuanyong=0;
}else if(chuankouzhuanyong<18)chuankouzhuanyong++;
}else if(MSget){
MS=Serial.read();
if(MS=='*'){
MSlong=chuankouzhuanyong;
MSget=0;
chuankouzhuanyong=0;
}else if(chuankouzhuanyong<88)chuankouzhuanyong++;
}else{
tempxB=Serial.read();
if(chuankouzhuanyong<3)chuankouzhuanyong++;
}

if(chuankouzhuanyong==3){

if(tempxB=='A' && tempxB=='T'){
ATget=1;
MSget=0;
for(int col=0;col<20;col++)AT=0;
for(int col=0;col<3;col++)AT=tempxB;
for(int col=0;col<3;col++)tempxB=0;
}else if(tempxB=='M' && tempxB=='S'){
MSget=1;
ATget=0;
for(int col=0;col<90;col++)MS=0;
for(int col=0;col<3;col++)MS=tempxB;
for(int col=0;col<3;col++)tempxB=0;
}else{
for(int col=0;col<2;col++)tempxB=tempxB;
chuankouzhuanyong=2;
}

}

}

ruanchuankou();
if(millis()-gpstimes>10 && !konghangpanduan){
konghangpanduan=1;
gpxjilujiangeB++;
gpsdechuli();

if(jiaoyanjieguoA)jiexiGPGGA();
if(jiaoyanjieguoC)jiexiGPRMC();


if(dingweiok) {
gpschanger=0;

if(gpxjilujiangeB>gpxjilujiangeA){
gpxjilujiangeB=0;
gpxjiludianshu++;

if(gpxjiludianshu%25==0){
EEPROMvalue= EEPROM.read(3);
EEPROMvalue++;

if(EEPROMvalue>108){
EEPROMvalue=0;
EEPROM.write(3, 0);
gpxjiludianshu=0;

EEPROM.write(8,0);
EEPROM.write(9,0);



}else {
EEPROM.write(3, EEPROMvalue);
}

}

sdcaozuo();
}

}


if(dingweiok && !gpsshuchuqiehuanB){

/*
$MS,TrackAL,TrackAN,TrackB1,TrackB2,TrackB4,TrackB0,TrackB5,TrackB6,SDzhuangtai*XX
$MS,000,00000,00.0000000,000.0000000,2000-00-00T00:00:00,-0000.0,0000.00,000.00,SDGood,*XX
----4---8----14----------25----------37------------------57-----后面就是动态的了
极限长度90,最小数组长度81
*/
for(int col=0;col<95;col++)GPRMC=0;
GPRMC='$';
GPRMC='M';
GPRMC='S';
GPRMC=44;
memcpy(GPRMC+4,TrackAL,3);
GPRMC=44;
memcpy(GPRMC+8,TrackAN,5);
GPRMC=44;
memcpy(GPRMC+14,TrackB1,10);
GPRMC=44;
memcpy(GPRMC+25,TrackB2,11);
GPRMC=44;
memcpy(GPRMC+37,TrackB4,19);
GPRMC=44;
memcpy(GPRMC+57,TrackB0,asllong);
GPRMC=44;
memcpy(GPRMC+58+asllong,TrackB5,sudulong);
GPRMC=44;
memcpy(GPRMC+59+asllong+sudulong,TrackB6,yawlong);
GPRMC=44;
memcpy(GPRMC+60+asllong+sudulong+yawlong,SDzhuangtai,6);
GPRMC=44;
GPRMC=42;
for(int col=1;col<67+asllong+sudulong+yawlong;col++){
if(col==1)yihuoyunsuan=GPRMC;
else yihuoyunsuan=yihuoyunsuan ^ GPRMC;
}
if(yihuoyunsuan==0){
jianyan="00";
}else if(yihuoyunsuan>15){
jianyan = String(yihuoyunsuan,HEX);
}else{
jianyan = "0";
jianyan += String(yihuoyunsuan,HEX);
}
jianyan.toUpperCase();
GPRMC=jianyan;
GPRMC=jianyan;
jianyan="";
Serial.println(GPRMC);
}



for(int col=0;col<95;col++)GPRMC=0;
for(int col=0;col<95;col++)GPGGA=0;
for(int col=0;col<12;col++)tempx=0;
jsq1=0;
GPGGAget=0;
GPRMCget=0;
}

if(millis()-gpstimes>10 && !konghangpanduanB){
konghangpanduanB=1;

       
for(int col=1;col<ATlong-2;col++){
if(col==1)yihuoyunsuan=AT;
else yihuoyunsuan=yihuoyunsuan ^ AT;
}
if(yihuoyunsuan==0){
jianyan="00";
}else if(yihuoyunsuan>15){
jianyan = String(yihuoyunsuan,HEX);
}else{
jianyan = "0";
jianyan += String(yihuoyunsuan,HEX);
}
jianyan.toUpperCase();
        if(jianyan==AT && jianyan==AT ){

       



if(AT=='A'){
       
       
                if(gpsshuchuqiehuanB){
                gpsshuchuqiehuanB=0;
               EEPROM.write(0,0);
                }
               
}else if(AT=='B'){
       
                if(!gpsshuchuqiehuanB){
                gpsshuchuqiehuanB=1;
               EEPROM.write(0,1);
                }
}

for(int col=0;col<20;col++)AT=0;
ATlong=0;
}else {
for(int col=0;col<20;col++)AT=0;
ATlong=0;
chuankouzhuanyong=0;
ATget=0;
}
jianyan="";
for(int col=1;col<MSlong-2;col++){
if(col==1)yihuoyunsuan=MS;
else yihuoyunsuan=yihuoyunsuan ^ MS;
}
if(yihuoyunsuan==0){
jianyan="00";
}else if(yihuoyunsuan>15){
jianyan = String(yihuoyunsuan,HEX);
}else{
jianyan = "0";
jianyan += String(yihuoyunsuan,HEX);
}
jianyan.toUpperCase();
if(jianyan==MS && jianyan==MS ){



}else {
for(int col=0;col<90;col++)MS=0;
MSlong=0;
chuankouzhuanyong=0;
MSget=0;
}
jianyan="";

}
}


void ruanchuankou()
{

while (gps.available() > 0) {
gpstimes=millis();
konghangpanduan=0;

if(GPRMCget){
GPRMC=gps.read();
if(gpsshuchuqiehuanB)Serial.print(GPRMC);
if(GPRMC=='*'){
GPRMClong=jsq1;
GPRMCget=0;
jsq1=0;
}else if(jsq1<93)jsq1++;

}else if(GPGGAget){
GPGGA=gps.read();
if(gpsshuchuqiehuanB)Serial.print(GPGGA);
if(GPGGA=='*'){
GPGGAlong=jsq1;
GPGGAget=0;
jsq1=0;
}else if(jsq1<93)jsq1++;

}else{
tempx=gps.read();
if(gpsshuchuqiehuanB)Serial.print(tempx);
if(jsq1<6)jsq1++;
}

if(jsq1==6){


if(tempx=='M' && tempx=='C'){
GPRMCget=1;
GPGGAget=0;
for(int col=0;col<6;col++)GPRMC=tempx;
for(int col=0;col<6;col++)tempx=0;
}else if(tempx=='G' && tempx=='A'){
GPGGAget=1;
GPRMCget=0;
for(int col=0;col<6;col++)GPGGA=tempx;
for(int col=0;col<6;col++)tempx=0;
}else{
for(int col=0;col<5;col++)tempx=tempx;
jsq1=5;
}

}

}

}

void gpsdechuli()
{
for(int col=1;col<GPRMClong-3;col++){
if(col==1)yihuoyunsuan=GPRMC;
else yihuoyunsuan=yihuoyunsuan ^ GPRMC;
}
if(yihuoyunsuan==0){
jianyan="00";
}else if(yihuoyunsuan>15){
jianyan = String(yihuoyunsuan,HEX);
}else{
jianyan = "0";
jianyan += String(yihuoyunsuan,HEX);
}
jianyan.toUpperCase();
if(jianyan==GPRMC && jianyan==GPRMC ){
jiaoyanjieguoC=1;
}else{
jiaoyanjieguoC=0;
for(int col=0;col<95;col++)GPRMC=0;
GPRMClong=0;
jsq1=0;
GPRMCget=0;
}
jianyan="";


for(int col=1;col<GPGGAlong-3;col++){
if(col==1)yihuoyunsuan=GPGGA;
else yihuoyunsuan=yihuoyunsuan ^ GPGGA;
}
if(yihuoyunsuan==0){
jianyan="00";
}else if(yihuoyunsuan>15){
jianyan = String(yihuoyunsuan,HEX);
}else{
jianyan = "0";
jianyan += String(yihuoyunsuan,HEX);
}
jianyan.toUpperCase();
if(jianyan==GPGGA && jianyan==GPGGA ){
jiaoyanjieguoA=1;
}else{
jiaoyanjieguoA=0;
for(int col=0;col<90;col++)GPGGA=0;
GPGGAlong=0;
jsq1=0;
GPGGAget=0;
}

jianyan="";

}


void jiexiGPGGA()
{

   jsq2=0;
   jsq3=0;
   jsq4=0;
   jsq5=0;


    for(int col=1;col<GPGGAlong-3;col++){
   if(GPGGA==',')jsq2++;
   if(jsq2==10){
   jsq3=col;
   col=GPGGAlong-3;
   }
   
   
   if(jsq2<9)jsq4=col;
   
   if(jsq2<7)jsq5=col;
   
   }
   
   
   if(GPGGA==49)dingweiok=1;
   else dingweiok=0;
   
   
for(int col=0;col<8;col++)TrackB0=0;
memcpy(TrackB0,GPGGA+jsq4+2, jsq3-jsq4-2);
asllong=jsq3-jsq4-2;

}


void jiexiGPRMC()
{

   jsq2=0;
   jsq3=0;
   jsq4=0;
   jsq5=0;
   jsq6=0;
   jsq7=0;
   
    for(int col=1;col<GPRMClong-3;col++){
   if(GPRMC==',')jsq2++;
   if(jsq2==9){
   jsq3=col;
   col=GPRMClong-3;
   }
   
   if(jsq2<8)jsq4=col;
   if(jsq2<6)jsq5=col;
   if(jsq2<4)jsq6=col;
   if(jsq2<2)jsq7=col;
   }


if(GPRMC=='A')UTCtime();


if(dingweiok){
jingweiduchuli();
hangxiangyusudu();

}else {
weiduA=0;
weiduB=0;
weiduC=0;
jingduA=0;
jingduB=0;
jingduC=0;
}


}


void UTCtime()
{



TrackB4=GPRMC;
TrackB4=GPRMC;


TrackB4=GPRMC;
TrackB4=GPRMC;

TrackB4=GPRMC;
TrackB4=GPRMC;

TrackB4=GPRMC;
TrackB4=GPRMC;

TrackB4=GPRMC;
TrackB4=GPRMC;

TrackB4=GPRMC;
TrackB4=GPRMC;

}

void jingweiduchuli()
{


for(int col=0;col<12;col++)tempx=0;
memcpy(tempx,GPRMC+jsq7+4, 2);
jianyan =tempx;
gpschangertest=jianyan.toInt();
if(weiduA!=gpschangertest){
weiduA=gpschangertest;
gpschanger=1;
}


if(GPRMC==83)weiduxuweitiao=1;
if(GPRMC==87)jingduxuweitiao=1;


memcpy(TrackB1,GPRMC+jsq7+4, 2);

if(gpschangertest<10) {
TrackB1=32;
weiduzhanwei=1;
}else weiduzhanwei=2;


for(int col=0;col<12;col++)tempx=0;

memcpy(tempx,GPRMC+jsq7+6, 2);
jianyan =tempx;
gpschangertest=jianyan.toInt();
if(weiduB!=gpschangertest){
weiduB=gpschangertest;
gpschanger=1;
}



for(int col=0;col<12;col++)tempx=0;

memcpy(tempx,GPRMC+jsq7+9, 4);
if(jsq6-jsq7==12) memcpy(tempx,GPRMC+jsq7+9, 4);
else if(jsq6-jsq7==13)memcpy(tempx,GPRMC+jsq7+9, 5);


jianyan =tempx;
gpschangertest=jianyan.toInt();
if(weiduC!=gpschangertest){
weiduC=gpschangertest;
gpschanger=1;
}

fentodu=weiduB*100000+weiduC*10;
fentodu=fentodu/6;

for(int col=0;col<12;col++)tempx=0;
dtostrf(fentodu,6,0,tempx);


if(fentodu>99999){
memcpy(TrackB1+3,tempx, 6);
}else if(fentodu>9999){
TrackB1=48;
memcpy(TrackB1+4,tempx, 5);
}else if(fentodu>999){
TrackB1=48;
TrackB1=48;
memcpy(TrackB1+5,tempx, 4);

}else if(fentodu>99){
TrackB1=48;
TrackB1=48;
TrackB1=48;
memcpy(TrackB1+6,tempx, 3);

}else if(fentodu>9){
TrackB1=48;
TrackB1=48;
TrackB1=48;
TrackB1=48;
memcpy(TrackB1+7,tempx, 2);
}else{
TrackB1=48;
TrackB1=48;
TrackB1=48;
TrackB1=48;
TrackB1=48;
memcpy(TrackB1+8,tempx, 1);

}




if(weiduxuweitiao){
weiduxuweitiao=0;

if(weiduzhanwei==2){


   for(int col=0;col<12;col++)tempx=0;
tempx=45;
memcpy(tempx+1,TrackB1, 9);
memcpy(TrackB1,tempx, 10);

}else{

TrackB1=45;

}

}




for(int col=0;col<12;col++)tempx=0;

   memcpy(tempx,GPRMC+jsq6+4, 3);
jianyan =tempx;
gpschangertest=jianyan.toInt();
if(jingduA!=gpschangertest){
jingduA=gpschangertest;
gpschanger=1;
}




memcpy(TrackB2,GPRMC+jsq6+4, 3);
jingduzhanwei=3;

if(gpschangertest<100) {
TrackB2=32;
jingduzhanwei=2;
}

if(gpschangertest<10) {
TrackB2=32;
jingduzhanwei=1;
}

for(int col=0;col<12;col++)tempx=0;

memcpy(tempx,GPRMC+jsq6+7, 3);
jianyan =tempx;
gpschangertest=jianyan.toInt();
if(jingduB!=gpschangertest){
jingduB=gpschangertest;
gpschanger=1;
}

for(int col=0;col<12;col++)tempx=0;

if(jsq5-jsq6==13)memcpy(tempx,GPRMC+jsq6+10, 4);
else if(jsq5-jsq6==14)memcpy(tempx,GPRMC+jsq6+10, 5);

jianyan =tempx;
gpschangertest=jianyan.toInt();
if(jingduC!=gpschangertest){
jingduC=gpschangertest;
gpschanger=1;
}

jianyan="";

fentodu=jingduB*100000+jingduC*10;
fentodu=fentodu/6;

for(int col=0;col<12;col++)tempx=0;
dtostrf(fentodu,6,0,tempx);



if(fentodu>99999){
memcpy(TrackB2+4,tempx, 6);
}else if(fentodu>9999){
TrackB2=48;
memcpy(TrackB2+5,tempx, 5);
}else if(fentodu>999){
TrackB2=48;
TrackB2=48;
memcpy(TrackB2+6,tempx, 4);

}else if(fentodu>99){
TrackB2=48;
TrackB2=48;
TrackB2=48;
memcpy(TrackB2+7,tempx, 3);

}else if(fentodu>9){
TrackB2=48;
TrackB2=48;
TrackB2=48;
TrackB2=48;
memcpy(TrackB2+8,tempx, 2);
}else{
TrackB2=48;
TrackB2=48;
TrackB2=48;
TrackB2=48;
TrackB2=48;
memcpy(TrackB2+9,tempx, 1);

}




if(jingduxuweitiao){
jingduxuweitiao=0;

if(jingduzhanwei==3){


   for(int col=0;col<12;col++)tempx=0;
tempx=45;
memcpy(tempx+1,TrackB2, 10);
memcpy(TrackB2,tempx, 11);

}else if(jingduzhanwei==2){

TrackB2=45;

}else{
TrackB2=45;
}

}


}


void hangxiangyusudu()
{

for(int col=0;col<12;col++)tempx=0;
memcpy(tempx,GPRMC+jsq5+4,jsq4-jsq5-3);

for(int col=0;col<jsq4-jsq5-3;col++){
if(tempx==46){


if(col==1)fentodu=(tempx-48)*1000;
else if(col==2)fentodu=(tempx-48)*10000+(tempx-48)*1000;
else if(col==3)fentodu=(tempx-48)*100000+(tempx-48)*10000+(tempx-48)*1000;


if(jsq4-jsq5-col==5)fentodu=fentodu+(tempx-48)*100;
else if(jsq4-jsq5-col==6)fentodu=fentodu+(tempx-48)*100+(tempx-48)*10;
else if(jsq4-jsq5-col==7)fentodu=fentodu+(tempx-48)*100+(tempx-48)*10+tempx-48;



fentodu=fentodu*1852*0.0001;
col=jsq4-jsq5-3;
}
}

sudu=fentodu*0.01;
for(int col=0;col<8;col++)TrackB5=0;
dtostrf(sudu,1,2,TrackB5);
if(sudu*0.001>1)sudulong=7;
else if(sudu*0.01>1)sudulong=6;
else if(sudu*0.1>1)sudulong=5;
else sudulong=4;

for(int col=0;col<7;col++)TrackB6=0;
memcpy(TrackB6,GPRMC+jsq4+2, jsq3-jsq4-2);
yawlong=jsq3-jsq4-2;


}


void sdcaozuo()
{




for(int col=0;col<12;col++)tempx=0;

tempx='L';
tempx='i';
tempx='n';
tempx='e';
memcpy(tempx+4,TrackAL,3);
tempx='.';
tempx='g';
tempx='p';
tempx='x';

File dataFile = SD.open(tempx, FILE_WRITE);


if (dataFile) {

for(int col=0;col<12;col++)tempx=0;
SDzhuangtai='S';
SDzhuangtai='D';
SDzhuangtai='G';
SDzhuangtai='o';
SDzhuangtai='o';
SDzhuangtai='d';


   
      EEPROMvalue= EEPROM.read(4);
      if(EEPROMvalue==0) gpxstart=1;
      else gpxstart=0;
   
   
   
    EEPROMvalue= EEPROM.read(7);
    if(EEPROMvalue==0){
    gpxmiddleA=1;
   
      
    Trackname();

    }else gpxmiddleA=0;
   
      EEPROMvalue= EEPROM.read(8);
      if(EEPROMvalue==0) gpxendA=1;
      else gpxendA=0;

      EEPROMvalue= EEPROM.read(9);
      if(EEPROMvalue==0) gpxendB=1;
      else gpxendB=0;
   

if(gpxstart){
EEPROM.write(4, 1);


for(int col=0;col<95;col++)GPRMC=0;
for(int i=50;i<77;i++)GPRMC = EEPROM.read(i);

dataFile.print(GPRMC);

}


if(gpxmiddleA){       
EEPROM.write(7, 1);

for(int col=0;col<95;col++)GPRMC=0;
for(int i=77;i<89;i++)GPRMC = EEPROM.read(i);

dataFile.print(GPRMC);
dataFile.print(TrackAN);




for(int col=0;col<95;col++)GPRMC=0;
for(int i=89;i<110;i++)GPRMC = EEPROM.read(i);

dataFile.println(GPRMC);


}


if(gpxmiddleB){

   
   for(int col=0;col<95;col++)GPRMC=0;
   for(int i=110;i<123;i++)GPRMC = EEPROM.read(i);
   dataFile.print(GPRMC);
   dataFile.print(TrackB1);
   


   for(int col=0;col<95;col++)GPRMC=0;
   for(int i=123;i<131;i++)GPRMC = EEPROM.read(i);
   dataFile.print(GPRMC);

   dataFile.print(TrackB2);
   



for(int col=0;col<95;col++)GPRMC=0;
for(int i=131;i<140;i++)GPRMC = EEPROM.read(i);
   dataFile.print(GPRMC);
   dataFile.print(TrackB4);
   


   for(int col=0;col<95;col++)GPRMC=0;
   for(int i=140;i<158;i++)GPRMC = EEPROM.read(i);
   
   if(MSlong>0){

               dataFile.print(GPRMC);
               
               
               for(int col=0;col<95;col++)GPRMC=0;
               memcpy(GPRMC,MS+4,MSlong-6);
               dataFile.println(GPRMC);
               
               
                MSlong=0;
               

}else dataFile.println(GPRMC);



}


if(gpxendA){
EEPROM.write(8,1);
EEPROM.write(7,0);

for(int col=0;col<95;col++)GPRMC=0;
for(int i=158;i<174;i++)GPRMC = EEPROM.read(i);
   dataFile.print(GPRMC);


EEPROMvalue= EEPROM.read(6);
EEPROMvalue++;
EEPROM.write(6,EEPROMvalue);

}


if(gpxendB){
EEPROM.write(9,1);

EEPROM.write(4,0);


for(int col=0;col<95;col++)GPRMC=0;
for(int i=174;i<181;i++)GPRMC = EEPROM.read(i);
   dataFile.print(GPRMC);
   


EEPROMvalue= EEPROM.read(1);
EEPROMvalue++;
if(EEPROMvalue==255) EEPROMvalue=0;
EEPROM.write(1, EEPROMvalue);
Linename();

}


}else{
   for(int col=0;col<12;col++)tempx=0;
SDzhuangtai='F';
SDzhuangtai='a';
SDzhuangtai='i';
SDzhuangtai='l';
SDzhuangtai='e';
SDzhuangtai='d';


}



dataFile.close();



}


void Linename()
{

   for(int col=0;col<12;col++)tempx=0;

if(EEPROMvalue<10){
tempx=48;
tempx=48;
tempx=EEPROMvalue+48;

}else if(EEPROMvalue<100){
tempx=48;
Linenumber=EEPROMvalue*0.1;
tempx=Linenumber+48;
   Linenumber=EEPROMvalue%10;
    tempx=Linenumber+48;

}else{

   Linenumber=EEPROMvalue*0.01;
tempx=Linenumber+48;
Linenumber=EEPROMvalue*0.1;
    Linenumber=Linenumber%10;
tempx=Linenumber+48;
   Linenumber=EEPROMvalue%10;
    tempx=Linenumber+48;

}


for(int col=0;col<4;col++)TrackAL=0;
memcpy(TrackAL,tempx,3);

}



void Trackname()
{

   
   EEPROMvalue= EEPROM.read(6);
   if(EEPROMvalue <250){
   gpxjiluguijishu=EEPROMvalue;
   
   EEPROMvalue= EEPROM.read(5);
   gpxjiluguijishu=EEPROMvalue*250+gpxjiluguijishu;
   
   }else{
   gpxjiluguijishu=0;
   EEPROM.write(6,gpxjiluguijishu);
   
   EEPROMvalue= EEPROM.read(5);
   if(EEPROMvalue<240){
   EEPROMvalue++;
   EEPROM.write(5,EEPROMvalue);
   gpxjiluguijishu=EEPROMvalue*250;
   }else{
   EEPROM.write(5,0);
   gpxjiluguijishu=0;
   }
   
   }
   

for(int col=0;col<12;col++)tempx=0;

if(gpxjiluguijishu>9999)sprintf(tempx, "%d", gpxjiluguijishu);
else if(gpxjiluguijishu>999){
tempx=48;
sprintf(tempx+1, "%d", gpxjiluguijishu);
}else if(gpxjiluguijishu>99){
tempx=48;
tempx=48;
sprintf(tempx+2, "%d", gpxjiluguijishu);
}else if(gpxjiluguijishu>9){
tempx=48;
tempx=48;
tempx=48;
sprintf(tempx+3, "%d", gpxjiluguijishu);
}else{
tempx=48;
tempx=48;
tempx=48;
tempx=48;
sprintf(tempx+4, "%d", gpxjiluguijishu);
}

memcpy(TrackAN,tempx,5);

}



hi55234 发表于 2014-11-16 20:39:17

B的程序

#include <MemoryFree.h>

#include <LiquidCrystal_I2C.h>
LiquidCrystal_I2C lcd(0x3F,16,2);

#include <SoftwareSerial.h>
SoftwareSerial LC05(8, 9);
char tempx;
char tempxB;
char MS;
char AT;
char TOSD="$MS,<PM2.5>199.12ug</PM2.5><AQI>182</AQI><TEMP>-14</TEMP><humidity>15</humidity>*2B";
boolean MSget=0;
boolean ATget=0;
unsigned long gpstimes;
boolean konghangpanduan;
boolean konghangpanduanB;
boolean gpsshuchuqiehuanB;
int chuankouzhuanyong;
int chuankouzhuanyongB;
int jsq1=0;
int jsq2=0;
int jsq3=0;
int jsq4=0;
int jsq5=0;
int jsq6=0;
int jsq7=0;
int MSlong=0;
int ATlong=0;
boolean jiaoyanjieguoA,jiaoyanjieguoC;

String jianyan="";
int yihuoyunsuan;

boolean dingweiok=0;
boolean fangzhilianji=1;
int lcdxianshi=0;
/*---------------------LC05 end---------------------------------*/


#include<EEPROM.h>
int EEPROMvalue;


char TrackAL="000";
char TrackAN="00000";
char TrackB0="-0000.0";
char TrackB1="00.0000000";
char TrackB2="000.0000000";
char TrackB4="2000-00-00T00:00:00";
char TrackB5="0000.00";
char TrackB6="000.00";

char SDzhuangtai;

int utc8s,utc8f,utc8m,utc8n,utc8y,utc8r;
int xiaoyue={4,6,9,11};
boolean rijinwei,yuejinwei,nianjinwei,xiaoyueok;


#include <OneWire.h>
#include <DallasTemperature.h>
OneWire oneWire(6);
DallasTemperature sensors(&oneWire);

#include <dht11.h>
dht11 DHT11;
#define DHT11PIN 7


#include <Wire.h>
#include <RTClib.h>
void printDateTime(DateTime dateTime);
RTC_DS1307 RTC;
int nian,yue,ri,shi,fen,miao;
boolean shoushiqidong;


int gp2y1010dust=2;
int gp2y1010led=15;
int dustVal=0;
int delayTime=280;
int delayTime2=40;
float offTime=9680;
int dusti=0;
float dustValPM25,averagedustVal;
int AQI;
int mySensVals ;
unsigned long time1=millis();

void setup() {

pinMode(gp2y1010led,OUTPUT);

lcd.init();
lcd.backlight();


Wire.begin();
RTC.begin();


Serial.begin(9600);
LC05.begin(9600);

EEPROMvalue= EEPROM.read(0);
if(EEPROMvalue==0){
gpsshuchuqiehuanB=0;
Serial.println("$AT,A*78");
}else{
gpsshuchuqiehuanB=1;
Serial.println("$AT,B*7B");
}

EEPROMvalue= EEPROM.read(10);
if(EEPROMvalue<4)lcdxianshi=EEPROMvalue;
else {
EEPROM.write(10,3);
lcdxianshi=3;
}


}

void loop() {
MShuoqu();
AThuoqu();
if(millis()-gpstimes>10){
if(!konghangpanduan){
konghangpanduan=1;

for(int col=1;col<MSlong-2;col++){
        if(col==1)yihuoyunsuan=MS;
        else yihuoyunsuan=yihuoyunsuan ^ MS;
}
if(yihuoyunsuan==0){
        jianyan="00";
}else if(yihuoyunsuan>15){
        jianyan = String(yihuoyunsuan,HEX);
}else{
        jianyan = "0";
        jianyan += String(yihuoyunsuan,HEX);
}
jianyan.toUpperCase();
if(jianyan==MS && jianyan==MS ){
       
       
        memcpy(TrackAL,MS+4, 3);
        memcpy(TrackAN,MS+8, 5);
        memcpy(TrackB1,MS+14, 10);
        memcpy(TrackB2,MS+25, 11);
        memcpy(TrackB4,MS+37, 19);
   jsq2=0;
   jsq3=0;
   jsq4=0;
   jsq5=0;
   jsq6=0;
    for(int col=1;col<MSlong;col++){
                if(MS==',')jsq2++;
                if(jsq2==10){
                        jsq3=col;
                        col=MSlong;
                }
               
                if(jsq2<9)jsq4=col;
               
                if(jsq2<8)jsq5=col;
               
                if(jsq2<7)jsq6=col;
   }
   
   
   
for(int col=0;col<8;col++)TrackB0=0;
memcpy(TrackB0,MS+57, jsq6-56);

   
for(int col=0;col<8;col++)TrackB5=0;
memcpy(TrackB5,MS+jsq6+2, jsq5-jsq6-1);
   
for(int col=0;col<8;col++)TrackB6=0;
memcpy(TrackB6,MS+jsq5+2, jsq4-jsq5-1);
   
for(int col=0;col<7;col++)SDzhuangtai=0;
memcpy(SDzhuangtai,MS+jsq4+2, jsq3-jsq4-2);





chinatime();





}else {
for(int col=0;col<100;col++)MS=0;
MSlong=0;
chuankouzhuanyong=0;
MSget=0;
}
jianyan="";

}

if(!konghangpanduanB){
        konghangpanduanB=1;
for(int col=1;col<ATlong-2;col++){
        if(col==1)yihuoyunsuan=AT;
        else yihuoyunsuan=yihuoyunsuan ^ AT;
}
if(yihuoyunsuan==0){
        jianyan="00";
}else if(yihuoyunsuan>15){
        jianyan = String(yihuoyunsuan,HEX);
}else{
        jianyan = "0";
        jianyan += String(yihuoyunsuan,HEX);
}
jianyan.toUpperCase();
       
       
   
       
   
       
       
if(jianyan==AT && jianyan==AT ){

if(AT=='A'){
       
       
                if(gpsshuchuqiehuanB){
                gpsshuchuqiehuanB=0;
               EEPROM.write(0,0);
                }
                Serial.println("$AT,A*78");
                LC05.println("OK");
                lcdxianshi= EEPROM.read(10);
}else if(AT=='B'){
       
                if(!gpsshuchuqiehuanB){
                gpsshuchuqiehuanB=1;
               EEPROM.write(0,1);
                }
                Serial.println("$AT,B*7B");
                LC05.println("OK");
                lcdxianshi=3;
               
}else if(AT=='C'){
       
        if(!gpsshuchuqiehuanB){
                if(lcdxianshi>0)lcdxianshi--;
                else lcdxianshi=3;
                EEPROM.write(10,lcdxianshi);
                LC05.println("OK");
        }else LC05.println("Bluetooth GPS out");
       
}else if(AT=='D'){
       
        if(!gpsshuchuqiehuanB){
                if(lcdxianshi<3)lcdxianshi++;
                else lcdxianshi=0;
                EEPROM.write(10,lcdxianshi);
                LC05.println("OK");
        }else LC05.println("Bluetooth GPS out");
        }else LC05.println("AT undefinition");

        for(int col=0;col<20;col++)AT=0;
        ATlong=0;
}else {
        for(int col=0;col<20;col++)AT=0;
        ATlong=0;
        chuankouzhuanyongB=0;
        ATget=0;
}
jianyan="";

}

if (millis() - time1 > 1000){
time1=millis();
fenchentou();

   
   sensors.requestTemperatures();
   
   jsq1=sensors.getTempCByIndex(0);
   
      DHT11.read(DHT11PIN);
   
   jsq2=DHT11.humidity;
   
    for(int col=0;col<17;col++)tempx=0;
   
DS1307tiquxiaodui();   
   
    jsq3=jsq2*0.1;
tempx = jsq3+48;
   TOSD=tempx;
jsq3=jsq2%10;
tempx = jsq3+48;
   TOSD=tempx;

tempx='%';
tempx=32;

if(jsq1<0){
jsq1=0-jsq1;
tempx='-';
TOSD='-';
}else TOSD=32;

jsq3=jsq1*0.1;
tempx = jsq3+48;
TOSD=tempx;
jsq3=jsq1%10;
tempx = jsq3+48;
TOSD=tempx;
tempx='C';
tempx=32;

now1602out();

MSlong=0;

for(int col=1;col<80;col++){
if(col==1)yihuoyunsuan=TOSD;
else yihuoyunsuan=yihuoyunsuan ^ TOSD;
}
if(yihuoyunsuan==0){
jianyan="00";
}else if(yihuoyunsuan>15){
jianyan = String(yihuoyunsuan,HEX);
}else{
jianyan = "0";
jianyan += String(yihuoyunsuan,HEX);
}
jianyan.toUpperCase();
TOSD=jianyan;
TOSD=jianyan;
jianyan="";
Serial.println(TOSD);

}



}

if (millis() < time1)time1=millis();
if (millis() < gpstimes)gpstimes=millis();

}

void fenchentou()
{


/*粉尘头控制代码*/
digitalWrite(gp2y1010led,LOW);
delayMicroseconds(delayTime);
dustVal=analogRead(gp2y1010dust);
delayMicroseconds(delayTime2);
digitalWrite(gp2y1010led,HIGH);

/*邻采样10次平均averagedustVal的计算*/
mySensVals =dustVal;
dusti++;
dusti=dusti%10;
averagedustVal=0;
for(int col=0;col<10;col++)averagedustVal=averagedustVal+mySensVals;
averagedustVal=averagedustVal*0.1;



/*计算pm2.5的数值 电压阀值以上用:(v*0.172-0.0999)*1000,阀值以下用线性,参考国外帖子,认为输出最低17,对应粉尘5000*/




if(averagedustVal>184.5)dustValPM25=0.83984375*averagedustVal-99.9;
else dustValPM25=averagedustVal*0.298373984;

jsq3=dustValPM25*0.01;
if(jsq3>0)TOSD=jsq3+48;
else TOSD=32;
jsq3=dustValPM25*0.1;
if(jsq3>0)TOSD=jsq3%10+48;
else TOSD=32;
jsq3=dustValPM25;
jsq3=jsq3%10;
TOSD=jsq3+48;
jsq3=dustValPM25*10;
TOSD=jsq3%10+48;
jsq3=dustValPM25*100;
TOSD=jsq3%10+48;


/*AQI的计算,美国标准*/

if(dustValPM25<15.4) AQI=(50-0)/(15.4-0)*(dustValPM25-0)+0;
else if(dustValPM25<40.4) AQI=(100-51)/(40.4-15.5)*(dustValPM25-15.5)+51;
else if(dustValPM25<65.4) AQI=(150-101)/(65.4-40.5)*(dustValPM25-40.5)+101;
else if(dustValPM25<150.4) AQI=(200-151)/(150.4-65.5)*(dustValPM25-65.5)+151;
else if(dustValPM25<250.4) AQI=(300-201)/(250.4-150.5)*(dustValPM25-150.5)+201;
else if(dustValPM25<350.4) AQI=(400-301)/(350.4-250.5)*(dustValPM25-250.5)+301;
else AQI=(500-401)/(500.4-350.5)*(dustValPM25-350.5)+401;


if(AQI>100){
jsq3=AQI*0.01;
TOSD=jsq3+48;
}elseTOSD=32;

if(AQI>10){
jsq3=AQI*0.1;
TOSD=jsq3%10+48;
}elseTOSD=32;

TOSD=AQI%10+48;

if(lcdxianshi==3){
lcd.setCursor(0, 0);
lcd.print(dustValPM25);
lcd.print("ug AQI:");
lcd.print(AQI);
lcd.print("   ");
}

}

void MShuoqu()
{
while (Serial.available() > 0) {

gpstimes=millis();
konghangpanduan=0;
if(MSget){
MS=Serial.read();
if(gpsshuchuqiehuanB)LC05.print(MS);
if(MS=='*'){
MSlong=chuankouzhuanyong;
MSget=0;
chuankouzhuanyong=0;
}else if(chuankouzhuanyong<98)chuankouzhuanyong++;
}else{
tempx=Serial.read();
if(gpsshuchuqiehuanB)LC05.print(tempx);
if(chuankouzhuanyong<3)chuankouzhuanyong++;
}

if(chuankouzhuanyong==3){
if(tempx=='M' && tempx=='S'){
MSget=1;
for(int col=0;col<100;col++)MS=0;
for(int col=0;col<3;col++)MS=tempx;
for(int col=0;col<3;col++)tempx=0;
}else{
for(int col=0;col<2;col++)tempx=tempx;
chuankouzhuanyong=2;
}

}
}


}

void AThuoqu()
{
while (LC05.available() > 0) {
gpstimes=millis();
konghangpanduanB=0;
if(ATget){
        AT=LC05.read();
       
       
        if(AT=='*'){
                ATlong=chuankouzhuanyongB;
                ATget=0;
                chuankouzhuanyongB=0;
        }else if(chuankouzhuanyongB<18)chuankouzhuanyongB++;
}else{
        tempxB=LC05.read();
        if(chuankouzhuanyongB<3)chuankouzhuanyongB++;
}

if(chuankouzhuanyongB==3){
if(tempxB=='A' && tempxB=='T'){
ATget=1;
for(int col=0;col<20;col++)AT=0;
for(int col=0;col<3;col++)AT=tempxB;
for(int col=0;col<17;col++)tempxB=0;

}else{
for(int col=0;col<2;col++)tempxB=tempxB;
chuankouzhuanyongB=2;
}

}
}


}

void printDateTime(DateTime dateTime) {
   
nian=dateTime.year(), DEC;

   
    yue=dateTime.month(), DEC;
   
ri=dateTime.day(), DEC;
   
shi=dateTime.hour(), DEC;
   
fen=dateTime.minute(), DEC;
   
miao=dateTime.second(), DEC;


}


void DS1307tiquxiaodui()
{



    DateTime now = RTC.now();
      
      printDateTime(now);

if(MSlong>0){
if(yue != utc8y) shoushiqidong=1;
if(ri != utc8r) shoushiqidong=1;
if(shi != utc8s) shoushiqidong=1;
if(fen != utc8f) shoushiqidong=1;
if(miao-utc8m>2 || utc8m-miao>2) shoushiqidong=1;
if(shoushiqidong){
shoushiqidong=0;

   RTC.set(RTC_YEAR, utc8n);
   
   RTC.set(RTC_MONTH, utc8y);
   
   RTC.set(RTC_DAY, utc8r);
   
   RTC.set(RTC_HOUR, utc8s);
   
RTC.set(RTC_MINUTE, utc8f);
   
   RTC.set(RTC_SECOND, utc8m);
}
}
/*
jsq3=nian*0.1;
jsq3=jsq3%10;
temp2 = jsq3+48, DEC;
jsq3=nian%10;
temp2 = jsq3+48, DEC;

   
jsq3=yue*0.1;
temp2 = jsq3+48, DEC;
jsq3=yue%10;
temp2 = jsq3+48, DEC;


    jsq3=ri*0.1;
temp2 = jsq3+48, DEC;
jsq3=ri%10;
temp2 = jsq3+48, DEC;
   
   */
   
jsq3=shi*0.1;
tempx = jsq3+48, DEC;
jsq3=shi%10;
tempx = jsq3+48, DEC;
tempx=':';

jsq3=fen*0.1;
tempx = jsq3+48, DEC;
jsq3=fen%10;
tempx = jsq3+48, DEC;
tempx=':';


jsq3=miao*0.1;
tempx= jsq3+48, DEC;
jsq3=miao%10;
tempx = jsq3+48, DEC;
}


void now1602out()
{

/*GPS模式下的显示情况说明
char TrackB0="-0000.0";
char TrackB1="00.0000000";
char TrackB2="000.0000000";
char TrackB4="2000-00-00T00:00:00";
char TrackB5="0000.00";
char TrackB6="000.00";

lcdxianshi=0显示内容如下
LAT.00.0000000
0123456789012345
LON. 000.0000000

lcdxianshi=1显示内容如下
ASL(G): -0000.0M
0123456789012345
YAW(GPS): 000.00

lcdxianshi=2显示内容如下
00-00T00:00:00
0123456789012345
speed:000.00km/h

I'm so sorry but
0123456789012345
now the GPS lost
*/
if(MSlong==0 && lcdxianshi<3){
lcd.setCursor(0, 0);
lcd.print("I'm so sorry but");
lcd.setCursor(0, 1);
lcd.print("now the GPS lost");
}else{
if(lcdxianshi==0){
lcd.setCursor(0, 0);
lcd.print("LAT.");
lcd.print(TrackB1);
lcd.setCursor(0, 1);
lcd.print("LON. ");
lcd.print(TrackB2);

}else if(lcdxianshi==1){
lcd.setCursor(0, 0);
lcd.print("ASL(G): ");
lcd.print(TrackB0);
lcd.print("M    ");
lcd.setCursor(0, 1);
lcd.print("YAW(GPS): ");
lcd.print(TrackB6);
lcd.print("      ");

}else if(lcdxianshi==2){
for(int col=0;col<17;col++)tempx=0;
for(int col=0;col<14;col++)tempx=TrackB4;
lcd.setCursor(0, 0);
lcd.print("");
lcd.print(tempx);
lcd.setCursor(0, 1);
lcd.print("speed:");
lcd.print(TrackB5);
lcd.print("km/h    ");
}else if(lcdxianshi==3){

lcd.setCursor(0, 1);


lcd.print(tempx);

}
}

}

void chinatime()
{




jianyan = String(TrackB4);
jianyan += TrackB4;
utc8s=jianyan.toInt()+8;


if(utc8s>23)rijinwei=1;
utc8s=utc8s%24;
jianyan = String(TrackB4);
jianyan += TrackB4;
utc8f=jianyan.toInt();


jianyan = String(TrackB4);
jianyan += TrackB4;
utc8m=jianyan.toInt();





jianyan = String(TrackB4);
jianyan += TrackB4;
utc8r=jianyan.toInt();



jianyan = String(TrackB4);
jianyan += TrackB4;
utc8y=jianyan.toInt();


jianyan = String(TrackB4);
jianyan += TrackB4;
utc8n=jianyan.toInt();




if(rijinwei){
if(utc8y==2 && utc8r==28){
if(utc8n % 400 == 0 || utc8n % 100 != 0 && utc8n % 4 == 0)utc8r=29;
else {
utc8r=1;
yuejinwei=1;
}
}else{
for(int col=0;col<4;col++){
if(xiaoyue==utc8y)xiaoyueok=1;
}
if(xiaoyueok && utc8r==30){
utc8r=1;
yuejinwei=1;
}else if(!xiaoyueok && utc8r==31){
utc8r=1;
yuejinwei=1;
}else{
utc8r++;
}
}
}
if(yuejinwei && utc8y==12){
utc8y=1;
nianjinwei=1;
}else if(yuejinwei){
utc8y++;
}
if(nianjinwei)utc8n++;



for(int col=0;col<17;col++)tempx=0;
if(utc8n>9){
sprintf(tempx, "%d", utc8n);
memcpy(TrackB4+2,tempx, 2);
}else{
TrackB4=48;
TrackB4=utc8n+48;

}

for(int col=0;col<17;col++)tempx=0;
if(utc8y>9){
sprintf(tempx, "%d", utc8y);
memcpy(TrackB4+5,tempx, 2);
} else{
TrackB4=48;
   TrackB4=utc8y+48;

}
   for(int col=0;col<17;col++)tempx=0;
if(utc8r>9){
sprintf(tempx, "%d", utc8r);
memcpy(TrackB4+8,tempx, 2);
}else{
TrackB4=48;
TrackB4=utc8r+48;

}

    for(int col=0;col<17;col++)tempx=0;
if(utc8s>9){
sprintf(tempx, "%d", utc8s);
memcpy(TrackB4+11,tempx, 2);
}else{
TrackB4=48;
TrackB4=utc8s+48;

}
    for(int col=0;col<17;col++)tempx=0;
if(utc8f>9){
sprintf(tempx, "%d", utc8f);
memcpy(TrackB4+14,tempx, 2);
}else{
TrackB4=48;
TrackB4=utc8f+48;
}

    for(int col=0;col<17;col++)tempx=0;
if(utc8m>9){
sprintf(tempx, "%d", utc8m);
memcpy(TrackB4+17,tempx, 2);
}else{
TrackB4=48;
TrackB4=utc8m+48;
}


}





页: [1]
查看完整版本: 双328p 初版 完结