Ich wüßte da ein Protokoll:
http://www.hth.com/snap/
...vieleicht hilfts dir. Es gibt auch eine Dll zum download, also dürfte das realisieren kein Problem sein.
Ansonsten kannst du dir ja dein eigenes protokoll schreiben.....(warum auch nicht?)
Tagchen!
Ich muss vom PC 4 Word-Variablen (16-bit) auf nen Atmega übertragen und mache mir gerad Gedanken über ein Protokoll. Habe hier im Forum und im Rest des Netzes nicht wirklich was finden können. Also, es ist so dass ich auf meinem Atmega8 ein 4-fach-PWM laufen, deren Duty-Cycle halt vom PC vorgegeben werden soll. Die Zahlen liegen da zwischen 47104 und 65535 für 0% bis 100%. Ich will also immer 4 Zahlen übertragen, die jeweils 2 Bytes benötigen. Dies kann öfter mal vorkommen. Damit ich sehe wo eine Bytekombination anfängt, muss ich nen Header realisieren. Aber: Wie finde ich jetzt eine Header-Bitkombination, die nicht in den Datenbytes vorkommen kann? Ich hab mittlerweile eine ziemliche Denkblockade, also interpretiert diesen Beitrag als Hilferuf!
-> MEIN PROJEKTBLOG <-
Ich wüßte da ein Protokoll:
http://www.hth.com/snap/
...vieleicht hilfts dir. Es gibt auch eine Dll zum download, also dürfte das realisieren kein Problem sein.
Ansonsten kannst du dir ja dein eigenes protokoll schreiben.....(warum auch nicht?)
Hi,
du könntest die Zahlen als String übertragen und an den Anfang einen Buchstaben stellen..
Ich übertrage Werte gerne als Strings, da kann ich mir sie prima zum Test in einem Terminalprogramm anschauen.
Geht natürlich auch als Hexzahlen.
Also zB: H07FD
Ist halt etwas länger..
Gruß
Christopher
Schick doch ein neuntes Byte mit - in dem steht dann welche Byte's geändert werden müssen.
Das ist freilich nicht sonderlich flexibel wenn es mehr werden sollte, bietet aber den Vorteil das minimal nur zwei Bytes gesendet werden müssen.
P.S.: Hat das Gekritzel meiner PN etwas gebracht?
@rage-empire:
Ich muss mich nur um das prog auf dem AVR kümmern. den rest macht jemand anders. ich kann mir allerdings das protokoll aussuchen.
@chr-mt: was macht dich denn so sicher, dass die der anfangsbuchstabe nicht im rest des strings vorkommt?
@e-fan: ja, hat mir ein wenig gebracht, danke. das mit dem neunten byte ist auch nix, weil dieses imho nicht von den andern bytes unterscheidbar wäre.
-> MEIN PROJEKTBLOG <-
Dann musst Du eine Reihenfolge festlegen in der die Bytes kommen müssen.
Beim DMX- oder NRMA-DCC-Signal ist das auch so.
Es geht doch nur um das Übertragen von Werten, oder ?was macht dich denn so sicher, dass die der anfangsbuchstabe nicht im rest des strings vorkommt?
Naja, wenn ich Dezimalzahlen als string sende, kommt doch logischerweise kein Buchstabe vor
Wie gesagt, Hex geht auch, im Beispiel ist das Startzeichen das "H"
Das kommt nun mal nicht in den Hex Zahlen vor .
Es gibt ja nur 0-F, dann ist Schluss.
Man kann das "H" dann als Startbedingung nehmen und den restlichen String mit hexval wieder zurückwandeln
Dim S As String * 5
Dim O As Word
Dim I As Word
'******* Hin *******
O = 535
S = Hex(o)
S = "H" + S 's = "H0127"
'******* Zurück ********
s = Right(s , 4)
I = Hexval(s) 'I=535
Wenn Du zB. 4 Werte übertragen willst, geht das naürlich auch so.
Mußt dann halt noch ein Zeichen mehr übertragen, zB. so:
"HA23DA"
"HB0342"
"HC677C"
"HDF02A"
und dann die Adresse mit "MID"rausfummeln
Adresse = Mid(s,2,1)
Da gehen als Adresse dann alle Zeichen, bis auf'"H", logischerweise.
Du kannst die Strings natürlich auch aneinanderhängen und jeweils mit Mid
rausziehen.
"H23DA0342677CF02A"
Ist kein "supertolles Protokoll mit allem Schnickschnack",
funzt aber wunderbar und ist einfach.
Viele Digitalmultimeter etc. mit RS232 senden ihre Werte zB. auch einfach als Text an die zugehörige Software.
Gruß
Christopher
das problem ist dann natürlich dass ich dann pro datensatz 20 bytes + header brauche, statt 8 bytes pro header. das sind bei 115200 baud immernoch 5485,7 Datensätze pro Sekunde (mit einem Headerbyte). ... Optimal ist das nicht...
-> MEIN PROJEKTBLOG <-
Hi,
Reicht das nicht ??das sind bei 115200 baud immernoch 5485,7 Datensätze pro Sekunde
Klar ist das nicht optimal jedes Byte in zwei Characters zu wandeln.
Gruß
Christopher
@Goblin: Schau mal, es gibt da schon auch andere methoden
https://www.roboternetz.de/wissen/in...#Byte-Stuffing
mfg robert
Wer glaubt zu wissen, muß wissen, er glaubt.
Lesezeichen