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
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.
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
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
Du brauchst diese 4 Zeilen um eine Zahl zu Hex zu konvertieren. Am besten du schreibst dir damit eine PrintAsHex-Funktion. Samuel K. schrieb: > if x > 9 > print 'A' + x - 10 > else > print x Oder möchstest du die beiden Zahlen als Byte senden? Dann musst du die 3 4x nach links schieben und zu x addieren.
>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
Danke, aber Printbin passt hier nicht ganz. wie kann ich A 4x nach links schieben (Befehl)? Danke
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.