Forum: Mikrocontroller und Digitale Elektronik BASCOM: Array Problem


von Maxl (Gast)


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

von MWS (Gast)


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()."

von Maxl (Gast)


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 ?!?

von MWS (Gast)


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.

von MWS (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.