Tiempo de suspensión del módem

0

Estoy buscando algunos tiempos típicos y en el peor de los casos para que un módem en serie cuelgue y el DCD desactive después de recibir la cadena de comando de colgar ("ATH").

Mi proyecto utiliza un módem y, en ocasiones, debe reiniciarse por otros motivos. El reinicio es tan rápido que si no espero después de enviar el mensaje ATH, el DCD con frecuencia aún se afirma cuando el sistema vuelve a funcionar e intenta enviar mensajes de la aplicación al módem mientras la conexión anterior termina de cerrarse.

Puedo esperar fácilmente a que DCD desaparezca antes de cerrarse, pero no quiero quedarme atascado en un bucle infinito si algo sale mal. ¿Qué tan pronto debería esperar que un módem en serie cierre una conexión? ¿Después de cuánto tiempo puedo suponer que algo está mal si DCD aún está alto después de enviar un comando de colgar?

    
pregunta John

1 respuesta

0

Se me ocurren dos soluciones:

  1. Sin saber exactamente el peor de los casos, use un tiempo de espera generoso, como un segundo. Después de reiniciar, no haga nada con el módem durante tanto tiempo. (Quizás de forma condicional: no haga nada con el módem durante un segundo mientras está afirmando DCD . Si no está afirmando DCD, simplemente proceda, y también salga del bucle en el momento en que deje de afirmar DCD.

  2. Refinamiento: en un almacenamiento no volátil que sobrevive a los reinicios, registre una bandera que diga "hay una transacción de bloqueo de módem en curso". Siempre borre la bandera cuando el módem termine de colgar. Si se produce un reinicio durante un bloqueo, al reiniciar, si encuentra este indicador, sabrá que si el módem está afirmando DCD, esta no es una sesión de módem válida, sino una que está en proceso de colgarse. El software debe esperar a que el DCD desaparezca. En este caso (presumiblemente infrecuente), quizás pueda tolerar un retraso más generoso.

El retraso no tiene que afectar la secuencia de inicio completa, solo el inicio de la aplicación que se comunica con el módem.

    
respondido por el Kaz

Lea otras preguntas en las etiquetas