universidad autonoma metropolitana …148.206.53.84/tesiuami/uam1603.pdf · universidad autonoma...

67
UNIVERSIDAD AUTONOMA METROPOLITANA UNIDAD IZTAPALAPA CIENCIAS BASICAS E INGENIERIA LICENCIATURA EN INGENIERIA EN ELECTRONICA EN COMPUTACION TRABAJO RECEPCIONAL PARA OBTENER EL TITULO DE LICENCIATURA TURCIOS ERNESTOPATRACA MALDONADO 8922651

Upload: trandat

Post on 07-Feb-2018

228 views

Category:

Documents


5 download

TRANSCRIPT

Page 1: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

UNIVERSIDAD AUTONOMA METROPOLITANA

UNIDAD IZTAPALAPA

CIENCIAS BASICAS E INGENIERIA

LICENCIATURA EN INGENIERIA EN ELECTRONICA EN COMPUTACION

TRABAJO RECEPCIONAL PARA OBTENER EL TITULO DE LICENCIATURA

TURCIOS ERNESTO PATRACA MALDONADO

8922651

Page 2: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

INDICE GENERAL

INTRODUCCION

CAPITULO I

1.1 RI, A\;\ZPI,IFICAIDOR OPER \CION;IL

DEFINICION.

;II’I,IC.-\CIONES

CAPITULO I1

2.1 AILIPLIFICL\DOR DIFERENCLIL

2.1.1 FACTOR DE RECHAZO COAIUN

2.1.2 EL ;\NPLIFICLIDOR DE 1NSTRUMENT;ICION

2.2 FILTROS

0 PAS;\ ALT;\S.

0 RECI-I;IZ;I BAWDL\.

0 PASri SAJ_lS.

2.3 S I S T E ~ PAR\ L ~ \ O B T E N C I ~ N DE SEÑ~ILES BIOELECTRICAS

1

3

7

8

10

11

Page 3: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

CAPITULO I11

3.1 2QUÉ ES UK.\ FUENTE L\ISI,ADA\?

3.2 FUENTE ;\ISLAIDA

ANEXOS

APENDICE A

16

APENDICE B

CONCLUCIONES

BIOGRAFÍA

73

74

75

Page 4: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

El mundo médico ha avanzado en los últimos 20 anos de una manera vertigniosa, ya que se ha valido de los

grandes avances en la técnica para crear una medicina moderna 1- no traumitica.

Ciertamente la electronic2 y la instrumentación han jugado un papel clave para crear equipos que hagail que

el ser humano tcnga una calidad de vida superior.

Por medio de este reporte queremos mostrar como se puede disenar un equipo médico para el diagnótico, por

medio de una instrumentación sencilla pero eficaz.

Page 5: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

CAPITULO 1

EL AMPLIFICADOR OPERACIONAL.

1.1 EL AMPLIFICADOR OPERACIONAL (OAP)

EL ;iOP es un amplificador de CC multietapa con entrada diferencial, cuya caracteristicas se aproximan a las de

un amplificador ideal.

XPJJCXCIONES DE LOS XOI'

De modo general, podemos decir que sus aplicaciones están presentes en los sistemas electónicos de control

industrial, en la instrumentación nuclear, en la instrumentación médica (electromedicina o 13oeIectronica), en los

ordenadores analogcos y en los equipos de audio y telecomunicaciones.

1.2 MODOS DE CONFIGURACI~N.

Rasicamentc el ;\OP trabaja de tres formas:

Page 6: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

;i) SIN R E TR OALIMENTA CIÓN

Denominada tambien configuración a lazo abierto, la ganancia del ;iOP viene determinada por el fabricante,. Se

utiliza en los circuitos comparadores como se muestra en la figura 1.2.1

B) CON REALIMENTACION POSITIVA.

Este tipo de configuración se denomina en lazo cerrado y tiene el inconveniente de desestabilizar el circuito. La

aphcaclón de estos circuitos se dan en los osciladores, como se mucstra en la figura 1.2.2

Page 7: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

C ) CONRETROALIMENTACION NEGATIVA(RN)

\‘ease que la salida estb aplicada a la entrada inversora del _iOP a través de Rf, las aplicaciones que podemos hacer

con esta configuración so11 las siguientes:

m Aimplificador no inversor.

m ;implificador inversor.

Sumador.

,-\mplificador diferencial.

Diferenciador.

Integrador.

Filtros activos.

De las configuraciones antes mencionadas vamos a tomar con atención particular en los filtros activos,

amplificador diferencial J’ amplificador inversor J’ no inversor.

Page 8: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

UNIVERSIDAD AUTONOMA METROPOLITANA

UNIDAD IZTAPALAPA

PROYECTO DE INGENIERIA ELECTRONICA I1

'SISTEMA PARA LA O B T E N C I ~ N DE SEÑALES BIOELÉCTRICAS"

ASESOR:

VICTOR HUGO TELLEZ ARRIETA.

! I

I .

FABIAN CUBILLA MENDEZ. ,p I .{

/y FRANCISCOJA WER CR UZ ANGEL.

. / í PATRACAMALDONADO TURCIOSERNESTO

Page 9: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

Con estas aplicaciones vamos a hacer un sistema para l a obtención de señales bioelectricas por lo cual vamos a

profutldizar en dichas configuraciones.

Page 10: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

CAPITULO I1

CONFIGURACIONES UTILIZADAS PARA LA OBTENCION DE SENALES

BIOELECTRICAS.

2.1 AMPLIFICADOR DIFERENCIAL.

Este circuito permite obtener en la salida una tension igual a la diferencia de las señales de entrada. E s un

amplificador con numerosas aplicaciones en el irea de instrumentación. Veamos en la figura 2.1.

2.1.1 FACTOR DE RECHAZO ENMODO COMUN(CMRR)

Page 11: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

La figura 2.2. muestra el principio que acabamos de mencionar:

2.1.2 EL AMPLIFICADOR DE INSTR UMENTA CIÓN

El amplificador de instrumentación debe presentar las siguientes caracteristicas:

a) Resistencia de entrada muy alta.

b) Resistencia de salida baja.

c) CMRR superior a los 100 dB.

d) Ganancia de lazo abierto alta.

e) Baja tensión de OFFSET de entrada

El amplificador de instrumentación Que utilizamos en nuestro proyecto es el siguiente:

Page 12: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

r'amoa a mostrar las técnicas que utihzamos para eliminar cl ruido (60 Hz) y la tensión de OFFSET.

a) T E N S I ~ N D E OFFSET

La tensión de OFFSET es un voltaje que se suma a la seiial de salida del amplificador operacional, utilizando una

configuración como la que se muestra en la figura 2.3. podemos evitar la tensión de offset.

Page 13: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

b) RUIDO

Page 14: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

Llamamos ruido a las señales eléctricas indeseables que pueden aparecer en las terminales de cualquier dispositivo

electronico. Motores electricos, h e a s de transmisión, descargas atmosfericas, radiaciones electromagneticas, etc.

Un metodo práctico para atenuar los efectos de los ruidos en los circuitos electrónicos, conciste en enviar a tierra

dichos circuitos, así como los equipos involucrados. También podemos dar una buena protección utilizando

capacitores entre tierra y l a terminal de alimentación. La figura 2.4.

2.2.FILTROS.

Para saber los rangos que vamos a uulizar y l a señal que deseamos obtener, para la experimentación tomamos la

señal de electrocardiografia.

a) Rango de frecuencia 0.05 Hz a los 100 Hz

11) Rango de selial 10 microvolts a 5 mv.

Page 15: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

Para este fin se utilizó una serie de filtros puestos en cascada para solo filtrar la s e h l deseada J- eliminar

componentes de alta frecuencia y ruido que pudiera filtrarse.

a) FIL TR O PASA AL TAS.

b) FILTRO RECHAZA BANDA

C) FIL TR O PASA BAJAS.

Page 16: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

2.3 SISTEMA PARA LA OBTENCI~N DE SEÑALES BIOELECTRICAS.

Ya que tenemos todo lo anterior podemos integrarlo todo junto con lo cual obtendremos un sistema para obtener

seiiales de electrocardiografia.

Su diagrama a bloques es el siguiente:

t 1 I 1 PACIENTE 1 I

I i """."_ll. lll.l......

7- 7

I ~ lll_...".."-.. ! AMPLIFICADOR i I

1""-

! FILTROS I 1111"" 1" ..:

i

Con estas herramientas ya casi tenemos el sistema para la obtención de señales, falta solo donde se va a desplegar

dichas seiiales para lo cual utilizamos un equipo P.C. por medio de la tarjeta de evaluación del 68HCll hacemos

una conversion analogca - distal, enviando por la norma RS-232 enviamos al puerto serial de l a miquina, para

que por medio de un programa en lenguaje C, podamos dar un facil manejo y manipulación a la seiial que estamos

obteniendo, almacenaldola en disco duro para su posterior estudio y/o anilisis.

Page 17: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

CAPITULO I11

LA FUENTE AISLADA

3.1 ¿QUÉ ES U N A FUENTE AISLADA?.

Una fuente es lo que le da energa a un sistema, para hacerlo funcionar. En el caso de los equipos biornedicos las

fuentes deben tener unos requerimientos especiales para mantener al paciente seguro y a salvo de cualquier

accidente. En los proxirnos puntos se descrilirin el dernrrollo de nuestr:l fuente aislada asi como los criterios de

diseno que utilizamos.

3.2 FUENTE PRINCIPAL.

La fuente principal presentó un reto ya que necesitabamos una fuente que fuera de un arnperaje alto para

alimentar a la parte de aislamiento y a su vez que estuviera regulada para esto utlizamos un dispositivo electrónico:

LM317. Con el cual logramos los requerimientos de la siguiente etapa.

Utilizamos una configuración de alta corriente dicha aplicación la podemos ver en el apendice R.

3.3 FUENTE AISLADA.

Para la parte de aislamiento utilizamos al LA1555 como generador principal de nuestra fuente; la cual oscilaba a

una frecuencia de 50 Khz, esto con el fin de dar una seguridad al paciente, tambien en esta etapa hay un

transformador que es la parte principal de nuestro diseiio ya que esta proporciona la seguridad total al paciente,

debido a los campos magneticos que generan las corrientes inductivas que dan energm a la siguiente etapa.

Page 18: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

ANEXOS

Page 19: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

APENDICE A.

Este programa realiza la comunicación serial con un equipo P.C. Para este fin utilizamos lenguaje de

programación C, algunas rutinas se uuliz:m para establecer la comunicación y almacenar los datos.

/" archivos de encabezamiento */

#include <stdio.h>

#include <stdlib.h>

#include <bios.h>

#include (conio.h>

#include <dos.h>

#include <graphics.h>

#include <tnarh.h>

#include < time.h>

#include <stddef.h>

#include <timeb.h>

/* variables globales '/

char PUERTO;

char TRINS;

typedef struct Nodo

{

int sis; /* presición sistelica */

int dias; /* presición diastelica I/

int med; /* presición media */

int frec; /" pulsaciones por minuto y /

int dur; /* tiempo entre pulso y pulso "/

struct Nodo 'ant; /* apuntador al nodo anterior */

Page 20: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

struct Nodo *sig; apuntador al nodo siguiente ::-/

} nodo;

typedef nodo Ypnodo /*define el tipo nodo como p o d o '/

typedef struct Escala

float nl;

float 112;

float 113;

float 111;

float n5;

} csc;

/* guarda el valor de la escala de l a Ira. gráfica , G /

/* guarda el valor de la escala de la 2da. gráfica y /

/ ' guarda el valor de la escala de la 3ra. grifica /

/ y guarda el val01 de la escala dc la I t a . gráfica ' /

/* guarda el valor de la escala de la .5ta, grifica x /

typedef esc +escala; define el tipo esc como escala * /

typedef struct Lim

i

int sl; int s2;

int dl; int d2;

int ml; int m2;

int El; int f2;

int tl; int t2;

} lim;

typedef lim *lunite;

union REGS ent,sal;

int status;

int auxhar;

Page 21: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

/* prototipo */

pnodo CreaNodo(void);

void Inserta@nodo 'Nodlet);

void BorraNodo@nodo *Nobict);

void inicia_graficos(void);

void presentacion(void);

void menu(void);

void Protocolo(void);

vod Tnipuerto(void);

void finapres(void);

void checksum(void);

void modo-trans(void);

void format-dato(void);

void mandar-datos(void);

void inicia(void);

void fin(void);

void escribe(char);

char recibe(void);

char recibe1 (int *);

char edo-puerto(void);

void comunicar(void);

void Error(int,int);

int Error2(vold);

int Inter(int*,int*,int,int);

void Intervalos(limite *Lt,escala "Ese);

double iniy(int);

void Eje(int);

void PinEjesPmite *);

Page 22: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

void Pitlta(int,int,int,int,float,int);

void DespGraf(int *,pnodo,escala);

void DespNum(pnod0,int *, int cont);

void Desplicga(int *, int *, pnodo *, int, escala x , char);

void RecA\rch(char *);

void Nomlrch(F1LE I, char *);

void Salva(pnodo ,*IniLista, pnodo ‘:-NodAct);

int AdqDat@nodo T o d - i c t , pnodo FInLista, escala *Ex, limite

k t RecDat(pnodo “SodAct, pnodo *InLista, escala ‘Esc, limite ”1.t);

void DespIlat @nodo “Nodlct, pnodo ’InLista, escala ’Esc, Lmlte ‘Lt);

/ pide memoria al sistema del tamaño del nodo, e inicializas elementos a nulos * /

pnodo CreaNodo(void)

I

pnodo temp;

tempO@nodo) malloc (sizeof(struct Nodo));

if (temp == NULL) /* No tiene memoria el sistema J’ sale del programa */

{

puts(“No hap memoria disponible...”) ;

esit(1);

I

temp ->dias=O; /*Existe memoria, entonces inicializa variables */

temp ->sis=O;

temp ->med=O;

temp ->frec=O;

temp ->dur=O;

temp ->sig=NULL;

temp ->ant=NULL;

Page 23: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

return(temp);

1

/*recibe un nodo nuevo y lo inserta a la lista ligada,colocando el nuevo nodo al inicio de la l ista“/

void Inserta@nodo “Nod-ict);

{

if (‘Nodlct==NULL)

TNodAct = New;

else

/’Elimina el nodo de la lista */

void BorraNodo( p o d o *Nod;\ct)

I

p o d o temp=*Nod-ict;

if (’Nodlct!=NULL)

I

if ((*No&lct)->ant!=NULL)

{

(*NocLlct)=(*Nod;ict->ant;

(“Nod-ict)->sig->ant=NULL;

(”Nod-\ct)->sig=NULL;

/* La l i s t a no tiene elementos */

/‘:- New es el primer nodo de l a lista */

/* La lista tiene al me1los u11 elemento y /

/‘ La l i s ta tiene al menos un elemento * /

/* La lista tiene mas de un elemento * /

Page 24: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

free(temp);

1

1

/ * Inicia graficos

void micia_graficos(void)

int controlador,modo;

controlador=DETECI ;

initgraph(&controlador,&modo,”C:/tc/BGI”);

1

void Tap(void)

t

clearview porto;

setfillstyle(SOL1D-FILL,WHlTE);

bar(O,O,getrnaxso,getmaxl\.o);

setfillstyle(SOLID-FILL,LIGHTCYL~N);

bar(getma~x~/lO,getmax~~/lO,getmaxs~-getmaxs~/lO, getmaxy@getmaxyo/lO);

setcolor(LIG1-ITBLUE);

setlinestyle(SOL1D-LINE,l ,THICK-\VIDTH);

rectangle(getmaxso/lO,getmaxy0/10,getmaxxo-getma~xo/lO, getmaxl\.o-getmasl\.o/lO);

setcolorQ3LUE);

setlinestyle(SOL1D-LINE,l ,THICK-\‘C?DTH);

rectangle(getmasx~/lO,getmaxy~/lO,getmasx~-getmass~/lO,getmaxy~-getmax~~/~~~);

setcolor(LIGHll3LUE);

settextstyle(S;INS-SERIF-FONT,HORIZ-DIR,2);

Page 25: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

void presentacion(void);

I setfillstyle(l,LIGTI-IGR\\’)?;

bar(0,0,650,650);

setcolor(l3LUE);

setteststyle(l,HORIZ-DIR,2);

outtestx!-(2,2,”1_!NIT’ERSID;\D .WlONO;\L-\ METKOPOLIT.\N;\”);

sleep(1);

outtexts~-(l00,~O,”PRO~‘ECTO DE Ih-GENIERI;\ ELECTRONICA\ 11”);

sleep(1);

setcolor(BL;\CK);

outtestx~(100,1jO,”SISTE~L-\ P;\R;I L;i OBTENCION DE SE%\LES BIOEL,ECTRICA-Is”);

sleep(1);

outtestsy(l00,300,”INTEGR-\NTES”);

setcolor(l3LUE);

setteststyle(l,HORI%-DIR,2);

outtestxy(350,300,”CUBILL\ AIENDEZ F;IBIAN”);

outtestxy(3j0,400,”CRUZ &INGEL FRUXCISCO J;I\’IER’);

outtes~y(350,400,”P;ITK_-\C;i AL-\LDON;IDO TURCIOS ER_\ESTO”);

1

void menu(void)

I setfillstyle(SOL1D-FILL,BLUE);

bar(0,0,650,50);

setcolor(l5);

Page 26: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

setteststl\.le(l,HORIZ-DIR,2);

outtestxy(l75,O,”~IE~U PRINCIP_\L”);

setfillstl\-le(SOLID_FILL,15);

bar(O,50,650,650);

setfillstyle(SOL1D-FILL,GKEEN);

bar(25,50,600,90);

setcolor(BLUE);

settextstyle (1,HORIZ_DIR,2);

outtextsy(70,50,”1 .-ADQUIRIR.”);

t~ar(2~,140,600,180);

outtestxy(70,140,”2.-RECL‘PER~R DEL DISCO.”);

bar(25,230,600,270);

outtexts!7(70,230,”3.-S~~L~’;\R.”);

bar(25,320,600,360);

outtestxy(70,320,”4.-D~SPLEG~~R.”);

bar(25,410,600,450);

outtextxy(70,410,”j.-S;II,IR”);

outtextsy(370,41O,”Su selección-”);

1

/* Pregunta el tipo de inicialización Que le vamos a dar al puerto de la miquina y /

/ y asigna los valores a las variables trans J’ puerto ’/

void Protocolo(void);

char opcion;

cleardeviceo;

Tapo;

o~ttext?cy(200,getma~y~/2-15O,”TIPO D E INICI;1LI%_1CION”);

Page 27: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

outtests~(20O,getmas~O/2-100,”1 .-Alanual”);

outtextxp(2O0,getmax~O/2-~O,”2.-;\utomatic~”);

do í

outtestsy(20O,getmasyO/2+150,“Su selección-”);

opcion =getchO;

I f (opcion i=l && opcion !=2)

Error(lfiO,petmax!.0-2j);

} while (opcion ;=I && opcion i=2);

if (opcion==l)

{

PUERTO=puertoO-48;

TR;\NS=;LlanualO;

1

else {

PL?ERTO=O;

TR;INS=Os8;I;

1

void Inipuerto(void)

í

ent.h.ah=O;

ent.s.ds=PUERTO;

ent.h.al=TR;INS;

int86(0~14,&ent,&sal);

1

void finapres(void)

c

Page 28: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

char dato;

dato=OslR;

escribe(dat0);

dato=”!”;

escribe(dat0);

dato=OsOD;

escribc(dat0);

}

void checksurn(void)

{

char dato;

dato=”D”;

escribe(dato);

void modo-trans(void)

{

char dato;

iniciao;

dato=”X”;

escribe(dat0);

void format-dato(void)

Page 29: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

char dato;

iniciao;

&to=“Q”;

escribe(dat0);

fino;

I

void mandar-datos(void);

I

char dato;

inicia();

dato=”\”’;

escribe(dato);

fino;

1

void inicia (void)

I

char dato;

dato=OslB;

dato=”C”;

escribe(dat0);

dato=”N”;

escribe(dat0);

1

void fin(void)

1

char dato;

Page 30: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

dato=”c”;

escribe(dat0);

dato=OsOD;

escribe(dat0);

1

char edo-puerto(void)

{

ent.h.ah=3;

ent.x &=PUERTO;

int86(0~14,&ent,&sal);

return(sal.h.ah);

1

void escribe(char dato)

i

ent.h.ah=l;

ent.h.al=dato;

ent.x.dx=PUERTO;

mt86(0xl4,&ent,&sal);

1

char leer(void)

{

ent.h.ah=2;

ent.s.dx=PUERTO;

int86(0~14,&ellt,&sal);

/* T’erifica si hay dato listo en el puerto f /

/* Dato listo en el puerto para enviarlo */

/* Dato listo en el puerto para leerlo */

Page 31: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

return(sa1.h.d)

1

char recibe1 (int *ban2)

c unsigned i=0;

char dato1 =”;

i=O;

do {

i++;

if (i> 10000)

{

setfillstyle(SOLID~FILL,l~);

setcolor(GREEN);

outtex~~(getmassO-8~,getmax~O-45,”EN EST“\DO”);

outtextx~(getmaxsO-85,getmaxyO-35,”DE ESPERI”);

?ban2=1;

1

ent.h.ah=3;

ent.x.dx=PUERTO;

int86(0~14,&ent,&sal);

status=sal.h.ah Pr 0x01;

i€ (status)

{

ent.h.ah=2;

ent.x.dx=PUERTO;

int86(0~14,&ent,&sal);

datol=sal.h.al;

1

Page 32: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

}while (dato==”);

return(dato1);

1

char recibe(void)

{

char datal=";

do {

ent.h.a11=3;

ent.r.ds=PLiERT@;

int86(0x14,Frent,&sal);

dato1 =sal.h.al;

}while (datal==");

return(dato1);

1

/* Inicializa el puerto y envia los comandos para inicializar ai finapres ’/

void comunicar(void)

{

int val;

Inipuertoo;

val=edo_puertoO;

if (val Fr 0x20)

{

finapreso;

recibeo;

Page 33: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

checksumo;

reclbeo;

modo-trans();

recibe();

format-dato();

reclbeo;

mandar-datoso;

}

void Error(int S , int y)

i

outtests!.(x,v,”Error la opcion 110 es valida, Reintente”);

delay(500);

setfills~le(SOLID_FII,L,~~~HITE);

bar(O,getmax~0-30,getma~~O-jO,getmaxy0);

}

int Error2(void);

{

kt banzl ;

Tapo;

outtextxy(l50,getmasy0/3,”No fue posible abrir uno o mas archivos”);

outtexts!-(ljO,getmaxy0/2,”Pulse una tecla para continuar”);

getcho;

return @an);

Page 34: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

char l’ipDesp(void);

i

char option=";

Tap o ; outtests!-(200,getmas~0/2-100,”TIPO DE DESPLIEGUE”);

outtextx~(200,getmaxy0/2-j0,”1.- Despliegue Grifico”);

outtexts!.(200,getmas!-0/2,”Despliegue Xuménco”);

do {

outtextsy(2O0,getmass~/2+~O,”Su selección:-”);

opcion=getchO;

if (opcion !=1 && opcion !=2)

Error(200,getmasyO-Zj);

while (opcion !=1 && opcion !=2);

clearviewporto;

return(opcion);

}

char DurDesp(void)

i

char option=";

Tapo;

outtextxy(200,getmasyO/2-lOO,”DESPLIEGUE”);

outtext?iy(200,getmaxyO/2-~0,”1. Por 5 minutos”);

outtext?iy(20O,getn~as~O/2,”2. Continuo”);

Page 35: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

do {

outtestxy(200, getrnasy0/2+5O, ”Su selección:”);

opcion=getch();

if (opcion!=‘l’&& opcion!=’2’)

Error(ljO,getmaxr()-25);

}while(opcion!=‘l’) && opcion!=’2’);

clearviewport();

return opcion;

1

double iniy(int numgraf)

{

double Iy;

double s,in;

s=getmasyO~(1.18-numgrafy(0.19666));

in=modf(x,&ly);

return Iy;

I

int Inter(int *pin¡, int 4pfin, int S , int y)

{char cadi[80], cadf[80];

regster int ban=O;

1nt ¡,I1 =O,12=0;

char aus;

int j=-1;

do {

outtestxp(s,p,”inicial:”);

Page 36: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

aux=getchO;

j++;

if(am!=’r’)

cadiu]=aus;

cadiU+l]=‘sO’;

outtestsy(s+lOO,y,cadi);

}~.llile(aus!=‘r‘);

sus= ’ ’;

jZ-1.

outtestg).(gy+2O,”~nal”);

do i

aux=getchO;

j++;

if(aus!= ’r’)

cadf[j+I]=/’xO’;

outtestxy(x+lOO,y+20,cad~ ;

}wlde(aux!=’r’);

ll=atoi(cadi) ; 12=atoi(cada;

if01 >=O && 11 4 2 && 12<=4OO)

{ *yini=lI; ,ryfin=12;

11 =12-11;

ban=¡;

1

else {

Error(20O,getmaxy0-2j);

setfillstyle(SOLID-f;ILL,LIGTHCY~~N);

bar(x+lOO,y-5,x+200,y+42);

Page 37: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

I

int Inter2(int *+ni, int yfin, int y, int S)

{ char cadil801, cadfl801;

regster int ban=O;

int i,ll=O,l2=0;

char aux;

int iZ-1;

do {

outtes~y(s,y,”inicial:”);

do{

aux=getchO;

j++;

if(aus!= ’r’)

cadib]=aus;

cadi[]+l]=’sO’;

outtestsy(s+lOO,y,cadi);

}while (aux!=”/r”);

jx.1.

aux=””;

out tes~y(x,y+2O,”f~al”) ;

do{

aus=getchO;

Page 38: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

j++;

if(aux!=”/r”)

cadf[j]=aus;

cadf[j+l]=”/xO”;

outtestsy(x+lOO,y+ZO,cadf);

)wllilw(aux!=”/r”);

11 =atoi(cadi);lZ=atoi(cadf);

if(l1 >=o && 11 4 2 && 12<=2000)

{ *yini=lI; ‘yfin=12;

11 = m 1 ;

ban=l;

}else j~rror(2OO,getmaxxyO~2j;

setfillstyle(SOLID-FILL,LIGHTCY;\K);

bar(x+lOO,y-5,x+200,y+42);

j=-l;}

)while@an==O );

return 11:

1

void Intervalos(hite ”Lt, escala *Ex)

{char option="";

f loat h,div;

int yini, yfin;

h=iniy(l)-iniy(2);

clearviewport();

Tapo;

Outtestxy(200,getmaxx0/2-1~O,”ESC;IL~IS”);

Outextsy(2OO,getrnaxxO/2-100,”1. O-IjO”);

Outextx-y(200,getmaxxO/2-50,”2. 0-300”);

Page 39: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

Outte?(ts~(2OO,petmassO/2,”3. ;\Ianual”);

Do{outtestxy(petma~sO/Z+SO,”Su selección:”);

Opcion=getchO;

If (opc1on!=”1” && opcion!=”2” && opcio11!=”3 ‘9

Error(lSO,getrnasss0-25);

)wh~le(opcion!=”l” && opcion!=”2” &&opcion!=”3” );

if (opcion==”l”)

{ (’Esc)->nl=h/l50;

(“I .t)->sl =o;

(Lt)->s2=150;

(~Esc)->n2=h/150; (‘I,t)->ml=O; yLt)->m2-150;

(vEsc)->n3=h/150; (”Lt)->dl=O; (‘Lt)->d2=150;

(’Esc)->n4=h/120; (“‘Lt)->fl=O; (‘Lt)->f2=1%;

(“Esc)->115=h/1000; (*Lt)->tl=O; (VLt)->t2=1000;

1 if (opcion==”2”)

{

(IEsc)->nI=h/300; (*Lt)->sl=O; yLt)->~2=300;

(”Esc)->n2=h/300; (+Lt)->ml=O; (*Lt)->rn2=300;

(rEsc)->n3=11/300; (“Lt)->dl=O; (.‘Lt)->d2=300;

(*Esc)->n4=h/170; (*Lt)->fl=40; (’Lt)->f2=210;

(pEsc)->n5=h/2000; (*Lt)->tl=O; (’I,t)->t2=2000;

1 if(opcion==”3”)

{Tapo;

outextx~(l00,getmaxp0/2-180,”Para establecer intervalos...”);

outtestx~(lOO,getmasO/2-15O,”Presio~l Sistolica”);

div=h/Inter(&~~ini,&yfin,3OO,getmaxJ-0/2-150);

Page 40: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

outtextxy(l00,gctmas0/2+50,”Tiernpo entre pulsos”);

dirr=h/Inter2(&pini, &!-fin, 300, getmaxy0/2+50);

(*Esc)->nS=div;

(*Lt)-tl=yini; (*Lt)->t2=yfm;

I

I

Page 41: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

void (Ejc(int num)

{ char cad[l0];

setfillstyle(SOL1D-FILL; BLUE);

bar(l50, iniy(num)-getmaxJo*0.9/5,500,iniy(num));

I

void PinEjes(limite “Lt)

{ int i,p,h,d;

int nus;

char cad [l O];

l l = ( ~ o ~ ~ ~ l e ) ( i ~ ~ i ~ ( l ) - ~ i ~ ( 2 ) ;

d=(float)gl/O.s/j’getrnasyG));

setfillstyle(SOLID-FILL,l5);

lx~r(O,O,getmaxxO, getmaxyo);

for(i=O;i<5;i++)

{ Eje(l+l); I

setcolor(GREE);

settextstyle(O,HORIZ-DIR,O);

y=iniy(5);

itoa((*Lt)->tl, cad,lO); outtestxy(505,y-5”d, cad);

itoa((“Lt)-t2, cad, 10); outtextxy(505,y-h+10yd,cad);

outtextxy(54O,~~h+lO~d,”(mseg)”);

y=iniy(4);

itoa((*Lt)->fl, cad,l0); outtextxy(505,y-5’Kd, cad);

itoa((*Lt)-f2, cad, 10); outtests~(50~,y-h+lO~d,cad);

outtextxy(535,y-h+lO*d,”(Lat/rnin)”);

Page 42: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

y=iniy(3);

¡toa((*Lt)->ml, cad,l0); outtextsy(505,y-5’d, cad);

itoa((*Lt)-m2, cad, 10); outtextx!.(50~,y-h+lO*d,cad);

outtests~-(530,y-h+lO*d,”(1nmHg)”);

y = ¡ni! (2) ;

¡toa(( vLt)->dl, cad,l0); outtestxy(505,yj’d, cad);

1toa((~I,t)-d2, cad, 10); outtestsy(S05,y~h+lO‘d,cad);

outtestsy(S30,~.-1~+1 Ovd,”(mrnHg)”);

y=iniy(l);

itoa((*Lt)->sl, cad,10); outtextsy(S05,y-5~d, cad);

itoa((*Lt)-s2, cad, 10); outtextsy(505,J~-h+lO*d,cad);

o~ttestsy(530,y-h+10~~d,”(rnmHg)”);

settextstyle(0,T7ERT-DIR,0);

y=¡niy(G);

outtestxy(l30,y+30,”T. Entre”); outtextxy(l.10,y+30,”pulsos”);

y=iniy (S);

outtestxy(130,y+30,”Frec.”); outtestsy(l40,J-+30,”Card”);

y=iniy(4);

outtextsy(l30,y+30,”Presion.”); outtextsy(l40,y+30,”~Iedia”);

Page 43: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

y=iniy(2);

outtests!.(l30,y+20,”Presion.”); outtests~(l4O,y+2O,”Sist.”);

setcolor(GKEEn);

settextstyle(O,HORIZ-DIR,O);

outtestsy(20,20,”Nurn de muestra”);

setcolor(WH1TE);

setteststl\-le(O,E-IORIZ_DIII,O);

i.

void Pinta (int d l , int d2, int a, int b, float escala, m t i )

I

char muestra [lo];

bouble punto;

double x, in;

int y, h;

int dat = O;

dat = dl;

x (float)(dl*escala);

in = modf(s,&punto);

d l = (doub1e)punto;

x = (float)(d2*escala);

in=modf(x,&punto);

d2=(double) punto;

y=(double)iniy ( i );

Page 44: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

s=getmaxy()'0.9/5;

in = modf(s,&punto);

h=(double)punto;

se~~ie~vport(l50,~-1~,500,~,1);

line(a-150,h-dl, hd2);

se~~iewport(O,@,getmassO,getmas!.O,0);

setfillstyle(SOL1D-F1LL;GKEEN);

bar(5.50, y-20, 600, y);

itoad(dat, muestra, 10);

settextstyle(@, HORIZ-DIR,O);

setcolor(GREEX);

1

T'oid DespGraf(int"rn,pnodo Noc;\ct, escala Esc)

{

int a, b, i;

int y;

int T1, T2;

a=*m;

b=*m

1;

i= 1;

setcolor (GREEN);

Pinta(ruodlct.>ant>sis,Nod~lct>sis, a, b, Esc->nl, i);

i++;

Pinta(ruod~ct->ant->dias, No&-ict->dias,a, b, Esc->n2,i);

i++;

Pinta(T\Todict->ant->med, NodAct->med, a,b, Esc->nS,i);

Page 45: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

1++;

Pinta~od-\ct->ant->frec, Nod\ct->frec, a, b , Esc->n?-,i);

i++;

Pinta(n’od-\ct->ailt->dur, Nodict->dur, a, 11, Esc->n5,i);

If((‘m)==jOO)

{

+ m = 150;

i-

(m‘)=(+’mn)+l;

void DespNum@nodo K o d - k t , int *j, int cont)

I

int a, b, c, d;

char aux[4];

if((“j)> = getmasyo-50)

{

(*j )=loo;

Tap O; setteststyle (0, HORIZ-DIR,O);

outtextxy(70,70, “Lluestra PSistélica P. Diastélica P

AIedia Pulso”);

Outtestxy(-iO,getrnaxyO-25,”Para sal ir presione tecla”);

Page 46: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

setcolor ( LIGHTBLUE);

a=cont;

itoa(a, aux, 10);

outtestxy(l15, ‘j,aux);

itoa(Nod-\ct->sis, aux, 10);

outtestsy(19.5, ’j, aus);

itoa(Xodict->dias, aux, 10);

outtests!-!.?l(I,’j,Rus);

itoa(KocLk->med, aux, 10);

outtestx~(43O,*j,aus);

itoa(bjod-\ct->frec, aus,10);

outtextsy(510;’j,aus);

j=j+lO;

1

void Despliega (int*j, int *m, p o d o ”Nodact, int cont, escala *Esc. char tip)

c int y;

settestxstyle (0,WORIZ-DIR,O);

if(tip==’l’)

r DespGraf( m, *NodAct, *Esc);

(j+) getmaxyo-50;

1 if(tip==’2’)

c DespNum(*Nodict, J, cont);

Page 47: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

int Adqllat k m d o TniLista, pmdo 'Nod.\ct, escala 'Esc, limite It)

í

char datl = ' ', dat2=' ', tpo= ' ', min = ";

int inter, j, m=, cont = ;

unsqped int i = O;

int yfin, yini, in, cond;

char tip ' ', car = ' ';

float escala;

long int Tar = O;

regster int ban= O;

regster int banl=O;

k t ban2 = O;

char alml[3], alm2[3], alm3[3], alm4[3], au[5];

int taj O;

j =getmasyo-;

if((vInLista)!=NULL)

{

do

I

Tapo;

Page 48: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

DorraNodo (XodAct);

{ wvhile((’Nod;ict)~<sig! = NCLL);

BorraSodo(Kodact);

NodAct = NULL;IniT,ista=Kjull;

1 if(opci0n ==’S’) 11a11=1;

if((opci0n!=’s’)&&(opci011!=’n’))

Error( ,400);

}while(( opcion! = ‘s’)8c&_(opcion!=’tl’));

if(“IniLista==NULL)

I

clearviewport();

cleardeviceo;

setcolor( WHITE);

clearvieqorto;

tip=TipdespO;

tpo=DurDespo;

if(tip==’l’)

Page 49: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

t Intervalos(Lt,Esc);

PinEjes(Lt);

else ’rapo;

setcolor(GKEEr\;);

InicRelO;

Opcion_Prog_TarjetaO;II/ 1

Cambia T‘ec O;

\Y.hile@anl =O)

i

do

1

datl=reclbel(&ban2);

}wldc(datl!=’N?);

Tar=Tiernpo(cont, ban2, taj);

Setfillstyle(SOLID-FILL,15);

Bar(getmaxx0-YO, getmasyo-50, getmaxxO,getmaxy0);

do

Page 50: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

I

else

(“Nod-\ct)->dur=Tar;

if(cont>l)

Despliega(&j, &m, Nodic t , cont, ese, tip);

If(m==50O)

clearviewport();

PinEjes(Lt);

1 if((tpo==’l’&&min==’\s5’) I I (tpo==ili&&kbl-Lito ))

ban lz l ;

if(tpo==’2’ sisi kbhito)

ban lz l ;

min=EscRalO;

setfillstyle(S0LID-FILL,BLUE);

bar(30, 30, 60, 50);

itoa(cont, aux, 10);

setcolor(GREEN);

ottextxy( 35, 40, aux);

cont++;

I

Page 51: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

if(dat2==’2’)

I

setcolor(GREEh-);

outtestsy( 5, 300, “_\UT0 ;IIUSTE”);

ban2=1;

I

if(dat2==’3’)

I

setcolor(GREEh-);

outtextxy(l0, 320, “FIK“\PKESS”);

outtextxy(l0, 330, “DESH;1RILIT;\Do”);

ban2= 1 ;

I

I

Res-\‘ec-IntO;

Getcho;

I

return ban;

1

void Nom arch(F1LE *ok, char, “nombre)

t

do

Page 52: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

i

banI=l;

outtestsy(200, getmasyO+lOO, “salvar como: ‘3;

do

{

aus=getch0;

i++;

if(aux!=’\r’)

nom\,re[ij=aus;

nombre[i+l]=’\xO’;

outtextxy(lO0,200, nombre);

}while(mx!=’\r’);

opcion=nombre[O;

if((isdigt(opcion)) 1 I

{

Error(50,400); ban1

}

}while@anl==0);

(strlen(nombre)>S))

=O:

if((ok=fopen(nolnbre,”rt”))!= NULL)

{

do

ban3=l;

outtestsy(l00,200,”E1 archivo ya esiste.”Sobreescribir?S/N”);

opcion=getchO;

opcion=tolower(opcion);

if(opcion==’s’)

{

Page 53: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

fclose(ok);

l1an2=0;

1

i€(opcion==’n’)

{

ban2=1;

}

else

1

else ban2=1;

}while@an2==0);

void Salva@nodo *InLista, pnodo *Sod;ict)

3

FILE okl,ok2,*ok3,*ok4,*ok5;

char nombre 11401, nombre2[40], nombre3[40], nombre4[40], nombre5[40], option=' ‘;

char cad [SO], fto[50], b;

int yini, yfin;

if((“IniLista)!=NULL,)

t

TapO;outtextxp(l50,getmaxy0/2-15O,”Nombre para los archvos”);

tomirch(ok1, nombrel);

strcpy(nombre2,nombrel);

Page 54: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

strcpy(nombre5, nombrel);

strcat(nombrel,”.sis”); strcat(nornbre2,”.dis”);

strcat(nombre3, “.med”); strcat(nombre4, “.frc”);

strcat(notnbre5, “pul”);

‘Nod”lct= *JniLlsta;

if((okl=fopen(nombrel, “wt”))!=KULL

i

if((ok2=fopen(nombre2,”wt”))!= NJLL)

i

i€((ok3=fope11(nombre3,”wt”))!=MJLL~

1f((ok4=fopen(nombre4,”wt”))!=NULL)

{

if((oki=fopen(nombre5,”wt”))!=NULI,)

{

do

{

itoa((WocL”lct)->sis, cad, 10);

spritltf(fto,”%s/n”, cad);

fputs(fto, okl);

itoa((.‘Nodlct)->dias, cad, 10);

sprintf(fto,”% s/n”,cad);

fputs(fto,ok2);

itoa((*NocLkt)->med, cad, 10);

sprintf(fto,”%s/n”, cad);

fputs(ft0, ok3);

itoa((‘Nodiict)->frec, cad, 10);

sprintf(fto,”%s/n”, cad);

Page 55: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

fputs(fto, ok4);

itoa((*Nod-~ct)->dur,cad, 10);

sprintf(ft0, “%s/n”, cad);

fputs(fto, ok5);

BorraNodo(ru’odict);

:while((‘nddr~ct)->sig!=NULL);

BorraNodo(Kod\ct);

IniLista=~\;ULL;~odict=NULL;

Fclose(ok5);

>

else Error20;

fclose(ok4);

ele Error20;

fclose(ok3);

1 else Error20;

fclose(ok2);

1 else Errodo;

fclose(ok1);

1 else Error20;

i

else

{Tapo;

outtextxy(200, getmaxy0/3,”ru‘o hay información disponible”);

outtextxy(200, getmasy0/2,”Pulse una tecla para continuar...”);

bgetcho;}}

Page 56: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

void DespDat(pnodo*IniT,ista, p o d o *Nodlct, escala * E x , limite *Lt)

{

chat tip=”,b;

int inter,j, m=150, cont=l;

int yini, yfin;

char aux[5];

j=getmaxy0-50;

Nod;ict = InLista;

IfyNod;ict!=NULL)

setcolor(WH1TE);

tip=TipDespO;

i€(tip==’l’)

{

Intervalos(Lt, Esc);

PinEjes(Lt);

}

Pu’od,lct=(No~lct)->sig;

do i

if(m==500) PinEjes(Lt);

Despliega(&j, &m, Nodlc t , cont, Esc, tip);

bar(30, 30, 60,50);

itoa(cont, aux, 10);

setcolor(BLUE);

outtexty(35, 40, aux);

Page 57: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

cont++;

if(cont==5000) contE0;

NodL\ct=(KodAct)->sig;

}while((*Nodict)->sig!= NULL);

Wod\ct= NULL;

settextstl.le(0, HORIZ-DIR,O);

b=getcho;

f

else}

-rapo;

outtestxy(l50, getmaxy0/2-100, ‘‘KO hay datos disponibles”);

outtestxy(l50, getmaxJo/2, “Cargue desde disco o adquiera”);

outtextsy(l50, getmasy0/2+100, “Pulse una tecla para continuar...”);

b=getcho;

void Rec;\rch(char* nombre)

{ char aus;

int i=-l;

do {

aus getcho;

i++;

if(aus!=’\r’)

nombre[i]=a~~x;

nombre[i+l]’\x0’;

outtextxp(100,200, nombre);

}while(aux!=’\r’);

1

Page 58: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

int RedDatbnodo *InLista, pnodo ’Nod.\ct, escala “Esc, Limite “Lt)

1

FILE *okl, *0k2, ”0k3, *ok4, rok5;

char nombre1 [40], nombre2[40], nombre3[4@], notnbre4[40], nombre5[40];

char cad[jO];

1nt vac;

char cond=’ ’, aux[S], option=' ‘, tip=’ ‘;

int yini, yfin, inter, j, m=liO, cont = 1;

int banl=O, ban2=0;

int p;

char b;

j=getmaxyO-SO;

if((*IniLista)!=NJLL)

{

do {

Tapo;

outtestxy(150, getmaxy0/2,”Desea salvar la adquisición actual? S/N”);

opcion=getchO;

opcion=tolower(opcion);

if(opcion==’n’)

{

::‘Nod;ict= “InLista;

do {

BorraNodo(Nod1ct);

}while((*Xod\ct)->sig!=NULL);

BorraNodo(Nod1ct);

*InLista=NULI,; “Nod-\ct=NULL;

1

Page 59: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

if(opcion==’s’) t,anl=l;

if((opcion!=’s’)&&(opcion!=’n’))

Error(50,400);

}while ((opcion!=’s’)&&(opcion!=’n’));

1

if((%Lista)==NULL)

1

’rapo;

outtestsy(100, getmaxy0/2-150, “Kornbre de los archivos a cargar:”);

Rec-\rch(nombrel);

strcpy(nombre2, nombrel); strcpp(nornbre3, nombrel);

strcpy(nornbre4, nombrel); strcpy( nombre5, nombrel);

strcat(nomnbre1, “.sis”); strcat(nombre2, “.dis”);

strcat(nombre3,”.med”); strcat(nombre4, “.frc”);

strcat(nombre5, “.pul”);

if((ok1 =fopen (nombrel. “rt”))! = XULL) {

if((ok2~fopen (nombre2. “rt”))! = XULL) {

if((ok3zfopen (nombre3. “rt”))! = NULL) {

if((ok4=fopen (nombre4. “rt”))! = NULL) {

if((okS=fopen (nombre5. “It”))! = NULL) {

do {

Inserta(Nod1ct);

if(((Wodict)->sig==lWLL)&&((NocLlct)->ant==NULL))

?InLista = ‘:.Nodlct

fgets(cad, 10, okl);

vac=atoi(cad);

(Wodict)->sis=vac;

fgets(cad, 10, ok2);

vac=atoi(cad);

Page 60: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

(*Nobkt)->dias=vac;

fgets(cad, 10, ok3);

vac=atoi(cad);

(*Nodlct)->med=vac;

fgets(cad, 10, ok4);

vac=atoi(cad);

(*Nob-ict)->frcc=vac;

fgets(cad, 10, okj);

rac=atoi(cad);

(~Non~ct)->dur=vac;

} ~ ~ h i l e ( f e 0 f ( o k l ) & & ! f e o f ( o k 2 ) & & ! f e o f ( o k 3 ) & & ! f ~ 0 ~ ( 0 k ~ ) ~ ~ ~ ~ ~ ~ ~ ( ~ ~ ~ ) ) ;

*Xobict=NULL;

fclose(ok5);

1 else ban2=Lh~or20;

fclose(ok4);

}

else ban2=Error20;

fclose(ok3);

I

else ban2=Error20;

fclose(ok2);

1 else ban=Error20;

fclose(ok1);

1 else ban2=Error20;

if@an2==0)

(setcolor(WH1TE);

Page 61: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

tip=TipDespO;

if(tip==’l’)

{

Intervalos(Lt, Esc);

PinEjes(Lt);

}

Nod\ct=*I11lLista;

~od~~c t=( : ’Nod~~c t )>s ig ;

do{ if(m==500)1-’inIjes~t);

Dcsp!icSl(&j,&m,Nod~ct, cont, Esc, tip);

::‘~od-ict=(*~oodlct)->sig:

bar(30,30,60,50);

itoa(cont, itus, 10);

setco!or(BLUFi);

outtexts!.(3S,lO,aus;

cont++;

delay(l00);

}while(~Nodict)->sig!=NLJLL);

Wod;ict=NUI,L;

b g e t c h o ;

1

return banl;

1

void Libera@nodo %¡Lista, pnodo *Nod\ct)

Page 62: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

if(*InLista!=NULL)

c ::‘Nodlct=*InLista;

doc

BorraNodo(Nod-\ct);

}while((*~odict)->sig!=i\jULL);

BorraNodo(Nodict);

*IniI,ista= NULL; *Nod-\ct= SULL;

1 void main (void)

c

pnodo Nodict=NULI,, InLista=NULL;

escala Esc=NULI,; limite Lt= NULL,

int drive, mode;

int ban=0;

char option=' ‘;

Inicia-gráficoso;

Page 63: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

Presentaciono;

Esc= rnalloc( sizeof(esc));

Lt = malloc(sizeof(esc));

Protocolo();

outtestxy(370,410, “Su selecci&-”);

opcion=getchO;

if(opcion!=’l’&&opcion!=’2’&&opciot~!=’3’8c8ropcion!=’~’&&opcio~~!=’.~’)

Error(50, getmaxyo-25);

}wh~le(opcion!=’l’&&opcion!~”2’&&~’3’&&opcion!~’1‘8cBopcion!~’~’&&opcion!=’ ’);

switch(opcion)

{

case ‘ l ’ : b a n = i \ d q D a t ( & I n L i s t a , & ~ o ~ ~ c t l c t , & E s ;

break;

case ‘2’:ban=RecDat(&Iniist~,&~o~~ct,&Esc,&Lt);

break;

case ‘3’:Salva(&InLista,&Nod-ict);

break;

case ‘4‘:DespDat(&InLista,&Kodict,&Esc,&Lt);

break;

Page 64: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

case ‘5’:Libera(&IniT,ista,~No~-~ct);

opcion=’q’;

break;

1 if(ban==l)

I

Salva(&InlLista,&r\iod;\ct);

Ban=O;

1

}a;hile(opcioll!=’q’);

if( Esc!=NULL) {

freejEsc);

Esc=XULL;

1 if(Lt!=NULT>)

{

freept);

I,t=NULL;

1 closegrapho;}

APENDICE B.

Page 65: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

HIGH-CURRENT ADJUSTABLE REGULATOR

Page 66: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

CONCLUSIONES

El reporte anterior fue hecho con la intensión de dar una guía para el diseno de sistemas de registro de

senales bioeléctricas, si Ben en cierto que ya existen sistemas que realizan este tipo de funciones, lo que

intentamos dar es una solución barata y una herramienta de uso sencillo, teniendo a la vez los rninimos

requerimientos para la persona que lleva acabo la investigación. Es por este motivo que el sistema es de

hecho de manera modular, cumpliendo con algunas de las exigencias de los sistemas de hoy en d a .

L41 probar dxho sistema podemos decir que tiene una gran viabilidad para futuros proyectos por

ejemplo, uno de los que podemos apuntar, y que la opción se nos hizo muy viable, es el monitoreo

simultaneo de varios pacientes. Lo cual seria de excelente beneficio para una sala de observación de un

hospital pequeno, ya que con un solo monitor (PC), la enfermera podría estar atenta a todos los

pacientes a la vez.

Page 67: UNIVERSIDAD AUTONOMA METROPOLITANA …148.206.53.84/tesiuami/UAM1603.pdf · universidad autonoma metropolitana unidad iztapalapa ciencias basicas e ingenieria licenciatura en ingenieria

BIBLIOGRAFIA

Junior Pertercce Antonio, Amplificadores Operacionales y Filtros Activos, Mc Graw Hill 1991.

Págs. 3 -10,15 - 20,39 - 69.

Tompkins J. Willis, Desing of Microcomputerbased in medical Instrumentation, Pretice Hall 1990,

Págs 1 - 13.

Donna Mosich, Namir Shammas, Bryan Flamig, Advanced Turbo C Programmer’s Guide, Wiley.

Págs 259 - 294.