Guten Nabend,
ist villeicht nicht ganz so richtig platziert hier..
Aber eventuell kann mir ja doch jemand helfen oder hatte sogar schon mal nen ähnliches Problem.
Mein Problem:
Bin gerade dabei mir ein kleines PC Tool zu schreiben welches Daten einsammelt und auswertet.
Da ist auch schon das eigentliche Problem. Das einsammeln klappt bei höheren Baudraten deutlich besser als bei kleineren (<= 9600).
Ich habe ehrlich gesagt keine Ahnung mehr was ich noch anstellen kann damit es sauber ohne ein "Delay" funktioniert..
Achja.. Wenn ich ein "Delay" in das Event mit einbaue, sieht es bis jetzt so aus das alles so ankommt und ausgewertet wird wie es eigentlich soll.
Hier mal der Kode ( ist für den PC )
CodeBox C
ist villeicht nicht ganz so richtig platziert hier..
Aber eventuell kann mir ja doch jemand helfen oder hatte sogar schon mal nen ähnliches Problem.
Mein Problem:
Bin gerade dabei mir ein kleines PC Tool zu schreiben welches Daten einsammelt und auswertet.
Da ist auch schon das eigentliche Problem. Das einsammeln klappt bei höheren Baudraten deutlich besser als bei kleineren (<= 9600).
Ich habe ehrlich gesagt keine Ahnung mehr was ich noch anstellen kann damit es sauber ohne ein "Delay" funktioniert..
Achja.. Wenn ich ein "Delay" in das Event mit einbaue, sieht es bis jetzt so aus das alles so ankommt und ausgewertet wird wie es eigentlich soll.
Hier mal der Kode ( ist für den PC )
CodeBox C
public void Client_DataReceived(object sender, SerialDataReceivedEventArgs e) { /* Protokoll * * Startbyte[0] : '-' * Startbyte[1] : '+' * Nachrichtenlänge[2] : 0..255 * Anzahl Nutzdaten[3] : 0..255 * Daten Type[4] : 0..6 * Nachrichten Identifikation[5] : 0..255 * Funktionsrückgabe Code[6] : 0..255 * Checksumme[7] : 0..255 * Nutzdaten[8..n] : 0..255 */ Thread.Sleep(10); /* Empfangene Daten abholen */ try { Length += Client.Read(buffer, Length, 250); } catch { } /* Kommando Start Parsen * Rückgabewert: - 1 = Kein Start gefunden.. */ int index = Parser.ParseStart(buffer); if (index != -1) { /* Anzahl der zu empfangenen Bytes auslesen * HIER WIRD NOCH KEIN CRC BERECHNET! * Es könnten Übertragungsfehler nicht erkannt werden.. */ BytesToReceive = buffer[index + (byte)Cmd.Communication_Header_Enum.CMD_HEADER_LENGHT]; } /* Wurden alle Bytes empfangen? * Wenn nicht, direkt wieder raus hier! */ if (Length < BytesToReceive) { return; } else { Length = 0; BytesToReceive = 0; } /* Kommando untersuchen.. */ Parser.Parse(buffer, ref Cmd.CommandoParsed); }