BASCOM: Array Problem

Gast #1223747
Lesenswert?
• ▲
▼
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
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()."
Gast #1223769
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 ?!?
Gast #1223793
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.
Gast #1223847
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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren