Supportnet / Forum / Mainboard/CPU/RAM
Hex-Zahlen Kodierung bei serieller Schnittstelle ...
Frage
Hallo,
mein Labor-Netzgerät sendet über die serielle Schnittstelle seinen Status an den PC. In der Anleitung steht nun folgendes über die Kodierung der Spannung im gesendeten Code.
"...No.3 byte (U Hi) is high 8 digit and No. 4 byte(U Lo) is low 8 digit for output voltage. For exsample: output voltage is 35.38V then U H =09H U L =EAH
Aber ich komme einfach nicht darauf, was denn "high 8 digit" und "low 8 digits" bedeutet. Kann das angegebene Beispiel leider nicht nachvollziehen.
Das H aus dem Beispiel deutet die Verwendung von Hex-Zahlen an.
Vielen Dank für Eure Hilfe ...
Gruß
Susi
Antwort 1 von Das_Urmel
Höheren 8 Ziffern, unteren 8 Ziffern.
das von dir angegebene - im Buch Beispiel ist sogar falsch.Mist das Ding die Spannung, dann ist
3te Byte UH = 0Dh
4te Byte UL = 0D2h
Machst du da Dez draus, hast du genau die im Beispiel angegebene Spannung von 35,38
Bei den hexwerten im beispiel komt nur 25.38 raus :)
Alles klar?
mfg
Michael Bormann
das von dir angegebene - im Buch Beispiel ist sogar falsch.Mist das Ding die Spannung, dann ist
3te Byte UH = 0Dh
4te Byte UL = 0D2h
Machst du da Dez draus, hast du genau die im Beispiel angegebene Spannung von 35,38
Bei den hexwerten im beispiel komt nur 25.38 raus :)
Alles klar?
mfg
Michael Bormann
Antwort 2 von cofa
hallo susi
noch ein Tipp für die Umrechnung von Hex auf Dezimal kannst du folgenden Link verwenden:
http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm
Wähle dort im Pulldownmenü "Zahlensysteme" oben = "16 Hexadezimal " und unten ="10 Dezimal" aus
und trage dann oben rechts den HL-Wert ein:
also z.Bsp. 09EA =>> ergibt 2538
mfg cofa
noch ein Tipp für die Umrechnung von Hex auf Dezimal kannst du folgenden Link verwenden:
http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm
Wähle dort im Pulldownmenü "Zahlensysteme" oben = "16 Hexadezimal " und unten ="10 Dezimal" aus
und trage dann oben rechts den HL-Wert ein:
also z.Bsp. 09EA =>> ergibt 2538
mfg cofa
Antwort 3 von Das_Urmel
Och Cofa
start-ausführen
calc
von Standard auf Wissenschaftlich umstellen - schon convertest du wie blöde. *grins*
gn8
Michael
start-ausführen
calc
von Standard auf Wissenschaftlich umstellen - schon convertest du wie blöde. *grins*
gn8
Michael
Antwort 4 von susineu
Hallo nochmal,
Danke für die Infos, also dann hab ich´s doch richtig verstanden. Nur das dumme Beispiel hat mich so verunsichert.
Kennt einer von Euch ein Windows Tool, mit dem ich die empfangenen Daten von der Schnittstelle direkt als Binärcode darstellen kann ? Wenn ich das Hyperterminal benutze bekommen ich immer nur seltsame Sysmbole angezeigt, vermutlich ein ASCII Datensatz mit irgendeiner Erweiterung .
Nochmals danke und Gruß
Susi
Danke für die Infos, also dann hab ich´s doch richtig verstanden. Nur das dumme Beispiel hat mich so verunsichert.
Kennt einer von Euch ein Windows Tool, mit dem ich die empfangenen Daten von der Schnittstelle direkt als Binärcode darstellen kann ? Wenn ich das Hyperterminal benutze bekommen ich immer nur seltsame Sysmbole angezeigt, vermutlich ein ASCII Datensatz mit irgendeiner Erweiterung .
Nochmals danke und Gruß
Susi
Antwort 5 von Das_Urmel
Eure Aparatur sollte da eigentlich eine Anwendung haben, die diese Daten in Empfang nimmt und anzeigt?
Alternativ könnte man bei Kentnis der Daten auch ein Script - naja - oder ein kleines Prorämmchen schreiben, das genau das macht.
Dazu wären dann aber etwas mehr Informationen nötig - Spass machen würds schon. :)
mfg
Michael Bormann
Alternativ könnte man bei Kentnis der Daten auch ein Script - naja - oder ein kleines Prorämmchen schreiben, das genau das macht.
Dazu wären dann aber etwas mehr Informationen nötig - Spass machen würds schon. :)
mfg
Michael Bormann
Antwort 6 von susineu
@ Urmel und alle anderen Bash-Profis ...
Habe jetzt die genaue Codierung verstanden. Meine Aufgabe ist jetzt folgende: Ich brauche ein Programm/Bash-Skript dass die Spannung am Labor-Netzgerät einstellt und in etwa wie folgt aussehen soll:
>Benutzereingabe neuer Spannungswert
>Abfrage des Status (aktuelle Spannung) des Netzgerätes über 15Byte an COM1
>Berechnung der Spannungsdifferenz
>Senden der nötigen binären Sequenz (4Byte) über COM1 um die alte Spannung zu erhöhen/erniedrigen
> Fertig
Zur Statusabfrage: Das Netzgerät sendet kontinuierlich seinen Status in 15 Byte. Als Startwert sendet es ein bestimmtes Start-Byte (hex: BE), damit man weiß wo die Sequenz beginnt.
Wie kann ich die Status Sequenz auslesen, bzw für weitere Auswertung zwischenspeichern ? Wie erreiche ich, dass die kontinuierliche Sequenz genau ab dem Start-Byte eingelesen wird ? Wie sende ich einen binären Code direkt über COM1 ?
Zur Lösung steht mir am Linux-PC ein C/C++ Compiler oder eben die BASH zur Verfügung.
Für jede Hilfe schonmal vielen Dank im Vorraus...
Gruß Susi
Habe jetzt die genaue Codierung verstanden. Meine Aufgabe ist jetzt folgende: Ich brauche ein Programm/Bash-Skript dass die Spannung am Labor-Netzgerät einstellt und in etwa wie folgt aussehen soll:
>Benutzereingabe neuer Spannungswert
>Abfrage des Status (aktuelle Spannung) des Netzgerätes über 15Byte an COM1
>Berechnung der Spannungsdifferenz
>Senden der nötigen binären Sequenz (4Byte) über COM1 um die alte Spannung zu erhöhen/erniedrigen
> Fertig
Zur Statusabfrage: Das Netzgerät sendet kontinuierlich seinen Status in 15 Byte. Als Startwert sendet es ein bestimmtes Start-Byte (hex: BE), damit man weiß wo die Sequenz beginnt.
Wie kann ich die Status Sequenz auslesen, bzw für weitere Auswertung zwischenspeichern ? Wie erreiche ich, dass die kontinuierliche Sequenz genau ab dem Start-Byte eingelesen wird ? Wie sende ich einen binären Code direkt über COM1 ?
Zur Lösung steht mir am Linux-PC ein C/C++ Compiler oder eben die BASH zur Verfügung.
Für jede Hilfe schonmal vielen Dank im Vorraus...
Gruß Susi
Antwort 7 von Das_Urmel
Zitat:
Zur Lösung steht mir am Linux-PC
Zur Lösung steht mir am Linux-PC
*hüstel*
Damit bin ich raus, Win ja - C, C#, VB, Script - nur Lin eben nicht.
mfg
Michael

