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

Ergebnis 1 bis 9 von 9

Thema: Libnodave

  1. #1
    Registriert seit
    17.01.2008
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo kurze frage, gibts es in der Libnodave Bibliothek eine Funktion zum Strings lesen und schreiben? Ich habe keine gefunden.

    Und wie sieht es einer funktion zur überprüfung der Verbindung aus?
    Ist so eine Funktion vorhanden?
    Zitieren Zitieren Libnodave  

  2. #2
    Registriert seit
    20.10.2003
    Ort
    Biberach
    Beiträge
    5.068
    Danke
    959
    Erhielt 1.459 Danke für 922 Beiträge

    Standard

    Hallo,

    das ist ein klassischer Fall für die Verwendung der Such-Funktion
    des Forums.
    Geändert von Gerhard Bäurle (30.01.2008 um 14:34 Uhr)
    Beste Grüße Gerhard Bäurle
    _________________________________________________________________
    Hardware: the parts of a computer that can be kicked. – Jeff Pesis

  3. #3
    stblme01 ist offline Neuer Benutzer
    Themenstarter
    Registriert seit
    17.01.2008
    Beiträge
    9
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Finde es irgendwie einfach nicht.

    Mir reicht schon ein "ja" oder "nein" als antwort auf meine fragen.

  4. #4
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    bevor ich auch noch danach suche, gebe ich lieber die Antwort:
    Nein, es ist keine Funktion zum lesen von Strings vorhanden.
    Ja, man kann mit Libnodave Strings lesen.

    Eine solche Funktion macht keinen Sinn:
    Strings sind für Libnodave einfach eine Reihe von Bytes. Die kannst du alle mit daveReadBytes lesen. Ich vergesse immer, wie die Zahl der Zeichen festgelegt wird, 0 am Ende oder Länge vorangestellt. Im ersten Fall müßte Libnodave sowieso den ganzen Speicher auslesen und dann nach der 0 suchen, im zweiten würde man mit zwei separaten Lesezugriffen nur Zeit verschwenden. Lies einfach soviele Bytes wie für den String reserviert sind. Nur wenn das mehr wären als ein Aufruf von daveReadBytes übertragen kann, würde es sich lohnen, die tatsächliche Länge auszuwerten.

  5. #5
    Registriert seit
    11.03.2009
    Beiträge
    16
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Hallo alle miteinander!
    @ Zottel danke für die Libnodave!

    Ich habe da mal auch ne frage zu Strings:

    Momentan bin ich an einem Projekt mitdem ich Daten aus einer S7-400
    auslese.Nun bin ich an die Hürde mit den Strings gestoßen!

    Nach 5 sec. überlegen und 5 zeilen Code spuckt mein programm mir meinen String aus!Aber immer nur maximal 6 Zeichen!

    Habe ich in meinem DB string[50] angelegt und gefüllt liest er mir immer noch nur 6 zeichen aus ich kann machen was ich will!

    In der .dll steht ja drin das der pointer immer auf das nächste byte springt!
    aber warum nicht über das 6.byte hinaus?

    Code:
    'Aufruf:
    txtKassettenName.Text = com.GetVal(DBOffset + cbKassettenAuswahl.SelectedIndex, 6, 4)
    
    'Funktion:
    Private Function getstring() As String 
    
            Dim i As Integer
            Dim zeichen As String
            zeichen = ""
    
            For i = 0 To 4
                zeichen = zeichen & Chr(dc.getU8) 
            Next i
            Return zeichen
    
        End Function
    Das in der For schleife nur 4 steht ist beabsichtigt! Aber wenn ich den Wert auf 100 ändere,dann leist er mir die ersten 6 zeichen aus obwohl noch 44 im String stehen!
    Die funktion getU8 rückt sich ja automatisch eins weiter!
    Ich weis net warum der immer nur 6 Zeichen liest!
    kann mir von euch jemand helfen?
    Geändert von paddy_cmd (11.03.2009 um 15:46 Uhr)

  6. #6
    Registriert seit
    19.06.2003
    Beiträge
    2.200
    Danke
    85
    Erhielt 259 Danke für 175 Beiträge

    Standard

    Zitat Zitat von paddy_cmd Beitrag anzeigen
    Hallo alle miteinander!
    @ Zottel danke für die Libnodave!

    Ich habe da mal auch ne frage zu Strings:

    Momentan bin ich an einem Projekt mitdem ich Daten aus einer S7-400
    auslese.Nun bin ich an die Hürde mit den Strings gestoßen!

    Nach 5 sec. überlegen und 5 zeilen Code spuckt mein programm mir meinen String aus!Aber immer nur maximal 6 Zeichen!

    Habe ich in meinem DB string[50] angelegt und gefüllt liest er mir immer noch nur 6 zeichen aus ich kann machen was ich will!

    In der .dll steht ja drin das der pointer immer auf das nächste byte springt!
    aber warum nicht über das 6.byte hinaus?

    Code:
    'Aufruf:
    txtKassettenName.Text = com.GetVal(DBOffset + cbKassettenAuswahl.SelectedIndex, 6, 4)
    
    'Funktion:
    Private Function getstring() As String 
    
            Dim i As Integer
            Dim zeichen As String
            zeichen = ""
    
            For i = 0 To 4
                zeichen = zeichen & Chr(dc.getU8) 
            Next i
            Return zeichen
    
        End Function
    Das in der For schleife nur 4 steht ist beabsichtigt! Aber wenn ich den Wert auf 100 ändere,dann leist er mir die ersten 6 zeichen aus obwohl noch 44 im String stehen!
    Die funktion getU8 rückt sich ja automatisch eins weiter!
    Ich weis net warum der immer nur 6 Zeichen liest!
    kann mir von euch jemand helfen?
    Mit diesem Code kann ich nichts sagen. Was passiert denn nach 6.Zeichen? Gibt es einen Fehler? Oder sinnlose Zeichen?
    Was bewirkt das '&' in VB.Net? Zeichenverkettung???
    Probier mal:
    Code:
    'Funktion:
    Private Function test()
    
            For i = 0 To 100
                Console.write(dc.getU8) // oder wie das heißt....
            Next i
        End Function
    Das oder so ähnlich sollte dir einfach die numerischen Werte der Bytes im Puffer von dc. liefern.
    Vielleicht geht bei der Umwandlung gewisser Werte (0, Steuerzeichen, alles <32) durch Chr() was schief?
    Ob diese Werte von der SPS kamen oder einfach undefinierte/alte Inhalte des Puffers sind, ist dc.getU8 egal.
    Nach einem erfolgreichen Aufruf von dc.readBytes(..,..,..len) enthält der Puffer eben len gültige Bytes.
    Nach einem erfolgreichen Aufruf von dc.readBytes() steht der Pufferzeiger auf dem ersten Byte. In C könnte man mit getU8 auch beliebig über das Ende des Puffers hinauslesen. Ob .NET oder Windows oder der neueste Pentium das irgendwann merkt, weiß ich nicht.

  7. #7
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard

    Zitat Zitat von Zottel Beitrag anzeigen
    Was bewirkt das '&' in VB.Net? Zeichenverkettung???
    Genau das.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

  8. #8
    Registriert seit
    11.03.2009
    Beiträge
    16
    Danke
    0
    Erhielt 0 Danke für 0 Beiträge

    Standard

    Wenn ich einen String habe der string[50] lang ist,und den Auslese geht der zwar z.b 100 mal durch meine For durch, liest aber nur 6 zeichen aus und dann nichtsmehr! Es kommt einfach nichts mehr! In Vb sieht das so aus solange er am rödeln ist steht zeichen = "ASHGIJ der string ist noch net geschlossen aber wenn er dann die schleifendurchläufe fertig durch hat dan steht da zeichen = "DJHSDF" ; Gibt es ne beschränkung von getU8?
    Oder DC?
    Ich kenne mich mit dem ganzen Kram net so dolle aus!Bin mich da am reinhacken!Morgen kann ich den CODE von meiner Connection posten!
    Evtl ist d noch der Wurm drin!

    Bytes,Int,Floats,DInt kann ich alles ohne Probs lesen,, den text auch da ich nur 5 zeichen benötige, aber zu wissen warum wäre auch net schlecht!

    Danke schon mal im voruS!

    gr333z paddycmd

  9. #9
    Registriert seit
    27.10.2005
    Ort
    Schwäbisch Gmünd
    Beiträge
    5.224
    Danke
    630
    Erhielt 955 Danke für 769 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Einfach mal den Rückgabewert von dc.getU8 einer Zwisvhenvariablen zuweisen und ansehen (beim Debuggen), was hier zurückkommt. Vielleicht ist dies ja das Problem.
    Rainer Hönle
    DELTA LOGIC GmbH

    Ein Computer kann das menschliche Gehirn nicht ersetzen. Engstirnigkeit kann unmöglich simuliert werden. (Gerd W. Heyse)

Ä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. LibNoDave unter VB.Net ohne libnodave.net.dll
    Von Earny im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 09.03.2010, 18:57
  4. libnodave: Woher kommt die "libnodave.net.dll"?
    Von Thomas_v2.1 im Forum Hochsprachen - OPC
    Antworten: 2
    Letzter Beitrag: 10.11.2008, 12:07
  5. VB.Net und Libnodave
    Von oliverlorenz im Forum Simatic
    Antworten: 4
    Letzter Beitrag: 07.05.2008, 10:54

Lesezeichen

Berechtigungen

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