Estoy tratando de hacer un BOTÓN muy simple (cable simple ROJO/AMARILLO solamente). Ahora, si se presiona el botón (ROJO toque AMARILLO), quiero recibir la señal de entrada en mi aplicación Java (se presionó ese botón).
¿En qué puertos de RS233 (DB9) debo parchear el cable ROJO/AMARILLO? ¿Para que cualquier botón presionado obtenga señales de entrada en mi aplicación?
Gracias
En el mejor de los casos, esto va a ser una chapuza. RS-232 es para comunicación en serie, no para líneas de entrada digital. Sin embargo, si desea una sola línea de entrada que el software pueda leer, entonces la línea de módem destinada a decirle a la computadora que hay una llamada entrante podría funcionar. Dependiendo de qué acceso tenga su software al puerto serie, debería poder leer esa línea. También hay líneas para detección de timbre y una línea lista general. Recuerdo vagamente que los nombres de algunas de estas líneas son DSR, DCD. Una referencia RS-232 detallada debería ser fácil de encontrar allí.
No todos los controladores de bajo nivel hacen que todas las líneas estén disponibles para el software. Querer esto en Java puede agregar otra compilación, ya que el sistema operativo no solo debe permitir el acceso de la aplicación a estas líneas, sino que la JVM debe dejarlas pasar a la aplicación Java.
Si desea sentir la presión de un botón, use un mouse u otro dispositivo de entrada diseñado para ese propósito.
Como dije, tratar de detectar un solo cambio de voltaje con RS-232 es una chapuza. Lo que olvidé mencionar es una forma simple de hacerlo dentro de la especificación RS-232 para que la interfaz de software normal haga lo que quieras.
La forma más sencilla es que un pequeño microcontrolador detecte el cierre del botón y luego emita un carácter al puerto serie. Esto tiene el beneficio adicional de permitir que el micro realice la eliminación de rebotes, que es algo en lo que debe pensar. Si esto es único, obtenga un pequeño micro con un UART. De lo contrario, puede usar el micro más pequeño posible para marcar el carácter en firmare. Esto realmente no es difícil, especialmente si hace que la velocidad en baudios sea lo suficientemente baja. Una vez envié 9600 baudios desde un PIC 16 desde un cristal de 160 kHz. Puede hacer esto fácilmente con un PIC 10F200 funcionando desde su oscilador interno de 4 MHz.
Un problema es que el micro funcionará a niveles lógicos, mientras que RS-232 requiere que la señal de entrada oscile al menos de -5V a +5V, preferiblemente un poco más. La forma completamente correcta es agregar un chip de interfaz RS-232 como un MAX232 o similar. Sin embargo, muchos puertos COM de PC funcionan con solo una oscilación de voltaje de entrada de 0 a +5. En ese caso, el micro puede controlar la línea de recepción de la PC directamente. Tenga en cuenta que en esta configuración, la señal debe invertirse de lo que emiten los micro UART normales. La línea inactiva debe ser baja, mientras que el UART incorporado producirá una línea inactiva alta.
Puede vincular los pines TX y RX a través del botón, luego hacer que su software "sondee" el estado del botón enviando un carácter fuera del puerto serie y viendo si se le devuelve ese carácter a través del puerto serie.
Si conecta un lado a RTS (pin 4) a través de una gran resistencia (por ejemplo, 47k o 100k) y a RX (pin 3), y el otro lado a +9V, probablemente obtendrá una señal de "interrupción" cuando el botón se presiona, que se puede detectar en el software.
Desafortunadamente, no hay pin en el conector RS-232 que normalmente tiene un voltaje RS-232 positivo válido. Puede usar el software para enviar una condición de interrupción y usar TX (pin 2) para la segunda terminal del botón.
kenny
Yum Yum Yum
Yum Yum Yum
Dan Beale
Kortuk