Wie Sie vielleicht schon aus allen Antworten nicht direkt ermittelt haben Sie zu einem Protokoll führen, dass ein eigener Ansatz Ihre beste Wahl ist.
Also, das hat mir denken und gut, hier sind ein paar meiner Gedanken -
Da dieser Chip 6 ADC-Kanäle, die meisten wahrscheinlich, dass Sie RS-232 serielle Kommunikation verwenden (eine Vermutung von Ihrem Frage), und natürlich der begrenzte Coderaum, der eine einfache Befehlsstruktur definiert, wird helfen, wie Adam hervorhebt - Sie möchten vielleicht die Eingabeverarbeitung auf dem Chip auf ein Minimum beschränken, so dass Binär klingt attraktiv, aber der Kompromiss ist in Einfache Entwicklung UND Wartung (Sie müssen vielleicht in 6 Monaten einen toten Input erledigen) - hyperterminal ist ein leistungsfähiges Debug-Tool - also habe ich darüber nachgedacht, wie man eine einfache Befehlsstruktur mit guter Zuverlässigkeit implementiert.
Einige allgemeine Überlegungen -
Halten Sie die gleiche Größe Kommandos - macht Decodierung einfacher.
Framing der Befehle und optionale Prüfsumme, wie Adam hervorhebt, kann leicht um Ihre Befehle gewickelt werden. (mit kleinen Befehlen, eine einfache XOR/ADD-Prüfsumme ist schnell und schmerzlos)
Ich würde eine Startup-Meldung an den Host mit der Firmware-Version beim Zurücksetzen empfehlen - zB "HALLO; Firmware Version 1.00z" - würde Sagen Sie dem Host, dass das Ziel gerade gestartet wurde und was ausgeführt wird.
Wenn Sie hauptsächlich überwachen, möchten Sie vielleicht einen "Freilauf" -Modus in Betracht ziehen, bei dem das Ziel einfach durch die analogen und digitalen Messwerte läuft - das muss natürlich nicht kontinuierlich sein Abstand von 1, 5, 10 Sekunden oder nur auf Befehl. Ihr Mikro hört immer zu, daher ist das Senden eines aktualisierten Werts eine unabhängige Aufgabe.
Wenn Sie jede Ausgangsleitung mit einem CR (oder einem anderen Zeichen) terminieren, wird die Synchronisation auf dem Host problemlos möglich.
zum Beispiel könnte Ihr Mikro einfach die Saiten ausgeben;
V0=3.20
V1=3.21
V2= ...
D1=0
D2=1
D3=...
and then start over --
Auch könnten Befehle wirklich einfach sein -
? - Lesen Sie alle Werte - es gibt nicht viele, also nehmen Sie sie alle.
X = 12.34 - Um einen Wert zu setzen, ist das erste Byte der Port, dann würde die Spannung und ich empfehlen, das "=" und das "." als Rahmen, um ein gültiges Paket sicherzustellen, wenn Sie auf die Prüfsumme verzichten.
Eine andere Möglichkeit, wenn Ihre Ausgänge innerhalb eines festgelegten Bereichs liegen, können Sie sie vorskalieren. Wenn zum Beispiel der Ausgabe genau sein nicht, könnten Sie so etwas wie
5=0
6=9
2=5
senden, die auf Port 5 aus, Port 6 zu voll, und Port 2 auf dem halben Wert gesetzt würden - Mit diesem Ansatz Ascii und binäre Daten sind in Bezug auf die Berechnung/Decodierung von Ressourcen im Mikrobereich ungefähr gleichgestellt. Oder für mehr Genauigkeit, mache die Ausgabe 2 Bytes, zB 2 = 54 - ODER, füge eine Xref-Tabelle hinzu und die Werte müssen nicht einmal linear sein, wo das Datenbyte ein Index in eine Nachschlagetabelle ist. .
Wie ich gerne sagen; Einfach ist normalerweise besser, es sei denn, es ist nicht.
Hoffe das hilft ein bisschen.
Hatte einen anderen Gedanken beim erneuten Lesen; ein „*“ Befehl hinzufügen können die Daten mit HTML-Tags eingewickelt anfordern und jetzt Host-App einfach könnte die Ausgabe von Ihrem Mikro an einen Browser und wala, Browser bereit umleiten -
:)
+1 für menschenlesbare –