Logo Studenta

Sistema-de-comunicacion-serie-para-senales-de-electrocardiografia-en-Windows

¡Este material tiene más páginas!

Vista previa del material en texto

UUNNIIVVEERRSSIIDDAADD NNAACCIIOONNAALL AAUUTTÓÓNNOOMMAA DDEE MMÉÉXXIICCOO 
 
 
 
 
FACULTAD DE INGENIERÍA 
 
 
 
 
 
 
“SISTEMA DE COMUNICACIÓN SERIE PARA 
SEÑALES DE ELECTROCARDIOGRAFÍA EN WINDOWS” 
 
 
 
 
 
Tesina que presenta: 
 
Pedro Torres César 
 
Para obtener el grado de: 
 
Ingeniero Eléctrico Electrónico 
Módulo terminal de Ingeniería Biomédica 
 
Con la modalidad de titulación por Servicio Social 
 
 
 
Asesor: M. en C. Raúl Martínez Memije. 
 
 
 
 
México D.F. Septiembre 2007 
 
 
UNAM – Dirección General de Bibliotecas 
Tesis Digitales 
Restricciones de uso 
 
DERECHOS RESERVADOS © 
PROHIBIDA SU REPRODUCCIÓN TOTAL O PARCIAL 
 
Todo el material contenido en esta tesis esta protegido por la Ley Federal 
del Derecho de Autor (LFDA) de los Estados Unidos Mexicanos (México). 
El uso de imágenes, fragmentos de videos, y demás material que sea 
objeto de protección de los derechos de autor, será exclusivamente para 
fines educativos e informativos y deberá citar la fuente donde la obtuvo 
mencionando el autor o autores. Cualquier uso distinto como el lucro, 
reproducción, edición o modificación, será perseguido y sancionado por el 
respectivo titular de los Derechos de Autor. 
 
 
 
AGRADECIMIENTOS 
 
 
 
 
A mis padres: Ma Eleazar Torres Muñoz y Raúl Pedro Cortés con amor y admiración. 
Por su confianza y por su apoyo incondicional durante toda mi vida. Por su amor y 
comprensión exagerada. 
 
 
A mi familia por ser parte de mi vida, en especial a mis hermanos Raúl, Iracel por su 
apoyo y consejos. 
 
 
A mi prima Tania por estar siempre conmigo. 
 
 
A mis incontables amigos por sus consejos, su apoyo, su confianza y su amistad 
incondicional. 
 
 
A todo el departamento de Instrumentación Electromecánica del Instituto Nacional de 
Cardiología “Ignacio Chávez” por contribuir en mi formación profesional. En especial 
a mi asesor M. en C. Raúl Martínez Memije por todas sus enseñanzas, apoyo, 
consejos y sobretodo por su amistad. 
 
 
A la Facultad de Ingeniería, UNAM por darme una base sólida en mi formación 
académica y humana, en especial porque en ella he pasado los mejores años de mi 
vida. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
ÍNDICE 
 
 
 
I. INTRODUCCIÓN.__________________________________________________ 1 
 
 
II. ANTECEDENTES._________________________________________________ 3 
 
2.1 Definiciones Claves 3 
2.1.1 Velocidad de Modulación (Bauds) 3 
2.1.2 DLL 3 
2.1.3 API 4 
2.1.4 API Win32 4 
 
2.2 Descripción del PIC16F876A 4 
2.2.1 Características Generales 4 
2.2.2 Comunicación Serie 7 
2.2.2.1 Método Síncrono 7 
2.2.2.2 Método Asíncrono 8 
2.2.3 Convertidor A/D 10 
 
2.3 Comunicación Serial en WINDOWS 12 
2.3.1 Configuración 12 
2.3.2 Formatos y Protocolos 13 
2.3.3 RS-232 13 
2.3.4 MAX232 17 
 
2.4 Control de flujo (HandShaking) 18 
2.4.1 Null Modem 19 
2.4.2 Half HandShake 19 
2.4.3 Full HandShake 20 
 
2.5 Delphi 20 
2.5.1 Conceptos básicos 20 
2.5.2 Programación con Delphi 22 
2.5.3 Estructura de un proyecto 25 
2.5.4 Delphi vs Visual Basic 27 
2.5.5 Componentes Utilizados 27 
2.5.5.1 Windows Serial Communications (WSC) 27 
2.5.5.2 Super Timer 30 
2.5.5.3 HighResTimer 30 
2.5.6 Comtester 31 
 
 
 
 
III. PROBLEMÁTICA.___________________________________________ _____ 32 
 
 
IV. JUSTIFICACIÓN.________________________________________________ _33 
 
 
V. OBJETIVOS.__________________________________________________ ___34 
 
5.1 Objetivo General 34 
 
5.2 Objetivos específicos 34 
 
 
VI. RESULTADOS ESPERADOS._____________________________________ _35 
 
 
VII. ALCANCES.___________________________________________________ _36 
 
 
VIII. DESARROLLO.________________________________________________ _37 
 
8.1 Diagrama a bloques: Diagrama General 37 
 
8.2 Protocolo de comunicación SAD y PC 37 
 
8.3 Punto de partida de Delphi (Easy) 38 
 
8.4 Control de flujo (Handshaking) 38 
 
8.5 Sistema de Adquisición (SAD) 40 
 
8.6 Diagrama a bloques: Delphi 42 
8.6.1 Configuración de Condiciones Iniciales 42 
8.6.2 Establecer prioridades 43 
8.6.3 Establecer comunicación con el PIC 43 
8.6.4 Recepción y Manipulación de Datos 43 
8.6.5 Almacenamiento de Datos 45 
8.6.6 Graficar 46 
 
8.7 Diagrama a bloques: PIC 47 
8.7.1 Configuración de Condiciones Iniciales 47 
8.7.2 Establecer Comunicación 48 
8.7.3 Conversión A/D48 
8.7.4 Transmisión 48 
 
8.8 Protocolo de Comunicación (Diagrama de flujo) 49 
 
IX. PRUEBAS Y RESULTADOS._______________________________________ 51 
 
9.1 Ancho de Banda. 51 
 
9.2 Frecuencia de Muestreo 52 
 
9.3 Tiempo de conversión y transmisión 53 
 
9.4 Modo de funcionamiento 55 
 
9.5 Pruebas Realizadas 58 
9.5.1 Guardar Como 62 
9.5.2 Apertura del archivo creado (Libreta de notas) 63 
9.5.3 Apertura del archivo creado (Excel) 64 
 
9.6 Resultados Obtenidos 65 
 
 
X. CONCLUSIONES Y DISCUSIÓN.__________________________________ __66 
 
 
APÉNDICE A. DIAGRAMA ELÉCTRICO______________________________ ___67 
 
 
APÉNDICE B. PROGRAMA DE DELPHI_____________________________ ____68 
 
 
APÉNDICE C. PROGRAMA DE PICC-COMPILER_____________________ _ ___81 
 
 
BIBLIOGRAFÍA._______________________________________________ ___ __84 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 1
I. INTRODUCCIÓN 
 
 
Este trabajo presenta un sistema para la adquisición y visualización de señales de 
Electrocardiografía [1], desarrollado para su funcionamiento en Windows. Se 
implementa un método en Delphi para obtener la señal de ECG del paciente en una 
computadora personal a través de un dispositivo de hardware externo, conectado a 
ésta por el puerto serie. 
 
El procedimiento utilizado para el control de la comunicación serie entre un 
electrocardiógrafo y una computadora personal emplea las herramientas que brinda 
la API Win32 de Microsoft para la comunicación por puerto serie y el control de la 
prioridad de las aplicaciones. 
 
Los resultados obtenidos son aplicables para el monitoreo y diagnóstico [2] de 
cualquier señal biomédica muestreadas hasta 240 muestras por segundo, con 10 bits 
de resolución. La cual puede ser ejecutada sobre cualquier sistema operativo que se 
adhiera a la normativa de API Win32 de Microsoft (Windows NT/2000, Windows 
95/98/Me). 
 
Con el uso extensivo de las microcomputadoras es común encontrar en cualquier 
hospital, clínica o consultorio la presencia de una PC y resulta de gran utilidad 
dotarlas de programas que le permitan aprovechar al máximo sus potencialidades. 
Por tal razón se ha desarrollado un sistema que es capaz de realizar estudios 
electrocardiográficos para el cual se requieren 3 canales como mínimo. Este está 
formado por dos partes: una parte de hardware que no es mas que un módulo para 
adquirir 3 señales analógicas por medio de 3 canales y transmitirlas a través del 
puerto serie hacia la PC, y un software encargado de recibir esta señal, visualizarla y 
almacenarla para su estudio posterior. 
 
Esta propuesta presenta grandes ventajas y específicamente se pueden recalcar 
dos: convierte la PC en un electrocardiógrafo tan solo instalando un software y 
conectando externamente un pequeño dispositivo, además permite la incorporación 
de nuevas funcionalidades de forma muy sencilla, pues solo sería necesaria la 
actualización del software. 
 
La conexión entre el dispositivo externo y la PC puede establecerse a través de los 
puertos que posee la PC: serie, paralelo, infrarrojo, Bus Serie Universal (USB), etc. 
Aunque la tendencia actual es el uso del USB, la comunicación serie tradicional es 
indudablemente la más utilizada, ya que la mayoría de las computadoras tienen al 
menos un puerto RS232 disponible. 
 
Una de las grandes ventajas que posee el sistema es que se puede migrar a otro tipo 
de interfaz (USB, Infrarrojo, etc.) sin modificar el software ya que lo reconoce como 
puerto virtual. 
 
 2
A pesar de no ser el mejor sistema operativo dado que existen muchas limitaciones 
para realizar sobre él aplicaciones en tiempo real, el número de usuarios que 
emplean Windows como sistema operativo se incrementa cada día por su interfaz 
amigable, su amplio uso, compatibilidad y la gran cantidad de programas 
desarrollados sobre esta plataforma. Esto ha traído como consecuencia que la 
mayoría de los fabricantes de sistemas basados en PC lancen al mercado equipos 
con sus aplicaciones para Windows. 
 
El sistema requiere la recolección y visualización de las señales obtenidas. Por esa 
razón, se propuso desarrollar un procedimiento que permitiera la recepción a través 
de un puerto serie de las señales, su procesamiento y análisis en ambiente Windows. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 3
II. ANTECEDENTES. 
 
 
2.1 DEFINICIONES CLAVES. 
 
 
2.1.1 Velocidad de Modulación (bauds). 
 
La velocidad a la que un módem puede modular los bits y demodular la señal 
analógica se denomina velocidad de modulación y se mide en baudios que es el 
número de señales por segundo que transmite el módem. La velocidad de 
transmisión serie es la velocidad a la que el puerto serie puede transmitir los bits 
hasta el módem y se mide en bits por segundo (bps). 
 
 
2.1.2 DLL (Dynamic Linking Library). 
 
DLL Dynamic Linking Library (Bibliotecas de Enlace Dinámico) [3], se refiere a los 
archivos con código ejecutable que se cargan bajo demanda del programa por parte 
del sistema operativo. Esta denominación se refiere a los sistemas operativos 
Windows siendo la extensión con la que se identifican los ficheros, aunque el 
concepto existe en prácticamente todos los sistemas operativos modernos. 
 
Ventajas: 
 
Las DLLs pueden verse como la evolución de las bibliotecas estáticas y de forma 
análoga contienen funcionalidad o recursos que utilizan otras aplicaciones. Su uso 
proporciona algunas ventajas: 
 
 Reducen el tamaño de los archivos ejecutables: Gran parte del código puede 
estar almacenado en bibliotecas y no en el propio ejecutable lo que redunda 
en una mejor modularización 
 Pueden estar compartidas entre varias aplicaciones: Si el código es 
suficientemente genérico, puede resultar de utilidad para múltiples 
aplicaciones. 
 Facilitan la gestión y aprovechamiento de la memoria del sistema: La carga 
dinámica permite al sistema operativo aplicar algoritmos que mejoren el 
rendimiento del sistema cuando se carguen estas bibliotecas. Además, al 
estar compartidas, basta con mantener una copia en memoria para todos los 
programas que la utilicen. 
 Brindan mayor flexibilidad frente a cambios: Es posible mejorar el rendimiento 
o solucionar pequeños errores distribuyendo únicamente una nueva versión 
de la biblioteca dinámica. Nuevamente, está corrección o mejora será 
aprovechada por todas las aplicaciones que compartan la biblioteca. 
 
 
 
 4
2.1.3 API (Application Programming Interface). 
 
Una API (del inglés Application Programming Interface - Interfaz de Programación de 
Aplicaciones) [4]. Es un conjunto de especificaciones de comunicación entre 
componentes software. Representa un método para conseguir abstracción en la 
programación, generalmente (aunque no necesariamente) entre los niveles o capas 
inferiores y los superiores del software. Uno de los principales propósitos de una API 
consiste en proporcionar un conjunto de funciones de uso general, por ejemplo, para 
dibujar ventanas o iconos en la pantalla. De esta forma, los programadores se 
benefician de las ventajas de la API haciendo uso de su funcionalidad, evitándose el 
trabajo de programar todo desde el principio. Las APIs asimismoson abstractas: el 
software que proporciona una cierta API generalmente es llamado la implementación 
de esa API. 
 
 
2.1.4 API Win32. 
 
La Application Programming Interface (API) [5]. Win32 define un conjunto de 
funciones que intercambian información con el sistema operativo, las cuales pueden 
ser usadas por los programas de aplicación para llevar a cabo su trabajo. La 
información vinculada con sus características y formas de utilización aparecen en la 
documentación que brinda Microsoft para programadores especializados en 
Windows, llamada Microsoft Software Development Network (o MSDN). 
 
Microsoft ha implementado la API Win32 para cada uno de sus variantes de 
Windows. De esta forma cada sistema operativo es optimizado para cada situación 
en específico. Por tanto una de las ventajas de desarrollar una aplicación bajo los 
requisitos de la API Win32 es que esta aplicación puede ser ejecutada sobre 
cualquier sistema operativo que se adhiera a esta normativa (Windows NT/2000, 
Windows 95/98/Me y Windows XP de 32 bits). 
 
La Win32 consta de alrededor de 300 funciones que proveen todos los servicios que 
el usuario espera en un sistema operativo multitarea. Entre ellos: asignación de 
memoria, acceso a ficheros y dispositivos de entrada/salida, control, sincronización y 
comunicación entre hilos de una aplicación, etc. Es por eso que se ha incrementado 
el uso de Win32 para el desarrollo de este tipo de aplicaciones. 
 
 
 
2.2 DESCRIPCIÓN DEL PIC16F876A. 
 
 
2.2.1 Características Generales. 
 
La Familia del PIC16F87XA [6]: 
 
 5
El microcontrolador PIC16F87XA (figura 1) de Microchip pertenece a una familia de 
microcontroladores de 8 bits (bus de datos) que tienen las siguientes características 
generales que los distinguen de otras familias: 
 
- Arquitectura Harvard 
- Tecnología RISC 
- Tecnología CMOS 
 
Estas características se conjugan para lograr un dispositivo altamente eficiente en el 
uso de la memoria de datos y programa y por lo tanto en la velocidad de ejecución. 
 
 
 
 
Figura 1. Descripción física de los pines del PIC16F87XA 
 
Características del PIC16F87XA: 
 
- CPU RISC 
- Sólo 35 instrucciones que aprender 
- Frecuencia de operación de 0 a 20 MHz (DC a 200 nseg de ciclo de instrucción) 
- Hasta 8k x 14 bits de memoria Flash de programa 
- Hasta 368 bytes de memoria de datos (RAM) 
- Hasta 256 bytes de memoria de datos EEPROM 
 
Periféricos: 
 
- Timer0: Contador/Temporizador de 8 bits con pre-escalador de 8 bits 
- Timer1: Contador/Temporizador de 16 bits con pre-escalador 
- Timer2: Contador/Temporizador de 8 bits con pre-escalador y post-escalador de 8 
bits y registro de periodo. 
- Dos módulos de Captura, Comparación y PWM 
- Convertidor Analógico/Digital: de 10 bits, hasta 5 canales 
- Puerto Serie Síncrono (SSP) 
- Puerto Serie Universal (USART/SCI). 
- Puerto Paralelo Esclavo (PSP): de 8 bits con líneas de protocolo 
28_Pill POIP, SOIC, SSOP 
;;;cu;;_ -
AA":M» -
AA"...,., -
fI .... l 'AAm ... -<C"" .. -
AAl·AAW .... -
AAoITOCOl.'::,OUT -
'V& ..... ,'S$'ClOUT -
V .. -
OSC!!<:LO: ' -=--
RCO'T 'OSO/T,C>!' -
RC'IT 'OSllC(:P1 -
~q,~C~' -
!IC~'SCKlSCl -
, , , 
• • • , 
• • .. 
" " " " 
" • ~ 
" • • • ~ 
" " , 
" " " " " .. .. .. 
" .. 
" 
_ RB1rPOO 
- RfIoo,PGC - .. - ." 
- Ra3._ - ." _ RI' 
_ Rao.wr ---0. 
- 1tC'~T 
- ItCUllIt>< 
_ RC""",, 
_ RC<I5D>SO.l 
 6
Analógicos: 
 
- Hasta 5 canales de conversión (A/D) de 10 bits cada uno. 
- Comparador analógico con: 
- Dos comparadores analógicos 
- Módulo de voltaje de referencia programable. 
- Entradas de multiplexaje programables 
- Salidas del comparador accesibles. 
 
Otros: 
 
- Hasta 4 fuentes de interrupción. 
- Stack de hardware de 8 niveles. 
- Reset de encendido (POR). 
- Timer de encendido (PWRT). 
- Timer de arranque del oscilador (OST). 
- Sistema de vigilancia Watchdog timer. 
- Protección programable de código. 
- Modo SLEEP de bajo consumo de energía. 
- Opciones de selección del oscilador. 
- Programación y depuración serie “In-Circuit” (ICSP) a través de dos terminales. 
- Lectura/escritura de la CPU a la memoria flash de programa. 
- Rango de voltaje de operación de 2.0 a 5.5 volts. 
- Alta capacidad de manejo de corriente de la fuente: 25mA. 
- Rangos de temperatura: Comercial, Industrial y Extendido. 
- Bajo consumo de potencia: 
- Menos de 0.6mA a 3V, 4 Mhz. 
- Valores de 20 µA a 3V, 32 Khz. 
- Menos de 1µA corriente de standby. 
 
 
Puerto Serie USART 
 
La USART (Universal Synchronous Asynchronous Receiver Transmitter) es uno de 
los dos periféricos contenidos en el PIC que le permiten realizar comunicación en 
serie. El otro es el MSSP (Master Synchronous Serial Port). 
 
La USART, también conocida como SCI (Serial Communications Interface) puede 
configurarse como una unidad de comunicación en serie para la transmisión de datos 
asíncrona con dispositivos tales como terminales de computadora o computadoras 
personales, o bien para comunicación síncrona con dispositivos tales como 
convertidores A/D o D/A, circuitos integrados o memorias EEPROM con 
comunicación serie, etc. 
 
La gran mayoría de los sistemas de comunicación de datos digitales actuales utilizan 
la comunicación en serie, debido a las grandes ventajas que representa esta manera 
de comunicar los datos: 
 7
 Económica.- Utiliza pocas líneas de transmisión inclusive puede usar sólo una 
línea. 
 Confiable.- Los estándares actuales permiten transmitir datos con bits de paridad 
y a niveles de voltaje o corriente que los hacen poco sensibles a ruido externo. 
Además por tratarse de información digital, los cambios en amplitud de las 
señales (normalmente causadas por ruido) afectan muy poco o nada a la 
información. 
 Versátil.- No está limitada a usar conductores eléctricos como medio de 
transmisión, pudiendo usarse también: fibra óptica, aire, vacío, etc. Además el 
tipo de energía utilizada puede ser diferente: luz visible, infrarroja, ultrasonido, 
pulsos eléctricos, radio frecuencia, microondas, etc. 
 
 
2.2.2 Comunicación en Serie. 
 
La comunicación en serie utiliza una línea para la transmisión de datos (figura 2). 
 
 
 
 
Figura 2. Transmisión serie para el dato 97h (envío de bits de dato uno a uno). 
 
Debido a que la comunicación serie requiere sólo una línea para la transmisión esto 
abarata los costos en líneas de transmisión y no sólo esto, ya que este hecho 
también hace posible que los datos puedan ser enviados no necesariamente por un 
conductor eléctrico, sino inclusive por aire o por el vacío si en lugar de pulsos 
eléctricos se usan impulsos electromagnéticos, tales como: ondas de radio, 
microondas, pulsos luminosos, infrarrojo, ultrasonido, láser (a través de fibra óptica), 
etc. 
 
La USART del PIC puede ser configurada para operar en tres modos: 
• Modo Asíncrono full duplex (transmisión y recepción simultáneas), 
• Modo Síncrono – Maestro (half duplex) 
• Modo Síncrono – Esclavo (half duplex) 
 
 
2.2.2.1 Método Síncrono. 
 
Los módem síncronos no necesitan bits de paro. Así que no hay periodos de 
inactividad entre bytes. En estos módem, se envía un carácter de sincronismo 
(denotado SYN) al comienzo de una trama (un grupo de bytes), seguida de la trama 
en cuestión y finalizando ésta con otro carácter de sincronismo. De esta forma se 
1 00101 II 
T.on, m;",. 
ruu R~10' 
 8
consiguen velocidades muy superiores a las de los módem asíncronos. La 
desventaja es que los módem síncronos son más caros. 
 
Cada mensaje o bloque de transmisión va precedido de unos caracteres de 
sincronismo. Así, cuando el receptor identifica una configuración de bits igual a la de 
los caracteres de sincronismo da por detectado el inicio y el tamaño de los datos. 
 
 
 
Figura 3. Transmisión típica en modo síncrono (envío del bit más significativo al inicio). 
 
 
2.2.2.2 Método Asíncrono. 
 
En este modo la USART usa un formato estándar NRZ (Non Return to Zero) 
asíncrono, es decir, sin retorno a cero entre bits consecutivos de valor uno, el cual 
para la sincronizaciónusa: 1 bit de inicio, 8 o 9 bits de datos y 1 bit de paro. Mientras 
no se están transmitiendo datos la USART envía continuamente un bit de marca. 
Cada dato es transmitido y recibido comenzando por el LSB. El hardware no maneja 
bit de Paridad, pero el noveno bit puede ser usado para este fin y manejado por 
software. 
 
Las características del método asíncrono para transmisión en serie de acuerdo a las 
siguientes reglas: 
 
1) Cuando no se envían datos la línea debe mantenerse en estado 1. 
 
2) Cuando se va a mandar un carácter se envía primero un bit de inicio de valor 0. 
 
3) A continuación se envían todos los bits del carácter a transmitir al ritmo marcado 
por el reloj de transmisión. 
 
4) Después del último bit del carácter enviado se envía un bit de paro de valor 1. 
 
RELOJ 
DATO 
TRANSMISION SfNCRONA 
t Bits transmitidos en el cicio de bajada del reloj 
.J, ~ Bits recibidos en el cicio de subida del reloj 
81 T 7 . 
• o , • 
.81 T 0 : 
• 
 9
 
 
Figura 4. Transmisión típica en modo asíncrono (envío del bit menos significativo al inicio). 
 
 
El módulo Asíncrono de la USART consta de 3 módulos fundamentales: 
• El generador de frecuencia de transmisión (Baud Rate) 
• El transmisor asíncrono 
• El receptor asíncrono. 
 
 
El Generador de Baud Rate (BRG) 
 
Este generador sirve tanto para el modo síncrono como el asíncrono y consiste de un 
contador/divisor de frecuencia de 8 bits controlado por el registro SPBRG (99H) del 
PIC. 
 
 
 
Figura 5. Fórmula para obtener el Baud Rate (modo sìncrono y asìncrono). 
 
 
Debido a que el divisor es de 8 bits, no se puede tener cualquier velocidad de 
transmisión deseada, ya que X se deberá redondear al entero más cercano 
 
El transmisor asíncrono 
 
El corazón de este módulo es el registro de corrimiento (transmit shift register, TSR) 
a través del registro TXREG (19H). 
 
 
DATO 
0 
1 
TRANSMISION AsfNCRONA 
r TransmiSion usando el reloj interno para determinar cuando se envia cada bit l EI receptor detect3 el cicio de b3j3d3 p3r3 inici3r, entonces utiliz3 su reloj interno p3ra leer los siguientes bits en su respectivo centro. 
ST ... RT·B I T 0' 
sn , , , 'SIT 7' STO~ '" , 
Protocolo asincrono enviando primero el LSB 
. aave oc • . ta ve oc • 
(Asfncrono) B<rudfla~ Fosc F= 
(64(X .. 1)) BaudRal.= (\6(X +1») 
(Sincrooo) Fo~ 
8audRal.- (4{X+1)) NfA 
-x - valor en SP8RG (0 a 255) 
 10
El receptor asíncrono 
 
Una vez que se ha seleccionado el modo asíncrono, la recepción se habilita 
poniendo en alto el bit CREN (RCSTA<4>) El dato es recibido mediante la línea 
RC7/RX/DT, la cual maneja un registro de corrimiento de alta velocidad (16 veces el 
Baud Rate). 
 
 
2.2.3 Convertidor Analógico Digital. 
 
Descripción General del Módulo Conversión Analógico Digital (ADC). 
 
Los PIC16F87X [7] poseen un módulo ADC interno que les permite manejar 5 
entradas analógicas para los dispositivos de 28 pines y 8 para los otros dispositivos. 
Se muestra un diagrama de bloques del módulo ADC (figura 6). 
 
 
 
Figura 6. Diagrama de bloques del módulo interno de conversión Analógico Digital 
 
 
 El multiplexor. 
 
El ADC es un convertidor de aproximaciones sucesivas de 10 bits, el cual puede 
realizar la conversión de una de las 5 entradas (o canales) analógicas AN0,..., AN4 
multiplexadas por la lógica interna que utiliza como líneas de selección del canal los 
bits CHS2:CHS0, en donde se coloca el número en binario del canal a convertir. 
 
,., ~­
(tinOO~) 
" 
 11
 Voltajes de Referencia. 
 
Todo convertidor ADC requiere voltajes de referencia que determinan el valor de 
mínima escala (VREF-) y el de plena escala (VREF+), de manera que la conversión 
de un valor de voltaje analógico Vin en el rango de VREF- a VREF+ producirá un 
valor equivalente binario D en el rango de 0 a 2n, Donde n es la resolución del 
convertidor (n=10). 
 
Cuando Vin varía en todo su rango, desde 0 hasta 5v, el valor obtenido D varía 
también en todo su rango, de 0 a 1023. 
 
 
 El proceso de Conversión Analógico/Digital. 
 
En el siguiente diagrama de tiempo se muestran los eventos que tienen lugar durante 
el proceso de una conversión analógico / digital (figura 7). 
 
 
 
Figura 7. Proceso de conversión Analógico Digital. 
 
 
De acuerdo a la figura, para poner en funcionamiento el convertidor se deberán 
seguir los siguientes pasos: 
 
1) Configurar el módulo A/D: 
2) Configurar interrupciones para el convertidor A/D (si se desea. 
3) Esperar mientras transcurre el tiempo de adquisición (unos 20 µseg). 
4) Iniciar la conversión poniendo el bit GO/DONE (ADCON0<2>). 
5) Esperar a que termine la conversión. 
6) Leer el dato convertido D de los registros (ADRESH:ADRESL) 
7) Para la siguiente conversión, esperar al menos 2TAD (Donde TAD es el 
tiempo de conversión por bit). 
 
 
DeTcv JT..., 
Relajdel r 
Convertidor "",,"" r de canal. reloj. 
encendido y 
tiempo de 
adquisicion 
bit.9 bl~8 b it.7 b ~ t; 
Inici" 
conversion Oespues de 100 nseg 
desconect3 capacitor 
de adquisicion 
Poner bit 
GO=1 
bit5 b ~ t. 4 bit3 b ~t 2 b ~t ! bitO 
Termin" conversion : 
AClualiza AORESH:AORESL 
Pone bit GOIIHffiP'O 
Pone bit AOIF "1 
Conee!a capacitor 
 12
1) Los Registros de Resultados. 
 
El par de registros ADRESH:ADRESL (1Eh:9Eh) son cargados con el dato (D) 
resultante de una conversión analógico / digital al terminar ésta. Cada uno de estos 
registros es de 8 bits, por lo tanto, juntos pueden guardar hasta 16 bits. Sin embargo, 
como el resultado D es de 10 bits, el módulo de conversión A/D permite justificarlo 
(alinearlo) en la parte izquierda o derecha de los 16 bits disponibles, para elegir 
alguna de las dos opciones se usa el bit ADFM (ADCON1<7>) como se muestra a 
continuación (figura 8). 
 
 
 
Figura 8. Formato del resultado (D) a la derecha o izquierda modificando el bit ADMF 1 ó 0. 
 
 
 
2.3 Comunicaciones serie en WINDOWS. 
 
 
2.3.1 Configuración. 
 
La comunicación serial [8] es un protocolo muy común para comunicación entre 
dispositivos que se incluye de manera estándar en prácticamente cualquier 
computadora. La mayoría de las computadoras incluyen dos puertos seriales RS-
232. La comunicación serial es también un protocolo común utilizado por varios 
dispositivos para instrumentación. El concepto de comunicación serial es sencillo, el 
puerto serial envía y recibe bytes de información un bit a la vez. 
Las características más importantes de la comunicación serial son la velocidad de 
transmisión, los bits de datos, los bits de parada, y la paridad. Para que dos puertos 
se puedan comunicar, es necesario que las características sean iguales. 
Velocidad de transmisión (baud rate): Indica el número de bits por segundo que se 
transfieren, y se mide en baudios (bauds). Por ejemplo para la interfaz RS-232, 300 
baudios representa 300 bits por segundo. 
Bits de datos: Se refiere a la cantidad de bits en la transmisión. Cuando la 
computadora envía un paquete de información, el tamaño de ese paquete no 
-j .... " ... '"" " . "". t-
• • 
~-~-~~~-~1 : I , r, , , , , , , I ! pOOO-O O: , , , , , , r, , • - , - j'" !., -,' 
• • • • , , "'SO"UM "' ORlH "'S ORUM _O" lH 
• , .... " ... '0' .. "0; .. . .... , ... ,,. .. ,, "" 
 13
necesariamente será de 8 bits. Las cantidades más comunes de bits por paquete son 
5, 7 y 8 bits. El número de bits que se envía depende en el tipo de información que 
se transfiere. Por ejemplo, para ASCII extendido es de 0 a 255, lo que utiliza 8 bits. 
Un paquete se refiere a una transferencia de byte, incluyendo los bits de 
inicio/parada, bits de datos, y paridad. 
Bit de paridad: Usado para indicar el fin de la comunicación de un solo paquete. Los 
valores típicos son 1, 1.5 o 2 bits. Debido a la manera como se transfiere la 
información a través de las líneas de comunicación y que cada dispositivo tiene su 
propio reloj, es posible que los dos dispositivos no estén sincronizados. Por lo tanto, 
los bits de parada no sólo indican el fin de la transmisión sino además dan unmargen de tolerancia para esa diferencia de los relojes. Mientras más bits de parada 
se usen, mayor será la tolerancia a la sincronía de los relojes, sin embargo la 
transmisión será más lenta. 
Paridad: Es una forma sencilla de verificar si hay errores en la transmisión serial. 
Existen cuatro tipos de paridad: par, impar, marcada y espaciada. La opción de no 
usar paridad alguna también está disponible. Para paridad par e impar, el puerto 
serial fijará el bit de paridad (el último bit después de los bits de datos) a un valor 
para asegurarse que la transmisión tenga un número par o impar de bits en estado 
alto lógico. 
 
2.3.2 Formatos y Protocolos. 
 
En un enlace serial, el transmisor envía un bit cada vez, en secuencia. Un enlace con 
sólo dos disposiciones puede tener un camino dedicado para cada dirección o tener 
un camino simple para ambos, con el transmisor tomando sus turnos. 
 
A diferencia de la comunicación en paralelo, en la comunicación en serie se hace 
necesario establecer métodos de sincronización para evitar la interpretación errónea 
de los datos transmitidos. 
 
El puerto RS-232 en las PCs utiliza el formato asíncrono para comunicarse con los 
módems y otros dispositivos. A pesar de que una interfase RS-232 puede también 
transferir por modo síncrono, es más común utilizar el modo asíncrono. 
 
 
2.3.3 RS-232 (Recommended Standard 232) 
 
El RS-232 [9] es una interfaz de las más utilizadas actualmente. La comunicación 
serie requiere sólo dos cables y se transmite bit a bit. Sin embargo, la información se 
va perdiendo con la distancia: las características impuestas por la norma 
internacional RS-232 limita la distancia de conexión a 15 metros o menos. 
 
Dado que existen muchos fabricantes de ordenadores y de dispositivos que pueden 
conectarse a los mismos (ratón, módem, impresora, etc), existen normas 
 14
internacionales que regulan la forma en que los distintos elementos deben 
comportase para el establecimiento de las conexiones. La norma más conocida y 
utilizada en los ordenadores es la denominada RS-232. La norma RS-232 establece 
tres aspectos de la comunicación: 
 
1.- La descripción física o mecánica de los conectores: si deben ser machos o 
hembras y el número de terminales de cada uno a ambos lados de la conexión. Un 
ordenador dispone, generalmente (puede variar de un ordenador a otro), de un 
conector serie macho de 9 terminales, denominado conector DB9 (figura 9). 
 
 
 
 
 
 
 
 
 
 
 
Figura 9. Descripción física o mecánica del conector DB9. 
 
2.- La descripción funcional de los conectores que indica lo que significa cada tipo de 
señal y la terminal por la que debe viajar. 
 
3.- Las características de las señales eléctricas: Las propiedades del cable junto las 
especificaciones de voltaje e intensidad impiden realizar conexiones serie que 
superen los 15 metros. La interpretación del estado activo y el inactivo: el estado 
activo de una señal, esto es, hay señal, corresponde con el estado binario 0 y se le 
conoce con el nombre de espacio; el estado inactivo de la señal corresponde con el 
estado binario 1 y se le conoce con el nombre de marca. 
 
El establecimiento de una conexión requiere que un ordenador o Equipo terminal de 
datos, ETD (en inglés, DTE, Data Terminal Equipment) envíe los datos a un Equipo 
de terminación de datos, ETCD (en inglés, DCE, Data Communications Equipment) 
que es el encargado de transformar la información del ETD emisor en otras 
susceptibles de ser enviadas al ETD distante: un módem es un ETCD. El lado 
receptor deberá realizar estas operaciones en el sentido inverso. En un módem nulo 
no existe el ETCD, esto es, no se realiza la transformación de la señal: la información 
viaja en forma binaria y así es recogida por el ETD receptor. 
 
 
 
 
 
 
 Circuitos de la interfaz RS-232 para el conector de 9 Pines 
[oSR.~", __ ·a 
11TC> . ~ .. >o &. .. on';', 7 
Cl'S Pr_~lO ps~ ~_, 8 
P.I h<!O_ <1<""- 9 
_ •. co .OOIocci6n .. ".,.._. 
:z.R().~dO_ 
l. TD. I!."'''' dO <10100 
_ H ) ' H. ,..-.- .. """" "'---
~ <:O r ......... ........ 
 15
Descripción Funcional (Tabla1) 
 
Pin (9-pin) Signal Type Description 
 
1 CD control Carrier Detect 
2 RD Data Received Data 
3 TD Data Transmitted Data 
4 DTR control Data Terminal Ready 
5 GND - Signal ground 
6 DSR control Data Set Ready 
7 RTS control Request To Send 
8 CTS control Clear To Send 
9 RI control Ring Indicator 
 
Tabla 1. Descripción funcional del conector DB9 (9 terminales). 
 
1. CD (Carrier Detect). Detección de portadora. Contacto, También se le conoce 
con el nombre de detector de la señal de línea recibida, RLSD (Receive Line 
Signal Detector) o como detección de portadora de datos, DCD (Data Carrier 
Detect). Esta Terminal indica que el módem está recibiendo una señal del 
equipo remoto. 
 
2. RD (Receive Data). Recepción de datos. También es conocido con las siglas 
RXD. Los datos que va demodulando el módem los envía a la terminal por 
este contacto. Si el módem no tiene datos, debe mantener este contacto no 
activo, esto es, con la señal lógica 1 (marca). 
 
3. TD (Transmitted Data). Transmisión de datos. También es conocido con las 
siglas TXD. Esta terminal es utilizada para transmitir las señales de datos 
desde el equipo terminal (ETD) al módem (ETCD). Cuando no se está 
transmitiendo, este pin debe mantener la señal lógica 1 (marca). 
 
4. DTR (Data Terminal Ready). Terminal de datos preparado. Cuando está activa 
esta señal, le indica al módem que la terminal está encendida y lista para la 
comunicación. Si se desactiva la señal, el módem cortará la comunicación. 
Sirve para controlar la conexión a la línea telefónica o al terminal remoto. Esta 
señal y la anterior (DSR) sirven para el control de la comunicación hacia el PC 
(ETD). Para que estas señales sean válidas se debe activar el control de flujo 
hardware DTR/DSR para la recepción o entrada de datos. 
Los circuitos DSR y DTR se cruzan en un módem nulo indicando que la 
terminal estará listo para recibir (DTR) siempre que el módem remoto esté 
preparado (DSR). 
 
5. GND (Protective Ground). Tierra de protección. Suele estar conectado al 
chasis del equipo o a una toma de tierra externa. Es el conector de tierra y 
debe tener siempre una tensión de 0 voltios. 
 
 16
6. DSR (Data Set Ready). Módem preparado. Indica el estado del módem: 
cuando está activa (valor lógico 0 o espacio), indica que el módem está 
conectado a la línea y que, por tanto, está listo para transmitir. 
 
7. RTS (Request To Send). Petición de envío. La señal de este conector es 
enviada desde el terminal (ETD) al módem (ETCD) para preparar al módem 
para la transmisión (¿puedo enviar?). De alguna manera, esta señal siempre 
debe ser la primera que se activará antes de comenzar el envío de datos en 
cualquier conexión. Sin embargo, no se debería comenzar la transmisión 
hasta no recibir la confirmación por parte del módem mediante una señal CTS. 
 
8. CTS (Clear To Send). Preparado para transmitir. Cuando el módem recibe una 
señal de petición de envío (RTS), si está listo activa este pin para indicarle al 
terminal que puede comenzar a enviar datos cuando lo desee. Esta señal y la 
anterior (RTS) sirven para el control de la comunicación desde el PC. Para 
que las señales RTS/CTS sean válidas en una comunicación, se debe activar 
el control de flujo hardware RTS/CTS para la transmisión o salida de datos. 
 
9. RI (Ring Indicator). Indicador de llamada. Este circuito indica que se está 
recibiendo una llamada y es utilizado por aquellos módems que están en 
modo de respuesta automática. En ese momento, el software debería indicarle 
al módem que descuelgue y genere una señal de portadora (esa serie de 
ruidos que se oyen al comenzar cualquier conexión a Internet). 
 
Cuando el ordenador (ETD) pretende transmitir un byte de información, le pasa este 
byte mediante la UART (Universal Asynchronous Receiver Transmitter, transmisor 
receptor asíncrono universal) que es el encargado de,entre otras cosas, diseccionar 
el byte a transmitir en bits. Asimismo, el UART del ordenador destino realiza el 
proceso inverso cuando se reciben bits por el puerto serie. La UART está situada 
entre el controlador o driver del puerto y el módem. 
 
 
CARACTERÍSTICAS: 
 
 Ventajas: 
 
Actualmente la mayoría PC tiene uno o más puertos RS-232, sin embargo la 
tendencia es que sólo tengan puerto USB. Una de las grandes ventajas que posee el 
sistema es que se puede migrar a otro sistema (USB, Infrarrojo, Bluetooth, etc.) sin 
modificar el software ya que lo puede reconocer como puerto virtual. Es fácil cambiar 
los niveles RS-232 a TTL y viceversa mediante un sencillo dispositivo. 
 
 Desventajas: 
 
• La mayoría de los microcontroladores tienen sólo un puerto serial. 
• No puede haber más de dos dispositivos en un enlace. 
 17
• Para enlaces muy largos requiere interfaces diferentes. 
 
 Límites de tiempo: 
 
Slew rate es una medida de que tan rápido cambia el voltaje cuando la salida 
conmuta y describe una velocidad instantánea de salida del cambio de voltaje. El 
slew rate del RS-232 debe ser de 30 V/µs o menor, evitando así problemas de 
reflexión de voltaje que puedan ocurrir. Pero un inconveniente del slew rate que limita 
la velocidad del enlace, es decir, a 30 V/µs la salida requiere de 0.330 µs para 
cambiar de +5V a -5V a una velocidad máxima de 20 kbps. 
 
 
2.3.4 MAX232 (Estándar ANSI/EIA-232). 
 
El circuito integrado MAX232 [10] dispone internamente de 4 conversores de nivel 
que cambian los niveles TTL a los del estándar RS-232 cuando se hace una 
transmisión, y cambia los niveles RS-232 a TTL cuando se tiene una recepción. 
 
Funcionamiento: El circuito integrado lleva internamente 2 conversores de nivel de 
TTL a RS-232 y otros 2 de RS-232 a TTL con lo que en total podremos manejar 4 
señales del puerto serie del PC, por lo general las mas usadas son; TX, RX, RTS, 
CTS, estas dos ultimas son las usadas para el protocolo handshaking pero no es 
imprescindible su uso. 
 
Para que el Max232 funcione correctamente deberemos de poner unos 
condensadores externos, todo esto lo podemos ver en la siguiente figura en la que 
solo se han cableado las líneas TX y RX que son las más utilizadas para casi 
cualquier aplicación. El circuito básico del MAX232 (sin control de Flujo) tiene la 
siguiente conexión (figura 10). 
 
 
Figura 10. Conexión básica con el MAX232 (sin control de flujo). 
 
 
 
r " ,lit., , 'c, 
" . ... 'H ~ .. , 
" , 
]I 
• .. -.... " . .. • . = ,., " . '" " "" CMOlI '" TTl. "'~"O" .. t " • " J '" " • , ".~"'O ..... t I " " ''''~''' """ • • ~~ TOC"""", TTl. , , ''''~''' """ .. • ~ cY 
.1.0" 
Ci'c ulo 1:>0,;00 c on ~ MAX232 
 18
2.4 CONTROL DE FLUJO HANDSHAKING. 
 
 
 
El método de comunicación usado por RS-232 requiere de una conexión muy simple, 
utilizando sólo tres líneas: Tx, Rx, y GND. Sin embargo, para que los datos puedan 
ser transmitidos correctamente ambos extremos deben estar sincronizados a la 
misma velocidad. Aún y cuando este método es más que suficiente para la mayoría 
de las aplicaciones, es limitado en su respuesta a posibles problemas que puedan 
surgir durante la comunicación; por ejemplo, si el receptor se comienza a 
sobrecargar de información. Es en estos casos cuando el intercambio de pulsos de 
sincronización, o handshaking [11], es útil. 
 
Se describirán brevemente las tres formas más populares de handshaking con RS-
232: handshaking por software, handshaking por hardware y XModem. 
 
El handshaking por hardware se usa generalmente cuando los dos dispositivos que 
se han de comunicar están conectados con cables. 
 
 
 Handshaking por hardware. 
 
 El segundo método de handshaking utiliza líneas de hardware. De manera similar a 
las líneas Tx y Rx, las líneas RTS/CTS y DTR/DSR trabajan de manera conjunta 
siendo un par la entrada y el otro par la salida. El primer par de líneas es RTS (por 
sus siglas en inglés, Request to Send) y CTS (Clear to Send). Cuando el receptor 
está listo para recibir datos, cambia la línea RTS a estado alto; este valor será leído 
por el transmisor en la línea CTS, indicando que está libre para enviar datos. El 
siguiente par de líneas es DTR (por sus siglas en inglés, Data Terminal Ready) y 
DSR (Data Set Ready). Estas líneas se utilizan principalmente para comunicación 
por modem, permiten al puerto serial y modem indicarse mutuamente su estado. 
 
Como regla general, las líneas DTR/DSR se utilizan para indicar que el sistema está 
listo para la comunicación, mientras que las líneas RTS/CTS se utilizan para 
paquetes individuales de datos. 
 
 
 Handshaking por software. 
 
Esta forma de sincronización utiliza bytes de datos como caracteres de control. Las 
líneas necesarias para la comunicación siguen siendo Tx, Rx, y GND, ya que los 
 19
caracteres de control se envían a través de las líneas de transmisión como si fueran 
datos. 
 
La mayor desventaja de este método es además lo más importante a considerar: los 
números decimales 17 y 19 son ahora los límites para la transmisión. Cuando se 
transmite en ASCII, esto no importa mucho ya que estos valores no representan 
caracter alguno. Sin embargo, si la transmisión de datos es en binario, lo más 
probable es que estos valores sean transmitidos como datos regulares y falle la 
comunicación. 
 
 
 Handshaking por XModem. 
 
El último modo de handshaking presentado es el protocolo de transmisión de 
archivos XModem. Este protocolo es muy común en comunicación por modem. Aun y 
cuando es más utilizado para comunicación por modem, el protocolo XModem puede 
ser utilizado directamente entre otros dispositivos. 
 
 
2.4.1 Null Modem (Módem Nulo). 
 
La conexión directa entre ordenadores o entre un ordenador y un elemento externo 
(cámara de vídeo, PLC, sensor, autómata, etc.), puede realizarse mediante un 
dispositivo especial, denominado módem nulo (figura 11), que no es más que un 
cable al que se le han cruzado determinados hilos. 
 
Los circuitos RTS y CTS se cruzan en un módem nulo indicando algo así como 'el 
módem estará preparado para transmitir (CTS) siempre que el terminal remoto esté 
preparado (RTS)'. 
 
 
Figura 11. Módem nulo sin handshake para dos conectores DTE o DCE. 
 
 
2.4.2 Half-handshake 
 
En este caso las líneas de control de flujo se conectan en el dispositivo opuesto, pero 
no tienen ninguna funcionalidad real. Consecuentemente solamente el software 
especialmente diseñado podía hacer uso este. 
 
 
 
 
SENAL PIN PIN SENAL . 
TO 3 
~ 
3 TO 
RO 2 2 RO 
GNO 5 5 GNO 
 20
2.4.3 Full-handshake 
 
El módem nulo full-handshake (figura12) permite el control por hardware, las salidas 
de datos y de control conectando sus correspondientes entradas en el dispositivo 
opuesto. 
 
Figura 12. Módem nulo con handshake completo para dos conectores DTE o DCE. 
 
 
 Loopback-Handshake 
 
En el módem nulo loopback las salidas de control están en lazo cerrado con las 
correspondientes entradas en el mismo dispositivo. Éste control de lazo cerrado da la 
ilusión del full-handshake cuando no existe control de flujo. El dispositivo que envía 
sólo asume que el dispositivo que recibe esta siempre listo para recibir. Éste control 
se utiliza cuando uno de los dispositivos requiere señales de control pero el otro no 
puede proveerlas, sin embargo utilizando éste tipo de control pueden resultar 
algunos errores en la transmisión. 
 
 
 
2.5 DELPHI 
 
 
2.5.1 Conceptos Básicos. 
 
El nombre Delphi [12] hace referencia al oráculo de Delfos. Borland eligió ese 
nombre para resaltar su principal mejora con respecto a su antecesor (Turbo Pascal), 
que sería su conectividad con bases de datos Oracle (oráculo, en inglés). El nombre 
se suele pronunciar delfi en Europa, incluida Gran Bretaña. Se usa delfái en inglés de 
Estados Unidos (existe una población Delphi con esa pronunciación), por lo que es la 
preferida por Borland. 
 
Delphi es un entorno de desarrollo de software diseñado para la programación de 
propósito generalcon énfasis en la programación visual. En Delphi se utiliza como 
lenguaje de programación una versión moderna de Pascal llamada Object Pascal. Es 
producido comercialmente por la empresa estadounidense CodeGear. En sus 
diferentes variantes, permite producir archivos ejecutables para Windows, Linux y la 
plataforma .NET. 
Selial PIN PIN Selial 
TO 3 3 TO 
RO 2 2 RO 
RTS 7 7 RTS 
CTS 8 8 CTS 
OSR 6 6 OSR 
CD CD 
DTR 4 4 OTR 
GND 5 5 GNO 
 21
Ventajas de utilizar Delphi en lugar de C++ o Visual Basic, por ejemplo. Básicamente 
decir que Delphi concentra la potencia y rapidez de ejecución de que carece Visual 
Basic con la facilidad de la programación visual de las herramientas tipo RAD (Rapid 
Application Development) de que carece C++. 
 
Delphi es algo más que el sucesor del famoso Pascal 7.0 de Borland. Dispone no 
sólo de un compilador muy rápido (más que la gran mayoría de los compiladores de 
C++, como ya era tradicional en Turbo Pascal), sino también de potentes 
herramientas para la creación visual de aplicaciones, de completas herramientas 
para la creación y manejo de bases de datos, aplicaciones multimedia, enlace DDE, 
creación de DLLs, etc. 
 
 Uso y variantes 
 
Un uso habitual de Delphi es el desarrollo de aplicaciones visuales y de bases de 
datos cliente-servidor y multicapas. Debido a que es una herramienta de propósito 
múltiple, se usa también para proyectos de casi cualquier tipo, incluyendo 
aplicaciones de consola, aplicaciones de web, servicios COM y DCOM, y servicios 
del sistema operativo. Entre las aplicaciones más populares actualmente destaca 
Skype, un programa de telefonía por IP. 
• Delphi inicialmente sólo producía ejecutables binarios para Windows: Delphi 1 
para Win16 y con Delphi 2 se introdujo Win32. 
 
 Propiedades 
 
Delphi 7.0 es una potente herramienta de desarrollo de programas que permite la 
creación de aplicaciones para Windows98, Windows2000, Windows XP y sus 
antecesores. 
• Las aplicaciones pueden colocarse de forma muy sencilla en la pantalla según el 
principio de módulos. Para ello se dispone de una paleta dotada de una gran 
variedad de componentes, algo así como los bloques de construcción de cada 
programa. Esta paleta es denominada por Borland VCL (Visual Component 
Library), o biblioteca de componentes visuales. Tiene un aspecto similar a Visual 
Basic, pero aunque el aspecto externo indica la misma facilidad de uso que Visual 
Basic, el corazón del sistema Delphi es mucho más potente. 
• Esta VCL es mucho más amplia que la de Turbo Pascal para Windows o la 
conocida OWL 1.0 (Object Windows Library) de Borland Pascal, y ofrece además 
una abstracción mucho más alta del sistema operativo. El programador es 
totalmente independiente de las particularidades de Windows, tales como 
manejadores (Handlers), punteros y funciones del API de Windows (Application 
Programming Interface). La programación se realiza con los cómodos 
componentes de Delphi y no con las llamadas al sistema de Windows. 
 22
• A diferencia de otras herramientas de desarrollo visuales (Visual Basic, Toolbook, 
etc) con Delphi es posible crear nuevos componentes que pueden entonces 
incorporarse en la paleta con los componentes ya existentes y que pueden ser 
utilizados de la misma forma. La VCL puede estructurarse libremente y así 
adaptarse totalmente a las situaciones propias de programación. 
• Delphi no solo dispone de componentes para la sencilla creación de entornos de 
aplicaciones como cuadros de lista, conmutadores o cuadros de diálogo 
terminados, sino que cubre con sus componentes muchos temas de la 
programación bajo Windows: se incluye entre los mismos un completo centro de 
control para la creación de aplicaciones multimedia, así como una gran variedad 
de componentes que actúan "debajo" del entorno, como tipos de listado muy 
variados y contenedores generales de datos. 
• Delphi dispone del Object Pascal, un lenguaje de programación muy poderoso que 
está sin dudas a la altura del C++ y que incluso lo supera en algunos aspectos. El 
Object Pascal es totalmente compatible con el Borland Pascal 7.0, lo que permite 
que programas desarrollados con este último puedan ser convertidos a Delphi. 
Las aplicaciones terminadas quedan disponibles como archivos ejecutables (.EXE) 
que pueden utilizarse solos y sin bibliotecas adicionales. Consecuentemente la 
velocidad con la que pueden ejecutarse los programas creados es muy alta. 
Excepcionalmente, si se incluyen llamadas a VBX, o DLLs, éstas se deben incluir 
junto con el ejecutable. 
• Delphi es una "Two-Way-Tool", es decir, una herramienta de dos direcciones, 
porque permite crear el desarrollo de programas de dos formas: una de forma 
visual en la pantalla, por medio de las funciones de Drag & Drop (Arrastrar y 
colocar) y la otra a través de la programación convencional, escribiendo el código. 
Ambas técnicas pueden utilizarse de forma alternativa o simultánea. 
 
 
2.5.2 Programación con Delphi. 
 
 Objetos 
 
Como su propio nombre indica, el Object Pascal (usado por Delphi) es un lenguaje 
totalmente orientado a objetos. Prácticamente todos los elementos del entorno Delphi 
[13] son objetos, que unas veces se encuentran definidos de antemano (los forms, 
los componentes de la paleta, objetos no visuales, etc), y otras se definen en nuestra 
propia aplicación. 
 
Todo el desarrollo de aplicaciones en Delphi está íntimamente ligado con la 
definición y uso de objetos, por lo que es fundamental conocer la mecánica que 
Object Pascal utiliza para describir un objeto, sus características y su 
 23
funcionamiento, sobre todo a la hora de que el programador cree sus propios 
componentes. En muchos casos no es necesario conocer el funcionamiento de la 
programación orientada a objetos para programar con Delphi, puesto que en la 
mayoría de los casos existen controles ya creados sin necesidad de tener que 
programarlos. 
 
La propia programación visual de Delphi, que escribe parte del código 
automáticamente, hace posible utilizar objetos de forma práctica sin tener por qué 
comprender al cien por cien su funcionamiento. 
 
 Componentes 
 
Un componente es cualquiera de los elementos que se puede insertar en una ficha, 
tanto si su función es visual como si no lo es (por supuesto un componente es 
también un objeto). Sin conocer exactamente el cómo realiza su función, el 
programador manipula una serie de propiedades, métodos y eventos que 
caracterizan al componente, a través de los cuales se "maneja" el componente en la 
forma deseada. Por supuesto el usuario puede crear sus propios componentes y 
usarlos en distintas aplicaciones, de forma que la reusabilidad del código sea 
máxima. A los componentes que cuentan con una parte visual, como puede ser un 
botón, se les denomina controles. 
 
 
 Propiedades 
 
Los componentes, y de hecho todos los objetos de Delphi son de uso general, por lo 
que a la hora de utilizarlos se debe adecuar a las necesidades particulares. Para ello 
se pueden utilizar las propiedades de cada objeto, mediante las cuales se puede 
establecer el título de una ventana, el tipo de letra de una etiqueta de texto o el color 
en el que aparecen los distintos controles. 
 
Se puede pensar en las propiedades como si fuesen variables pertenecientes a un 
objeto, de tal forma que para acceder a ellas generalmente habrá que indicar no sólo 
el nombre de la propiedad, sino también a qué objeto pertenece. Ciertas propiedades 
están sólo accesibles en tiempo de ejecución, por lo que mientras estamos 
diseñando la ficha no aparecerán. 
 
 Eventos 
 
La programación en el entorno Windows se caracteriza por estar dirigida por eventos, 
de tal forma que un programa no tiene por qué ejecutarse necesariamente de forma 
secuencial, sino que ciertas porciones de código se ejecutarán cuando ocurra un 
cierto evento. 
 
 24
Los eventos son señales que el entorno recibe desde distintos elementos, como 
puedan ser el ratón, el teclado o un temporizador. Ciertos eventos puedenser 
gestionados por el propio Windows, otros quedarán a cargo del propio lenguaje que 
se utilice, y un tercer grupo serán los que lleguen hasta el programa. En Delphi 
prácticamente todo el código que se escribe irá asociado a algún evento. 
Normalmente los eventos a los que reaccionarán los componentes serán las 
pulsaciones del teclado o el ratón, activaciones de los componentes, etc. 
 
 Métodos 
 
Los componentes Delphi además de disponer de propiedades y poder responder a 
ciertos eventos, habitualmente también disponen de métodos. Un método es un 
procedimiento o función que permite realizar una determinada acción en el 
componente, pudiendo necesitar o no el paso de algún parámetro. 
 
Al igual que ocurre en las propiedades, a la hora de usar un cierto método 
normalmente se indica primero el objeto o componente al que pertenece, de tal forma 
que la acción del método recaiga sobre él, y no sobre cualquier otro. El hecho de que 
cada objeto sea propietario de una serie de propiedades y métodos, variables y 
código, que no son accesibles a ningún otro objeto externo, recibe el nombre de 
encapsulación, aunque también es posible definirlos de tal modo que sean 
accesibles a otros objetos. 
 
 
 Bases de la programación orientada a objetos 
 
A medida que las aplicaciones se van haciendo cada vez más complejas, el 
mantenimiento del código también se hace más difícil, a pesar de que esté 
correctamente estructurado en funciones y procedimientos y dividido en múltiples 
módulos. En un programa complejo, (solo la programación del entorno bajo Windows 
ya hace de cualquier programa un programa complejo) es fácil perderse entre la 
cantidad de procedimientos, funciones y distintas variables distribuidas en multitud de 
unidades, con lo que hay grandes probabilidades de errores al pasar parámetros 
incorrectos, modificar variables indebidas, etc. 
 
Muchos de estos problemas encuentran su solución en la programación orientada a 
objetos, que no es más que una evolución de los lenguajes estructurados hacia una 
simplificación del mantenimiento del código y unas mayores posibilidades de 
reutilización de éste. 
 
Object Pascal cuenta con todas las características de un lenguaje orientado a 
objetos, como son la encapsulación, la herencia y el polimorfismo. 
 
Un objeto es parecido a un registro (record), pero se caracteriza porque además de 
contener miembros de distintos tipos, como números, cadenas, punteros, etc., 
también es capaz de contener definiciones de procedimientos y funciones. A los 
 25
procedimientos y funciones que forman parte de la definición de un objeto se les 
llama genéricamente métodos. 
 
Si se tiene un componente correctamente diseñado, los datos que se declaren en el 
interior del objeto sólo serán manipulados por los métodos de ese objeto, que 
estarán precisamente especializados en la manipulación de los miembros del objeto. 
A esta característica se le conoce como encapsulación. 
 
Otro de los pilares de la Programación Orientada a Objetos es la herencia. Con esta 
característica es posible no tener que escribir completamente el código del 
componente que necesitemos, sino derivarlo de otro componente que tenga las 
características básicas que necesitemos, y adaptarlo a una concreta añadiéndole 
sólo las características adicionales que se requieran. Además es posible ir ampliando 
en sucesivas derivaciones un objeto haciéndolo cada vez más complejo y adecuado 
a una utilidad particular. 
 
Polimorfismo es la capacidad de un objeto de corresponder a distintos tipos. 
 
 Programación MDI 
Se denomina tecnología MDI (Multiple Document Interface) al conjunto de servicios 
de Windows que posibilita la construcción de aplicaciones capaces de trabajar con 
múltiples documentos simultáneamente, disponiéndose de una ventana principal o 
marco, en cuyo interior aparecen las ventanas hijas que pueden ser 
redimensionadas, minimizadas y maximizadas ajustándose siempre a los límites de 
la ventana padre. 
 
La ventana principal del programa (Main) se distingue de cualquier otra por el valor 
de la propiedad FormStyle, que debe ser fsMDIForm, no pudiendo existir en el mismo 
proyecto más de una ventana con éste atributo. 
 
 
2.5.3 Estructura de un proyecto. 
 
Un proyecto Delphi [14] es el conjunto de todos los archivos que, una vez 
compilados, constituyen un programa ejecutable. Generalmente estas unidades se 
encuentran asociados con fichas. Cuando se compila el proyecto, se crean una serie 
de módulos de código objeto (.DCU), que el linker utiliza para crear el archivo .EXE. 
 
Otro tipo de archivos muy importante en la programación bajo Windows son los 
archivos de recursos (.RES), generados tanto por Delphi como por otros 
compiladores y herramientas (C++, etc). Estos ficheros pueden contener mapas de 
bits, listas de strings, etc. De hecho, un form es también del tipo Ressource (pero con 
extensión .DFM, o sea Delphi Form). Para la vinculación en un módulo del programa 
se utiliza la instrucción de compilación {$R <NombreArchivo.RES>}, que se puede 
ver al principio del programa. 
 26
 El lenguaje de programación 
 
Delphi está basado en una versión moderna de Pascal, denominada Object Pascal 
que expande las funcionalidades del Pascal estándar: 
Soporte para la programación orientada a objetos (habitualmente llamada POO) 
también existente desde Turbo Pascal 5.5, pero más evolucionada en cuanto a: 
• Encapsulación: declarando partes privadas, protegidas, públicas y publicadas de 
las clases 
• Propiedades: concepto nuevo que luego han adaptado muchos otros lenguajes. 
Las propiedades permiten usar la sintaxis de asignación para setters (captadores) 
y getters (definidores), los cuales son métodos de acceso, y se utilizan para 
definir una propiedad. También le permiten crear propiedades de sólo lectura o 
sólo escritura. 
• Simplificación de la sintaxis de referencias a clases y punteros. 
Soporte para manejo estructurado de excepciones, mejorando sensiblemente el 
control de errores de usuario y del sistema. 
Programación activada por eventos (event-driven), posible gracias a la técnica de 
delegación de eventos. Esta técnica permite asignar el método de un objeto para 
responder a un evento lanzado sobre otro objeto. Fue adoptada por Niklaus Wirth, 
autor del Pascal Original, e incorporada a otros de sus lenguajes como Component 
Pascal. 
 
 
 Desarrollo visual 
 
Como entorno visual, la programación en Delphi consiste en diseñar los formularios 
que componen al programa colocando todos sus controles (botones, etiquetas, 
campos de texto, etc.) en las posiciones deseadas, normalmente usando un ratón. 
Luego se asocia código a los eventos de dichos controles y también se pueden crear 
módulos de datos, que regularmente contienen los componentes de acceso a datos y 
las reglas de negocio de una aplicación. 
 
 Entorno Integrado de Desarrollo (IDE) 
 
O IDE en inglés (Integrated Development Environment), es el ambiente de desarrollo 
de programas de Delphi. Se trata de un editor de formularios (que permite el 
desarrollo visual), un potente editor de textos que resalta la sintaxis del código 
fuente, la paleta de componentes y el depurador integrado, además de una barra de 
botones y un menú que nos permite la configuración de la herramienta y la gestión 
de proyectos. 
 
 27
2.5.4 DELPHI vs Visual Basic. 
• Delphi produce aplicaciones en código máquina, mientras que Visual Basic 
produce código para ser interpretado. Esto quiere decir que las aplicaciones 
Delphi son mucho más rápidas que las equivalentes escritas en Visual. Pero 
también significa que se puede ahorrar la instalación del intérprete que necesitan 
los programas de Visual Basic. 
• En cualquiera de las versiones de Delphi se pueden programar DLLs, para poder 
comunicarse con otros lenguajes de programación. 
• Los componentes visuales de Delphi tienden, por lo general, a ser más eficientes 
que los correspondientes controles VBXs ya que forman parte del propioprograma ejecutable final y no de una biblioteca dinámica. Un control definido en 
una DLL, por ejemplo, duplica inevitablemente parte del entorno de tiempo de 
ejecución del sistema en que fue programado, ocupa más memoria y provoca un 
mayor intercambio de páginas de memoria virtual con el disco. 
• Delphi puede programar tanto controladores como servidores de automatización. 
• Los componentes visuales de Visual Basic pueden utilizarse desde Delphi, ya 
sean los obsoletos VBX para la versión de 16 bits, o los nuevos OCX en la 
versión de 32. 
• Delphi utiliza Object Pascal desde sus primeras versiones, un lenguaje Orientado 
a Objetos, lo que produce características tan importantes como son el 
encapsulamiento, el polimorfismo y la herencia. 
 
2.5.5 Componentes Utilizados. 
 
 
2.5.5.1 WSC (Windows Serial Communications). 
 
El WSC [15] es un componente serial con librerías DLL, desarrollado por Marshallsoft 
Computing, Inc, [16]. Utiliza el estándar de Windows API para comunicarse con el 
puerto serie utilizando el RS232 
 
Características Principales: 
 
• Soporta Control de flujo por Software y Hardware. 
• Soporta Windows 95/98/Me/NT/2000/XP. 
• Hace llamadas a funciones Windows API. 
• Puede ser utilizados en lenguajes como Visual C/C++, C++.NET, Visual 
FoxPro, dBase, COBOL, Access y Excel. 
 28
La Application Programming Interface (API) Win32 define un conjunto de funciones 
que intercambian información con el sistema operativo multitarea. 
 
Algunas de las ventajas de API Win32 es acceso a dispositivos de entrada/salida, 
control, sincronización y comunicación entre hilos de una aplicación, para el 
desarrollo de aplicaciones en tiempo real. 
 
La Norma de Windows la Biblioteca de Comunicaciones De serie (WSC) es un 
componente de comunicación de serie la biblioteca de DLL. WSC usa el API de 
Windows normal (Interfaz Programación Aplicación) que comunica con cualquier 
dispositivo conectado a un puerto de serie. 
 
Una interfaz simple que permite acceder los datos de un puerto de serie que usa 
RS232 o RS422 / RS485 los puertos de serie. WSC también apoya los puertos 
virtuales como aquéllos creados por Bluetooth y conversores de USB/serial. 
 
WSC correrá bajo Windows 95/98/Me / NT/2000/2003/XP. 
 
 
 Bibliotecas de enlace dinámico. 
 
WSC incluye ambos Win16 [WSC16.DLL] y Win32 [WSC32.DLL] las bibliotecas de 
enlace dinámico (DLL). Un DLL se caracteriza por el hecho que necesita no se 
cargue hasta ser requerido por un programa de la aplicación y que sólo una copia de 
la DLL es necesaria sin tener en cuenta el número de programas de la aplicación que 
lo usan. Ellas pueden llamarse de cualquier lenguaje capaz de hacer las llamadas al 
API de Windows, y trabajará con todas las versiones de su recopilador 
 
GUI y Modo de la Consola 
 
WSC [17] es llamado desde la consola WIN32 así como los programas de GUI. Un 
"modo de consola” es un programa es un Windows 95/98/Me/NT/2000/XP WIN32 
ordenan a una línea del programa que corriendo en una ventana del orden. Aunque 
el modo de la consola se parece a programas de DOS, ellos son programas WIN32 
que tiene el acceso a la dirección del espacio entero de Windows. 
 
 
Uso de la Biblioteca de WSC 
 
 
 SioBaud: Configura la velocidad de baudaje 
 
Configura la velocidad de baudaje sin resetear el puerto. Se usa para cambiar la 
velocidad después de llamar a SioReset. SioBaud puede llamarse con o el valor de 
baudaje real o con códigos de proporción de baudio. 
Sintaxis: SioBaud(Port, Baud). 
 
 29
 SioReset: Inicializa el puerto de serie para procedimiento. 
 
La función de SioReset inicializa (abre) el puerto de serie seleccionado. SioReset 
debe llamarse antes de hacer cualquier otra llamada a WSC. SioReset usa la 
paridad, bits de paro, longitud de palabra previamente configurados con SioParms. Si 
no es configurado nos da por default (19200, ninguna paridad, 8 datos, 1 parada). 
Sintaxis: SioReset(Port, RxQueSize, TxQueSize) 
 
 
 SioParms: Configura paridad, bits de paro, y longitud de la palabra. 
 
SioParms o puede llamarse antes o después de llamar SioReset. Configura los 
parámetros de transmisión. 
Sintaxis: SioParms(Port, Paridad, StopBits, DataBits) 
 
 
 SioPutc: Transmite un caracter 
 
La función SioPutc copia el carácter a transmitir para la transmisión subsecuente por 
la UART. 
Sintaxis: SioPutc(Port, Ch) 
 
 
 SioGetc: Lee el próximo carácter de la comunicación serie. 
 
La función de SioGetc lee el próximo byte de la cola recibido del puerto de serie 
seleccionado. 
Sintaxis: SioGetc(Port) 
 
 
 SioFlow: Configura el protocolo de flujo. 
 
La función de SioFlow se usa habilitar o deshabilitar el control de flujo por hardware. 
El control de flujo por hardware utiliza RTS y CTS para controlar el flujo de datos 
entre el módem y la computadora. Para habilitar el control podemos configurar 
'Cmd' como: 
 
 WSC_HARDWARE_FLOW_CONTROL 
 WSC_SOFTWARE_FLOW_CONTROL 
 WSC_NO_FLOW_CONTROL 
 
Para que el mando de flujo trabaje correctamente, su dispositivo de serie también 
debe configurarse para trabajar con el mismo control de flujo (hardware o software). 
Si utiliza el control de flujo por hardware, el cable de la computadora al cable del 
dispositivo serie debe tener RTS y CTS alambrados sin cruzar los cables. 
Sintaxis : SioFlow(Port, Cmd) 
 
 30
 SioCTS: Lee el estado del bit del módem (CTS) si está en alto o bajo. 
 
La función de SioCTS se usa para detectar si CTS (Clear to Send) es alto (1) o bajo 
(0). La línea de CTS se usa para llevar a cabo el control de flujo por hardware. CTS 
se manda a bajo por el módem para no enviar los datos y se va a alto para decirle a 
la computadora que puede continuar. 
Sintaxis: SioCTS(Port) 
 
 
 SioRTS: Habilita, deshabita o lee el RTS(Request to Send). 
 
El SioRTS controla la Demanda de envío (RTS habilita el registro de control del 
módem). 
La línea de RTS se usa para detectar algún error corrigiendo los módems 
implementando el control de flujo por hardware. RTS debe estar habilitado cuando 
se utiliza ningún control de flujo. 
Sintaxis: SioRTS(Port, Cmd) 
 
 
 SioDTR: Habilita, deshabita o lee el DTR(Data Terminal Ready) 
 
Controla si la Terminal de datos esta lista para la comunicación. DTR debe estar 
siempre habilitado para establecer comunicación con el módem. 
Sintaxis: SioDTR(Port, Cmd) 
 
 
 SioDone: Termina el proceso de comunicación serie. 
 
La función de SioDone termina el proceso de comunicación serial, permitiendo otras 
aplicaciones para usar el puerto. SioDone siempre debe ser la última función 
llamada antes de terminar una aplicación. 
Si una aplicación está ejecutando un ambiente de desarrollo integrado (IDE) y la 
aplicación termina sin llamar a SioDone primero, el propio IDE prevendrá el puerto 
para re-abrirse. Terminando el IDE liberará al puerto. 
Sintaxis: SioDone(Port) 
 
 
 SioKeyCode: Da la llave para el paso a WSC32.DLL 
 
La primer Biblioteca del WSC que debe llamarse es SioKeyCode que inicializa la 
biblioteca de WSC y asigna los recursos necesarios. SioKeyCode se llama 
típicamente en la sección de la inicialización de su aplicación. 
Sintaxis: SioKeyCode(KeyCode) 
 
 
 
 
 31
2.5.5.2 Super Timer. 
 
Este es un componente no visual desarrollado por García Trujillo [18], que funciona 
como un timer común, solo que este tiene la peculiaridad de que se le puede asignar 
un nivel de prioridad al hilo de ejecución, para captar la mayor atención del 
procesador, este es útil para realizar animaciones, o procesos de tiempo real. 
 
Este componente funciona para todas las versiones de Delphi, o incluso con Borland 
C ++ Builder. 
 
 
2.5.5.3 HighResTimer. 
 
El componente desarrollado por Lauer Roman [19]. Usa el Timer Multimedia Win32 y 
un contador de alta resolución utilizado como cronómetro a la espera de una rutina 
del CPU. Además este componente usaun cronómetro multimedia para cronometrar 
intervalos de tiempo largos. En algunas ocasiones el tiempo de espera es más 
pequeño que la exactitud del cronómetro, el componente cambia al contador de alta 
resolución. Esto reduce la carga del CPU a un mínimo para el cual logra una alta 
exactitud. 
El cronómetro de alta resolución puede seleccionarse entre el contador del 
procesador Pentium o de Windows. Se prueba la disponibilidad del contador de 
tiempo durante la creación del componente. 
 
La resolución y la exactitud es determinada por el Sistema Operativo y la carga de 
CPU. Sin embargo con las configuraciones de prioridad de hilos de ejecución y de 
aplicaciones apropiados pueden ayudar a conseguir una exactitud superior 
 
En cada creación del componente se realizará una auto-calibración. Para esta 
calibración es necesario determinar la velocidad del contador. 
 
Propiedades: Contador de velocidad, resolución, exactitud, calibración, pausa, 
intervalo de tiempo. 
 
Las resoluciones mínimas y exactitud son determinadas por el sistema operativo 
usado. Para Win9x es posible lograr una resolución de 1 ms pero la exactitud mínima 
de sólo 5ms, en los sistemas de NT la exactitud mínima es 1ms. 
 
 
2.5.6 Comtester 
 
El comtester es una aplicación desarrollada en Delphi desarrollada por Claudiu 
Chiculita [20]. Es una herramienta muy útil cuando se trabaja con puerto serial ya 
que es posible modificar los parámetros de la comunicación serie tales como paridad, 
puerto, velocidad de transmisión y control de flujo entre otros. 
 
 32
III. PROBLEMÁTICA 
 
 
Actualmente se llevan a acabo diversos tipos de investigación en el departamento de 
Instrumentación Electromecánica del Instituto Nacional de Cardiología “Ignacio 
Chávez”; una de las líneas de Investigación es la de adquisición de señales 
fisiológicas, tales como el ECG, EEG, EMG, etc. 
 
El auge alcanzado por la computación en los últimos años a potenciado la utilización 
de Computadoras en la solución de problemas biomédicos de diversa índole y el 
número de usuarios del sistema operativo Windows ha incrementado notablemente 
debido a su interfaz amistosa, su compatibilidad, etc. Razones por las cuales se 
tiene la necesidad de desarrollar un sistema bajo esta plataforma para obtener 
mediciones de parámetros más exactas, análisis de variables cardiacas más 
precisas, y de éste modo favorecer a las áreas de conocimiento, investigación y 
desarrollo. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 33
IV. JUSTIFICACIÓN 
 
 
El sistema propuesto bajo la plataforma de Delphi tiene la ventaja de crear un archivo 
ejecutable, gracias a ello es posible implementar el sistema en prácticamente 
cualquier PC siempre y cuando esté basado en Windows. 
 
La visualización de las señales de ECG por el monitor de la PC contribuirá a la 
mejora en cuanto a la interpretación de las señales recibidas ya que se garantiza la 
integridad de los datos recibidos para su posterior análisis, lo cual permitirá llevar a 
cabo diversos estudios, por una parte en la mejora de la atención al paciente y 
ayudar en el avance de los sistemas de electrocardiografía. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 34
V. OBJETIVOS 
 
 
 
5.1 Objetivo General 
 
Diseñar un sistema de captura por el puerto de comunicación serie de una PC para 
adquirir señales fisiológicas (EGC) bajo el Sistema Operativo Windows y desplegar 
gráficamente las señales obtenidas. Además de almacenar en un archivo los datos 
recibidos de manera íntegra. 
 
 
5.2 Objetivos Específicos 
 
 Digitalizar 3 señales analógicas de hasta 120 Hz con una resolución de 10 bits y 
establecer el protocolo de comunicación serie con la PC. 
 Representar gráficamente la forma de onda de las señales recibidas. 
 Almacenar por medio de un archivo en formato ASCII, los datos íntegros de las 
señales recibidas para su estudio posterior. 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 35
VI. RESULTADOS ESPERADOS 
 
 
1. Obtener la integridad de los datos digitalizados mediante un archivo con la opción 
de modificar el tiempo de almacenamiento. 
2. Software de adquisición y presentación de los datos almacenados por el Sistema 
de Captura. 
3. Al asegurar la comunicación serial es por puerto serie será posible migrar a otro 
tipo de interfaz (USB, Infrarrojo, etc.) sin modificar el software ya que lo reconoce 
como puerto virtual. 
4. Presentación del trabajo en un congreso del área Biomédica. 
 
 
 
 
 
 
 
 
 
 
 
 
 36
VII. ALCANCES 
 
 
1. El Sistema de Captura tiene la capacidad de modificar el tiempo de 
almacenamiento hasta de 2 Gb de información. 
2. El Sistema de Análisis muestra gráficas de tiempo mediante un submuestreo a 40 
Hz. 
3. Se lleva a cabo una investigación sobre los requerimientos de hilos de ejecución, 
ya que se pretende se pueda implementar en el futuro y de este modo tener la 
capacidad de obtener la señal en “tiempo real”. 
4. El sistema servirá como base en el futuro desarrollo de sistemas de comunicación 
de señales de ECG con nuevas tecnologías como Bluetooth, infrarrojo, Wi-Fi, etc. 
 
 
 
 
 
 
 
 
 
 
 
 37
VIII. DESARROLLO 
 
 
 
8.1 Diagrama a bloques. Diagrama General. 
 
 
 
 
 
Figura 13. Diagrama a bloques general 
(Señal fisiológica, Sistema de Adquisición, cable RS232 y Representación Gráfica). 
 
 
 
A continuación se muestra el diagrama general (figura 13) del sistema propuesto el 
cual consta básicamente de 4 partes: 
 
 La captura de la señal fisiológica, en este caso señal de electrocardiograma. 
 Sistema de Adquisición (SAD) que es el encargado de procesar la señal recibida, 
convertirla de analógica a digital y transmitirla a la PC. 
 Cable RS-232 que es el medio de comunicación para la transmisión de datos. 
 PC encargada de procesar la información recibida y desplegar las gráficas 
deseadas. 
 
 
 
8.2 Protocolo de Comunicación. 
 
Sincronización de parámetros entre el “SAD” y la “PC” 
 
 Recepción de 3 canales de ECG. 
 Frecuencia de muestreo a 240 Hz. 
 10 bits de conversión para cada canal (2 bytes). 
 Seleccionar el puerto serie para la comunicación (COM1). 
 Configurar la velocidad de transmisión (57600 Bauds). 
 Bits de datos (8). 
 Bits de paro (1). 
 Paridad (Ninguna). 
 
 38
8.3 Punto de partida de Delphi (Easy). 
 
 
 Apertura de puerto y recepción de datos. 
 
Para éste sistema se optó por utilizar una aplicación del Windows Stardard Serial 
Communications: Se partió del primer ejemplo “EASY” [21] que establece 
comunicación serial con la opción a modificar velocidad de transmisión y puerto 
elegido. 
 
Esta aplicación (figura 14) tiene como principales ventajas la selección de puerto: 
COM1, COM2, COM3 y COM4. También tiene la opción de modificar la velocidad de 
transmisión, es posible elegir entre: 300, 1200, 2400, 4800, 9600, 19200, 38400 y 
57600 bauds. 
 
 
 
 
Figura 14. Ejemplo Easy. Programa de comunicación simple utilizando el WSC4D para Delphi. 
 
 
 
8.4 Control de flujo (Handshaking). 
 
Primeramente se realizaron modificaciones en el Hardware habilitando los pines de 
control RTS y CTS del MAX232 al DB9, cambiando así su conexión básica (sin 
control) por una conexión con control de flujo (figura 15). 
 
7 EASY: Offline LJ§L8J 
lno c~ 
v 
 39
 
 
Figura 15. Modificación a la conexión básica del MAX232 habilitando los pines de control 
(CTS y RTS) por Handshaking. 
 
 
La conexión del cable RS-232 [22] debe guardar la configuración siguiente para 
poder realizar el control de flujo handshaking (figura 16). 
 
 
 
Figura 16. Conexión del cable RS232 para establecer la comunicación entre dos dispositivos. 
 
 
Para realizar el Full-handshake se debe considerar las entradas de un dispositivo con 
las salidas del dispositivo opuesto y viceversa. Estas consideraciones se realizan por 
medio de software como se muestra a continuación (figura 17). 
 
 
 
Figura 17. Conexión física entre el SAD y la PC utilizando Full.handshake. 
l 11 F 'i' 
l liF

Continuar navegando