Hast du mal probiert, nur den Variablennamen im Get Befehl anzugeben, also anstatt Dados(1) nur Dados?
Steht so glaube ich in der Doku.
Gruß
Rolf
Hallo
Habe Probleme beim lesen von Arrays von der SD karte mit den AVR-DOS Get Befehl. Anbei ein kleinen code um es zu veranschaunlichen. Hat jemand Erfahrung oder schon ähnliches gehabt?
Was mache ich falsch bei den code?
'Diesen Code funktioniert NICHT
Dim Dados(80) As Word
Dim Pixel As Long
Dim Loop1 As Long
Dim Data_array(12) As Byte
Dim F9 as string * 12
Dim ff As Byte
F9 = "test.bin"
Ff = Freefile() ' file handle holen
Open F9 For Binary As #ff
For Loop1 = 1 To Pixel
Get #ff , Dados(1) , , 80 ''80 words von der SD Karte auf einmal einlesen
For J_b = 0 To 79
Data_array(2) = Dados(j_b) 'low byte von der word variable speichern
Shift Dados(j_b) , Right , 8
Data_array(1) = Dados(j_b) 'high byte von der word variable speichern
Print #1 , "data2 =" ; Hex(data_array(2))
Print #1 , "data1 =" ; Hex(data_array(1))
Next J_b
Next Loop1
close #ff
Print #1 , "ENDE "
'Diesen Code FUNKTIONIERT aber zu langsam dar jedes mal nur ein word variable von der SD Karte gelesen wird
Dim Dados As Word
Dim Pixel As Long
Dim Loop1 As Long
Dim Data_array(12) As Byte
Dim F9 as string * 12
Dim ff As Byte
F9 = "test.bin"
Ff = Freefile() 'file handle holen
Open F9 For Binary As #ff
For Loop1 = 1 To Pixel
Get #ff , Dados 'jedesmal ein word variable einlesen
Data_array(2) = Dados 'low byte von der word variable speichern
Shift Dados(j_b) , Right , 8
Data_array(1) = Dados 'high byte von der word variable speichern
Print #1 , "data2 =" ; Hex(data_array(2))
Print #1 , "data1 =" ; Hex(data_array(1))
Next Loop1
close #ff
Print #1 , "ENDE "
Bin dankbar für jede Hilfe
Mfg
Sato
Hast du mal probiert, nur den Variablennamen im Get Befehl anzugeben, also anstatt Dados(1) nur Dados?
Steht so glaube ich in der Doku.
Gruß
Rolf
Hallo For_ro
Nein, das muss schon dados(1) sein, bei dados allein wird der Fehler 261
"Array expected", beim compilieren gemeldet weil dim dados(80) as word als array gedimmt wurde
warum dados1) und nicht z.b dados(0) das weiss ich nicht, muss wahrscheinlich Herr Vogel fragen
Gruss
Sato
Get #ff , Dados(1) , , 80
da werden lt. HELP nur 40 Words gelesen (Länge ist immer anzahl bytes)
Ich hab' noch nicht kapiert, was das Umschiften et. bewirken soll ?
Willst du die Words in Bytes zerlegen ? wieso ?
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Hallo PickNik
Ja brauche das word in bytes zerlegen weil ich einen display damit ansteuere und da muss ich jedemal ein byte haben, ich glaube es irgendwo gelesen zu haben das es mit overlay der variable geht aber
ich weiss es nicht mehr wo es gesehen habe. In Picbasic Pro kann man ganz einfach direkt das lowbyte und highbyte der word variable zugreifen in Bascom sehe ich im Momment die Methode mit den Shiften, eine schnelleren Methode musste es geben damit mehr Geschwindigkeit erreichen kann
Das mit den AVR-DOS Get #ff, dados(1) , , 80 lese ich nur 0000 unf FFFF
bis jetzt hat sich Josef Voegel dazu nicht gehäussert.
Gruss
Sato
DIM wordtab(80) as word
DIM bytetab(160) as byte at wordtab overlay
bytetab(9) LOw wordtab(5)
bytetab(10) Hi wordtab(5)
PS Genaugenommen brauchst du aber das word-array ja garnicht, du kannst ja den GET auch direkt in die Bytetabelle machen. Dem Bascom ist das wurst
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
hallo
Es funktioniert, es war ein falschen Gedanken Fehler von mir
Gruss
Sato
Lesezeichen