-         

Ergebnis 1 bis 7 von 7

Thema: Probleme mit der avr-dos Get Befehl als array

  1. #1
    Benutzer Stammmitglied
    Registriert seit
    15.04.2007
    Beiträge
    55

    Probleme mit der avr-dos Get Befehl als array

    Anzeige

    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

  2. #2
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    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

  3. #3
    Benutzer Stammmitglied
    Registriert seit
    15.04.2007
    Beiträge
    55
    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

  4. #4
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.

  5. #5
    Benutzer Stammmitglied
    Registriert seit
    15.04.2007
    Beiträge
    55
    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

  6. #6
    Super-Moderator Robotik Visionär Avatar von PicNick
    Registriert seit
    23.11.2004
    Ort
    Wien
    Beiträge
    6.836
    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.

  7. #7
    Benutzer Stammmitglied
    Registriert seit
    15.04.2007
    Beiträge
    55
    hallo

    Es funktioniert, es war ein falschen Gedanken Fehler von mir

    Gruss

    Sato

Berechtigungen

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