[C con Clase] Ayuda Puerto Serial

Juan Antonio jalr43 en hotmail.com
Sab Ene 27 13:53:02 CET 2007


Hola,

gracias Steven por la aclaración y Diego de nada, aquí estamos todos para ayudarnos.

Diego yo en tu caso vería la opción de usar el puerto paralelo en vez del serie. Conectaría la línea en la que se van a producir los cambios en el pin de datos menos significativo (LSB). Luego deberías establecer la frecuencia con la que quieres muestrear la la línea, es decir leer los datos del puerto a partir del conocimiento de tu dispositivo, porque supongo que puedes estimar una frecuencia de muestreo para no cometer mucho error en las medidas de la anchura de los pulsos. Ojo en un puerto serie que sigue la norma RS-232 la tensiones oscilan entre +15 y -15V, el  puerto pararalelo trabaja con 0 y 5V, aunque lo mismo si tu dispositivo no transmite con ningún protocolo tampoco sigue los niveles de tensión del RS-232.

Para hacerlo con puerto serie, para que el PC se entere que le quieres enviar datos la señal tiene que pasar de '1' (entre -3 y -15V) a '0' (de 3 a 15V) que es el bit de inicio o los que hayan, para decirle que el dato termina se necesita enviar los bits de parada (paso de '0' a '1') establecidos al configurar la comunicación. Entonces claro se podría usar una función para ver si hay datos en el puerto, mientrás no hayan la señal ha permanecido a '1' por lo que la puedes contar el tiempo a partir de la velocidad de transmisión. Mi duda es la señal cambia de '1' a '0', la UART empieza a muestrear, pero si la señal no vuelve a pasar de '0' a '1' en el tiempo configurado del puerto (que se obtiene a partir de la velocidad) para indicar los bits de parada después de los bits de datos, sobrescribirá los datos anteriores o ocurrirá algún error.

Lo mismo también puedes usar alguna de las líneas de control como mencionastes en el primer mensaje, navega, busca su significado, si son compatibles en voltios con tu entrada y con qué función puedes leerlas.

Espero que te sirva.

Un saludo,
Juan Antonio. 
  ----- Original Message ----- 
  From: D1e6o! 
  To: Lista de correo sobre C y C++ 
  Sent: Friday, January 26, 2007 4:52 AM
  Subject: Re: [C con Clase] Ayuda Puerto Serial


  Antes que nada siempre agradezco a quienes se toman un tiempo en leer o contestar mis dudas... (creo que está bien ser agradecido y saber reconocer) así que Juan Antonio muchas gracias por todo (entre otros que leyeron)

  El tema es el siguiente: (y te entiendo que no me hayas entendido.. je, no me expliqué muy bien) estoy intentando analizar lógicamente datos asincrónicos, que no poseen bits de stop ni de paridad ni nada por el estilo, a eso me refería sin protocolo, ya que para eso necesitaría conectar un microcontrolador y no, el circuito ya está armado así. Entonces debería comuncarme con el pc y que este detecte el ancho (en tiempo) de los pulsos, que no de error y poder almacenar en un buffer el tiempo entre un '1' lógico y un '0' y viceversa, y a eso viene mi pregunta, como podría hacer para lograrlo? Sé que se puede, pero no se como... El problema central es conocer en tiempo cuando cambia de estado el pin dts, y si es posible asignarle alguna interrupción o algo por el estilo para poder almacenar en una pila estas duraciones. 

  Muchas gracias! (y perdón por expresarme mal)

  Saludos!


  El día 25/01/07, Juan Antonio <jalr43 en hotmail.com > escribió:
    Hola Diego,

    no lo encuentro sentido a medir la anchura de los pulso cuanto depende exclusivamente de la velocidad a la que tengas configurado el puerto. Por ejemplo si la velocidad es de 9600 bps, es decir 9600 bits por segundo la anchura de cada bit que se transmite es 1/9600 = 104.16 microsegundos. Entonces cuando se hayan transmitido 9600 bits habrá pasado un segundo, 104.16 microsegundos = 1/9600 que por 9600 devuelte 1 segundo.

    Si los datos los vas a leer en un PC, lo que se envía por el puerto deberías seguir la norma RS-232, porque el puerto del PC conecta con una UART que se encarga de quitar de la trama los bits de comienzo y parada almacanando el dato resultante en una pila.

    Yo hicé un diseño una vez creando el protocolo RS-232 es tan fácil como tener la rutina de espera de un bit: poner la línea con el valor del bit, rutina de espera de un bit, poner el la línea el siguiente valor, etc. Lógicamente si los bits de parada, comienzo no son 1 ó 2, por ejemplo 1.5 bits también hace falta una rutina de espea de 1/2 bit.

    Si explicas con más detalle tu problema quizá te pueda ayudar, es decir conecto en el pueto serie del PC un cacharro que cambia el valor de la señal que transmite sin ningún protocolo.

    Un saludo,
    Juan Antonio.
      ----- Original Message ----- 
      From: D1e6o! 
      To: Lista de correo sobre C y C++ 
      Sent: Thursday, January 25, 2007 7:13 PM
      Subject: [C con Clase] Ayuda Puerto Serial


      Hola gente, bueno estoy programando un poco con el puerto serial y quería saber si alguien tiene ideas de esto: No de una comunicación a través de rs232 por el puerto serial sino sin protocolo, es decir, medir el ancho de los pulsos (1 y 0) para después procesarlos... Se que se puede.. pero no se como, tengo entendido que es por los pines rts y dtr del puerto serie pero como hago para saber el estado en tiempo real de los pines?... 

      Saludos si alguien tiene algo acerca de esto cualquier cosa me sirve..! 

      Gracias..



--------------------------------------------------------------------------


      _______________________________________________
      Lista de correo Cconclase Cconclase en listas.conclase.net
      http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
      Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ


    _______________________________________________
    Lista de correo Cconclase Cconclase en listas.conclase.net
    http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net 
    Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ






------------------------------------------------------------------------------


  _______________________________________________
  Lista de correo Cconclase Cconclase en listas.conclase.net
  http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
  Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20070127/1bfc363f/attachment.html>


Más información sobre la lista de distribución Cconclase