C# Modbus RTU

Gast #4549790
Lesenswert?

Hallo Leute,

ich will ein Unterprogramm basteln, was mir "schnellst möglich" meine 
ModbusRTU Daten zu seinem Mikrocontroller sendet, und die Antwort 
auswertet und die Daten bereit stellt.
1
uint16[] ModbusFunktion_3(byte Slaveadresse, uint16 Registeradresse, uint16 Registeranzahl)
2
{
3
    uint16[] receivedata= new uint16[Registeranzahl];
4
    Comport.Write(modbusprotokoll);
5
    // Warten bis das Protokoll komplett und Richtig angekommen ist, ansonsten Timeout
6
    Comport.Read(buffer, 0 , buff.Length);
7
    // Auswertung des Protokolls...
8
    return receivedata;
9
}

Meine frage ist, wie ich am Ressourcen sparensten das warten auf das 
komplette Modbusprotokoll gestalte, ohne den 
"SerialDataReceivedEventHandler" zu benutzen?

Schon mal vielen dank
Gast #4550154
Lesenswert?

Peter schrieb:

> Meine frage ist, wie ich am Ressourcen sparensten das warten auf das
> komplette Modbusprotokoll gestalte, ohne den
> "SerialDataReceivedEventHandler" zu benutzen?

Garnicht. Alles andere als die Benutzung des Events läuft letztlich auf 
ein busy wait hinaus. Und das ist naturgemäß das INIFFEZIENTESTE, was 
überhaupt denkbar ist. Klar, man kann die Situation durch eingestreute 
Thread.Sleep etwas entspannen, aber das ist immer noch inneffizient und 
erzeugt wieder andere Probleme.

Lerne einfach ereignisorientiertes Programmieren und fertig. Das wirst 
du sowieso immer wieder brauchen.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren