Gast
#4343095
Hallo, Ich empfange von der Seriellen Schnittstelle folgende Daten (siehe Bild). Wie kann ich diese gescheit in div. TextBoxen einordnen? Nach jedem Byte bekomme ich ein "\n". Freue mich auf Antworten.
|
Anzeige
|
Bytes sortieren - Visual C#
Gast
#4343095
Hallo, Ich empfange von der Seriellen Schnittstelle folgende Daten (siehe Bild). Wie kann ich diese gescheit in div. TextBoxen einordnen? Nach jedem Byte bekomme ich ein "\n". Freue mich auf Antworten. Herbert H. schrieb: > Hallo, > > Ich empfange von der Seriellen Schnittstelle folgende Daten (siehe > Bild). > Wie kann ich diese gescheit in div. TextBoxen einordnen? > Nach jedem Byte bekomme ich ein "\n". > > Freue mich auf Antworten. Wie soll denn jemand wissen nach welchen Kriterien Du ordnen willst? Im Betreff sprichst Du ja schon von sortieren. Dann sortiere. Unter VC# ist das ja wohl kein Problem. mfg klaus Es sieht eher so aus, dass Du eine ASCII-kodierte Zeile erhältst
("Textzeile"), welche mit einen Zeilenvorschub endet. Die Zeile enthält
mehrere Dezimalzahlen, welche durch Leerzeichen getrennt sind.
Jetzt erkläre uns, was der Screenshot mit Deinen "Bytes" zu tun haben
soll.
Herbert H. schrieb: > Wie kann ich diese gescheit in div. TextBoxen einordnen? > Nach jedem Byte bekomme ich ein "\n". Irgendwas passt da nicht bzw. sieht das eher danach aus, als ob nach jeder Zeile ein \n kommt und davor ASCII Leerzeichen und Zahlen...
Meine Glaskugel ist noch ziemlich trübe. Vielleicht erzählt und Herbert mal wer die Daten liefert und was er erhofft zu sehen. Das könnte helfen. mfg Klaus
Gast
#4343644
Hallo, die Daten bekomme ich von einem µC. Dieser Wertet 3 x PortExpander aus. Dort sind Fototransistoren angeschlossen, die überprüfen ob LED´s leuchten oder nicht. Dieses wollte ich jetzt in meinem Programm auswerten. Für jeden Expander eine ListBox. Dort sollen dann die Werte für die "LED´s" landen. Das Programm auf dem µC sieht so aus :
Versteht ihr was ich meine? Herbert H. schrieb:
>
> > Versteht ihr was ich meine? Das passt schon mal nicht zu dem Screenshot. Es sei den der hier auskommentierte code War nicht auskommentiert.
Gast
#4343727
Eric B. schrieb: > Das passt schon mal nicht zu dem Screenshot. Es sei den der hier > auskommentierte code War nicht auskommentiert. Ich habe gestern noch ein bisschen rum probiert und habe nach jeder UART Ausgabe ein "\n" mit gesendet. Ich dachte das erleichtert nacher das sortieren. Bei dem Screenshot war nichts auskommentiert. Hallo Herbert, so, wo kommst Du denn nicht weiter? Wenn ich jetzt mal Deine Hardcopy nehme, hast Du Zeilen mit mehreren Werten je Zeile. Um jetzt die Werte weiter zu verarbeiten, kannst Du die Methode String.Split verwenden. https://msdn.microsoft.com/en-us/library/system.string.split%28v=vs.110%29.aspx Dein Trennzeichen ist das Leerzeichen. mfg Klaus
Gast
#4343817
Klaus R. schrieb: > Hallo Herbert, > so, wo kommst Du denn nicht weiter? Wenn ich jetzt mal Deine Hardcopy > nehme, hast Du Zeilen mit mehreren Werten je Zeile. Um jetzt die Werte > weiter zu verarbeiten, kannst Du die Methode String.Split verwenden. > > https://msdn.microsoft.com/en-us/library/system.string.split%28v=vs.110%29.aspx > > Dein Trennzeichen ist das Leerzeichen. > mfg Klaus Hallo Klaus, ich werde es heute abend direkt mal versuchen.
Gast
#4344299
Arc N. schrieb: > var line = "0 0 65154 11 0\n"; > var separators = new string[] {" ", "\n" }; > var split = line.Split(separators, > StringSplitOptions.RemoveEmptyEntries); > if (split.Length != 5) // something went wrong > var intArray = split.ConvertAll(...) Wie genau funktioniert diese Funktion? Wo stehen jetzt meine einzelnen Bytes?
Gast
#4344394
Herbert H. schrieb: > Arc N. schrieb: >> var line = "0 0 65154 11 0\n"; >> var separators = new string[] {" ", "\n" }; >> var split = line.Split(separators, >> StringSplitOptions.RemoveEmptyEntries); >> if (split.Length != 5) // something went wrong >> var intArray = split.ConvertAll(...) > > Wie genau funktioniert diese Funktion? > Wo stehen jetzt meine einzelnen Bytes? Ich habe es verstanden. Genau das habe ich gesucht. Danke!
Gast
#4344424
Jetzt habe ich nur noch das Problem, dass meine Bytes ja nicht als "String" der Funktion übergeben werden. So kommt es natürlich zu einem Fehler.
Wie könnte ich das noch lösen? Herbert H. schrieb: > Jetzt habe ich nur noch das Problem, dass meine Bytes ja nicht als > "String" der Funktion übergeben werden. So kommt es natürlich zu einem > Fehler. > > Wie könnte ich das noch lösen? Du programmierst noch nicht so lange? In der Regel war ich es gewohnt das mir ein VC# - Programmierer beibrachte was für Tiefen es alles da gibt. Insofern ist C# schon eine gute Wahl. Google ist hier (mal ausnahmsweise) Dein Freund: vc# byte to string Das Suchen über Google ist in der Regel effektiver als irgendeine Mircosoft-Hilfe. Allerdings weiss Google dann auch wo Deine Lücken sind. Der Einsatz von BING wäre hier wohl gescheiter. Also, willkommen in der Welt der Programmierer. In Deinem aktuellen Fall brauchst Du eine Typkonvertierung. https://msdn.microsoft.com/en-us/library/system.convert.tostring%28v=vs.110%29.aspx mfg klaus Klaus R. schrieb: > Google ist hier (mal ausnahmsweise) Dein Freund: vc# byte to string anders rum. Er hatte ursprünglich einen kompletten String. Den hat er in 3 Teilstrings aufgebrochen und braucht jetzt die in diesen Teilstrings als Text dargestellten Zahln in ihrer tatsächlichen Binärform. (Warum auch immer. Rein nur zu Anzeigezwecken würde man das nicht benötigen) Was er also braucht ist die Konvertierung von String->Integer OK, habe ich so überlesen. Der Lösungsansatz sollte passen. mfg klaus Herbert H. schrieb: > Jetzt habe ich nur noch das Problem, dass meine Bytes ja nicht als > "String" der Funktion übergeben werden. So kommt es natürlich zu einem > Fehler. Zu welchem? Und was ist was? Wenn da z.B. "0 0 65154 11 0\n" ankommt, sind das alles uint16_t, ints mit 16-Bit und was soll es auf dem PC werden? Ebenso uint16_t? Falls letzteres z.B.
Herbert H. schrieb: > Das Programm auf dem µC sieht so aus : > /* aviable I2C Devices? */ > aviable_I2C_Chips(); // all I2C Chips online? Das heißt übriegens available. Mathias O. schrieb: > Herbert H. schrieb: >> Das Programm auf dem µC sieht so aus : >> /* aviable I2C Devices? */ >> aviable_I2C_Chips(); // all I2C Chips online? > > Das heißt übriegens available. Übrigens :-P Danke.
Gast
#4345699
Hallo Leute, ich habe das mit dem einlesen hin bekommen. Landet jetzt alles dort wo es sein soll. Nur beim schließen der Schnittstelle wird die Form nicht geschlossen und reagiert irgendwie nicht mehr. Hmm.. Hört sich an, nach einem Speicherleck. Code? Herbert H. schrieb: > > Nur beim schließen der Schnittstelle wird die Form nicht geschlossen und > reagiert irgendwie nicht mehr. Hmm.. Dann zeig mal Deinen Code. Mit Schnittstelle meinst Du die serielle Schnittstelle? In der Regel initialisiert man die und empfängt über ein Event. Man sollte sie aber besser in einem eigenen Thread laufen lassen, um die GUI nicht zu behindern. Die Form dürfte die GUI sein. Wie gesagt, zeig mal den Code. mfg klaus Mathias O. schrieb: > Hört sich an, nach einem Speicherleck. Code? Würde ich unter VC# mit ziemlicher Sicherheit ausschliessen. So etwas gab es ganz, ganz früher mal. mfg klaus Komme aus der C++ Ecke. Da kann sowas schon mal vorkommen, wenn man nicht aufpasst. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|