La aplicación C# en la que estoy trabajando debe poder llamar a una función dentro de los 5 milisegundos del cambio de estado de una señal de entrada digital (0V = apagado, 5V = encendido).
En lugar de usar software para sondear repetidamente el estado de esa entrada, me gustaría que algún hardware simplemente llame a una función de software cuando el hardware detecta un cambio de estado (como cómo funcionan las interrupciones de hardware).
¿Alguien sabe cómo hacer esto (qué puertos usar) en una torre de PC estándar? ¿O alguien sabe de algún periférico de hardware que permita esta funcionalidad?
Las latencias ocasionales están bien. Necesito <5ms promedio.
Básicamente necesito tomar tantas muestras como sea posible de la forma de onda digital de entrada. (preferiblemente en el programa C#, en lugar de en un microcontrolador periférico, aunque estoy abierto a sugerencias).
Por ejemplo, descubrí que Labjack U3 puede sondear su entrada digital en menos de un milisegundo. Esta es una respuesta válida a la pregunta, pero me interesan más respuestas, especialmente las que no usan sondeo o sondeo más rápido que 1 ms.
Sería bueno una alta impedancia de entrada (entradas digitales).
¿Necesita realizar una acción específica en tiempo real o simplemente grabar el evento?
Si es lo primero, nunca logrará esto utilizando hardware básico e interfaces de nivel de consumidor. Necesitará un procesador de señales de laboratorio (será una tarjeta que puede acceder directamente a las interrupciones de hardware) y un sistema operativo en tiempo real como VxWorks. Un sistema operativo centrado en el usuario no interrumpirá la escritura de un disco solo porque el bus USB requiere atención.
Si es lo último, consiga una grabadora de señal y post-procese la salida del búfer a su conveniencia.
Si su señal no tiene demasiado DC (pausas largas sin datos), use la tarjeta de sonido.
Terminé usando un Arduino Uno Timer Input Capture Interrupt Service Routine
para configurar datos a través de USB en un SerialPort
objeto C # inmediatamente después de la captura de entrada. Se SerialPort
activa serialdatareceivedeventhandler
inmediatamente después de detectar un carácter de fin de archivo (0x1A), y se inicia un nuevo subproceso para procesar los datos de entrada (como asignarle una marca de tiempo).
A todos los vecinos, ¿Qué diablos? Obviamente te equivocaste en que no se pudo hacer.
Spehro Pefhany
Eugenio Sh.
JoseOrtiz3
holamundo922
Eugenio Sh.
Eugenio Sh.
JoseOrtiz3
Eugenio Sh.
JoseOrtiz3
Eugenio Sh.
akohlsmith
JoseOrtiz3
crosley
JoseOrtiz3
KyranF
KyranF
ilkhd
KyranF
KyranF
ilkhd
KyranF
ilkhd
KyranF
JoseOrtiz3
KyranF
JoseOrtiz3