Hallo, ich habe Erfahrung mit uC programmieren, aber bin komplett neu bei microsoft visual studio community C#. Ich habe für mein Problem viel gegoogelt aber alle Beispiele beziehen sich auf immer auf ein Trennzeichen in einem String, diesen habe ich leider nicht. Ich empfange immer z.B. 12381122334455667788 über (receiveBuffer.Substring(0, buffPos);) und muss es zerlegen und in datagrid zeigen: 123 //ID 8 // länger der Daten 11 //Data 1 22 //Data 2 33 //Data 3 44 //Data 4 55 //Data 5 66 //Data 6 77 //Data 7 88 //Data 8 string CANMSG_receive = receiveBuffer.Substring(0, buffPos); string CANMSG_reiceve_Data = receiveBuffer.Substring(0, buffPos); dataGridView_receive.Rows.Add(CANMSG_receive, CANMSG_reiceve_Data, CANMSG_receive_amount); Kann mir einer helfen? Gruss Stefan
a) mit substring und etsprechender länge: https://msdn.microsoft.com/de-de/library/aka44szs(v=vs.110).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-1 b) string in bytearray umwandeln
Unten ein möglicher Ansatz, den String per "Substring" auseinanderzupfriemeln. Für weitere Ratschläge sind die Infos zu mager.
1 | static void Main() |
2 | {
|
3 | var input = "12381122334455667788"; |
4 | |
5 | foreach (var value in GetValues(input)) Console.WriteLine(value); |
6 | // ...
|
7 | var x = GetValues(input).ToArray(); |
8 | // ...
|
9 | }
|
10 | |
11 | public static IEnumerable<int> GetValues( |
12 | string input, |
13 | int nIdDigits = 3, |
14 | int nLengthDigits = 1, |
15 | int nDataElementDigits = 2) |
16 | {
|
17 | if(input.Length < nLengthDigits + nDataElementDigits) |
18 | {
|
19 | throw new ArgumentException("bla"); |
20 | }
|
21 | |
22 | int curIdx = nIdDigits + nLengthDigits; |
23 | int endIdx = input.Length; |
24 | |
25 | if(((endIdx - curIdx) % nDataElementDigits) != 0) |
26 | {
|
27 | throw new ArgumentException("..."); |
28 | }
|
29 | |
30 | while (curIdx < endIdx) |
31 | {
|
32 | yield return int.Parse(input.Substring(curIdx, nDataElementDigits)); |
33 | curIdx += nDataElementDigits; |
34 | }
|
35 | }
|
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.