Danke erst einmal
Ich will eigentlich nur die Variablen auslesen können was ich schon schaffe aber ich will einen wert eingeben und diesen dann in der Variable speichern also im Grunde nur die variablen verändern
Danke erst einmal
Ich will eigentlich nur die Variablen auslesen können was ich schon schaffe aber ich will einen wert eingeben und diesen dann in der Variable speichern also im Grunde nur die variablen verändern
In welcher Sprache programmierst du den? In Basic macht dieser Befehl sowas:
Input "Neuer Wert der Variable: " , Variable
Da erscheint im Terminal der Text zwischen den "" und das was du eingibst wird in der Variable "Variable" gespeichert. Allerdings bleibt das Programm solange stehen bis du was eingegeben hast. Wenn du das nicht möchtest, musst du den Rx Interrupt nutzen.
Schaut ruhig mal auf meiner Homepage vorbei:
http://kampis-elektroecke.de
Oder folge mir auf Google+:
Daniel Kampert
Es gibt 10 Arten von Menschen. Die einen können Binär, die anderen nicht.
Gruß
Daniel
Hallo,
hatte ich schon prinzipiell so verstanden allerdings ist mir zum Zeitpunkt der Umfang noch unklar da Du auch immer wieder von "Variablen" in der Mehrzahl sprichst. Vieleicht noch mal kurz von meiner Seite ein sehr vereinfachtes Beispiel:
Sollte prinzipiell mehr als ein einzelnes Byte übertragen werden ist es meist sinnvoll, nicht nur bei dynamischen Datenmengen, die Übertragung mit Start und einem Endbyte zu kennzeichnen welche in den Informationen nicht vorkommen , dies vor allen Dingen wenn mehrere Byte’s übertragen werden sollen. Eine Bestätigung in Richtung PC, also Kommunikation, lasse ich mal außen vor. (Ist aber aus meiner Sicht bei vielen Anwendungen sehr wichtig!)
Überträgst Du allerdings nur einen einzelnen Wert ist der folgende „Aufwand“ nicht nötig und Du musst nicht weiter lesen.
Wir müssen als erstes unterscheiden ob die Variablenwerte jeweils gemeinsam oder getrennt übertragen werden sollen. Gemeinsam wäre zu Bsp. ein Hexstring mit 5 in der Reihenfolge fest angeordneten Variablenwerten. Im folgenden im Wertebereich 0 – 250. Der Einfachheit halber können wir so Daten/Werte von „FC“ und „FF“ ausschließen und diese für Start- und End-Byte nutzen.
Beispielstring:
„FC 33 4A 01 F0 AA FF“
„FC“ wäre das Start-Byte, dann kommt „Variablenwert_1“ = 0x33 (dez 51),… bis „Variablenwert_5“ = 0xAA (dez 170), und das End-Byte „FF“ zur Orientierung im MC wann die Daten komplett aus dem „Empfangspuffer“ gelesen und verarbeitet werden können.
Übertragen wir allerdings getrennte Variablenwerte (wie @Thegon schon schrieb) müssen wir den jeweiligen Variablen zur Unterscheidung einen Namen = Wert zuordnen. "Nennen" wir dem Variablenwert_1 = 0x01; usw…, Variablenwert_5 wäre dann 0x05.
Beispielstring:
„FC 01 33 FF“
„FC“ wäre dann wieder das Start-Byte. 0x01 wäre der „Name“ für Variable zwecks Zuordnung zum „Variablenwert_1“ und der folgende Wert wäre also dieser Variablen zugeordnet… usw. Wollen wir nun den Werte „AA“ (dez 170) der „Variablen_5“ übertragen würde der String so aussehen:
„FF 05 AA FF“
Je nach Aufgabe musst Du nun noch den Sendevorgang am Computer auslösen oder automatisieren. Das kommt jetzt auf die Aufgabe an. Natürlich auch bei einzelnen wenigen oder gar einem Wert mit „händischer“ Eingabe des selben.
Deshalb meine Frage, was möchtest Du denn eigentlich genau steuern? Wie viele unterschiedliche Variablen benötigst Du und wie groß sind die entsprechenden Wertebereiche bzw. „Zahlen“? (Byte, Word etc.) Eventuell kannst Du ja der Einfachheit halber ein passendes PC Programm bekommen, dazu wären aber mehr Informationen notwendig.
Gruß André
Also eigentlich will ich nur 5 Variablen verändern
sind alles integer:
dim p1 as integer
dim p2 as integer
dim p3 as integer
usw.
Und nun will ich mit dem pc einfach die werte und den variablen verändern z.b. 1,1023 das wäre dann 1 variable und der wert 1023
so hab ich es mir vorgestellt![]()
Hallo,
das wäre kein Problem...
Wenn Du Netframework 3.5 auf Deinem Windows Rechner hast kann ich Dir ein Testtool geben:
Habe ich gerade mal "zusammengeklickt" und würde wie folgt funktionieren:
Es erkennt Deine zur Verfügung stehenden Ports beim Start, Du müsstest zuerst die Baudrate (9600 voreigestellt) und anschließend den passenden Port auswählen.
Danach kannst Du Variable 1 bis 5 auswählen, (1 voreingestellt) den Wert 0-65535 (sind ja immer zwei Bytes,... nur bis 255 würde eins reichen) eingeben und per "senden" in folgendem Format über die Schnittstelle schicken:
Es wären immer 3 Byte:
1 byte (Variable) 00-05
2 Byte High-Byte des Wertes
3 Byte Low-Byte des Wertes
Variable 2 mit dem Wert 1023 würde dann folgende Bytes senden:
"02 03 FF"
Der Wert 1023 = 3 x High (256) + LOW (255)
Wenn Du es irgendwie anders brauchst auch kein Problem...
Allerdings musst Du mit dem AVR ohne mich klar kommen, da ich nur PIC in Assembler programmiere, aber im Forum gibt es ja viele AVR Kundige die da weiterhelfen können.
Gruß André
Lesezeichen