Forum: PC-Programmierung Serielle Daten Empfangen Netzteil Nice Power


von DAVID B. (bastler-david)


Angehängte Dateien:

Lesenswert?

Hallo
Ich Brauche mal euere Hilfe.
Also Ich sah mich gezwungen für mein Nice Power China Netzteil selber 
ein Programm zur Fernsteuerung + Datenlogging zu schreiben.(original ist 
Schrott)
Was zuerst nach keinem großen Problem aus sah, wurde dann aber schnell 
zu einem Riesen-Problem.

Ich bekomme die Daten im sek. Takt vom Netzteil (Seriell) nach dem 
Senden halbwegs sauber empfangen. OK
nur wie kann ich die werte dann ordnen? In C++ kein Problem aber in C# 
Komme ich mir da verloren vor.

Da bekomme ich z. B. bei Ampere den String <C4000976000> Geliefert das 
bedeutet:

"<" Anfang (Immer gleich)
"C400" Wert Zuordnung in dem Fall für Ampere. (Immer gleich)
"0976" Hier den Wert in mA. 0-9999
"000" Ist mir unbekannt und (Immer gleich)
">" Übertragung zu Ende. (Immer gleich)

Oder Für Spannung <120 1227 0000> Was Bedeutet:

"<" Anfang (Immer gleich)
"120" Wert Zuordnung in dem Fall Volt. (Immer Gleich)
"1227" Hier den Wert für 12,30V. (Ändert sich natürlich die 4 Stellen)
"000" Ist mir unbekannt und (Immer gleich)
">" Übertragung zu Ende. (Immer gleich)

So Weit ok.
Wie Kann ich aus jeder Übertragung die Zuordnung und den Wert jeweils 
separieren und in die TextBox Schreiben lassen ?

Wäre Super, wenn mir jemand helfen können.

DANKE

Beispiele:
<C4007973000> = 8,00Ampere
<C4000976000> = 1Ampere
<C4001483000> 1,5Ampere

<120 1227 0000> = 12,30 Volt
<120 1108 9000> == 11,11Volt
<120 1510 1000> 15,15 Volt

von Harald K. (kirnbichler)


Lesenswert?

DAVID B. schrieb:
> In C++ kein Problem aber in C#
> Komme ich mir da verloren vor.

Zwingt Dich irgendwas, C# zu verwenden?

von DAVID B. (bastler-david)


Lesenswert?

Ja in Microsoft Visual Studio 2022 gibt es Windows Froms nur in C#.
Nicht aber in C++.

von Harald K. (kirnbichler)


Lesenswert?

Und? Muss man das benutzen? Und kann man mit dem Dotnet-Geraffel nicht 
auch Programmteile in unterschiedlichen Sprachen mischen?

von Peter M. (r2d3)


Lesenswert?

Hallo David B.,

> Ich bekomme die Daten im sek. Takt vom Netzteil (Seriell) nach dem
> Senden halbwegs sauber empfangen. OK
> nur wie kann ich die werte dann ordnen?

Die Werte sortieren?!

> Da bekomme ich z. B. bei Ampere den String <C4000976000> Geliefert das
> bedeutet:
>
> "<" Anfang (Immer gleich)
> "C400" Wert Zuordnung in dem Fall für Ampere. (Immer gleich)

Benutze sinnvolle, sprechende Bezeichnungen. Für mich ist das ein 
Einheitenbezeichner. Denk' Dir was aus!

> "0976" Hier den Wert in mA. 0-9999
> "000" Ist mir unbekannt und (Immer gleich)
> ">" Übertragung zu Ende. (Immer gleich)
>
> Oder Für Spannung <120 1227 0000> Was Bedeutet:
>
> "<" Anfang (Immer gleich)
> "120" Wert Zuordnung in dem Fall Volt. (Immer Gleich)
> "1227" Hier den Wert für 12,30V. (Ändert sich natürlich die 4 Stellen)
> "000" Ist mir unbekannt und (Immer gleich)
> ">" Übertragung zu Ende. (Immer gleich)
>
> So Weit ok.
> Wie Kann ich aus jeder Übertragung die Zuordnung und den Wert jeweils
> separieren und in die TextBox Schreiben lassen ?

Du schneidest die für die Anzeige relevanten Stellen mit Hilfe von 
Textbearbeitungsfunktionen wie "MID" oder so ähnlich aus und bearbeitest 
die weiter. Den numerischen Wert wandelst Du immer in eine Zahl.
Den Einheitenbezeichner schneidest Du einfach aus.
Dein Ausgabestring hat die Form "<numerischerWert> 
<physikalischeEnheit>".

Nach dem "Ausschneiden" folgt eine Fallunterscheidung à la "Select case" 
für alle Varianten von Einheitenbezeichnern.
In Abhängigkeit von dem Einheitenbezeichner legst Du die Einheit für die 
Ausgabe fest und bearbeitest den numerischen Wert entsprechend und 
wandelst den neuen Wert in einen String. Wert-String und Einheitenstring 
ergeben dann zusammen die Ausgabe für das Formular.

Aus Deinen Beispielen kann mein ungeübtes Auge keine Regeln für die 
numerische Nachbearbeitung ableiten!

: Bearbeitet durch User
von Heinz B. (Firma: Privat) (hbrill)


Lesenswert?

Wenn die Blanks auch mit drin sind, hast du ja gleich 3 Teilstrings.
Da greifst du halt den zweiten raus. Schau mal, was deine Sprache her
gibt. Da sind bestimmt Stringfunktionen dabei, mit denen du sowas
rausgreifen kannst.

Ansonsten, wenn zusammenhängend, würde ich den einen Buchstaben und
die spitzen Klammern zuerst rauslöschen. Zur Fallunterscheidung hast
du dann "400" für Ampere oder "120" für Volt und die nächsten 4 Ziffern
sind dann deine Werte. Die ersten zwei Ziffern sind die vor dem Komma
und die letzten beiden die aufgerundeten nach dem Komma.
Sollten sich die Werte aus 4 Ziffern mal auf 3 oder 5 ändern, muß man
halt die letzten 3 "000" abschneiden.

Auch die regulären Ausdrücke würden sich da anbieten.
Um jetzt eine genaue Vorgehensweise zu erhalten, müßte man den
originalen Stream sehen. Sind da jetzt Leerstellen drin oder nicht ?
Wenn C400 bzw. 120 und die letzten 000 immer gleich sind, geht das auch
über ein einfaches Left() und  MID(String, Startpos, Endpos)

von DAVID B. (bastler-david)


Lesenswert?

Ok Danke euch gucke ich mir heute Nachmittag noch mal genauer an.
Zur Zeichen folge ich weis wann ich welchen wert erwarten kann.

Ablauf ich sende: <04003300000> dann bekomme ich paar ms später dem wert 
für Strom.
Und danach sende ich noch <02003300000> und bekomme den wert für 
Spannung zurück.

von Harald K. (kirnbichler)


Lesenswert?

Ist das irgendwo dokumentiert?

von Hannes J. (Firma: _⌨_) (pnuebergang)


Lesenswert?

Einfach mal die Sprache lernen könnte unheimlich hilfreich sein.

von Vanye R. (vanye_rijan)


Lesenswert?

> Ich habe stark die Stromversorgung in Verdacht.

Jetzt komm hier nicht mit solchen extremistischen Forderungen. :)
Sonst koennte man ja auch noch sagen, lass dir mal eben einen
Parser von flex erzeugen. Aber das ist ja wieder Opakram.

Vanye

von Harald K. (kirnbichler)


Lesenswert?

Vanye R. schrieb:
>> Ich habe stark die Stromversorgung in Verdacht.

Dich hat vor kurzem ein Moderator drum gebeten, richtig zu zitieren.

Ist Dir sowas komplett scheißegal?

In diesem Thread taucht das von Dir "zitierte" Wort Stromversorgung 
erstmalig in Deinem "Zitat" auf. Das sollte Dir zu denken geben.

von DAVID B. (bastler-david)


Angehängte Dateien:

Lesenswert?

Harald K. schrieb:
> Ist das irgendwo dokumentiert?

Ja im Datenplatt so fern man das so nennen kann.

Mein aktueller stand ist mal mit dabei.

von Harald K. (kirnbichler)


Lesenswert?

DAVID B. schrieb:
> Ja im Datenplatt so fern man das so nennen kann.

Ach Du Scheiße. Ja, das ist übel.

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
Noch kein Account? Hier anmelden.