COMUNICACIONES SERIE

1. Confirmar en panel de control->sistema->Administrador de dipositivos->Puertos
COM los puertos COM disponibles
2. Conectar el cable serie suministrado entre los dos puertos serie de la tarjeta
posterior del PC
3. Instalar, si es necesario, la librería PComLT. Si la librería está ya instalada debe
aparecer una carpeta de programas Pcomm Lite.
4. Ejecutar dos instancias del programa Pcomm Lite->Terminal Emulator. Una
para cada puerto serie disponible
5. Configurar los puertos a 9600 N 8 1
6. Comprobar que la información pasa de un Terminal a otro.
7. Cerrar una de las instancias del programa
8. Crear una aplicación VC++ tipo dialogo.
9. Copiar desde el directorio archivos de programa\PcomLT\ los ficheros
pcomm.dll, pcomm.lib y pcomm.h al directorio de nuestra aplicación.
10. Incluir en nuestro proyecto la librería (pcomm.lib)
11. Incluir en el código de nuestra aplicación el fichero pcomm.h con una sentencia
#include
12. Crear el evento del timer para el diálogo
13. Añadir un botón en el diálogo y en el evento del clic usar las funciones de la
librería PcomLT para abrir (sio_open) y configurar el puerto (sio_ioctl). Crear
un timer con periodo de un segundo.
14. Crear un segundo botón en el diálogo y en el evento del clic llamar a la función
de la librería para cerrar el puerto (sio_close) y terminar el timer.
15. Gestionar los errores en la apertura del puerto. En caso de error generar un
mensaje de aviso usando la función (AfxMessageBox). int AfxMessageBox(
LPCTSTR lpszText);
16. Añadir al diálogo un control de edición de texto para mostrar los caracteres
recibidos y crear una variable para acceder a su contenido. En las propiedades
del control seleccionar multilinea.
17. Modificar el código del timer para leer los caracteres recibidos y mostrarlos en
el control del CEdit asociado. Para ello comprobar si hay caracteres recibidos en
el puerto serie pendientes de leer. Si hay caracteres, leerlos con la función
sio_read y a continuación añadirlos al control CEdit asociado. Para actualizar el
control CEdit, se lee primero su contenido con el método GetWindowText. Se le
añaden a continuación los caracteres leídos del puerto serie y finalmente se
cambia el contenido con el método SetWindowText.
18. Añadir al diálogo un control de edición de texto para escribir los caracteres a
transmitir y crear una variable para acceder a su contenido.
19. Añadir al diálogo un tercer botón en el diálogo y en el evento del clic enviar el
contenido del control de texto a transmitir a través del puerto serie usando la
función sio_write. Usar el método GetWindowText de la clase CEdit para leer el
contenido del texto de edición.
20. Modificar el código añadiendo al mensaje a enviar la protección de errores
CRC16.
21. El código del CRC16 se puede obtener al final del fichero
MODBUS_OVER_SERIAL_LINE_V1 o alternativamente con el código que
figura a continuación:

unsigned short CxxDlg::Crc(unsigned char *buf , int len)
{
unsigned short crc=0xffff , i;
while(len--)
{
crc = (crc ^ *buf++);
for(i=0;i<8;i++)
{
if(crc & 1)
crc=(crc>>1)^0xA001;
else
crc=(crc>>1);
}
}
return crc;
}