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

Seite 1 von 3 123 LetzteLetzte
Ergebnis 1 bis 10 von 21

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

  1. #1
    Registriert seit
    30.08.2007
    Beiträge
    207
    Danke
    16
    Erhielt 22 Danke für 17 Beiträge

    Standard


    Zuviel Werbung?
    -> Hier kostenlos registrieren
    Hallo,

    nun klappt es schon prima mit dem Setzen der einzelnen Bits via "writeBits" unter Verwendung von libnodave.
    Allerdings will ich nun einen Integerwert an die SPS schicken.
    Bei libnodave müsste ich dafür "writeBytes" verwenden, aber darum geht es mir noch nicht.

    Also:
    Ich habe Textboxen, die ich mit einem Wert (Zahlen) füllen kann.
    Wenn ich auf den dazugehörigen Button klicke, soll dieser Wert an die SPS geschickt werden.
    Soweit wird das garantiert kein Problem sein, nur ich weiß nicht, wie ich den Inhalt der Textbox in eine Variable bekomme, die ich per "writeBytes" verschicken kann.
    Habe schon so einiges probiert, aber bin immer wieder gescheitert.

    Hat jemand ein kleines Beispiel dafür? Ich benutze VB.net 2008 Express Edition.

    Anbei ein Bild. Die weißen Textfelder können mit Zahlen gefüllt werden, die grau hinterlegten Textfelder zeigen den aktuellen Wert an, der im DB in der SPS hinterlegt ist.

    Vielen Dank schonmal,
    poppycock
    Angehängte Grafiken Angehängte Grafiken
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.
    Zitieren Zitieren Wert in einer Textbox per Buttonklick mit libnodave an SPS senden (VB.net 2008 E.E.)  

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

    Standard

    dim var1 as integer(oder as double wenn du kommastellen brauchst)
    textbox1.text = var1
    und weiter mit writebytes

    hoffe ich hab dich richtig verstanden und konnte dir helfen...


    greetz m3nd|

  3. #3
    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
    dim var1 as integer(oder as double wenn du kommastellen brauchst)
    textbox1.text = var1
    und weiter mit writebytes
    Danke, du hast mich richtig verstanden!
    Jetzt hab ich aber ein Problem, denn ich bekomme nun folgende Fehlermeldung:
    Der Wert vom Typ "Integer" kann nicht in "1-dimensionales Array von Byte" konvertiert werden.

    Code:
    Dim Tmax As Integer
    [...]
    TextBox6.Text = Tmax
    dc.writeBytes(libnodave.daveDB, 50, 96, 2, Tmax)
    Ich will den Inhalt der TextBox6 in den DB50 ab Adresse +12.0 (zwei Byte, also ein Integer) schreiben.
    Der DB ist natürlich schon vorbereitet!

    Wie wandle ich den Integerwert nach zwei Byte um?
    Macht das libnodave nicht automatisch?
    Oder verstehe ich die Fehlermeldung falsch?

    Gruß,
    poppycock
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

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

    Standard

    Code:
    Dim Tmax As Integer
    [...]
    TextBox6.Text = Tmax
    dc.writeBytes(libnodave.daveDB, 50, 96, 2, Tmax)
    bin mir jetz nich sicher aber ich behaupte mal das liegt an deiner syntax.
    haste ma

    Tmax = dc.writeBytes(libnodave.daveDB, 50, 96, 2)

    probiert?

  5. #5
    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
    Code:
    Tmax = dc.writeBytes(libnodave.daveDB, 50, 96, 2)
    Wenn ich das so mache, bekomme ich folgendes:
    Für den Parameter "buffer" von "Public Function writeBytes(area As Integer, DBnumber As Integer, start As Integer, len As Integer, buffer() As Byte) As Integer" wurde kein Argument angegeben.

    D.h. ich muss Tmax mit in writeBytes nehmen, da ein Byte erwartet wird.
    Daran lag es leider nicht.

    Die Syntax sollte korrekt sein, da ich bereits Bits in der SPS setzen kann!
    Aber ein Integer bekomme ich partout nicht in die SPS...

    Bin ich der Einzige, der dieses Problem hat?
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

  6. #6
    Registriert seit
    17.02.2006
    Ort
    Holland
    Beiträge
    47
    Danke
    23
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Dim buffer(2) As Byte
    buffer(0) = cbyte(iValue)

    dc.writeBytes(libnodave.daveDB, 50, 96, 2, buffer(0))
    **gruss aus Holland** Wieso SchreibFehler???

  7. #7
    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

    Danke,

    aber irgendwas haut noch immer nicht hin. Ich habs jetzt so:
    Code:
    [...]
    Dim Tmax(2) As Byte
    [...]
    Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
     Tmax(0) = CByte(TextBox6.Text)
     dc.writeBytes(libnodave.daveDB, 50, 96, 2, Tmax(0))
    End Sub
    [...]
    Fehlermeldung:
    Der Wert vom Typ "Byte" kann nicht in "1-dimensionales Array von Byte" konvertiert werden.

    Kann es sein, dass ich
    Code:
    CByte(TextBox6.Text)
    falsch behandle?

    Mal ne Frage nebenbei: Mit 96 beschreibe ich doch einen DB ab Adresse +12.0 ?
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

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

    Standard

    Mal ne Frage nebenbei: Mit 96 beschreibe ich doch einen DB ab Adresse +12.0 ?
    Nö, da schreibst du auf das Byte 96, das ist nur bei writeBits so!

  9. Folgender Benutzer sagt Danke zu Human für den nützlichen Beitrag:

    poppycock (10.06.2009)

  10. #9
    Registriert seit
    17.02.2006
    Ort
    Holland
    Beiträge
    47
    Danke
    23
    Erhielt 1 Danke für 1 Beitrag

    Standard

    Probier mal Tmax ohne die hacken
    **gruss aus Holland** Wieso SchreibFehler???

  11. #10
    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
    Ich hab's dank euch hinbekommen!

    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
    [...]
    @Ruud: Tmax ohne die Klammer in writeBytes war schon mal ein guter Ansatz.
    Ich musste noch
    Code:
    Tmax(1) = TextBox6.Text
    anstatt
    Code:
    Tmax(0) = CByte(TextBox6.Text)
    schreiben!

    Trotzdem vielen Dank! *THUMPS UP*
    Mit einem Computer löst man die Probleme, die man ohne einen Computer nicht hätte.

Ä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
  •