-         

Ergebnis 1 bis 6 von 6

Thema: Array mit Inputbin befüllen

  1. #1
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    340

    Array mit Inputbin befüllen

    Anzeige

    Hallo zusammen,

    ich habe folgendes Problem. Ich möchte 14 Byte aus dem Eingangspuffer der seriellen Schnittstelle in eine 14 Byte großes Array schreiben.
    Ich habe es folgendermaßen versucht.

    Code:
    Dim A as Byte
    Dim Bytearray(14) as Byte
    
    For A = 1 to 14
    Inputbin Bytearray(A)
    Next
    Allerdings funktioniert das leider überhaupt nicht. Der µC bleibt immer an dieser Stelle hängen. Kann mir jemand sagen warum? Und ob es noch eine andere Möglichkeit gibt die Bytes auszulesen?

    Wenn ich die Bytes alle einzeln per Inputbin auslese funktioniert es ja auch!?

    Danke für euere Hilfe.

  2. #2
    Neuer Benutzer Öfters hier
    Registriert seit
    05.02.2012
    Ort
    Dortmund
    Beiträge
    12
    Hoi,
    in den meisten Programmiersprachen fängt ein Array mit dem Element 0 an. Du hast also ein Array mit 14 Elementen angelegt in dem Du die einzelnen Elemente mit 0 bis 13 ansprechen kannst.

    Lösung A: Mach das Array 15 Elemente groß
    Lösung B: Zähle von 0 bis 13

    Ich gebe hiermit zu das ich die verwendete Programmiersprache nicht kenne. Es würde mich aber wundern wenn es hier anders ist. Deswegen würde ich mich über eine Rückmeldung freuen. Gegen meine Vermutung spricht übrigens das es bei "einzeln per Inputbin auslese" klappt.
    Tschö, Tore

  3. #3
    Neuer Benutzer Öfters hier
    Registriert seit
    05.02.2012
    Ort
    Dortmund
    Beiträge
    12
    Hoi,
    das Problem ist wohl nicht das Array sondern der Befehl "Inputbin":

    ---------
    The number of bytes to read depends on the variable you use.
    When you use a byte variable, 1 character is read from the serial port.
    An integer will wait for 2 characters and an array will wait until the whole array is filled.
    ---------

    Siehe <INPUTBIN>.

    Ich lass meine erste (und wohl falsche) Vermutung einfach mal stehen.
    Tschö, Tore

  4. #4
    Erfahrener Benutzer Roboter Genie
    Registriert seit
    16.02.2006
    Beiträge
    1.112
    Hallo demmy,
    bist du denn sicher, dass 14 Byte gesendet werden?
    Wenn ja, dann müsste der Befehl
    Inputbin Bytearray(1)
    reichen. Wie sieht denn der Rest des Programms aus? Wenn du vom Eingangspuffer sprichst, hast du dann über Config SerialIn einen Buffer angegeben?
    Wenn du etwas mehr Kontrolle über den Einlesevorgang haben möchtest, kannst du es auch so machen:
    Code:
    Enable URXC
    Enable Interrupts
    On URXC Byte_received_ISR
    ...
    Do
       ...
       If Bytes_complete_flag = 1 Then
         ...
       Endif
       ...
    Loop
    End
    
    Byte_received_ISR:
       incr byte_count
       Byte_array(Byte_count) = UDR
       If Byte_count = 14 Then Bytes_complete_flag = 1
    Return
    Zitat Zitat von crissa Beitrag anzeigen
    Hoi,
    in den meisten Programmiersprachen fängt ein Array mit dem Element 0 an.
    ...
    Deswegen würde ich mich über eine Rückmeldung freuen.
    Kann man in Bascom konfigurieren. Wenn Config Base = 0 gesetzt ist, verhält es sich so, wie du geschrieben hast. Ansonsten läuft der Index von 1 bis 14.

  5. #5
    Neuer Benutzer Öfters hier
    Registriert seit
    05.02.2012
    Ort
    Dortmund
    Beiträge
    12
    Zitat Zitat von for_ro Beitrag anzeigen
    Kann man in Bascom konfigurieren. Wenn Config Base = 0 gesetzt ist, verhält es sich so, wie du geschrieben hast. Ansonsten läuft der Index von 1 bis 14.
    Hoi,
    Danke für die Erklärung.
    Tschö, Tore

  6. #6
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    29.07.2011
    Beiträge
    340
    Hallo zusammen,

    ich habe nach langer Suche folgende Lösung gefunden:

    Inputbin array(1) , 14

    Und zwar ist das der Befehl um das Array direkt zu befüllen, es werden 14 Byte aus dem empfangspuffer in das "array" geschrieben ab Index Nr. 1

    Ich hab es getestet und es funktioniert! Das ist wohl der einfachste Weg ein Array direkt aus dem Empfangspuffer zu füllen.

    Für das senden gillt das selbe:

    printbin array(2) , 13 ;

    Das würde 13 Byte aus dem "array" ab indexnr. 2 senden.

    Gruß

Ähnliche Themen

  1. LED Array
    Von filth im Forum Elektronik
    Antworten: 7
    Letzter Beitrag: 09.12.2008, 13:06
  2. [gelöst] debounce und inputbin laufen nicht zusammen ???
    Von Papsi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 26.01.2008, 21:39
  3. Array auf zweidimensionale Array
    Von semicolon im Forum C - Programmierung (GCC u.a.)
    Antworten: 1
    Letzter Beitrag: 25.05.2007, 13:48
  4. Nur Nummern in Array / nur Variablentyp byte als Array?
    Von Crashmichl im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 28.04.2006, 00:15
  5. problem mit inputbin usw bei rs485 kommunikation
    Von veit im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 8
    Letzter Beitrag: 03.03.2006, 18:55

Berechtigungen

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