Εμφάνιση αποτελεσμάτων : 1 έως 10 από 44

Θέμα: Data logging

Threaded View

Προηγούμενο μήνυμα Προηγούμενο μήνυμα   Επόμενο Μήνυμα Επόμενο Μήνυμα
  1. #25
    Εγγραφή
    08-01-10
    Μηνύματα
    1.809
    Thanked
    4003
    Rides
    0

    Arrow

    Λοιπόν.

    Η πλατφόρμα που χρησιμοποιώ πλέον είναι το διάσημο εδώ και λίγο καιρό Raspberry PI https://www.raspberrypi.org/quick-start-guide

    Είναι ένα linux box με ARM cpu που στοιχίζει μόλις 25$
    Έχει άπειρες εφαρμογές σαν συσκευή.

    Ξαναέγραψα λοιπόν τα πράγματα που κάνει το Raspberry να συνδέεται με bluetooth με το GPS και το OBD.
    Επίσης, ξαναέγραψα τον κώδικα για το GPS data acquisition και προς το παρών κάνω log gpstime,latitude,longitude,speed(km/h),fix,satellites,altitude(m)

    Εδώ και ο κώδικας για τους πιο περίεργους

    Κώδικας:
    #include <iostream>
    #include <fstream>
    #include <string>
    #include <boost/regex.hpp>
    
    using namespace std;
    
    int main(int argc, const char *argv[])
    {
            string line;
            ifstream myfile ("/dev/rfcomm0");
    
            // get the logfile from the input
            string mylogfile = argv[1];
            cout << mylogfile << endl;
    
            ofstream logfile;
            logfile.open((mylogfile).c_str());
    
            string gpstime,gpslatitude,gpslongitude,gpsfix,gpssat,gpsaltitude,gpsspeedtext;
            int gpsspeed;
    
            // print the header
            logfile << "# header information" << endl;
            logfile << "# gpstime,latitude,longitude,speed(km/h),fix,satellites,altitude(m)" << endl;
    
    
            if(myfile.is_open())
            {
    
                    while(!myfile.eof())
                    {
    
                    getline (myfile,line);
    
                    boost::regex gprmc(".+GPRMC,\\d+\\.\\d+,\\w,\\d+\\.\\d+,\\w,\\d+\\.\\d+,\\w,(\\d+\\.\\d+).+");
                    boost::smatch mgprmc;
                    if(boost::regex_match(line, mgprmc, gprmc,  boost::match_extra))
                            {
                            gpsspeedtext=mgprmc[1];
                            istringstream speedbuf(gpsspeedtext);
                            speedbuf >> gpsspeed;
                            // now we need to convert it to kilometers
                            gpsspeed=1.852*gpsspeed;
                            } // if
    
                    boost::regex gpgga(".+GPGGA,(\\d+\\.\\d+),(\\d+\\.\\d+,\\w),(\\d+\\.\\d+,\\w),(\\d+),(\\d+),\\d+\\.\\d+,(\\d+\\.\\d+).+");
                    boost::smatch mgpgga;
                    if(boost::regex_match(line, mgpgga, gpgga, boost::match_extra))
                            {
                            gpstime=mgpgga[1];
                            gpslatitude=mgpgga[2];
                            gpslongitude=mgpgga[3];
                            gpsfix=mgpgga[4];
                            gpssat=mgpgga[5];
                            gpsaltitude=mgpgga[6];
    
                    logfile << gpstime << "," << gpslatitude << "," << gpslongitude << "," << "," << gpsspeed << gpsfix << "," << gpssat << "," << gpsaltitude << endl;
                            }
    
                    } // while
    
            myfile.close();
            logfile.close();
            } // if
            return 0;
    }

  2. The Following 6 Users Say Thank You to alexk For This Useful Post:

    BILL007 (06-10-12), bill_m3 (06-10-12), m-power_01 (06-10-12), SoNiC_77Gr (06-10-12), Thomelef (06-10-12), wheelman (07-10-12)

Ετικέτες Θέματος

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύετε νέα θέματα
  • Δεν μπορείτε να απαντάτε σε θέματα
  • Δεν μπορείτε να δημοσιεύετε συνημμένα
  • Δεν μπορείτε να επεξεργάζεστε τις δημοσιεύσεις σας
  •  
BACK TO TOP