RS232 ¿qué pin puedo conectar para recibir una señal de entrada en mi aplicación Java que escucha en ttyUSB0 o ttyS0?

1

Estoy tratando de hacer un BOTÓN muy simple (solo cable ROJO / AMARILLO solamente). Ahora, si se presiona el botón (ROJO táctil 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 llegue a las señales de entrada de mi aplicación?

Gracias

    
pregunta YumYumYum

3 respuestas

2

En el mejor de los casos, esto va a ser un tumulto. 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 pueda ser leída por el software, entonces la línea de módem destinada a indicar a la computadora que hay una llamada entrante podría funcionar. Según el acceso que tenga su software al puerto serie, debe poder leer esa línea. También hay líneas para la detección de anillos y una línea general lista. Recuerdo vagamente que los nombres de algunas de estas líneas son DSR, DCD. Una referencia detallada de RS-232 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 no solo el sistema operativo tiene que permitir el acceso de la aplicación a estas líneas, sino que la JVM tiene que permitirles acceder a la aplicación de Java.

Si desea sentir una pulsación de un botón, use un mouse u otro dispositivo de entrada destinado para este propósito.

Añadido:

Como dije, tratar de detectar un solo cambio de voltaje con RS-232 es un problema. 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 usted quiere.

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 el rebote, que es algo en lo que debe pensar. Si se trata de un programa único, obtenga un micro pequeño con un UART. De lo contrario, puede usar el micro más pequeño posible para registrar al personaje en firmare. Esto realmente no es difícil, especialmente si haces que la velocidad de transmisión 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 desde su oscilador interno de 4 MHz.

Un problema es que el micro se ejecutará a niveles lógicos, mientras que RS-232 requiere que la señal de entrada oscile al menos desde -5 V a + 5 V, preferiblemente un poco más. La forma más correcta es agregar un chip de interfaz RS-232 como un MAX232 o similar. Sin embargo, muchos puertos COM de la PC funcionan con solo 0 a +5 oscilación de voltaje de entrada. En ese caso, el micro puede conducir 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.

    
respondido por el Olin Lathrop
4

Puede vincular los pines de TX y RX a través del botón, y luego hacer que su software "encueste" el estado del botón enviando un carácter desde el puerto serie y observando si el personaje regresa a través del puerto serie.

    
respondido por el Majenko
2

Si conecta un lado a RTS (pin 4) a través de una resistencia grande (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 se presiona el botón, que se puede detectar en el software.

Lamentablemente, no hay ningún 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 el segundo terminal del botón.

    
respondido por el Ben Voigt

Lea otras preguntas en las etiquetas