BASCOM AVR Input - Frage

Gast #1922243
Lesenswert?

Hallo,

ich warte in der Hauptschleife auf Daten und schreibe diese in ein Array 
of Bytes (also im Array steht es so: &B11001100).
Jetzt warte ich in der Hauptschleife auf Daten, die ich über RS232 
senden will und dann ins Array schreiben.
1
dim empf as byte
2
...
3
do
4
input ">",empf
5
marray(2) = empf
6
loop
Doch leider kann ich die Bytes nur in diesem Format senden: 1,2,3,...255
Wie kann ich diese in diesem Format senden: &B00110011
Das Terminalprogramm macht nach drei Zahlen Schluss.
Danke schonmal
#1922296
Lesenswert?

Das was du übertragen willst, ist erst mal nur ein Text. Den empfängst 
du auf µC Seite ebenfalls als Text und wandelst ihn dann in die Zahl um.


Du leidest am BASCOM-Syndrom

Für alles und jedes erwartest du eine bereits in BASCOM fertig 
eingebaute Lösung. Die mag es tatsächlich geben, auf der anderen Seite 
studierst du aber auch nicht die Doku bzw. das Helpfile um zu wissen, 
was überhaupt möglich ist.
Persönliche Seite #1922359
Lesenswert?

Florian schrieb:

> ich warte in der Hauptschleife auf Daten und schreibe diese in ein Array
> of Bytes (also im Array steht es so: &B11001100).

Unklar. Nimm dir ein Vorbild an KH und erkläre exakt , was in dem Array 
steht bzw. stehen soll!

Bsp:
1. Element ist '&'
2. Element ist 'B'
3. Element ist '1'
4. Element ist '1'
5. Element ist '0'

Oder
1. Element ist &B11001100
2. Element ist 23
3. Element ist &H42
4. Element ist '1'

Beides sind Byte Arrays!

> dim empf as byte
> ...
> do
> input ">",empf
> marray(2) = empf
> loop

Dir ist klar, dass du immer und ewig nur das 2. Element in marray() 
überschreibst?

> Doch leider kann ich die Bytes nur in diesem Format senden: 1,2,3,...255
> Das Terminalprogramm macht nach drei Zahlen Schluss.

Benutz ein anderes Terminalprogramm, andere können beliebige Zeichen in 
nahezu beliebiger Anzahl senden.

> Wie kann ich diese in diesem Format senden: &B00110011

Zum Verständnis: Du willst vom PC aus die Zeichen & B 0 0 1 1 0 0 1 1 
senden und auf dem AVR sollen die in der Bytevariablen empf landen?

Du hast mind. vier Möglichkeiten:

1. Vom PC aus die Zeichenkette &B00110011 plus Zeilenende (Return) 
senden und auf dem AVR mit INPUT in eine Stringvariable einlesen. Die 
Stringvariable mit den Stringbearbeitungsfunktionen zeichenweise 
zerlegen und je nach Zeichen eine Bytevariable füllen.

2. Vom PC aus 10 Zeichen senden und auf dem AVR mit INPUTBIN die 10 
Zeichen in ein Bytefeld der Dimension 10 einlesen. Dadurch sparst du das 
Zeilenende und das Auseinanderpfiemeln. die finale Bytevariable kann 
dann als Schleife über die Elemente 3 bis 10 gemacht werden.

3. Variation von 2. Auf dem AVR wird in einer Einleseschleife die 
Funktion INKEY oder WAITKEY für je ein Zeichen benutzt. Zeichen 
umwandeln und in der Bytevariable das entsprechende Bit setzen. 
Schleifenzähler ändern.

4. Variation von 1. Du schneidest auf dem AVR mit den 
Stringbearbeitungsfunktionen den &B Anfang weg und konvertierst die 
8-stellige Ziffernfolge mit BINVAL in ein Byte.

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