Bascom Daten aufbereiten

Gast #2361737
Lesenswert?

Moin, moin.
Ich bin ein ziemlicher Anfänger und habe eine Frage.
Ich schicke meine Daten über UART.
Der Byte, den ich schicke sieht so aus:
3x
3 - ist immer fest.
x - ist die Variable von 0 bis F

Wenn ich jetzt mein Byte abschicken will, wie verbinde ich die 3 und 
meine Variable?

Print 3x klappt nicht. Kommt nur 3 an.

angenommen x=8
soll 3x abgeschickt werden und 38 ankommen.

Wie löse ich das Problem Syntaxmäßig?
Weiss leider nicht ganz wonach ich googln soll, sonst hätte ich das 
gemacht.

Danke und einen schönen Abend noch
Gast #2361786
Lesenswert?

Samuel K. schrieb:
> Das funktioniert beides nicht, da der TO x als Hexadezimalzahl möchte.
>
> print '3'
> if x > 9
>     print 'A' + x - 10
> else
>     print x
>
> Das ist zwar mehr c-bascom, aber bascom kann ich halt nicht.

wenn der to mal etwas spezifischer wäre müsste man nicht in die 
glaskugel schauen ;-))
eine variable von 0-F ist für mich nicht zwangsläufig hex!

source says more!

siehe hierzu bascom hilfe zu den topics HEX und HEXVAL
Gast #2361854
Lesenswert?

Danke
ich habe mich nicht ganz richtig ausgedrückt.
Die 38 ist in der Tat die Hex Zahl, wird aber von mir nicht wie 38 
batrachtet, sondern wie
3  und   8
0011   1000
Die "feste" 3 kann auch mal A werden, dann muss ich ja A8 haben.

Per UART bekomme ich immer Zahlen wie
A4 oder 31 oder C2
Daraufhin muss ich entsprechend mit A6 (A bleibt, weil so empfangen 
wurde, und zu 4 muss ich 2 addieren) oder 33 oder C4 antworten.

Ich hoffe, das ist jetzt verständlich genug.

Danke im Voraus
Gast #2361898
Lesenswert?

>Oder möchstest du die beiden Zahlen als Byte senden?
Genau!
Im Prinzip funktioniert das so:
E = empfangen
S = senden

E: A1
S: A3

E: 3A
S: 3B

E: 21
S: 23

ich denke die Logik ist klar. Es wird zur 2.Zahl im Byte immer 2 
addiert.


Was schon mal funktioniert ist Folgendes:

Dim ausgelesener_wert as byte
Dim erste_zahl as byte
Dim zweite_zahl as byte

ausgelesener_wert = &HA1

zweite_zahl = ausgelesener_wert and &B00001111 
(bitweise-und-verknüpfung)
*********************************************
jetzt muss ich ja A und zweite_zahl irgendwie wieder zusammenfügen, 
damit ich A3 wieder als Byte habe.

Kann mir Jemand den Bascom Befehl dafür verraten?
Die 3 4x nach links schieden ist logisch, mir fehlt der Befehl, bzw. die 
Struktur.

Danke
(Firma: Manfred) #2361963
Lesenswert?

Würd das so programmieren:

ausgelesener_wert = &HA1

erste_zahl=ausgelesener_wert and &B11110000
zweite_zahl = ausgelesener_wert and &B00001111
zweite_zahl=zweite_zahl+2
zweite_zahl=ausgelesener_wert and &B00001111 'alles über 15 wieder weg!
shift erste_zahl, right, 4 'wird zu 0-15

'Ausgabe z.B.so, am besten Funktion bauen
if zweite_zahl>9 then
   zweite_zahl=zweite_zahl+55
   print chr(zweite_zahl)
else
   print zweite_zahl
endif

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