TobiasBlome
18.01.2009, 13:23
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
'-------------------------------------------------------------------------------
'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
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
'-------------------------------------------------------------------------------
'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