Wie bekomme ich einen Wert als Public Variable ausgelesen

  • VB.NET

Es gibt 26 Antworten in diesem Thema. Der letzte Beitrag () ist von Butz.

    Wie bekomme ich einen Wert als Public Variable ausgelesen

    Hallo Community,

    Ich bin grade an der Programmierung einer LED Matrix Steuerung ( GPL ).

    und komme mit dem abrufen der Werte nicht wieter !

    Als erstes habe ich 2 Variablen deklariert

    Public BT as String
    Public BT0 as integer = 0

    als zewites habe ich eine Zählergesteuerteschleife eingebaut

    For I = 0 to 1536

    BT = "BT" & I

    IF BT =1 then

    ( streamwriter schreibe in Status = 1)
    Status = 0
    end if

    Next



    Wie bekomme ich es hin das ich meiner Zählergesteuertenschleife den Wert meines BT auszulesen ?

    Die VB Hilfe meint ich würde ungültig konvertieren.
    Mit Cstr und Public BT As Object hab ich es auch versucht .
    Ich komme da nicht weiter .

    Danke schonmal für die Antworten MfG Butzi !
    Ps. eigentlich Programmiere ich Microkontroller
    Bilder
    • Schleife.JPG

      62,75 kB, 873×492, 185 mal angesehen
    @Butz:: Willkommen im Forum. :thumbup:

    Butz schrieb:

    VB.NET-Quellcode

    1. Public BT as String
    2. ' ...
    3. BT = "BT" & I
    4. IF BT = 1 Then
    5. ' ...
    6. End If
    Mit BT passiert nix, dieses If wird nie ausgeführt, da die Bedingung immer False ist.
    Und:
    Gib Deinem Projekt zunächst Option Strict On.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    Butz schrieb:


    VB.NET-Quellcode

    1. Private Sub Beispiel()
    2. Dim BT As String
    3. Dim BT0 As Integer = 0
    4. For _i As Integer = 0 To 1536
    5. BT = "BT" & _i.ToString
    6. If BT = 1 Then
    7. ' ( streamwriter schreibe in Status = 1)
    8. Status = 0
    9. End If
    10. Next
    11. End Sub


    Was möchtest du dort eigentlich machen? Aktuell Deklarierst du zwei Variablen, BT0 wird komplett nicht verwendet.
    Als nächstes versuchst du in deinem String BT den Text "BT" + die aktuelle Zahl aus I zu speichern nur um dann zu prüfen ob dein String der dann aus "BT1" bestehen würde, = 1 ist ?

    Das macht vorne und hinten keinen Sinn. Du könntest prüfen ob I = 1 ist oder ob BT0 = 1 ist.
    Ich versuche meine 1536 Buttoms mit einem Boolean wert ( für An, Aus ) in eine Datei mit 12 Schleifen zu schreiben
    Später soll er mir einen Text ausgeben den man nur nch kopieren und compilieren muss.
    Anstatt einen Boolean wert habe ich zur Zeit Integer verbaut.


    ""

    Private Sub SpeichernToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles SpeichernToolStripMenuItem.Click



    dateicreator = New StreamWriter("Matrix.txt")
    dateicreator.Write("matrix.clearScreen();" & vbCrLf)
    dateicreator.Write("matrix.brightness(" & Helligkeit & ");" & vbCrLf)
    dateicreator.Write("matrix.blink(" & Blinken & ");" & vbCrLf)

    If Modul >= 1 Then

    For Y = 0 To 15
    For X = 0 To 7

    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next

    For Y = 0 To 15
    For X = 8 To 15
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next

    For Y = 0 To 15
    For X = 16 To 23
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next
    End If




    If Modul >= 2 Then

    For Y = 0 To 15
    For X = 24 To 31
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next

    For Y = 0 To 15
    For X = 32 To 39
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next

    For Y = 0 To 15
    For X = 40 To 47
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next
    End If




    If Modul >= 3 Then

    For Y = 0 To 15
    For X = 48 To 55
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next

    For Y = 0 To 15
    For X = 56 To 63
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next

    For Y = 0 To 15
    For X = 64 To 71
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next
    End If




    If Modul >= 4 Then

    For Y = 0 To 15
    For X = 72 To 79
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next

    For Y = 0 To 15
    For X = 80 To 87
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next

    For Y = 0 To 15
    For X = 88 To 95
    dateicreator.Write("matrix.drawPixel(" & X & " , " & Y & " , " & Status & ");" & vbCrLf)
    Next
    X = 0
    Next

    End If

    dateicreator.Close()

    End Sub

    ""


    Später soll er mir bei Status, den BT0 bis 1536 auslesen ( die Buttons die angeklickt wurden) und die Werte genau so wie deklariert in der Matrix.txt speichern ( unter den X ,Y Koordinaten )
    Ich brauche als ausgabe : "matrix.drawPixel ( X Wert, Y Wert, AN = 1 oder Aus = 0);"
    Die Schleife nimmt mir aber BT = BT & I nicht an .
    Ich brauche aber die 1537 Buttens die ausgelesen werden sollen von der Schleife.
    was mache ich Falsch ?

    Ich will erreichen das ich den Wert des z.B. BT0 mit wert 1 in matrix.drawpixel(0,0,1) schreibe
    und dies eben 1536 mal oder nur die mit dem Status = 1 wert.

    Das Programmm hat 4 Module ( 4 Windows Form anwendungen) mit je 384 Pixeln ( auch Buttons )
    Diese ändern die Farbe beim Klick ( AN, AUS )
    mit noch anderen Funktionen.
    Wen nun die eingabe gemacht sind, sollen die Pixel in den schon genannten Format nacheinander angegeben werden ( man benötigt nur die später leuchtenden Pixel als angebe ( die den wert 1 besitzen))

    und das versuche ich nun irgend wie hinzubekommen bis jetzt ohne erfolg.

    Butz schrieb:

    bis jetzt ohne erfolg.
    Beschreib bitte mal etwas detaillierter und präzise, was Du eigentlich vor hast.
    1536 Buttoms
    sind doch wohl ein No Go.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    1536 BUTTONS?!?!?!?!?!?!?
    Ich hoffe mal nicht oO

    PS: Der Lesbarkeit halber:
    [01 Forum] Bitte VB-Tag(s) benutzen - was ist damit gemeint? Oder: Wie füge ich Quellcode korrekt im Forum ein?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    1537 Buttons mein ich ernst, den ich will ja dem Nutzer ermölichen seine eigenen Kreationen einfach darzustellen
    und dann den Code einfach auszugeben den er nur noch kopieren muss und dan überspielen kann.

    Dazu habe ich ein Programm geschrieben mit 1537 Buttons ,
    die genau so angelegt sind wie Sie später mal gedrückt werden sollen. so das dies auch mit der Schleife klapt.

    Nun habe ich 0- 1536 Buttens in 4 Windows Formen verpackt je Form 384 Buttons.
    Diese sollen wen Sie gedrückt werden den Wert 0 von der deklaration durch den wert 1 ersetzen.
    Sobald ich den speichern Butten gedrückt habe .
    Soll er mir die Textdatei Matrix.txt erstellen.
    In diese soll er die Parameter für Blinken,.. ect. eifügen.
    Danach soll er die werte der 1537 Buttens auslesen und in die Datei schriben. am liebsten nur die mit dem Wert Status = 1
    Das ist jetzt mal der Teil 1

    Wenn das funktioniert , werde ich noch pausen deklarationen für die Anzeige einfügen und auch eine nächste Anzeige bearbeiten Button


    Ps. 1537 Buttens , hätte ich es mit Labeln machen sollen ?

    :) LG Butzi
    Hier ist das Bild

    Wie gesagt ich bin normalerweise eher ein Mikrokontroller programmierer

    nicht der VBler

    diese Module gibt es ernst haft ( Sie nennen sich Sure Electronics DE-DP11212 )
    Bilder
    • Buttons.JPG

      255,47 kB, 1.258×713, 175 mal angesehen

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Butz“ () aus folgendem Grund: änderung

    Also ich möchte sagen, dass das so... ne ganz ganz unschöne Lösung ist oO
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    Es ist ja nur dazu gedacht die Punkte auszuwählen und dann zu sehen wie könnte es mal aussehen.
    Ich weis wie ich diese Matrixen programmiert bekomme.
    Ich wollte eben etwas für die noch unerfahrenen benutzer machen .
    um Ihnen das leben etwas einfacher zu gestalten.

    Wens nicht klappt, wars eben nur etwas spielerei für mich .

    :)

    Das es jetzt nicht das schönste ist und Verkaufsreif XD , das ist mir egal.
    Es ging hier drum nur um eine schnelle möglichkeit zu haben Texte zu erstellen.
    Und um grob mal zu sehen wie könnte das mal aussehen.
    Die Forms habe ich extra gewählt damit man weis auf was für einer Matrix man ist ,
    damit man diesa evt auch anderst anordnen kann wie man das möchte .

    Aber ok

    Danke für den ersten kommentar , der hat mir schon etwas geholfen .

    Und ich finde für meine ERSTE Windows Form anwendung ist das schon ok :)

    Ps. viele können Quatschen und alles besser machen, nur die wenigsten machen dies auch !

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Butz“ () aus folgendem Grund: XD

    Naja, es sieht aus wie Minesweep :)

    Du könntest deine Überprüfung auch lösen wie Minesweep.
    Ändere einfach den Text des Buttons onClick
    Da kannst du beliebig viele Zustände auswählen. Für An/Aus z.B. 'I & 0' oder 'X & " "'
    Den Button.Text kannst du dann auch einfach auslesen.

    Hinter das Handles kommen einfach alle Buttons die du hast mit .Click in meinem Beispiel sind es nur 3

    VB.NET-Quellcode

    1. Private Sub Button3_Click(sender As System.Object, e As System.EventArgs) Handles Button3.Click, Button2.Click, Button1.Click
    2. Dim btn As Button = DirectCast(sender, Button)
    3. If btn.Text = "X" Then
    4. btn.Text = " "
    5. Else
    6. btn.Text = "X"
    7. End If
    8. End Sub
    There is no CLOUD - just other people's computers

    Q: Why do JAVA developers wear glasses?
    A: Because they can't C#

    Daily prayer:
    "Dear Lord, grand me the strength not to kill any stupid people today and please grant me the ability to punch them in the face over standard TCP/IP."
    Hat es nen Grund dass du vier verschiedene Module hast?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D
    und dir gefällt das mit 1500+ buttons zu hantieren?
    Ich nehme mal an ein Reckteck zeigt 1 LED?

    Da gibts andere Varianten als so viele Buttons auf ne Form zu ziehen.......

    Überleg dir mal ob du nicht ein Dictionary(Of Button, Boolean) machen willst.

    oder sieh dir mal das an --> codeproject.com/Articles/62576/A-C-LED-matrix-display
    Wer fragt, ist ein Narr für eine Minute. Wer nicht fragt, ist ein Narr sein Leben lang.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Snaptu“ ()

    Hmm okay. Und wie soll man das dann wegschreiben? Sind die Indexwerte für X/Y erhöht?
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    Es war einmal ein kleiner Bär... der wollte eine Geschichte hörn... Da erzählte ihm seine Mutti:
    ... Nun solltest es selber wissen. :'D

    Butz schrieb:

    Das sieht schonmal gut aus
    Das sieht leider nicht gut aus, denn es wird die Text-Property eines Controls dazu verwendet, einen Boolean-Wert zu speichern.
    Trenne GUI und Daten!
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Also hätte ich da eine Wahl, bzw. möglichkeit Buttons durch schleifen einfügen zu lassen wäre das ganz interesant !
    Das würde mich interesieren.

    Ich habe jetzt eine Exeltabelle angehängt von Links nach rechts gehend. 1 Farbe = 1 Modul

    bin immer offen für verbesserungs VORSCHLÄGE !

    es ist auch so, das die Matrix so eine beschissene belegung hat ,
    das ich viele sachen erst garnicht verwenden kann. Siehe Matrix.pdf
    das sind aber nur 3 von 4 Modulen !

    Diese Parameter kann ich leider in so ein Programm nicht eingeben , schön wäre das ! Snaptu

    Ich habe mir auch überlegt, ob ich nicht ein array anlegen soll und die Daten da hinterlegen .

    Ps. die Buttons hat mir mein Mikrokontroller ausgegeben !
    Dateien
    • Matrix.pdf

      (65,13 kB, 155 mal heruntergeladen, zuletzt: )

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „Butz“ ()