Zuviel Werbung? - > Hier kostenlos beim SPS-Forum registrieren

Ergebnis 1 bis 5 von 5

Thema: Libnodave und Date_Time per VB.NET

  1. #1
    Registriert seit
    30.06.2007
    Ort
    Minden (Westf.)
    Beiträge
    178
    Danke
    42
    Erhielt 21 Danke für 21 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    ich nutze (mal wieder) Libnodave, um Daten aus einer S7 in Datenbanken zu schaufeln. Erst einmal muss ich sagen Libnodave ist echt super !
    Nun aber zu meinem Problem:
    DATE_TIME soll gelesen werden, aus einem Datenbaustein und dann ins .NET Format 'DATE' (#01/01/001 12:00:00 AM#) konvertiert werden. Die Anwendung wird mit VB.NET erstellt.
    Für ein bisschen Hilfe bin ich sehr dankbar.
    Gruß
    Stefan


    Zitieren Zitieren Libnodave und Date_Time per VB.NET  

  2. #2
    Avatar von StefanK
    StefanK ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.06.2007
    Ort
    Minden (Westf.)
    Beiträge
    178
    Danke
    42
    Erhielt 21 Danke für 21 Beiträge

    Idee

    Hi, ich hab's!

    Code:
                Dim rv(8) As String
                res = dc(conn).readBytes(nArea, nDBnumber, nStart, 8, buf)
                For i As Integer = 1 To 8
                    rv(i) = CInt(dc(conn).getU8.ToString("X")).ToString
                Next
    Eigentlich ganz einfach. Hab's nur nich geschnallt weil die Funktion von einer meiner anderen kopiert habe und das passte halt nicht ganz.

    Gruß
    Stefan
    Geändert von StefanK (20.10.2010 um 21:04 Uhr)


    Zitieren Zitieren Ich hab'ssssss  

  3. #3
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard

    Und wo wird das in deinem Code jetzt ins .Net Format DateTime Konvertiert?
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren DateTime  

  4. #4
    Avatar von StefanK
    StefanK ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.06.2007
    Ort
    Minden (Westf.)
    Beiträge
    178
    Danke
    42
    Erhielt 21 Danke für 21 Beiträge

    Standard

    Hier mein Weg:

    Code:
                res = dc(conn).readBytes(nArea, nDBnumber, nStart, 6, buf)
                For i As Integer = 1 To 6
                    nValue += CInt(dc(conn).getU8.ToString("X")).ToString("00")
                Next
                Dim myDate As Date = DateTime.ParseExact(nValue, "yyMMddHHmmss", System.Globalization.CultureInfo.InvariantCulture)
    Die ersten 6 Byte sind hierfür ausreichend und das kommt dabei raus: #10/22/2010 11:57:39 PM# (Debugger).

    Gruß
    Stefan


    Zitieren Zitieren Hab's noch mal geändert/optimiert  

  5. #5
    Registriert seit
    17.06.2004
    Ort
    Offenau
    Beiträge
    3.745
    Danke
    209
    Erhielt 421 Danke für 338 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also Ich hab die Funktion in meine rlibnodave.net.cs welche in meiner connection Lib integriert ist so gemacht:

    Code:
    public static DateTime getDateTimefrom(byte[] b, int pos)
        {
            int jahr, monat, tag, stunde, minute, sekunde, mili;
            int bt = b[pos];
            //BCD Umwandlung
            bt = (((bt >> 4)) * 10) + ((bt & 0x0f));
            if (bt < 90)
                jahr = 2000;
            else
                jahr = 1900;
            jahr += bt;
    
            //Monat
            bt = b[pos + 1];
            monat = (((bt >> 4)) * 10) + ((bt & 0x0f));
    
            //Tag
            bt = b[pos + 2];
            tag = (((bt >> 4)) * 10) + ((bt & 0x0f));
    
            //Stunde
            bt = b[pos + 3];
            stunde = (((bt >> 4)) * 10) + ((bt & 0x0f));
    
            //Minute
            bt = b[pos + 4];
            minute = (((bt >> 4)) * 10) + ((bt & 0x0f));
    
            //Sekunde
            bt = b[pos + 5];
            sekunde = (((bt >> 4)) * 10) + ((bt & 0x0f));
    
            //Milisekunden (werden noch nicht verarbeitet...)
            bt = b[pos + 6];
            mili = (((bt >> 4)) * 10) + ((bt & 0x0f));
    
            //Wochentag
            bt = b[pos + 7];
            try
            {
                return new DateTime(jahr, monat, tag, stunde, minute, sekunde, mili);
            }
            catch(Exception ex)
            {
                return new DateTime(1900, 01, 01, 00, 00, 00);
            }
        }
    ---------------------------------------------
    Jochen Kühner
    https://github.com/jogibear9988/DotN...ToolBoxLibrary - Bibliothek zur Kommunikation mit PLCs und zum öffnen von Step 5/7 Projekten
    Zitieren Zitieren hmmm...  

  6. Folgender Benutzer sagt Danke zu Jochen Kühner für den nützlichen Beitrag:

    StefanK (24.10.2010)

Ähnliche Themen

  1. Antworten: 0
    Letzter Beitrag: 09.09.2010, 00:27
  2. ÄÖnderungen am libnodave.net.cs File von libnodave
    Von Jochen Kühner im Forum Hochsprachen - OPC
    Antworten: 5
    Letzter Beitrag: 12.05.2010, 16:56
  3. Date_Time Struktur
    Von Nerowinger84 im Forum HMI
    Antworten: 0
    Letzter Beitrag: 15.03.2010, 16:56
  4. S7 Date_Time Year als Integerwert
    Von Guste im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 10.07.2009, 15:58
  5. Antworten: 3
    Letzter Beitrag: 05.12.2007, 07:03

Lesezeichen

Berechtigungen

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