2016-08-31 5 views
0

Ich habe eine Controller-Design-Anwendung, wo ich Daten von 3 USB-Geräten (als virtuelle COM-Port unter Windows gesehen), verarbeiten, und dann die Aktion an ein 4. USB-Gerät (auch virtueller COM-Port) senden . Ich muss diese Daten verarbeiten, sobald ich sie mit einer minimalen Latenz erhalte. Ich entschied mich, C++ für Windows Embedded zu verwenden und die serielle Kommunikation mit dem .Net System :: IO :: Ports und DataReceived-Ereignis durchzuführen. Ich habe meine Code-Leistung mit nur einem USB-Gerät getestet, wobei das USB-Gerät ein Byte an den Computer sendet und der Computer es dann zurücksendet. Ich messe den Zeitunterschied und es war völlig indeterministisch. Manchmal 2 ms und manchmal 20 ms. Hinweis: Die Prozesspriorität ist auf Echtzeit eingestellt.Schnelle asynchrone serielle Kommunikation

Ist es eine bessere Möglichkeit, eine deterministische Latenz zu erhalten, bei der eine maximale Verzögerung garantiert ist? Kann eine andere API für die serielle Echtzeitkommunikation unter Windows Embedded geeignet sein?

Vielen Dank im Voraus

Antwort

0

In Windows können Sie nicht eine deterministische Latenzverzögerung erhalten. Sie können keine Garantie haben. Weil es kein Echtzeit-Betriebssystem ist.

Wenn Sie eine Garantie wollen, die für Ihr Projekt obligatorisch sind, können Sie entweder den Echtzeitteil in eine kleinere Vorrichtung wie Arduino (Open-Source, some users made a Real Time OS with it) abschieben oder Beck chip (kommerziell, mit einem Real Time miniOS geliefert); oder Sie können eine RealTime Linux installieren, die einige garantierte Verzögerung bringt.

Verwandte Themen