-
        

Ergebnis 1 bis 4 von 4

Thema: wie funktioniert der PUT-Befehl in diesem Programm?

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

    wie funktioniert der PUT-Befehl in diesem Programm?

    Anzeige

    Hallo,
    ich baue gerade einen Datenlogger, der die Daten auf einen USB-Stick speichert (FAT / txt Datei). Als USB Host benutze ich den Vinculum-Chip der Firma FTDI.

    Leider komme ich mit dem PUT-Befehl nicht klar.
    Ich möchte die Messungen hochnummerieren mit der Variable "Messung" als Long.

    Wer kann mir also den PUT-Befehl im Zusammenhang mit diesem Programm erklären? Ziel ist es mit dem PUT-Befehl die Variable Messung in die log.txt zu schreiben(mit den anderen Werten zusammen)

    vielen Dank, Tobias

    Code:
    '-------------------------------------------------------------------------------
    'Konfiguration µC:
    $regfile = "m32def.dat"                                     'AT-Mega32
    $crystal = 14745600                                         'Quarz: 14,7456 MHz
    $baud = 9600                                                'Baudrate definieren
    
    '-------------------------------------------------------------------------------
    'Ein- Ausgänge:
    
    Ddra = &B00000000                                           '1 Ausgang, 0 Eingang = Pin PA7-0
    Ddrb = &B11111111                                           '1 Ausgang, 0 Eingang = Pin PB7-0
    Ddrc = &B11111111                                           '1 Ausgang, 0 Eingang = Pin PC7-0
    Ddrd = &B01111111                                           '1 Ausgang, 0 Eingang = Pin PD7-0
    
    Porta = &B00000000                                          '1 = Pullup
    Portb = &B00000000                                          '1 = Pullup
    Portc = &B11111111                                          '1 = Pullup
    Portd = &B00000000                                          '1 = Pullup
    
    
    
    '-------------------------------------------------------------------------------
    'Analogmessung:
    Config Adc = Single , Prescaler = Auto , Reference = Avcc
    Start Adc                                                   'Starte analog Messung
    
    '-------------------------------------------------------------------------------
    'Vor Programmstart:
    
    'Enable Interrupts
    
    Start Adc                                                   'Analogmessung starten
    
    '-------------------------------------------------------------------------------
    'USB Confi!!!!
    
    Echo Off                                                    '///für USB-Stick
    Open "com1:" For Binary As #1                               '///für USB-Stick
    
    'Dim Samples As Word                                         'Anzahl der Messungen
    Dim Delayms As Long                                         'Messintervall in ms (Long bis 2.147.483.647)
    Dim Channels As Word                                        'Anzahl der Messkanäle (8Kanäle -> 0-7)
    Dim N As Integer
    Dim I As Integer
    Dim L As Integer
    Dim S As String * 20
    Dim Ad As Integer
    Dim Messung As Long                                         'anzahl der gemessenen Werte
    
    
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    'Hauptprogramm Do...Loop
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    
    
    'USB-LOOP
    Do
      Input S
    Loop Until S = "D:\>"                                       'USB Controller abfragen, bis D:\> gesendet wird
    
    Waitms 1000
    
    Print "rd todo.txt" + Chr(13);                              'todo.txt Datei LESEN
    
    Input Delayms                                               'Wartezeit zwischen den Messungen aus Datei übernehmen
    Get #1 , L
    Input Channels                                              'Anzahl der Messkanäle aus Datei übernehmen
    Get #1 , L
    Input S
    
    Print "OPW Log.txt" + Chr(13);                              'Datei Log.txt öffnen
    Input S
    
    
    Do
    Toggle Portb.0
    Incr Messung
      S = ""
      For I = 0 To Channels                                     'Kanäle 0-7 MAX
        Ad = Getadc(i)
        S = S + Str(ad)
        If I < Channels Then S = S + Chr(9)
      Next I
      S = S + Chr(13) + Chr(10)
      L = Len(s)                                                'gibt die Länge von String "S" wieder
      Print "WRF ";                                            'Befehl um in die geöffnete Datei zu schreiben
      Put #1 , 0
      Put #1 , 0
      Put #1 , 0
      Put #1 , L                                                'L ist die Länge vom String S
      Put #1 , 13
      Print S ;
      Input S
      Waitms Delayms                                            'Wartezeit zwischen den Messungen
    
    Loop Until Pind.7 = 0
    
    Print "CLF log.txt" + Chr(13);                              'Datei log.txt schließen
    Input S
    Portb.0 = 0                                                 'schreib-LED ausschalten
    End
    
    
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    'ENDE - Hauptprogramm Do...Loop
    '-------------------------------------------------------------------------------
    '-------------------------------------------------------------------------------
    
    End
    ...

  2. #2
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    andere Frage:

    wie groß muss ich den String "S" dimensionieren?
    wie zählt man das zusammen?

    S = Str(messung) + Chr(9)+ Str(ad)+ Chr(9)+ Str(ad)+ Chr(9)+ Str(ad)+ Chr(9)+ Str(ad)+ Chr(9)+ Str(ad)+ Chr(9)+ Str(ad)+ Chr(9)+ Str(ad)+ Chr(9)+ Str(ad)+ Chr(9)+ Chr(13) + Chr(10)

    Messung as Long
    ad as Integer

    Also zusammengefasst:

    1x Messung (Long)
    8x ad (Integer)
    9x Chr(9)
    1x Chr(13)
    1x Chr(10)

    vielen Dank, Tobias
    ...

  3. #3
    Erfahrener Benutzer Robotik Einstein Avatar von Andree-HB
    Registriert seit
    10.12.2004
    Ort
    Bremen
    Alter
    47
    Beiträge
    2.556
    ...ist ja interessant - ich habe letzte Woche auch den Baustein bekommen, und tue mich generell damit ziemlich schwer....habe aber generell oft Programmierprobleme...
    Danke an Alle, die uns bei der erfolgreichen 1.000€-Aktion der IngDiba unterstützt haben! | https://www.hackerspace-bremen.de | http://www.pixelklecks.de |

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    06.07.2006
    Alter
    87
    Beiträge
    627
    Eigendlich ist der "Baustein" relativ einfach anzusteuern.
    Am besten mal an den PC hängen (mit Wandler >zb. max232< dazwischen) und einfach mal die Befehle ausprobieren.

    unter http://www.vinculum.com/documents/fw...mware_V205.pdf
    gibt es das Datenblatt vom Hersteller mit allen Befehlen.
    Die wichtigsten sind eigendlich:
    RD <Dateiname.txt> um den ihnhalt einer datei zu lesen
    Zum Öffnen, Schreiben und Schließen:
    OPW file
    WRF dword
    CLF file

    unterstützt wird das 8.3 Dateinamen-DOSformat

    mit DIR kann man den Inhalt desSticks anzeigen lassen.

    Einen ausführlichen Artikel gibt es in der ELEKTOR 11/2008 S.42-46

    Tobias
    ...

Berechtigungen

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