BASCOM: Array Problem

Gast #1223747
Hallo zusammen!

Ich habe ein kleine Problem mit einem Array unter Bascom.

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

4
i = 1
5
For i = 1 To 20
6
Text(i) = Lookup(i , Wert1)
7
Next
8

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

12
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
Gast #1223762
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()."
Gast #1223769
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 ?!?
Gast #1223793
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.
Gast #1223847
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.