www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik BASCOM: Array Problem


Autor: Maxl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen!

Ich habe ein kleine Problem mit einem Array unter Bascom.

Hier der Code:
Dim Text(20) As Byte
Dim I As Byte

i = 1
For i = 1 To 20
Text(i) = Lookup(i , Wert1)
Next

Wert1:
Data &H00 , &H01 , &H02 , &H03 , &H04 , &H05 , &H06 , ...

Printbin Text(1) ; Text(2) ; Text(3) ; Text(4) ; ...

Wenn ich nun testweise nur Text(1) mit Prinbin ausgebe, dann erscheint 
zwar als erstes der richtige Wert aus der Tabelle (Wert1) aber dann 
kommen die restlichen Zeichen der Tabelle. Also so:

Printbin Text(1)

am Terminalprogramm wird ausgegeben:
00 01 02 03 04 05 06 07 ...

wenn ich Prinbin Text(19) nehme dann:
19 20

Wieso gibt mir Bascom immer den Rest des Arrays mit aus und nicht nur 
den Wert des gewünschten Index?

Maxl

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solche Fragen enstehen, wenn man geflissentlich die Bascom-Hilfe 
ignoriert, denn da steht drin:

"The number of bytes to send can be specified by an additional numeric 
parameter. This is convenient when sending the content of an array.
Printbin ar(1) ; 3 ' will send 3 bytes from array ar()."

Autor: Maxl (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meine Daten die ich seriell senden muss sehen so aus:

Printbin &H00 ; &H00 ; &H00 ; Text(1) ; Text(2) ; Text(3) ; ... ; &HFF ; 
&HFF

Wie realisiere ich das dann das mit Printbin nur das erste Byte des 
Arrays sendet? Ich kann ja nicht 1 dahinter schreiben weil sonst mein 
ganzer Frame nicht mehr stimmt ?!?

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
RTFM :D

"Printbin ar(1) ; 2 ; ar(2) ; 4 ' will send 2 bytes from array ar() 
starting at index 1,then 4 bytes from array ar() starting at index 4."

Die einzige Unsicherheit ist, wie ein durch numerischer Wert &hxx nach 
einem Arraywert behandelt wird, aber das lässt sich durch ausprobieren 
rausfinden.

Autor: MWS (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Edit: Ein Festwert folgend einem Arraywert wird als Anzahl der 
auszugebenden Arrayelemente interpretiert.

Das hier funktioniert:
Printbin &H40 ; Text(1) ; 1 ; Text(2) ; 1 ; Text(3) ; 1 ; &H40

Hier würde der letzte Wert als auszugebende Anzahl interpretiert:
Printbin &H40 ; Text(1) ; 1 ; Text(2) ; 1 ; Text(3) ; &H40

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.