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

Seite 2 von 3 ErsteErste 123 LetzteLetzte
Ergebnis 11 bis 20 von 21

Thema: Wert in einer Textbox per Buttonklick mit libnodave an SPS senden (VB.net 2008 E.E.)

  1. #11
    Avatar von poppycock
    poppycock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Mir ist etwas komisches aufgefallen...

    Schreibe ich
    Code:
    [...]
    Dim Tmax(1) As Byte
    [...]
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
     Tmax(1) = TextBox6.Text
     dc.writeBytes(libnodave.daveDB, 50, 12, 2, Tmax)
    End Sub
    [...]
    so wird nur maximal ein Byte behandelt.
    D.h. wenn ich in meine Textbox einen Wert größer 127 schreibe, dann bricht das Programm mit der Fehlermeldung "Division durch 0 unzulässig." ab.

    Schreibe ich stattdessen
    Code:
    [...]
    Dim Tmax(1) As Byte
    [...]
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
     Tmax(0) = TextBox6.Text
     dc.writeBytes(libnodave.daveDB, 50, 12, 2, Tmax)
    End Sub
    [...]
    wird bei einer "1" in der Textbox der Wert 256 an den DB geschickt.
    Bei einer "2" der Wert 512 etc.

    Meine Lösung funktioniert zwar, aber die ist nicht zufriedenstellend.
    Ich denke, ich muss den Integerwert aus der Textbox in zwei einzelne Byte aufteilen, oder sehe ich das falsch?
    Wenn ja, dann wie? Ich bin kein VB.net-Experte...

    Ich glaube nicht, dass ich der einzige mit diesem Problem sein werde.
    Aber irgendwie drehe ich mich im Kreis...
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

  2. #12
    Registriert seit
    27.05.2004
    Ort
    Thüringen/Berlin
    Beiträge
    12.218
    Danke
    533
    Erhielt 2.696 Danke für 1.948 Beiträge

    Standard

    Eine Möglichkeit besteht darin, den Text aus der Textbox zu nehmen, in eine Int zu wandeln (ist ja eigentlich String oder?).

    1. die Int div 256, das Ergebnis in Tmax(0)
    2. die Int mod 256, dadurch erhältst du den Rest, diesen dann in Tmax(1) eintragen.

    PS: Könnte sein, daß du Tmax(0) und Tmax(1) vertauschen mußt.

    Es gibt auch noch wesentlich elegantere Lösungen, aber ich weiß nicht, ob VB.Net das mitmacht!
    Gruß
    Ralle

    ... there\'re 10 kinds of people ... those who understand binaries and those who don\'t …
    and the third kinds of people … those who love TIA-Portal

  3. #13
    Registriert seit
    27.11.2005
    Ort
    im Osten
    Beiträge
    1.183
    Danke
    141
    Erhielt 271 Danke für 248 Beiträge

    Standard

    Hi, poppycock, ich geb da jetzt auch mal noch meinen Senf dazu

    hab leider grad nix zum testen hier, deshalb alles ungetestet

    folgender kleiner Einzeiler sollte funktionieren
    Code:
    dc.writeBytes(libnodave.daveDB, 50, 12, 2, BitConverter.GetBytes(CInt(TextBox6.Text)))
    wenn dann nur Müll in der SPS ankommt, musst du die Bytes nochmal vertauschen, was folgendermassen aussehen könnte
    Code:
    dc.writeBytes(libnodave.daveDB, 50, 12, 2, BitConverter.GetBytes(libnodave.daveSwapIed_16(CInt(TextBox6.Text))))
    Es ist nicht schwierig, mit noch nicht erreichten Zielen zu Leben; schwierig ist, ohne Ziele zu Leben !
    (Günther Kraftschik)

  4. Folgender Benutzer sagt Danke zu MW für den nützlichen Beitrag:

    poppycock (13.06.2009)

  5. #14
    Avatar von poppycock
    poppycock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Daumen hoch

    Hi MW,

    vielen Dank für den erstklassigen Tipp!

    Ich musste die Bytes tauschen, funktioniert prima mit deinem Codeschnippsel:
    Code:
    dc.writeBytes(libnodave.daveDB, 50, 12, 2, BitConverter.GetBytes(libnodave.daveSwapIed_16(CInt(TextBox6.Text))))
    Dieser Code (Einzeiler, ohne zusätzliche Definitionen) ist getestet und funktioniert!

    Gruß und danke,
    poppycock
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.
    Zitieren Zitieren F u n k t i o n i e r t !  

  6. #15
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard

    Und was passiert wenn da mal einer in die Textbox abc reinschreibt?

  7. #16
    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 Human Beitrag anzeigen
    Und was passiert wenn da mal einer in die Textbox abc reinschreibt?
    Das gibt dann wahrscheinlich eine Exception ..
    Rainer Hönle
    DELTA LOGIC GmbH

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

  8. #17
    Registriert seit
    16.07.2007
    Beiträge
    119
    Danke
    24
    Erhielt 44 Danke für 21 Beiträge

    Standard

    das haben "wir" mit keypress.event abgesichert

    ich war ja für
    Code:
    Throw New Exception(DAU)

    greetz m3nd|

  9. #18
    Avatar von poppycock
    poppycock ist offline Erfahrener Benutzer
    Themenstarter
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Standard

    Zitat Zitat von doublecee Beitrag anzeigen
    das haben "wir" mit keypress.event abgesichert
    Jepp, das haben "wir"!

    Aber ich habe das trotzdem für Human getestet und im Anhang ist das Ergebnis.
    Das Programm bricht mit einem Fehler ab!
    Klickt man aber auf Weiter, wird abc nicht übernommen!
    Angehängte Grafiken Angehängte Grafiken
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

  10. #19
    Registriert seit
    16.07.2007
    Beiträge
    119
    Danke
    24
    Erhielt 44 Danke für 21 Beiträge

    Standard

    das würd ich so aber auch nich abnehmen

    dann doch lieber ne exeception werfen oder einfach ne msgbox mit "nicht erlaubter eingabe"

  11. #20
    Registriert seit
    01.03.2007
    Beiträge
    262
    Danke
    26
    Erhielt 33 Danke für 28 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Also die .NET-Exceptions sind schon immer wieder interessant... hat da eigentlich mal einer den kompletten Text gelesen?

Ähnliche Themen

  1. Antworten: 9
    Letzter Beitrag: 24.09.2013, 18:09
  2. Variable Textbox in WINCC Flexible
    Von Bensen83 im Forum HMI
    Antworten: 2
    Letzter Beitrag: 23.08.2010, 13:03
  3. Wert einer errechneten Adresse laden
    Von matziane im Forum Simatic
    Antworten: 2
    Letzter Beitrag: 13.05.2009, 08:33
  4. Wert in einer bestimmen Zeit hochzählen
    Von CheGuevara83 im Forum Programmierstrategien
    Antworten: 8
    Letzter Beitrag: 07.03.2008, 07:04
  5. Suche Wert aus AW DB2 einer FM353
    Von Jim Knopf im Forum Simatic
    Antworten: 6
    Letzter Beitrag: 04.08.2006, 12:17

Lesezeichen

Berechtigungen

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