- Akku Tests und Balkonkraftwerk Speicher         
Ergebnis 1 bis 5 von 5

Thema: Tabelle mit mehreren Spalten auslesen?

  1. #1
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627

    Tabelle mit mehreren Spalten auslesen?

    Anzeige

    Powerstation Test
    Hallo,
    ich möchte jeweils 3 Werte aus einer Tabelle im Programm auslesen und in 3 Variablen schreiben.
    Zum testen hab ich in jede Zeile 3 Werte geschrieben, die in 3 Variablen sollen. Per Timer soll dann in die nachste Zeile in der Tabelle gesprungen werden und wieder 3 neue Werte in die 3 Variablen geschrieben werden, so das sich die Verte zb. alle 2 sekunden ändern.

    Wie hole ich nun die Werte aus der Tabelle? Position angeben?

    Alles was ich gefunden habe war ein RN-Wissen Artikel, den ich aber nicht richtig verstehe.

    Code:
    'Konfiguration µC:
    
    $regfile = "m8def.dat"                                      'AT-Mega8
    $crystal = 3686400                                          'Quarz: 3.6864 MHz
    $baud = 9600                                                'Baudrate der UART: 9600 Baud
    
    
    '-------------------------------------------------------------------------------
    'Variablen
    
    
    Dim Wert1 As Byte
    Dim Wert2 As Byte
    Dim Wert3 As Byte
    Dim Wert4 As Byte
    Dim Wert5 As Byte
    Dim Wert6 As Byte
    
    Dim Tabelle(90) As Byte
    
    
    '-------------------------------------------------------------------------------
    
    
    Tabelle:
    '      W1 , W2  , W3  , W4  , W5  , W6
      Data 0 , 120 , 255
      Data 20 , 140 , 240
      Data 40 , 160 , 220
      Data 60 , 180 , 200
      Data 80 , 200 , 180
      Data 100 , 220 , 160
      Data 120 , 240 , 140
      Data 140 , 255 , 120
      Data 160 , 0 , 100
      Data 180 , 20 , 80
      Data 200 , 40 , 60
      Data 220 , 60 , 40
      Data 240 , 80 , 20
      Data 255 , 100 , 0
    ...

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Hallo,
    schau mal unter Lookup(value,label)

    Gruß

    Rolf

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    hmmm
    also bisher hab ich nur unter diesem Begriff gefunden wie ich die Werte einer Zeile nacheinander auslese.
    Wie kann ich aber in Variable 1 immer den 1.Wert der jeweiligen Zeile schreiben und in Variable 2 den 2. Wert jeder Zeile usw. ?
    ...

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.113
    Ich dachte an sowas:
    Code:
    Dim Count As Byte                       'oder word, falls nötig
    Dim Next_led As Byte                    'oder word, falls nötig
    Dim Led_flag As Byte
    Dim W1 As Byte , W2 As Byte , W3 As Byte
    Dim Zeile As Byte , Position As Byte    'position evtl as word, falls die tabelle größer wird
    On Timer0 Timer0_isr
    Do
       If Led_flag = 1 Then
          Reset Led_flag
          Incr Zeile
          If Zeile = 14 Then Zeile = 0      'Annahme: wenn die 14 Zeilen durch sind geht's von vorne los
          Position = Zeile * 3
          W1 = Lookup(position , Tabelle)   'Dies liest die Werte 0,3,6,9 .. aus der Tabelle
          Incr Position
          W2 = Lookup(position , Tabelle)   'Dies liest die Werte 1,4,7,10 .. aus der Tabelle
          Incr Position
          W3 = Lookup(position , Tabelle)   'Dies liest die Werte 2,5,8,11 .. aus der Tabelle
       End If
    
    Loop
    
    Timer0_isr:
       Incr Count
       If Count = Next_led Then             'dies so einstellen, dass alle 2 Sekunden das flag gesetzt wird
          Set Led_flag
          Count = 0
       End If
    Return
    
    Tabelle:
    '      W1 , W2  , W3  , W4  , W5  , W6
      Data 0 , 120 , 255
      Data 20 , 140 , 240
      Data 40 , 160 , 220
      Data 60 , 180 , 200
      Data 80 , 200 , 180
      Data 100 , 220 , 160
      Data 120 , 240 , 140
      Data 140 , 255 , 120
      Data 160 , 0 , 100
      Data 180 , 20 , 80
      Data 200 , 40 , 60
      Data 220 , 60 , 40
      Data 240 , 80 , 20
      Data 255 , 100 , 0
    Kompiliert ok, aber ist nicht getestet.

    Gruß

    Rolf

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    94
    Beiträge
    627
    Super es funktioniert!
    vielen Dank!

    Das hatte ich aus dem RN-Wissenartikel nicht so heraus gelesen. Was mir unter anderem fehlte war die durchnummerierung. Hätte gadacht das man die Zeile angibt und dann Wert 1-3 und die nächste Zeile fängt wieder bei 1 an - ist ja aber nicht so.

    Wenn ich es richtig verstanden habe muss ich wohl bei 6 Werten pro Zeile
    ->Position = Zeile * 6
    rechnen

    Also noch mal vielen Dank (auch für die guten Kommentare im Code!)

    Tobias
    ...

Berechtigungen

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

Solar Speicher und Akkus Tests