亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? xxx_mc_gpx.cpp

?? GPS Source code with C++. It is usefull for introducing gps
?? CPP
字號:
/*
  Name:         mc_gpx.cpp
  Copyright:    Keins
  Author:       Thomas Wiens
  Date: 19.02.07 18:04
  Description:  The stored Gps points are read from the controller and saved as trackpoints in the gpx format.

*/
/* Using the serial com port
   MSDN:
   http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnfiles/html/msdn_serial.asp
 
   serial com port usage class
   http://www.winapi.net/index.php?inhalt=t3
*/
#include "mc_gpx.h"
#define DEBUG

using namespace std;

ofstream output;
CSerial com;

const char GpxHeader[] =  "<?xml version=\"1.0\"?>\n"
                    "<gpx version=\"1.0\"\n"
                    " creator=\"GPS-Logger by T.Wiens\"\n"
                    " xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n"
                    " xmlns=\"http://www.topografix.com/GPX/1/0\"\n"
                    " xsi:schemaLocation=\"http://www.topografix.com/GPX/1/0"
                    " http://www.topografix.com/GPX/1/0/gpx.xsd\">\n";
                    
// *****************************************************************************
// function:
//                       get_data_from_logger
// 躡ergabeparameter:
//                       int com_port
//                                   Number of the serial port that will be opened
//                       char trackname
//                                   name of the track (max. 50 characters)
//                       char track_description            
//                                   description of the track (max. 50 characters)
//                       char waypoint_names
//                                   description of the waypoints (if available, the numbers will be increased)
//  R點kgabewert:
//                       0 -> no failure
//                       >0 -> Failure code see headerfile                                                                                                                                                            
// ***************************************************************************** 
int get_data_from_logger(int com_port, char filename[50],char trackname[50], char track_description[50], char waypoint_names[50]) {
    tGPXtrackPoint gpx;
    const char trkpt_request[] = "$TREQ*\r\n";
    const char waypt_request[] = "$WREQ*\r\n";
    char buf[61], temp [20];
    int datasets;
        
    // *** Open com port **
    if(!com.Open(com_port, 4800, 8, NOPARITY, ONESTOPBIT)) {
        cout << "error: Com port could not be opened\n";
        return GPX_ERR_SERIAL_OPEN;
    }
    // *** Open file ***
    output.open(filename, ios_base::out);
    if (!output.good()){
        cout << "error: file " << filename << " could not be opened." << endl;
        return GPS_ERR_FILE_OPEN;
    }
    // write GPX-Header
    output << GpxHeader;
    output << "<trk>\n";
    output << "<name>" << trackname << "</name>\n";
    output << "<desc>" << track_description << "</desc>\n";
    output << "<trkseg>\n";    
    
    // request for number of stored location files
    com.SendData(trkpt_request, sizeof(trkpt_request));
    // get answer
    // answer in form $TCNT,12*<CR><NL>       
    if(com.ReadData(buf, 20)) {
        extract_data(buf, "$TCNT,", "*\r\n");
        datasets = atoi(buf);
        cout << "there are"  << datasets << " locations stored" << endl;
    }
    else {
        cout << "error: device does not respond correctly" << endl;
        com.Close();
        return GPS_ERR_CONTR_COM;
    }    
    
    // get Trackpoint files
    for (int i = 0; i < datasets; i++) {
        if (!get_gps_trkPoint(i, buf)) { 
            get_gpx_data(buf, &gpx);  
            add_gpx_trkPoint_to_file(&gpx);  
        }        
        else {
            com.Close();   
            return GPS_ERR_CONTR_COM;
        }
        
    } 
    // end of track segment
    output << "</trkseg>\n";
    output << "</trk>\n";     
    
    // request for number of strored Waypoint files
    com.SendData(waypt_request, sizeof(waypt_request));
    if(com.ReadData(buf, 20)) {
        extract_data(buf, "$WCNT,", "*\r\n");
        datasets = atoi(buf);
        cout << "there are"  << datasets << " Waypoints stored" << endl;
    }
    else {
        cout << "error: device does not respond correctly" << endl;
        com.Close();
        return GPS_ERR_CONTR_COM;
    }  
    if (datasets > 0) {
        // get Waypoint files
        for (int i = 0; i < datasets; i++) {   
            if (!get_gps_trkPoint(get_waypoint(i), buf)) { 
                get_gpx_data(buf, &gpx);  
                sprintf(temp, "%s %d", waypoint_names, i + 1);
                add_gpx_wayPoint_to_file(&gpx, temp);  
            }
            else {
                com.Close();                           
                return GPS_ERR_CONTR_COM;
            }
        }       
    }
    // end of GPX segment
    output << "</gpx>\n";   
    output.close();   
    com.Close();    
    return 0;
}

// *****************************************************************************
// Get Trackpoint
// ***************************************************************************** 
int get_gps_trkPoint(int trkpt_number, char *line) {
    char buf[61], str[20];
    int ret_chars;
    // making the request string
    strcpy(str, "$TSET,");
    sprintf(buf, "%i", trkpt_number);
    strcat(str, buf);
    strcat(str, "*\r\n");   
    // sending the request
    com.SendData(str, strlen(str));
    ret_chars = com.ReadData(buf, TRKPT_DATASET_LENGTH);        
    // calculating the answer
    if (ret_chars) {
        extract_data(buf, "$", "*\r\n");
        if (strlen(buf) == TRKPT_DATASET_LENGTH - 4) {                             
            #ifdef DEBUG
            cout << "File Nr. " << trkpt_number + 1 << ": " << buf << endl;   
            #endif    
            strcpy(line, buf);              
        }
        else {
            #ifdef DEBUG 
            cout << "Error in file length!" << endl;
            #endif
            return GPS_ERR_CONTR_COM;
        }                     
    }
    else {
        #ifdef DEBUG 
        cout << "error: device does not respond correctly" << endl;
        #endif
        return GPS_ERR_CONTR_COM;    
    }
    return 0; 
}

// ***************************************************************************** 
// Get Waypoint
// ***************************************************************************** 
int get_waypoint(int point_number) {
    char buf[61], str[20];  
    // making the request string
    strcpy(str, "$WSET,");
    sprintf(buf, "%i", point_number);
    strcat(str, buf);
    strcat(str, "*\r\n");   
    // send request
    com.SendData(str, strlen(str));     
    // calculating the answer
    if (com.ReadData(buf, WAYPT_DATASET_LENGTH)) {
        extract_data(buf, "$", "*\r\n");
        if (strlen(buf) == WAYPT_DATASET_LENGTH - 4) {                             
            #ifdef DEBUG
            cout << "File Nr. " << point_number + 1 << ": " << buf << endl;   
            #endif
            buf[5] = '\0';    
            return (atoi(buf));                   
        }
        else {
            #ifdef DEBUG 
            cout << "Error in file length!" << endl;
            #endif
            return GPS_ERR_CONTR_COM;
        }                     
    }
    else {
        #ifdef DEBUG 
        cout << "error: device does not respond correctly" << endl;
        #endif
        return GPS_ERR_CONTR_COM;    
    }     
}

// *****************************************************************************       
// Sorry, koksal i dont really know how to translate this part. I'll try:
// a pointer ??? is put on a string. In beginning and end, this character string is removed.
// Es wird ein Zeiger auf einen String 黚ergeben. Bei Auftreten von
// begin und end werden diese Zeichenketten entfernt.
// ***************************************************************************** 
int extract_data(char *ext_string, char begin[10], char end[10]) {
    char *ptr_anf;
    char *ptr_end;
    char buf[100];
    char temp[100];    
    strncpy(buf, ext_string, 99);    
    ptr_anf = strstr(buf, begin);
    ptr_end = strstr(buf, end);       
    if (ptr_anf && ptr_end) {
        *ptr_end = '\0';
        strcpy(temp, ptr_anf + strlen(begin)); 
        strcpy(ext_string, temp);
        return 0;
    }
    else {
        return 1;       // pointer ??? string not found
    }
}

// *****************************************************************************  
// Changing the data into the GPX file format
// *****************************************************************************  
void get_gpx_data(char *line, tGPXtrackPoint *gpx) {
    double degree, minutes, dezimal_lat, dezimal_lon;
    char temp[20];
    int altitude, i;   
    
    // making the time stamp
    // 0000160806 0000194137 0052153447 0008031685 0079NE
    // 0123456789 0123456789 0123456789 0123456789 012345    
    strcpy(gpx->datetime, "20");                                                 // In the 20th century
    gpx->datetime[2] = line[8];
    gpx->datetime[3] = line[9];
    gpx->datetime[4] = '-';
    gpx->datetime[5] = line[6];
    gpx->datetime[6] = line[7];
    gpx->datetime[7] = '-';
    gpx->datetime[8] = line[4];
    gpx->datetime[9] = line[5];
    gpx->datetime[10] = 'T';
    gpx->datetime[11] = line[14];
    gpx->datetime[12] = line[15];
    gpx->datetime[13] = ':';
    gpx->datetime[14] = line[16];
    gpx->datetime[15] = line[17];
    gpx->datetime[16] = ':';
    gpx->datetime[17] = line[18];
    gpx->datetime[18] = line[19];
    gpx->datetime[19] = 'Z';
    gpx->datetime[20] = '\0';
    #ifdef DEBUG
    cout << "datetime: " << gpx->datetime << endl;   
    #endif
    // *** copying the latitude numbers ***    
    // latitude 0052153407
    for (i = 0; i < 4; i++) {
        temp[i] = line[i + 20];
    }
    temp[4] = '\0';
    degree = atof(temp); 
    #ifdef DEBUG   
    cout << "latitude degree as text: " << temp << endl;
    #endif
    temp[0] = line[24];
    temp[1] = line[25];
    temp[2] = '.';
    for (i = 0; i < 5; i++) {
        temp[i + 3] = line[i + 26];
    }   
    temp[7] = '\0';
    #ifdef DEBUG   
    cout << "minutes as text: " << temp << endl;
    #endif
    minutes = atof(temp);    
    dezimal_lat = degree + minutes / 60;   
    // Southern latitude is negative
    if (line[44] == 'S')
        dezimal_lat = -dezimal_lat;
    #ifdef DEBUG
    cout << "degree: " << degree << " minutes: " << minutes << " latitude degree decimal: " << dezimal_lat << endl;
    #endif
    sprintf(gpx->latitude, "%.6f", dezimal_lat);
    #ifdef DEBUG
    cout << "Text: " << gpx->latitude << endl;
    #endif
    // longitude degree
    for (i = 0; i < 4; i++) {
        temp[i] = line[i + 30];
    }
    temp[4] = '\0';
    degree = atof(temp);    
    temp[0] = line[34];
    temp[1] = line[35];
    temp[2] = '.';
    for (i = 0; i < 4; i++) {
        temp[i + 3] = line[i + 36];
    }   
    temp[7] = '\0';
    minutes = atof(temp);    
    dezimal_lon = degree + minutes / 60;   
    // Western longitude degree is negative
    if (line[45] == 'W')
        dezimal_lat = -dezimal_lon;
    #ifdef DEBUG
    cout << "degree: " << degree << " Minutes: " << minutes << " Longitude degree decimal: " << dezimal_lon << endl;
    #endif
    sprintf(gpx->longitude, "%.6f", dezimal_lon);
    #ifdef DEBUG
    cout << "Text: " << gpx->longitude << endl;    
    #endif    
    // Altitude
    temp[0] = line[40];
    temp[1] = line[41];
    temp[2] = line[42];
    temp[3] = line[43];
    temp[4] = '\0';
    altitude = atoi(temp);
    #ifdef DEBUG
    cout << "Altitude: " << altitude << endl;
    #endif
    sprintf(gpx->altitude, "%d", altitude);
    #ifdef DEBUG
    cout << "Text: " << gpx->altitude << endl;    
    #endif  
}

void add_gpx_trkPoint_to_file(tGPXtrackPoint *gpx) {
    output << "<trkpt lat=\"" << gpx->latitude << "\" ";
    output << "lon=\"" << gpx->longitude << "\">\n";
    output << "<ele>" << gpx->altitude << "</ele>\n";
    output << "<time>" << gpx->datetime << "</time>\n";
    output << "</trkpt>\n";
}

void add_gpx_wayPoint_to_file(tGPXtrackPoint *gpx, char *pointname) {
    output << "<wpt lat=\"" << gpx->latitude << "\" ";
    output << "lon=\"" << gpx->longitude << "\">\n";
    output << "<name>" << pointname << "</name>\n";
    output << "<type>Waypoint</type>\n";
    output << "</wpt>\n";
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一个色在线综合| 韩国理伦片一区二区三区在线播放| 精品国产青草久久久久福利| 亚洲色图在线播放| 国产成人免费在线观看| 99久久精品一区| 国产欧美日韩麻豆91| 亚洲成人综合在线| 欧美午夜理伦三级在线观看| 亚洲女同ⅹxx女同tv| 99视频一区二区| 国产精品视频在线看| 成人一级片在线观看| 欧美韩国一区二区| 成人激情av网| 国产亚洲精品免费| 高清视频一区二区| 国产精品视频线看| 懂色av一区二区三区免费看| 国产精品你懂的| 欧美成人免费网站| 亚洲一区二区不卡免费| 亚洲人123区| 激情综合一区二区三区| 色老综合老女人久久久| 国产精品色婷婷久久58| 成人小视频免费观看| 国产清纯在线一区二区www| 成人av电影在线| 亚洲女同ⅹxx女同tv| 欧美日韩一卡二卡| 日韩综合一区二区| 精品第一国产综合精品aⅴ| 国产成人精品一区二区三区四区| 69p69国产精品| 国产一区在线观看视频| 国产精品国产三级国产| 成人高清av在线| 亚洲最快最全在线视频| 日韩欧美中文一区| 国产一区不卡精品| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 欧美探花视频资源| 午夜激情久久久| 精品成人私密视频| eeuss鲁片一区二区三区 | 一区二区三区四区激情| 91精品国产麻豆国产自产在线| 91丨九色丨黑人外教| 日韩欧美视频在线 | 男女男精品网站| 亚洲男人都懂的| 欧美sm美女调教| 911精品国产一区二区在线| 成人丝袜18视频在线观看| 一区二区国产视频| 精品日本一线二线三线不卡| 一本大道久久a久久精品综合| caoporm超碰国产精品| 欧美日韩国产一区| 国产在线精品视频| 青娱乐精品视频| 国产精品久久二区二区| 欧美一区二区三区性视频| 色噜噜夜夜夜综合网| 福利视频网站一区二区三区| 日韩高清在线不卡| 午夜欧美2019年伦理| 亚洲人成7777| 欧美国产精品一区二区| 久久毛片高清国产| 欧美一级午夜免费电影| 在线免费不卡电影| 91久久精品网| av爱爱亚洲一区| 国产黄色精品网站| 国产在线麻豆精品观看| 美女一区二区三区| 欧美激情在线一区二区三区| 国产亚洲午夜高清国产拍精品| 亚洲精品日韩一| av在线播放一区二区三区| 国产在线乱码一区二区三区| 亚洲成a天堂v人片| 午夜精品一区二区三区电影天堂| 自拍偷在线精品自拍偷无码专区| 一区二区中文视频| 国产精品久久久久影院| 国产亚洲综合在线| 国产欧美精品国产国产专区 | 日本高清不卡aⅴ免费网站| 色先锋久久av资源部| 99久久精品免费观看| 成年人午夜久久久| 不卡一区二区在线| 成人免费毛片aaaaa**| 成人午夜av影视| 国产成人精品三级| 国产麻豆精品视频| 97精品久久久久中文字幕| www..com久久爱| 91麻豆国产自产在线观看| 91网站最新网址| 国产欧美视频在线观看| 欧美人与性动xxxx| 91精品在线麻豆| 7777精品久久久大香线蕉| 在线不卡免费欧美| 欧美一区二区视频在线观看2020| 欧美区在线观看| 日韩三级免费观看| 精品日韩欧美在线| 亚洲精品一区二区三区蜜桃下载 | 国产免费久久精品| 亚洲国产激情av| 亚洲日本电影在线| 一区二区高清视频在线观看| 美女视频黄频大全不卡视频在线播放| 老鸭窝一区二区久久精品| 久久福利资源站| 成人精品国产福利| 欧美三级电影在线看| 国产亚洲综合在线| 亚洲午夜久久久久中文字幕久| 日本三级亚洲精品| av资源站一区| 4hu四虎永久在线影院成人| 亚洲欧美综合网| 一区在线观看视频| 久久精品国产亚洲一区二区三区| 国产原创一区二区三区| 欧美性大战久久久| 欧美xingq一区二区| 国产精品久久二区二区| 久久国产生活片100| av午夜精品一区二区三区| 欧美偷拍一区二区| 国产精品丝袜一区| 日本aⅴ亚洲精品中文乱码| www.av亚洲| 日韩免费电影网站| 亚洲乱码国产乱码精品精98午夜| 欧美性猛交xxxx乱大交退制版| 56国语精品自产拍在线观看| 中文字幕欧美一区| 九九精品一区二区| 日本电影欧美片| 中文字幕第一区第二区| 三级在线观看一区二区| 成人h动漫精品一区二| 久久夜色精品国产欧美乱极品| 亚洲精品久久7777| 成人免费av在线| 亚洲精品一区二区三区精华液 | 日韩电影免费在线观看网站| 国产成人免费在线观看不卡| 欧美精品乱人伦久久久久久| 国产精品国产精品国产专区不片| 欧美aaa在线| 欧美少妇bbb| 亚洲色图.com| 盗摄精品av一区二区三区| 日韩你懂的电影在线观看| 亚洲一区在线播放| av一区二区久久| 99久久精品国产毛片| 日本韩国一区二区三区视频| 国产精品国产自产拍高清av王其 | 欧美日韩视频专区在线播放| 亚洲综合色噜噜狠狠| 色综合夜色一区| 精品理论电影在线观看| 久久精品国产久精国产| 日韩午夜精品视频| 久久精品国产亚洲5555| 欧美成人精品二区三区99精品| 看片的网站亚洲| 欧美精品一区二区三区四区| 欧美伦理视频网站| 亚洲国产综合色| 9191成人精品久久| 九九在线精品视频| 久久精品亚洲乱码伦伦中文| 东方aⅴ免费观看久久av| 国产精品区一区二区三区| 91在线精品一区二区三区| 一区二区三区资源| 欧美日韩三级在线| 免费成人性网站| 久久精品视频一区二区| 99天天综合性| 香港成人在线视频| 日韩欧美在线影院| 国产91高潮流白浆在线麻豆 | 成人免费精品视频| 一区二区在线观看免费视频播放 | 成人晚上爱看视频| 亚洲一区二区三区不卡国产欧美| 欧美精品三级日韩久久| 国产高清精品久久久久|