Punto de Inicio en Comunicación Serial



Software Primario: Driver Software>>NI-Serial
Versión de Software Primario: 3.0
Versión de Software Primario Corregido: N/A
Software Secundario: N/A
Hardware: Serial

Problema:
¿Dónde puedo aprender acerca de la comunicación serial?

Solución:
Este documento le dará acceso a conocimientos básicos y herramientas requeridas para entender la comunicación serial.

  1. Conceptos y Términos Generales
  2. Prueba Loopback para Verificar la Operación de su Aparato
  3. Problemas Comunes
  4. Arquitectura de Software para Instrumentos Virtuales (VISA)
  5. Impresión de Reportes & Error -37
  6. Comunicación Modem en LabVIEW
  7. Grupos de Noticias para Soporte de Usuarios
  8. Localización de Averías Avanzadas para Data del Puerto COM


  1. Conceptos y Términos Generales Inicio
    Para una descripción general de conceptos y términos de comunicación serial, refiérase a la Base de Datos de Conocimiento 1M9E1L6Q: Comunicación Serial: Conceptos Generales

  2. Prueba Loopback para Verificar la Operación de su Aparato Inicio
    Existen tres programas para verificar la operación del puerto serial: LabVIEW, HyperTerminal y LabWindows/CVI. Estas opciones ejecutan una prueba Loopback en el puerto serial al poner en corto circuíto los pines de Envío y Recibo de información en el cable conectado a ese puerto. El primer paso describe el proceso para conectar en corto circuito los pines; este es el primer paso para los tres programas mencionados. El procedimiento de LabVIEW está listado debajo y los procedimientos de HyperTerminal y LabWindows/CVI están incluidos en las ligas al final de la página. Se recomienda usar el siguiente procedimiento si usted está usando LabVIEW:

    1. Connecte un cable a su puerto serial. El puerto más común es RS-232 con un connector de 9-pin ó 25-pin (DB-9 ó DB-25). En el cable, conecte las líneas 2 y 3 una con otra. Esto conectará la linea de Envío que viene de la computadora a la línea de Recibo que va a la computadora. Cuando los tenga conectados, la fila de arriba de su cable DB-9 debe verse de la manera siguiente [1 2=3 4 5].

      En un puerto RS-485, los voltages usan señales eléctricas diferenciales. Por lo tanto, debe conectar TXD+ con RXD+ y TXD- con RXD- (en el cable DB-9 esto equivale a conectar el pin 4 con el 8 y el pin 5 con el 9; en un conector Combicon conecte el pin 1 con el 5 y el pin 2 con el 4; en un conector modular jack conecte el pin 2 con el 6 y el pin 3 con el 7). Asegúrese que su software esté configurado en el modo de 4-alambres o 4-wires.

      Nota: Refiérase al Apéndice A del “Manual de Usuarios de Windows para Hardware y Software Serial” (liga debajo) para más información acerca de los diferentes tipos de conectores.

    2. Para HyperTerminal o LabWindows/CVI, siga las ligas al final de la página.

    3. Para LabVIEW, abra el programa de ejemplo llamado "Serial Communication.vi". Dependiendo de la version de LabVIEW que está utilizando, usted puede encontrar en ejemplo en diferentes lugares:


      • En LabVIEW 7.1 y 8.0, vaya a Help » Find Examples » Hardware Input and Output » Serial » Basic Serial Write and Read.vi
      • En LabVIEW 6.1, vaya a Help » Find Examples » Hardware Input and Output » Serial » Serial Communication VI.
      • En LabVIEW 6.0, vaya a Help » Examples » Search Examples » I/O Interfaces Examples » Serial Communication Examples » Serial Communication VI.
      • En LabVIEW 5.1 y 5.0, vaya a Help » Search Examples » I/O Interfaces Examples » Serial Communication Examples » Serial Communication VI.
      • Si está utilizando LabVIEW 4.0 o previo, siga la liga debajo a Ejemplo de Developer Zone: Loopback Test for Serial Port.


      Ahora utilice este VI de ejemplo para escribir una cadena de prueba en la entrada llamada Write String para el puerto serial, luego léalo de vuelta en la salida llamada Read String. Antes de correr el VI, asegúrese de haber seleccionado el puerto COM o el nombre del recurso correcto.

    4. Si esto funciona de la manera correcta y la cadena de palabras se lee de vuelta en la salida Read String, esto indica que el puerto serial de su aparato esta trabajando correctamente. La mayoría de los problemas con el puerto serial ocurren en el software y son causados por el tiempo entre las llamadas para leer/escribir o la configuración del puerto serial.


  3. Problemas Comunes Inicio
    La mayoría de los problemas ocurren en el software, no en el hardware. Siempre utilice los programas de ejemplo como punto de referencia para cómo conectar el panel de diagrama. Utilice los VIs que vienen con LabVIEW que se encuentran en Help » Find Examples o los que se encuentran en la Librería de Códigos de Ejemplo en la liga debajo.

    1. Referencia de Puertos: En LabVIEW los puertos están enumerados comenzando en zero (0). Por lo tanto, el puerto 0 o "port 0" en LabVIEW se refiere al COM1 de la computadora.
      • PC: 0 = COM1, 1= COM2, etc.
      • Mac: 0 = Modem, 1 = Printer, etc.
      • Sun: 0 = ttya, 1 = ttyb, etc.


    2. Tiempo de un Programa, Colgando: Muchas veces una operación de lectura ocurre en un puerto y esto hace que el VI Serial Port Read pare de correr y se quede colgando. Esto puede ocurrir al hacer una operación de lectura y especificar en el programa cierto número de bytes que el VI está supuesto a recibir. Como usted ha indicado en el VI Serial Port Read que el programa lea un número específico de bytes, si esa cantidad de bytes no está disponible en el búfer de puerto de entrada, el VI esperará hasta que más bytes sean escritos en el puerto serial. Si no hay más bytes escritos en el puerto para completar la operación, entonces el programa se queda colgando, esperando indefinidamente. Esto puede ser eliminado al usar el VI llamado Advanced Serial Write and Read que se encuentra en Help » Find Examples » Hardware Input and Output » Serial ya que le permite especificar un tiempo de espera o Timeout. Otra forma de evitar este error es utilizar la función llamada VISA Bytes at Serial Port para revisar el puerto y ver cuantos bytes hay en el búfer. Conecte el resultado como la entrada para la cantidad de bytes que va a leer para asegurarse de que la operación de lectura pueda ser completada. Revise los ejemplos que se encuentran en Serial Communication en LabVIEW para un excelente punto de inicio.

    3. Tiempo de un Programa, Transferencia Incompleta: Otro problema común que ocurre en la transferencia serial es que se termina la lectura de caracteres en el puerto y no se recibe la cadena completa de información que estaba esperando. Esto puede ocurrir cuando usted tiene una operación de lectura que ocurre antes de que la operación de escritura tenga tiempo de terminar. Esto se puede resolver al usar una estructura de Sequencia o Sequence Structure o al usar dependencia del movimiento de datos o Data Flow Dependency. Al usar una estructura de Sequencia con la lectura despues de la escritura usted se asegura de que la información sea escrita por completo antes de comenzar a leer. La dependencia del movimiento de datos utiliza una conexión (usualmente el error cluster) hacia el VI de lectura desde el VI de escritura inicial.

    4. Caracteres de Término del Instrumento: La comunicación serial es muy delicada cuando se trata de comunicar con otros instrumentos, porque el puerto serial envía exactamente lo que fue programado a enviar. Esto quiere decir que usted debe saber y programar la secuencia de código exacta, incluyendo los caracteres de término, para asegurarse de que el instrumento trabaja correctamente. Problemas comunes ocurren al no usar el caractér de término requerido por el instrumento o al dejar un espacio extra/caractér en la cadena de instrucción. Hay un nuevo estandar para comunicarse con aparatos en LabVIEW llamado Arquitectura de Software para Instrumentos Virtuales (VISA, por sus siglas en inglés). VISA es una librería de interfáz simple para controlar VXI, GPIB, RS-232, y otros tipos de aparatos. Si usted tiene problemas con E/S seriales, VISA es la forma ideal para ayudar a eliminar los errores causados por caracteres de término y hacer su código reusable y intercambiable entre otros aparatos que utilice en un futuro.


  4. Arquitectura de Software para Instrumentos Virtuales (VISA) Inicio
    VISA es una librería de interfáz simple para controlar VXI, GPIB, RS-232, y otros tipos de instrumentos en las plataformas de LabVIEW. VISA es el estandar utilizado por la Alianza de Sistemas de VXI plug & play, que incluye más de 35 de las compañías más grandes en la industria de instrumentación. El estandar VISA unifica la industria para hacer software que pueda ser interpretado y reusado por más tiempo, sin importar el tipo de operación de su instrumento. NI-VISA es un software controlador que está disponible en nuestra página web (vea la liga debajo para descargar los controladores). Para ayuda con preguntas de VISA, refiérase a la liga debajo de Soporte de VISA.

  5. Impresión de Reportes & Error -37 Inicio
    LabVIEW 5.1 y la versiones siguientes para Windows incluyen VIs en la paleta llamada Report Generation que le permite enviar texto a su impresora. Para ejemplos de cómo usar los VIs del Report Generation, seleccione Help»Find Examples»Printing and Publishing Data» Generating Reports.

    Si la impresora está conectada a un puerto paralelo local, como el LPT1 (or LPT2, etc.), usted puede usar el VI llamado Serial Port Write. Para más información, vea el capítulo "Serial Port VIs" en su Manual de LabVIEW.

    Si la impresora está en la red, usted no puede usar el VI Serial Port Write; usted debe usar otros métodos para imprimir, como uno de los siguientes:


    1. Utilice la impresión programática de un subVI para imprimir texto programáticamente. Seleccione “Print VI when VI Completes Execution” en el VI Setup de su subVI.

    2. Utilice el VI System Exec para imprimir de forma programática un texto usando Notepad.exe. El texto utilizado en el VI System Exec puede ser: Notepad.exe /p c:\prueba.txt, donde prueba.txt es el nombe de un archivo de texto que contiene el texto que desea imprimir.

    3. Para problemas con el Error -37 siga la liga debajo para revisar los valores en el archivo labview.ini.


  6. Comunicación Modem en LabVIEW Inicio
    Comunicación modem en LabVIEW es una operación soportada por compañías en el programa Alliance. Estas compañías son recomendadas por National Instruments por su calidad de trabajo.

  7. Foro de Intercambio para Desarrollo Inicio
    El foro de discusión National Instruments Developer Exchange ofrece búsqueda de textos, suscripciones de e-mail, y mucho más. Aproveche la experiencia de colegas científicos e ingenieros para ver, buscar, y publicar preguntas en esta comunidad (este foro está disponible en Inglés y Francés).

  8. Localización de Averías Avanzadas para Data del Puerto COM Inicio
    Usuarios avanzados que desean analizar los bits exactos que son transferidos a traves del puerto serial para detectar diferencias entre programas (por ejemplo, LabVIEW vs. HyperTerminal), pueden usar un programa llamado Portmon. Portmon es provisto por Sysinternals, quienes mantiene una página web con utilidades avanzadas, información técnica, y código relacionado con Windows 9x y Windows NT/2K internos.


Ligas Relacionadas:
Manual de Productos: Manual del Usuario de Hardware y Software Serial para Windows (en Inglés)
Developer Zone: Librería de Códigos de Ejemplo (en Inglés)
Ejemplo del Developer Zone: Loopback Test for Serial Port
Developer Zone: Developer Exchange Discussion Forums (en Inglés)
Soporte: Soporte de Productos Serial (en Inglés)
Soporte: Verificando el Puerto Serial, Prueba con HyperTerminal (en Inglés)
Soporte: Verificando el Puerto Serial, Prueba con LabWindows/CVI (en Inglés)
Drivers y Descargas: Todas las Versiones/a> (en Inglés)
Soporte:Soporte para los Drivers de Instrumentos (IVI, VISA) (en Inglés)
Base de Datos de Conocimiento 1M9E1L6Q: Conceptos Generales de Comunicación Serial
Base de Datos de Conocimiento 0ISAJ838: Error 37 Cuando Trato de Escribir al Puerto Paralelo (LPT1) en LabVIEW
Página Web de Sysinternals

Archivos Adjuntos:





Día del Reporte: 12/28/2005
Última Actualización: 04/28/2008
Identificación del Documento: 1M9D8H6Q