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
DAVID B. schrieb: > In C++ kein Problem aber in C# > Komme ich mir da verloren vor. Zwingt Dich irgendwas, C# zu verwenden?
Ja in Microsoft Visual Studio 2022 gibt es Windows Froms nur in C#. Nicht aber in C++.
Und? Muss man das benutzen? Und kann man mit dem Dotnet-Geraffel nicht auch Programmteile in unterschiedlichen Sprachen mischen?
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
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)
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.
Einfach mal die Sprache lernen könnte unheimlich hilfreich sein.
> 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
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.
Harald K. schrieb: > Ist das irgendwo dokumentiert? Ja im Datenplatt so fern man das so nennen kann. Mein aktueller stand ist mal mit dabei.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.