久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 1432|回復(fù): 0
收起左側(cè)

單片機(jī)GPS檢測(cè)程序 通過短信控制LED燈

[復(fù)制鏈接]
ID:526724 發(fā)表于 2019-5-3 23:50 | 顯示全部樓層 |閱讀模式
include "string.h"
#include "delay.h"
#include "uart.h"
#include "timer0.h"
#include "SIMxxx.h"

sbit P10=P1^0;        //用于提示程序進(jìn)行到哪里
sbit P11=P1^1;        //用于提示程序進(jìn)行到哪里
sbit RUNING_LED=P1^2;        //程序中控制的LED燈

unsigned char xdata Display_GPGGA_Buffer[68]={0};                //用于儲(chǔ)存GPGGA的數(shù)據(jù)
unsigned int k=0,qian_a=0,hou_a=0,qian_b=0,hou_b=0,qian_c=0,hou_c=0;        //存儲(chǔ)前后逗號(hào)的位置序號(hào)的變量

bit qian_OK=0;                   //已找出前面的逗號(hào)的標(biāo)志變量
//bit First_Share_OK=0;  //已開始LCD顯示的標(biāo)志變量
bit jiajian=1;                    //進(jìn)行加或減的標(biāo)志變量
//bit Page = 0;
bit Flag_Calc_GPGGA_OK = 0;           //GPGGA完整有效的數(shù)據(jù)已收到的標(biāo)志變量

//u8 NUM[][10]={"0030","0031","0032","0033","0034","0035","0036","0037","0038","0039"};//數(shù)字編碼
//char a[10]={0,1,2,3,4,5,6,7,8,9};
//int x;
/*************  外部函數(shù)和變量聲明*****************/
/*******************************************************************************
* 函數(shù)名 : main
* 描述   : 主函數(shù)
* 輸入   :
* 輸出   :
* 返回   :
* 注意   :
*******************************************************************************/
void main(void)
{
        unsigned char i = 0;
        u8 res;
        Uart1Init();                        
        Timer0Init();
        EA=1;        //開總中斷
        res=1;
        P10=0;P11=0;
        while(res)
        {
                res=sim900a_work_test();
        }
        res=1;
        while(res)
        {
                res=sim900a_enmessage_mode_out();
        }
        P10=1;
        res=1;

        Delay_ms(10);

        clrStruct();
        while(1)
        {
                parseGpsBuffer();
                if(Flag_Rec_Message==1)        
                {
                        Flag_Rec_Message=0;
                        res=SIM_HANDLE_MESSAGE_CMD();

                        if (
                           Flag_Calc_GPGGA_OK  == 1
                && RX_Buffer[1] == 'G'
                && RX_Buffer[3] == 'G'
                && RX_Buffer[4] == 'G'
                && RX_Buffer[5] == 'A'
                && (RX_Buffer[28] == 'N'|| RX_Buffer[28] == 'S')
                && (RX_Buffer[41] == 'E'|| RX_Buffer[41] == 'W')
                                )                                                                                        //確認(rèn)是否收到"GPGGA"這一幀完整有效的數(shù)據(jù)
                        
                        if(res)
                        {
                                if(res==1)        
                                {
                                RUNING_LED=1;
//                                if(res==1)
//                                {
//                                        for(x=0;x<10;x++)
//                                        {
//                                                a[x]=NUM[x];
//                                        }
//                                }
                                res=sim900a_send_chmessage("00310037003600380039003200380039003000310039","4F60597D00680065006C006C006F");
                                }
                                else if(res==2)        
                                {
                                RUNING_LED=0;
//                                if(res==2)
//                                {
//                                        for(x=0;x<10;x++)
//                                        {
//                                                a[x]=NUM[x];
//                                        }
//                                }
                                res=sim900a_send_chmessage("00310037003600380039003200380039003000310039","4F60597D00680065006C006C006F");
                                 }
                        }
                }               
        }        
}


void errorLog(int num)
{
        
        while (1)
        {
                  UartPrintf("ERROR");
                UartPrintASCII(num+0x30);
                UartPrintf("\r\n");
        }
}


void parseGpsBuffer()
{
        char *subString;
        char *subStringNext;
        char i = 0;
        if (Save_Data.isGetData)
        {
                Save_Data.isGetData = false;
                UartPrintf("**************\r\n");
                UartPrintf(Save_Data.GPS_Buffer);

               
                for (i = 0 ; i <= 6 ; i++)
                {
                        if (i == 0)
                        {
                                if ((subString = strstr(Save_Data.GPS_Buffer, ",")) == NULL)
                                        errorLog(1);        //解析錯(cuò)誤
                        }
                        else
                        {
                                subString++;
                                if ((subStringNext = strstr(subString, ",")) != NULL)
                                {
                                        char usefullBuffer[2];
                                        switch(i)
                                        {
                                                case 1:memcpy(Save_Data.UTCTime, subString, subStringNext - subString);break;        //獲取UTC時(shí)間
                                                case 2:memcpy(usefullBuffer, subString, subStringNext - subString);break;        //獲取UTC時(shí)間
                                                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;        //獲取經(jīng)度信息
                                                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);        //解析錯(cuò)誤
                                }
                        }


                }
        }
}


void printGpsBuffer()
{
        if (Save_Data.isParseData)
        {
                Save_Data.isParseData = false;
               
                UartPrintf("Save_Data.UTCTime = ");
                UartPrintf(Save_Data.UTCTime);
                UartPrintf("\r\n");

                if(Save_Data.isUsefull)
                {
                        Save_Data.isUsefull = false;
                        UartPrintf("Save_Data.latitude = ");
                        UartPrintf(Save_Data.latitude);
                        UartPrintf("\r\n");


                        UartPrintf("Save_Data.N_S = ");
                        UartPrintf(Save_Data.N_S);
                        UartPrintf("\r\n");

                        UartPrintf("Save_Data.longitude = ");
                        UartPrintf(Save_Data.longitude);
                        UartPrintf("\r\n");

                        UartPrintf("Save_Data.E_W = ");
                        UartPrintf(Save_Data.E_W);
                        UartPrintf("\r\n");
                }
                else
                {
                        UartPrintf("GPS DATA is not usefull!\r\n");
                }
               
        }
}


8 通過短信控制LED燈-STC89C52.zip

188.33 KB, 下載次數(shù): 10, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 成人激情视频免费观看 | 男女污污网站 | 国产超碰人人爽人人做人人爱 | 欧美一区二区三区 | 干干干操操操 | 久久久妇女国产精品影视 | 伊人狠狠 | 色婷婷国产精品 | 天天射影院 | 成人精品视频在线观看 | 亚洲人成人一区二区在线观看 | 精品久久久久久一区二区 | 国外成人在线视频 | 日韩精品一区二区三区老鸭窝 | 99久久亚洲 | 日韩精品二区 | 午夜精品网站 | 亚洲h在线观看 | 久久久久久国产精品免费免费狐狸 | 久久综合九九 | 国产日韩欧美二区 | 中文字幕精品一区久久久久 | 91久久电影 | 成年无码av片在线 | www久久爱| 自拍偷拍亚洲一区 | 国产色播av在线 | 免费国产一区二区 | 盗摄精品av一区二区三区 | 国产综合久久久 | 亚洲国产成人av好男人在线观看 | 九色 在线| 日韩欧美高清 | 久久艹免费视频 | 亚洲成在线观看 | 久久亚洲二区 | 日韩欧美一区二区三区 | 亚洲五码在线 | 99久久婷婷国产精品综合 | 黄色三级在线播放 | 欧美性生活一区二区三区 |