Forum: Mikrocontroller und Digitale Elektronik BASCOM AVR Input - Frage


von Florian (Gast)


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

von Paul B. (paul_baumann)


Lesenswert?

Probiere mal es mal so:

Dim empf as byte
Dim Erwin as byte


Erwin = BIN (empf)

...und dann den Inhalt von Erwin senden.

MfG Paul

von Florian (Gast)


Lesenswert?

Ich will aber keine Daten vom AVR zum PC senden ich will Daten vom PC 
zum (!) AVR senden.

von Florian (Gast)


Lesenswert?

Keiner eine Idee?

von Karl H. (kbuchegg)


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.

von Stefan B. (stefan) Benutzerseite


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.

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.