Die C#-Anwendung, an der ich arbeite, muss in der Lage sein, eine Funktion innerhalb von 5 Millisekunden nach der Zustandsänderung eines digitalen Eingangssignals aufzurufen (0 V = aus, 5 V = ein).
Anstatt Software zu verwenden, um den Zustand dieses Eingangs wiederholt abzufragen, möchte ich, dass eine Hardware einfach eine Softwarefunktion aufruft, wenn die Hardware eine Zustandsänderung erkennt (z. B. wie Hardware-Interrupts funktionieren).
Weiß jemand, wie das geht (welche Ports zu verwenden sind) auf einem Standard-PC-Tower? Oder kennt jemand Hardware-Peripheriegeräte, die diese Funktionalität ermöglichen?
Gelegentliche Latenzen sind in Ordnung. Ich brauche <5ms Durchschnitt.
Ich muss grundsätzlich so viele Samples wie möglich von der digitalen Eingangswellenform nehmen. (vorzugsweise im C#-Programm und nicht in einem peripheren Mikrocontroller, obwohl ich für Vorschläge offen bin).
Ich habe zum Beispiel herausgefunden, dass der Labjack U3 seinen digitalen Eingang in weniger als einer Millisekunde abfragen kann. Dies ist eine gültige Antwort auf die Frage, aber ich bin an weiteren Antworten interessiert, insbesondere an solchen, die keine Abfrage verwenden oder schneller als 1 ms abfragen.
Hohe Eingangsimpedanz wäre schön (digitale Eingänge).
Müssen Sie eine bestimmte Echtzeitaktion ausführen oder nur das Ereignis aufzeichnen?
Im ersteren Fall werden Sie dies niemals mit handelsüblicher Hardware und verbrauchergerechten Schnittstellen erreichen. Sie benötigen sowohl einen Signalprozessor in Laborqualität (es wird eine Karte sein, die direkt auf Hardware-Interrupts zugreifen kann) als auch ein Echtzeit-Betriebssystem wie VxWorks. Ein benutzerorientiertes Betriebssystem unterbricht das Schreiben auf eine Festplatte nicht, nur weil der USB-Bus etwas Aufmerksamkeit verlangt.
Wenn letzteres der Fall ist, besorgen Sie sich einen Signalrecorder und bearbeiten Sie den Pufferausgang nach Belieben nach.
Wenn Ihr Signal nicht zu viel Gleichstrom hat (lange Pausen ohne Daten), verwenden Sie die Soundkarte.
Am Ende habe ich einen Arduino Uno verwendet, Timer Input Capture Interrupt Service Routine
um Daten über USB SerialPort
sofort nach der Eingabeerfassung auf ein C#-Objekt zu setzen. Der SerialPort
feuert serialdatareceivedeventhandler
unmittelbar beim Erkennen eines Dateiendezeichens (0x1A) und ein neuer Thread startet, um die Eingabedaten zu verarbeiten (z. B. um ihnen einen Zeitstempel zuzuweisen).
An alle Nachbarn, What the Heck? Offensichtlich hast du dich geirrt, dass es nicht möglich war.
Spehro Pefhany
Eugen Sch.
JoseOrtiz3
hallowelt922
Eugen Sch.
Eugen Sch.
JoseOrtiz3
Eugen Sch.
JoseOrtiz3
Eugen Sch.
Kohlschmied
JoseOrtiz3
trosley
JoseOrtiz3
KyranF
KyranF
ilkhd
KyranF
KyranF
ilkhd
KyranF
ilkhd
KyranF
JoseOrtiz3
KyranF
JoseOrtiz3