Hallo zusammen,
ich stehe gerade total auf dem schlauch und bräuchte mal den einen oder
anderen Denkanstoß.
Ich habe ein µC der mir einen Datenstrom über die serielle Schnittstelle
zur Verfügung stellt (unidirektional), ein Packet sind immer 10Byte.
dieser Wird in einem visual Studio C# Programm ausgelesen:
1. ich öffne den Port:
1 | // open COM port
|
2 | SerialPort port = new SerialPort("COM5", 9600, Parity.None, 8, StopBits.One);
|
3 | port.Open();
|
2. ich habe einen bufferArray mit der Länge 10 erstellt und lese den
Port aus
1 | static byte[] buffer = {0, 0, 0, 0 ,0 ,0 ,0 ,0 ,0 ,0 };
|
2 | // Read first byte "0x00"
|
3 | buffer[0] = Convert.ToByte(port.ReadByte());
|
4 | // Start Byte des Pakets ist 0x00
|
5 | if (buffer[0] == 0)
|
6 | {
|
7 | ...
|
8 | for (int i = 1; i < 11; i++)
|
9 | {
|
10 | buffer[i] = Convert.ToByte(port.ReadByte()); // read byte i (1-10, 0 wurde schon gelesen)
|
11 | ...
|
12 | }
|
13 | }
|
Nun zu meinen Fragen:
1. da ich ja nur ein Polling Verfahren nutze merkt mein C# Programm
nicht wenn der Stream mal Stoppt, wie könnte ich dieses einfügen?
2. ich würde diesen Programmteil gern als neuen Task auslagern der im
Hintergrund läuft, Wie kann ich den Inhalt des Buffers am Besten
übergeben bzw bereitstellen(an ein anderes Programm oder Task).
3. Würdet ihr genauso vorgehen oder sollte man das Problem
anders/eleganter wie auch immer lösen