- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 10 von 14

Thema: [C/C++] Raspi Systemzeit: aus Internet geupdated oder von File gelesen und expoliert?

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Du kannst das Kommdozeilen ping auch aus deinem Programm aufrufen.

    So wie hier im ersten Listing
    http://ubuntuforums.org/showthread.php?t=1803980

  2. #2
    HaWe
    Gast
    super gut!
    schon das erste Beispielprogramm funktioniert auf Anhieb!

    Code:
    if (system("ping -c1 -s1 www.google.com"))
        {
            cout<<"There is no internet connection  \n";
    }


    perfekt!

    Tausend Dank!

    - - - Aktualisiert - - -

    so, isch 'abe fertig!

    jetzt kann ich mit diesen Programmfunktionen die Internet-Verbindung überprüfen und die augenblickliche Systemzeit vorformatiert abfragen

    Code:
    #include <iostream>
    #include <stdio.h>
    #include <time.h>
    #include <string.h>
    
    
    void getdatetime(int &year, int &mon, int &day, int &hour, int &min, int &sec, int &dow) {
       time_t t = time(NULL);
       struct tm  tm = * localtime(&t);	
       
       year = (int)tm.tm_year+1900-2000, 
       mon  = (int)tm.tm_mon+1;
       day  = (int)tm.tm_mday;
       hour = (int)tm.tm_hour;
       min  = (int)tm.tm_min;
       sec  = (int)tm.tm_sec;
       dow  = (int)tm.tm_wday+1;   
         	
    }
    
    
    int main()
    {
       char sbuf[100];	
       
       int year, mon, day, hour, min, sec, dow;
    
       
       if (system( "ping -c1 -s1 www.google.de") ) {
    	  printf("internet connx failed \n");
       }
       else {
    	  printf("internet connx OK ! :) \n");
       }   
       
       getdatetime(year, mon, day, hour, min, sec, dow) ;
       sprintf( sbuf, "%d %d %d %d %d %d %d", year, mon, day, hour, min, sec, dow ); 
       printf(sbuf);
       
       getchar();
       return 0;
    }
    und die ermittelten date/time Integerwerte dann verwenden, um ggf meine RTC nicht nur manuell, sondern auch automatisch per inet zu synchronisieren....

    Code:
    /*
     * 
     * RTC DS3231
     * 
     * test demo
     * ver 0001
     * 
     */
     
     
    #include <string.h>
    #include <unistd.h>
    #include <errno.h>
    #include <stdio.h>
    #include <stdint.h>
    #include <stdlib.h>
    #include <linux/i2c-dev.h>
    #include <sys/ioctl.h>
    #include <fcntl.h>
    #include <unistd.h>
    
    #include <wiringPi.h>
    #include <wiringPiI2C.h>
    
    #define  byte  uint8_t
     
    // RTC DS3231
    #define ADDR_RTCDS3231 0x68
    int     frtcds3231;
    
    
    
    //=====================================================================================
    // Convert normal decimal numbers to binary coded decimal
    //=====================================================================================
    byte decToBcd(byte val) {  return( (val/10*16) + (val%10) );  }
    
    
    //=====================================================================================
    // Convert binary coded decimal to normal decimal numbers
    //=====================================================================================
    byte bcdToDec(byte val)  {  return( (val/16*10) + (val%16) ); }
    
    
    //=====================================================================================
    
    
    
    
    void setDS3231time( byte year, byte month, byte dayOfMonth, byte hour, byte
    minute, byte second, byte dayOfWeek)
    {
      // sets time and date data to DS3231  
      
      wiringPiI2CWriteReg8(frtcds3231, 0, decToBcd(second));      // set seconds
      wiringPiI2CWriteReg8(frtcds3231, 1, decToBcd(minute));      // set minutes
      wiringPiI2CWriteReg8(frtcds3231, 2, decToBcd(hour));        // set hours
      wiringPiI2CWriteReg8(frtcds3231, 3, decToBcd(dayOfWeek));   // ( 1=Sunday, 7=Saturday)
      wiringPiI2CWriteReg8(frtcds3231, 4, decToBcd(dayOfMonth));  // set dayOfMonth (1 to 31)
      wiringPiI2CWriteReg8(frtcds3231, 5, decToBcd(month));       // set month
      wiringPiI2CWriteReg8(frtcds3231, 6, decToBcd(year));        // set year (0 to 99)
       
    }
    
    
    //=====================================================================================
    
    
    
    int main() {
       int  year, month, dayOfMonth, hour, minute, second, dayOfWeek;   
       int i=0, check;
       char sbuf[100];   
    
       frtcds3231 = wiringPiI2CSetupInterface( "/dev/i2c-0",  ADDR_RTCDS3231 );	   
       
       printf(" RTC DS3231 \n");
       printf("Set new Date/Time:   enter 1\n");
       printf("else:   display time\n\n");
    
       i = getchar();
       
       //debug
       //printf("%d \n", i);
       
       while (i=='1') {
          // get string yy mm dd hh mm ss dw : gets() ?
          printf("yy mm dd hh mm ss dw (DayOfWeek) \n");
          check=scanf("%d %d %d %d %d %d %d", &year, &month, &dayOfMonth,  &hour, &minute, &second, &dayOfWeek);
          
          getchar();
          printf("check=%d\n", check);
          
          if(check==7) {     
    		 printf("%d \n", year); 
    		 printf("%d \n", month); 
    		 printf("%d \n", dayOfMonth); 
    		 printf("%d \n", hour); 
    		 printf("%d \n", minute); 
    		 printf("%d \n", second); 
    		 printf("%d \n", dayOfWeek); 
             setDS3231time( year, month, dayOfMonth, hour, minute, second, dayOfWeek );
          }             
          
          printf(" RTC DS3231 \n");
          printf("Set new Date/Time:   enter 1\n");
          printf("else:   display time\n\n");
          i=0;
          i = getchar();
                
       }
       
    
     
       while(1) {
         second =     bcdToDec(wiringPiI2CReadReg8 (frtcds3231, 0) & 0x7f );
         minute =     bcdToDec(wiringPiI2CReadReg8 (frtcds3231, 1) );
         hour =       bcdToDec(wiringPiI2CReadReg8 (frtcds3231, 2) & 0x3f );
         dayOfWeek =  bcdToDec(wiringPiI2CReadReg8 (frtcds3231, 3) );
         dayOfMonth = bcdToDec(wiringPiI2CReadReg8 (frtcds3231, 4) );
         month =      bcdToDec(wiringPiI2CReadReg8 (frtcds3231, 5) );
         year =       bcdToDec(wiringPiI2CReadReg8 (frtcds3231, 6) );  
    	 -
         sprintf(sbuf, "20%02d/%02d/%02d  %02d:%02d:%02d", year, month, dayOfMonth, hour, minute, second); 
         printf(sbuf);
         
         printf(" Day of week %1d: ", dayOfWeek);
         switch(dayOfWeek){
         
         case 1:
           printf("Sunday");
           break;
         case 2:
           printf("Monday");
           break;
         case 3:
           printf("Tuesday");
           break;
         case 4:
           printf("Wednesday");
           break;
         case 5:
           printf("Thursday");
           break;
         case 6:
           printf("Friday");
           break;
         case 7:
           printf("Saturday");
           break;
         }
         printf("\n");		
         
         delay (1000);	     
         
    	    	 
      }
    
      return (0);
    }
    das war der Sinn des ganzen!

    tausend Dank nochmal Mxt für deine Hilfe!


Ähnliche Themen

  1. Antworten: 63
    Letzter Beitrag: 18.02.2016, 08:43
  2. MATLAB Simulink-Stateflow: dll File aus mdl File erstellen
    Von danionbike im Forum Software, Algorithmen und KI
    Antworten: 0
    Letzter Beitrag: 11.01.2008, 18:24
  3. Unsere Forumregeln - Sollte man mal gelesen haben
    Von Frank im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 1
    Letzter Beitrag: 23.09.2005, 20:09
  4. HEX FILE MIT ODER OHNE EEPROM??
    Von sebastian.heyn im Forum AVR Hardwarethemen
    Antworten: 5
    Letzter Beitrag: 15.06.2005, 16:16
  5. asm Code in Hex oder Bin File wandeln?
    Von Octi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 03.11.2004, 22:46

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

Labornetzteil AliExpress