jueves, 14 de mayo de 2015

Programación de Comunicación Serial

Programación de Comunicación Serial
La librería RS232 contiene varias funciones que manejan todos los aspectos de la comunicación serial. Las funciones más importantes son: open, close, read y write. Estas funciones se describen en seguida:
  • Abriendo y Cerrando los Puertos COM

    Antes de usar una función serial para la comunicación con un instrumento, se debe abrir una "sesión" a un puerto COM usando OpenComConfig
  •                int OpenComConfig
  •                (int COM_Port, char Device_Name[],long Baud_Rate,
  •                                int Parity, int Data_Bits,
  •                                int Stop_Bits, int Input_Queue_Size,
  •                                int Output_Queue_Size);


Esta función especifica la velocidad en baudios, los bits de datos, bits de parada y tamaño del bloque de memoria. CVI permite especificar el tamaño del espacio en memoria para almacenar los mensajes seriales. En lugar de la función OpenComConfig se puede utilizar la función OpenCom, en cuyo caso se utilizarían los parámetros del puerto por defecto, especificados en el sistema operativo.

Para liberar los recursos utilizados por la sesión serial se utiliza la función CloseCom. Para garantizar que todos los bytes fueron escritos antes de cerrar el puerto, se debe utilizar la funciónGetOutQLen para monitorear la cola de salida de datos. Cuando la longitud de esta cola es cero, se puede cerrar el puerto sin problemas. 
  • Escribiendo al Puerto COM

    Para escribir datos contenidos en un arreglo a un dispositivo se utiliza:
  •                int ComWrt (int COM_Port, char Buffer[], int Count);

ComWrt escribe datos de la memoria especificada por el arreglo "Buffer" al puerto COM especificado. El parámetro "Count" especifica el número de bytes que se deben escribir al puerto. La función strlen (de las librerías de ANSI C) determina el tamaño en bytes de un arreglo de caracteres. El valor regresado por esta función (strlen) puede usarse para determinar el parámetro "Count" en la función ComWrt. 
  • Leyendo del Puerto COM

    Para leer datos que vienen de un dispositivo a través del puerto serial se utiliza la función:
  •                int ComRd (int COM_Port, char Buffer[], int Count);

ComRd lee el número de bytes especificado por el parámetro "Count" del puerto COM indicado. Para obtener el número de bytes presentes en la cola de entrada del puerto se utiliza la funciónGetInQLen. Es conveniente utilizar el valor regresado por GetInQLen como el parámetro "Count" para la función ComRd. 
  • Usando la Función InstallComCallback para Leer del Puerto Serial

    Consideremos una situación en la cuál un instrumento genera una grán cantidad de datos o toma mucho tiempo para obtener un dato. El instrumento tiene que mandar datos a la computadora tan pronto como los datos son adquiridos. Si quisiéramos esperar la respuesta del instrumento llamando a la función ComRd inmediatamente después de solicitar los datos, nuestro programa se quedaría estancado en esa llamada y no sabríamos el tamaño de la respuesta del instrumento. La alternativa es que el programa sea notificado cuando la respuesta del instrumento esté lista.

    La función InstallComCallback nos permite instalar una función que será llamada cuando haya una respuesta en el puerto COM: 
  •                int InstallComCallback
  •                                (int COM_Port, int Event_Mask, int Notify_Count,
  •                                 int Event_Character,
  •                                 ComCallbackPtr Callback_Function,
  •                                 void *Callback_Data);

El parámetro Callback_Function recibe el nombre de una función creada dentro del mismo programa que llama a InstallComCallback. Esta función será llamada cuando el evento específicado por Event_Mask ocurra. Para mayor información sobre estas funciones y sus parámetros, revise la documentación en línea para cada función en su "function panel" o la documentación escrita de CVI

0 comentarios:

Publicar un comentario