El comportamiento es este:
1 - Llamo a la línea conectada al modem desde mi cel (o cualquier otro número) y pasa nada después del tercer ring se escucha un sonido en el modem.
2 - Hago una segunda llamada y ahora si funciona todo bien, en pantalla me muestra la información de fecha, hora y número de telefono.
3 - dejo pasar unos 4 minutos, marco nuevamente y volvemos a empezar (punto 1 y 2)
Es como si el modem se durmiera o algo por el estilo cuando esta inactivo y con la primera llamada se despertara pero no identifica el número.
El módem que uso es un Lucent MDP7800SP-U
el código que uso:
Código:
using System.IO; using System.IO.Ports; using System.Text; using System; class Program { static SerialPort ComPort; static ASCIIEncoding ASCIIEncoder = new ASCIIEncoding(); public static void OnSerialDataReceived(object sender, SerialDataReceivedEventArgs args) { //SE ALMACENA EL EVENTO ACTUAL DEL PUERTO EN LA VARIABLE DATA string data = ComPort.ReadExisting(); string ring_date = ""; string ring_time = ""; string ring_nmbr = ""; //OBTENER FECHA PARA ESCRIBIR EL LA BITACORA DateTime date = DateTime.Now; string dateformat = date.ToString("yyyyMMdd"); //OBTENER EL AÑO MES Y DÍA //OBTENEMOS LA LONGITUD DE LAS CADENAS RECIBIDAS POR EL MÓDEM, CUANDO SEA MAYOR QUE 30 CARACTERES //SACAMOS LOS DATOS DE FECHA Y NÚMERO DE TELÉFONO if (data.Length >= 30) { ring_date = data.Substring(7, 4); ring_time = data.Substring(20, 4); ring_nmbr = data.Substring(33, 10); //SEGEMENTO PARA ESCRIBIR EN BITACORA LOS EVENTOS CAPTURADOS string fileName = "C:\\appserv\\Tracer_Log_" + dateformat + ".txt"; //esto inserta texto en un archivo existente, si el archivo no existe lo crea StreamWriter writer = File.AppendText(fileName); writer.WriteLine(ring_nmbr + "|" + ring_date + "|" + ring_time); writer.Close(); System.Console.Write(ring_date + "|" + ring_time + "|" + ring_nmbr + "\n"); } } static void Main(string[] args) { string port = "COM4"; int baud = 9600; if (args.Length >= 1) { port = args[0]; } if (args.Length >= 2) { baud = int.Parse(args[1]); } InitializeComPort(port, baud); string text; //ACTIVAR IDENTIFICADOR DE LLAMADAS String ComandoATID; ComandoATID = "AT#CID=1"; ComPort.Write(ComandoATID + '\r'); do { //CAPTURAMOS EL TEXTO ESCRITO EN LA CONSOLA text = System.Console.ReadLine(); //ESCRIBIMOS EN LA CONSOLA EL TEXTO CAPTURADO ComPort.Write(text + '\r'); } while (text.ToLower() != "q"); } private static void InitializeComPort(string port, int baud) { ComPort = new SerialPort(port, baud); // ComPort.PortName = port; // ComPort.BaudRate = baud; ComPort.Parity = Parity.None; ComPort.StopBits = StopBits.One; ComPort.DataBits = 8; ComPort.Handshake = Handshake.None; ComPort.DataReceived += OnSerialDataReceived; ComPort.Open(); } }
que creen que esta pasando??
saludos
------------------------
7th Sign | Iván Rico