Explora Libros electrónicos
Categorías
Explora Audiolibros
Categorías
Explora Revistas
Categorías
Explora Documentos
Categorías
TESIS
MAESTRO EN CIENCIAS
ÁREA COMPUTACIÓN
PRESENTA
ASESOR
Informo a usted que ha sido aprobado como tema de titulación para obtener
el grado de MAESTRO EN CIENCIAS AREA: COMPUTACION.
1 .- INTRODUCCION
II .- DEFINICION DEL PROYECTO
III .- INVESTIGACION PRELIMINAR
IV .- DESARROLLO DEL SISTEMA
V .- IMPLEMENTACION
VI .- PRUEBAS
VII .- CONCLUSIONES
BIBLIOGRAFIA
c.c.p.EXPEDIENTE ALUMNO
AGFC/merv*
1 .- INTRODUCCION
II .- DEFINICION DEL PROYECTO
III .- INVESTIGACION PRELIMINAR
IV .- DESARROLLO DEL SISTEMA
V .- IMPLEMENTACION
VI .- PRUEBAS
VII .- CONCLUSIONES
BIBLIOGRAFIA
El cual cumple con los requisitos necesarios para su aprobación, por lo cual
lo autorizo para su impresión.
c.c.p. EXPEDIENTE
AGFC/merv*
1
INTRODUCCIÓN ................................................................................................................................. 3
Formulario
principal-.......................................................................................................................... 45
codigo del formulario principal ....................................................................................................... 45
codígo del formulario acreca de ................................................................................................... 46
MÓDULO H. T. M. L .................................................................................................................................... 47
FormULARlO TVyFormULARIO
Audio:. .................................................................................... ..4 7
Codigo del formulario html TV ........................................................................................................ 47
codigo del formulario html audio ................................................................................................. 48
EL MOTOR DE INFERENCIA .......................................................................................................................... 49
Revisión de la sección de color y video ............................................................................. 52
Por otro lado como se quiso tener control sobre un prototipo didáctico de los
que hay en el mercado, utilizado como simulador de fallas se desarrolló un
control que permite a través de una interfaz de computadora provocar las
fallas del prototipo para que el alumno observe como se comporta el aparato
bajo condiciones de fallas, el control que se desarrolla que es un control
activex, este control activex es un control utilizado por cualquier lenguaje de
programación visual dicho control es desarrollado con el compilado visual C++
de Microsoft.
Investigación Preliminar
Prototipos en el mercado
En la parte derecha del panel frontal está el simulador de fallas, con el cual se
pueden simular hasta 19 fallas individuales en el televisor o hacer
combinaciones de fallas. El simulador basa su funcionamiento en un
microprocesador y tiene como elementos de salida y entrada un indicador
alfanumérico y un teclado.
EL SIMULADOR DE FALLAS
Para la activación de una falla entre la5 que disponemos, es necesario que el
conmutador de llave esté en la posición izquierda “TEACHER”. (Más adelante
en el manual encontrará una lista de la5 fallas aparentes).
La5 fallas previstas se han elegido con criterio para que su simulación no
provoque daño5 permanente5 en el televisor, y que sean didácticamente
significativas. En alguna5 secciones del televisor se ha evitado la simulación
de fallas, en particular en la sección de alto voltaje y en los circuitos de la
fuente conmutada, para evitar riesgos a la5 personas y al equipo además de
la dificultad de la simulación de fallas en estos circuitos,
Lo5 componente5 del televisor han sido clasificados con siglas de la siguiente
manera
R - Resistencia
C - Capacitar
D - Diodo
T - Transistor
L - Inductor o bobina
CQ - Cristal de cuarzo
FC - Filtro cerámico
SW - Interruptor
F - Fusible
CR - Receptor de control remoto
IC - Circuito Integrado
T5 - Transformador
( RADIO AM (
!+--l
RADIO FM
4
---7
SELECTOR
FUNCION ECUALIZADOR
VOLUMEN
Y
AMPLIFICADO
R
t-4 DE
POTENCIA
TOCA CINTAS
?
16
LA FUENTE DE ALlMENTACIÓN
DIODE
5OuF
I
DIODE
l DIODEE
Y-
Sintonizador FM
decodificador
S e ñ a l FM stereo
Sintonizador Am,
Amplificafores FI y
d e t e c t o r AM/FM
entradabrada
de señal
CI BA336
interruptor de
direccion de señal
record play
18
FM ----La-
TOCACINTAS
En este caso cada filtro atenúa o realza cada señal de la frecuencia por el
controlada, finalmente son mezcladas todas las señales provenientes de
cada filtro para ser enviadas finalmente a un control de tono.
19
filtro
T 100hz
filtro
*
T 250hz
I filtro
I, 7 2500hz
filtro
*
T 6000hz
20
Este circuito es el que recibe la señal desde el control de tono por medio del
control de volumen para darle la potencia requerida para excitar los
altavoces. Este circuito amplificador está constituido por el circuito
integrado BA5406.
Amplificador de potencia
CI BA5406
21
Modo de operación
Recepción de señales de FM
Coloque el interruptor selector de función en su posición derecha.
Sintonice una señal moviendo el control de sintonía.
si la señal es lo suficientemente fuerte usted logrará captar el
audio sin ningún problema, para mejorar la recepción gire la
antena de FM.
Recepción de señales de AM
Coloque el interruptor selector de función en su posición
intermedia.
Sintonice una señal moviendo el control de sintonía.
si la señal es lo suficientemente fuerte usted logrará captar el
audio sin ningún problema, para mejorar la recepción gire el panel
completo.
Reproducción de cassettes
Coloque el interruptor selector de función en su posición derecha.
Accione la tecla play.
si de sea adelantar o atrasar en la melodía presione las teclas de
avance o retroceso del mecanismo.
Dadas las caracterÍsticas del prototipo este puede ser usado tanto para
identificar circuitos de radio como de audio, así como para verificar su
principio de funcionamiento lo cual lo hace un instrumento didáctico muy
versatil
Circuitos del
radio
Alimentación
Determinar los síntomas significa que se debe saber qué es lo que hace el
equipo cuando opera en forma normal y, más importante aún, que es capaz de
reconocer cuando el trabajo normal no se está realizando. La mayor parte de
los equipos 0 s i s t e m a s electrónicos tienen controle5 de operación,
instrumentos indicativo5 u otra5 ayuda5 integrada5 para evaluar su
funcionamiento. Hasta el sencillo radio de transistores posee una bocina, un
interruptor de encendido, un sintonizador de estaciones y un control de
volumen.
Al final de este paso, ya se sabe de cierto que algo está mal y tiene idea clara
de cuál es el problema, aunque no sabe con exactitud el área en donde está el
defecto. Esto se determina en el siguiente paso de la corrección de fallas.
26
Por ejemplo, todo radiorreceptor, por sencillo que sea, tiene una sección de
radio frecuencia, una de frecuencia intermedia y otra de audio. En el caso de
aparato5 más complejos, como televisores, la5 funcione5 pueden subdividirse
en audio, video, sintonización, imagen y fuente de alimentación. Estas
funciones, al combinarse, constituyen el conjunto de un equipo completo que
permite se realice el propósito electrónico para el cual fue diseñado.
UTILIZACIÓN RE DIAGRAMA5
El paso de localización implica una amplia labor con diagramas, que incluye:
diagrama5 funcionales de bloque, esquemas y diagrama5 de cableado. De ahí
que el diagrama de bloque sea la fuente más lógica de información que se
utilizará en la localización de problema5 dentro de la unidad funcional o
sección.
La inspección por medio de los sentidos vista, olfato, oÍdo y tacto, resulta
muy útil cuando se pretende localizar un problema. Normalmente, esta
inspección se realiza en primer lugar, para reunir información que pueda
conducir con mayor rapidez a la parte defectuosa. (Aunque abarca todo5 lo5
sentidos, esta inspección se denomina a menudo en los manuales de servicio
como “inspección visual”.) Entre otro5 aspectos a buscar durante la
inspección visual, se encuentran lo5 componente5 quemados, carbonizado5 o
sobre calentados, arco5 voltaico5 en los circuitos y partes quemadas.
Nótese que en la mayor parte de los manuales de servicio de hoy en día, los
voltajes (y tal vez las resistencias) se presentan a menudo en los diagramas
esquemáticos, aunque esta información puede aparecer también en forma de
tabla (siguiendo el estilo militar). No importa la información que esté
disponible ni la presentación que tenga, se debe ser capaz de aplicar el equipo
de pruebas, para llevar a cabo las mediciones.
El conocimiento de los experto5 debe formularse de tal forma, que pueda ser
almacenado en ordenadores y procesado y analizado por programas.
Esta imagen del conocimiento recibe el nombre de Representación del
conocimiento.
Reglas
Esta sencilla forma de regla es, sin embargo, poco potente para aplicaciones
reales. Sólo mediante ampliaciones de esta forma básica se alcanzan
formalismos útiles en la representación del conocimiento.
Por regla general se tienen que analizar varias hipótesis hasta que una de
ella5 se pueda confirmar. se alcanza una solución del problema cuando una o,
según el planteamiento, varia5 hipótesis de partida pueden ser confirmadas.
incluso el hecho de no haber podido confirmar ninguna hipótesis puede ser
considerado como resultado de una valoración.
38
Los controles de Windows son una parte integral de Windows, aunque los
controles comunes de Windows estén en una DLL aparte. Otra especie de
control ordinario, el así llamado control personalizado, es un control creado
por el programador que actúa corno un control ordinario en cuanto a que
envía notificaciones WM_COMMAND a su ventana padre y que recibe
mensajes definidos por el usuario.
¿En qué son similares los controles ActiveX a los controles ordinarios?
Se puede considerar que un control ActiveX es como una ventana hija, igual
que un control ordinario. Si se desea incluir un control ActiveX en un diálogo,
se utiliza el editor de diálogos para colocarlo allí y el identificador del control
aparece en la plantilla del recurso. Si se crea un control ActiveX sobre la
marcha, se llama a la función miembro Create para una clase que representa
al control, habitualmente en el gestor WM_CREATE para la ventana padre.
Cuando se desea manipular un control ActiveX, se llama a la función miembro
de C++, igual que para un control de Windows. A la ventana que contiene un
control se le llama contenedor.
¿En qué son diferentes los controles ActiveX a los controles ordinarios?
Propiedades y métodos
Data Exchange) intercambia los dato5 entre la5 propiedades del control
y los dato5 miembro de la clase de cliente.
Los método5 de los controle5 ActiveX son como funciones. Un método tiene
un nombre simbólico, un conjunto de parámetro5 y un valor devuelto. Se llama
a un método llamando a una función miembro en C++ de la clase que
representa al control. Un diseñador de controle5 puede definir lo5 método5
que necesite, como AñoAnterior, Controllnferior, etc.
En el mundo de la MFC, lo5 controle5 ActiveX actúan igual que la5 ventana5
hijas, pero hay una capa significativa de código entre la ventana del
contenedor y la ventana del control. De hecho, es posible que el control ni
siquiera tenga una ventana. Cuando se llama a Create, la ventana del control
no se crea directamente; en cambio, se carga el código del control y se le da la
orden correspondiente a «activación in situ». El control ActiveX crea
entonces su propia ventana, a la cual la MFC permite el acce5o a través de un
puntero a CWnd. Sin embargo, no es una buena idea que el cliente utilice
directamente el hwnd del control.
Se utiliza una DLL para almacenar uno o más controle5 ActiveX, pero la DLL
tiene a menudo una extensión de archivo OCX en lugar de una extensión DLL.
El programa contenedor carga la5 DLL’5 cuando la5 necesita, utilizando
técnica5 de COM sofisticadas que se basan en el Registro de Windows. Por el
momento, simplemente acepte el hecho de que una vez que se especifica un
control ActiveX durante el diseño, será cargado durante la ejecución.
Obviamente, cuando se entrega un programa que requiere controle5 ActiveX
especiales, se tienen que incluir los archivos OCX y un programa de
configuración adecuado.
41
Componente
Objeto
Una combinación de código y dato5 que se puede tratar como una unidad.
Lo5 objeto5 tienen una duración; es decir, se crean y se destruyen.
Automatización
Con Visual Basic o Visual C++ es posible crear tres tipos de componentes
ActiveX:
+ controles ActiveX
+ documentos ActiveX
+ y componentes de código ActiveX.
Controles ActiveX
Documentos ActiveX
FORMULARIO PRINCIPAL:
End Sub
46
End Sub
Mádulo H.T, M, L.
End Sub
End Sub
49
El motor de inferencia
Toda5 y cada una de estas regla5 como se obserba se basan en la forma si...
entonces, bajo esta forma cada condición es verdadera con un si y es falso
con un no, para producir estas regla5 y traducirla5 a sentencias de tipo If
. . ..Then del lenguaje Basic se hace uso de una macro para el procesador de
texto5 Word de Microsoft, esta macro tiene un formulario en el que a cada
condición del enunciado se le asigna una variable, la cual puede tener do5
posibles valore5 si o no, osea falso o verdadero, una vez que la variable es
definida se le asigna una variable de control, un valor falso para esta variable
de control permite marcar la regla que ha sido evaluada.
Modulol(Mator deinferencia T V )
Motor de inferencia en el modulo de consulta de televisión
Option Explicit
Public vist As Boolean
Public SaleAsignar As Boolean
Public TV-enciende As Boolean
Public STV As Boolean
Call Reglas
Exit Function
End If
Call Reglas
Exit Function
End If
_----------------------------------------------------------------
Call Reglas
Exit Function
End If
If Aparece-Brillo = True And SBRILLO = True Then
SBRILLO = False
Al sintonizar = Asignar(“una vez que hay brillo sintoma de que la” _
& “emisión”
& ” es correcta se debe de sintonizar un canal, y respoder a lo” _
& “siguiente:” _
& ” ¿Al sintonizar la imagen se ve bien?“)
Ssint = True
Call Reglas
Exit Function
End If
-----------------------------------------------------------------------------------------------
Exit Function
End If
'
--____-----------------------------------------------------
Exit Function
End If
Exit Function
End If
' FIN
Exit Function
End If
Exit Function
End If
Exit Function
End If
Calll Reglas
Exit Function
End If
‘Fin
Exit Function
End If
End If
‘@@@@@@@######/*/*ll
‘///////salida vertical//////////
If Señal_Vert_amplificadaOK = True And SSeñalAmpVert = True Then
SSeñalAmpVert = False
MsgBoxx (“verifique el estado de las bobinas o yugos de desviación ya” _
& ” que si la altura no es la correcta es porque el yugo esta dañado”)
Exit Function
End If
End If
76
‘lllllllseñal de ,sonidollllllllll
If Sumbidoen-sonido = True And SSumb_sond = True Then
SSumb_sond = False
MsgBoxx (“Compruebe el filtraje de la unidad de alimentación ahí” _
77
‘lllllllseñal de sonidollllllllll
If Audio-Intermitente = True And SAudio_int = True Then
SAudio_int = False
MsgBoxx (“En este caso resolde la seccion del audio y limpie y” _
& “revise el control de volumen y no use un lubricante que” _
& “ataque a los plasticos”)
Exit Function
End If
‘///////señal de sonido//////////
If Sonido-Gangoso = True And SSond_Gang = True Then
SSond_Gang = False
MsgBoxx (“Al tener sonido gangoso proceda a verificar el estado” _
& “del amplificador de potencia así como la bocina”)
Exit Function
End If
-----------------------------------------------------------------------
End Function
End If
'--------------------- Sintonia
If Sintonia = True And SSintonia = True Then
SSintonia = False
SonidoOk = Asignar(“Al poder sintonizar alguna señal el sonido debe de ser
correcto y sin interferencias, asi’que responda ¿el sonido es correcto?“)
SSonidoOk = True
Call reglass
Exit Function
End If
82
'
- - - - - - - - - - - - - - - - - - - - voltaje amp
SVoltajeAm = False
MsgBoxx (“Si el voltaje al amplificador es correcto y el sonido es anormal
esto indica que es el amplificador el que provoca la falla así que verifique todos y
cada uno de los componentes del amplificador y de estar bien todos sus
componentes sustituya el amplificador”)
Exit Function
End If
End Function
86
OTROS FORMULARIOS
Forml y Form2 y formtips
Estos objetos son los formularios que sirven como interfaz entre el motor
de inferencia para el módulo de consulta, y el usuario. Es a través de
estos que se puede aislar el circuito defectuoso del televisor.
‘formtips
Private Sub Command1_Click()
Unload Me
End Sub
‘Form2
Private Sub Command 1_Click()
Unload Me
End Sub
‘form 1
El control activex
Valor de salida: Por medio de esta propiedad especificó un valor numérico sin
signo entre 0 y 255.
//Resource. h
#define IDS_SALIDAPORPUERTO 1
#define IDB_SALIDAPORPUERTO 1
#define IDS_SALIDAPORPUERTO_PPG 2
#define IDS_SALIDAPORPUERTO_PPG_CAPTION 200
#define IDD_PROPPAGE_SALIDAPORPUERTO 2 0 0
#define IDC_STATIC_2 201
#define IDC_STATIC_1 202
#define IDC_EDIT_PtoSalida 2 0 3
#define IDC_EDIT_ValorSalida 2 0 4
89
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
SALIDAPORPUERTO.CPP
implementation.
//{{AFX_INSERT_LOCATION}}
ll Microsoft Developer Studio will insert additional declarations immediately before
the previous line.
#endifll
defined(AFX_SALIDAPORPUERTO_H_E95A078C_CFFE_11 D2_90B4_A532E4
EAF234-INCLUDED)
91
// SalidaPorPuerto.cpp :
//lmplementación de la clase del control y registro del control en el sistema
#include “stdafx. h”
#include "SalidaPorPuerto.h"
#ifdef -DEBUG
#define new DEBUG-NEW
#undef THIS_FILE
static char THIS_FILE[] = _FILE_;
#endif
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoApp::Initlnstance - DLL initialization
BOOL CSalidaPorPuertoApp::Initlnstance()
{
BOOL blnit = COleControlModule::lnitlnstance();
if (blnit)
{
ll TODO: Add your own module initialization code here.
1
return blnit;
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoApp::Exitlnstance - DLL termination
int CSalidaPorPuertoApp::Exitlnstance()
{
ll TODO: Add your own module termination code here.
return COleControlModule::Exitlnstance();
92
/////////////////////////////////////////////////////////////////////////////
// DIIRegisterServer - Adds entries to the system registry
STDAPI DIIRegisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
if (!AfxOleRegisterTypeLib(AfxGetlnstanceHandle(), tlid))
return ResultFromScode(SELFREG_E_TYPELIB);
if (!COleObjectFactoryEx::UpdateRegistryAll(TRUE))
return ResultFromScode(SELFREG- E - CLASS);
return NOERROR;
}
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll DIIUnregisterServer - Removes entries from the system registry
STDAPI DIIUnregisterServer(void)
{
AFX_MANAGE_STATE(_afxModuleAddrThis);
if (!COleObjectFactoryEx::UpdateRegistryAll(FALSE))
return ResultFromScode(SELFREG- E - CLASS);
return NOERROR;
}
93
#if
!defined(AFX_SALIDAPORPUERTOCTL_H - E95A0793_CFFE_11 D2_90B4_A53
2E4EAF234 _INCLUDED_)
#define
AFX_SALIDAPORPUERTOCTL_H _E95A0793_CFFE_1 1 D2_90B4_A532E4EAF
2 3 4 _INCLUDED_
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl : See SalidaPorPuertoCtl.cpp for implementation.
ll Constructor
public:
CSalidaPorPuertoCtrl();
ll Overrides
ll ClassWìzard generated virtual function overrides
//{{AFX_VIRTUAL(CSalidaPorPuertoCtrl)
public:
virtual void OnDraw(CDC* pdc, const CRect& rcBounds, const CRect&
rclnvalid);
virtual void DoPropExchange(CPropExchange* pPX);
virtual void OnResetState();
//}}AFX_VIRTUAL
ll Implementation
protected:
~CSalidaPorPuertoCtrI();
DECLARE_OLECTLTYPE(CSalidaPorPuertoCtr1) // Type
name and misc status
// Message maps
//{{AFX_MSG(CSalidaPorPuertoCtrl)
// NOTE - ClassWizard will add and remove member functions here.
// DO NOT EDIT what you see in these blocks of generated code !
//}}AFX-MSG
DECLARE_MESSAGE_MAP()
// Dispatch maps
//{{AFX_DISPATCH(CSalidaPorPuertoCtrl)
short m_puertoDeSalida;
afx-msg void OnPuertoDeSalidaChanged();
short m_valorDeSalida;
afx-msg void OnValorDeSalidaChanged();
afx-msg short SacarValor();
//}}AFX_DISPATCH
DECLARE_DISPATCH_MAP()
// Event maps
//}}AFX_EVENT(CSalidaPorPuertoCtrl)
//}}AFX_EVENT
DECLARE_EVENT_MAP()
//{{AFX-INSERT_LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before
the previous line.
#endif //
!defined(AFX_SALIDAPORPUERTOCTL_H -E95A0793_CFFE_11 D2_9064_A53
2E4EAF234_NCLUDED)
95
// SalidaPorPuertoCtl.cpp :
//implementacion de la clase del control
#include “stdafx. h”
#include “SalidaPorPuerto. h”
#include “SalidaPorPuertoCtl. h”
#include “SalidaPorPuertoPpg. h”
#ifdef -DEBUG
#define new DEBUG-NEW
#undef THIS_FILE
static char THIS_FILE[] = - FILE_;
#endif
IMPLEMENT_DYNCREATE(CSalidaPorPuertoCtrl, COleControl)
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Message map
BEGIN-MESSAGE-MAP(CSalidaPorPuertoCtrl, COleControl)
//{{AFX_MSG_MAP(CSalidaPorPuertoCtrl)
ll NOTE - ClassWizard will add and remove message map entries
ll DO NOT EDIT what you see in these blocks of generated code !
l/)}AFX_MSG_MAP
ON-OLEVERB(AFX_IDS_VERB_PROPERTIES, OnProperties)
END_MESSAGE_MAP()
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Dispatch map
BEGIN_DISPATCH_MAP(CSalidaPorPuertoCtrl, COleControl)
ll{{AFX_DISPATCH_MAP(CSalidaPorPuertoCtrl)
DISP_PROPERTY_NOTIFY(CSalidaPorPuertoCtrl, “PuertoDeSalida”,
m_puertoDeSalida, OnPuertoDeSalidaChanged, VT_12)
DISP_PROPERTY_NOTIFY(CSalidaPorPuertoCtrl, “ValorDeSalida”,
m_valorDeSalida, OnValorDeSalidaChanged, VT_12)
DISP-FUNCTION(CSalidaPorPuertoCtrl, “SacarValor”, SacarValor, VT_ 12,
VTS_NONE)
DISP_DEFVALUE(CSalidaPorPuertoCtrl, “ForeColor”)
DlSP_STOCKPROP~BACKCOLOR()
DlSP_STOCKPROP~FORECOLOR()
DISP_STOCKPROP-BORDERSTYLEO
//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()
96
ll/l/l/llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Event map
BEGIN_EVENT_MAP(CSalidaPorPuertoCtrl, COleControl)
//{{AFX_EVENT_MAP(CSalidaPorPuertoCtrl)
ll NOTE - ClassWizard will add and remove event map entries
ll DO NOT EDIT what you see in these blocks of generated code !
//}}AFX_EVENT_MAP
END_EVENT_MAP()
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Property pages
ll TODO: Add more property pages as needed. Remember to increase the count!
BEGIN_PROPPAGEIDS(CSalidaPorPuertoCtrl, 1)
PROPPAGEID(CSalidaPorPuertoPropPage::guid)
END_PROPPAGEIDS(CSalidaPorPuertoCtrl)
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Initialize class factory and guid
IMPLEMENT_OLECREATE_EX(CSalidaPorPuertoCtrl,
“SALIDAPORPUERTO.SalidaPorPuertoCtrl.1”,
Oxe95a0786, Oxcffe, Ox11d2,Ox9O,Oxb4, Oxa5, 0x32, Oxe4, Oxea, Oxf2,
0x34)
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Type library ID and version
llllllllllllllllIllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll Interface IDs
/////////////////////////////////////////////////////////////////////////
// Control type information
IMPLEMENT_OLECTLTYPE(CSalidaPorPuertoCtrl, IDS_SALIDAPORPUERTO,
_dwSalidaPorPuertoOleMisc)
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::CSalidaPorPuertoCtrlFactory::UpdateRegistry -
ll Adds or removes system registry entries for CSalidaPorPuertoCtrl
BOOL CSalidaPorPuertoCtrl::CSalidaPorPuertoCtrlFactory::UpdateRegisty(BOOL
bRegister)
{
ll TODO: Verify that your control follows apartment-model threading rules.
ll Refer to MFC TechNote 64 for more information.
ll If your control does not conform to the apartment-model rules, then
ll you must modify the code below, changing the 6th parameter from
ll afxRegApartmentThreading to 0.
if (bRegister)
return AfxOleRegisterControIClass(
AfxGetlnstanceHandle(),
m_clsid,
m_lpszProglD,
IDS_SALIDAPORPUERTO,
IDB_SALIDAPORPUERTO,
afxRegApartmentThreading,
_dwSalidaPorPuertoOleMisc,
_tlid,
_wVerMajor,
_wVerMinor);
else
return AfxOleUnregisterClass(m_clsid, m_lpszProglD);
98
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::CSalidaPorPuertoCtrl - Constructor
CSalidaPorPuertoCtrl::CSalidaPorPuertoCtrl()
{
InitializellDs(&IlD_DSalidaPorPuerto, &IID_DSalidaPorPuertoEvents);
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::-CSalidaPorPuertoCtrl - Destructor
CSalidaPorPuertoCtrl::-CSalidaPorPuertoCtrl()
{
ll TODO: Cleanup your control’s instance data here.
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::OnDraw - Drawing function
void CSalidaPorPuertoCtrl::OnDraw(
CDC* pdc, const CRect& rcBounds, const CRect& rclnvalid)
1
ll TODO: Replace the following code with your own drawing code.
char VlrSalida[80];
char PtoSalida[80];
char Tempstr[30];
pdc->SetBkMode(TRANSPARENT);
CBrush bkBrush(TranslateColor(GetBackColor()));
pdc->FillRect(rcBounds,&bkBrush);
pdc->SetTextColor(TranslateColor(GetForeColor()));
pdc->ExtTextOut( rcBounds.left,rcBounds.top,
ETO-CLIPPED,
rcBounds,
Mensajes,
strlen(Mensajes),
NULL );
pdc->ExtTextOut( rcBounds.left,25,
ETO-CLIPPED,
rcBounds,
PtoSalida,
strlen(PtoSalida),
NULL );
pdc->ExtTextOut( rcBounds.lefi,50,
ETO-CLIPPED,
rcBounds,
VlrSalida,
100
strlen(VlrSalida),
NULL );
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::DoPropExchange - Persistence support
PX~Short(pPX,~T(“Pue~oDeSalida”),m~puertoDeSalida,Ox378);
PX~Short(pPX,~T(“ValorDeSalida”),m~valorDeSalida,0x000);
//Mi Codigo Termina Aqui
1
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl::OnResetState - Reset control to default state
void CSalidaPorPuertoCtrl::OnResetState()
{
COleControl::OnResetState(); ll Resets defaults found in DoPropExchange
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoCtrl message handlers
void CSalidaPorPuertoCtrl::OnPuertoDeSalidaChanged()
{
ll TODO: Add notification handler code
////Mi Codigo Empieza Aqui
101
if (m_puertoDeSalida != 0x378)
1
//Mi Codigo Termina Aqui
SetModifiedFlag();
1
void CSalidaPorPuertoCtrl::OnValorDeSalidaChanged()
{
//TODO: Add notification handler code
//Mi Codigo Empieza Aqui
if ( 0 > m-valorDeSalida 1 m-valorDeSalida > 255)
1
SetModifiedFlag();
1
short CSalidaPorPuertoCtrl::SacarValor()
1
// TODO: Add your dispatch handler code here
Puerto =m-puertoDeSalida;
Valor =m-valorDeSalida;
102
-asmi
mov dx,Puerto;
m o v ax,Valor;
out dx,al
1
return 0;
//Mi Codigo Termina Aqui
103
#if
!defined(AFX-SALIDAPORPUERTOPPG-H -E95A0795-CFFE-11 D2-9064-A53
2E4EAF234 INCLUDED-)
#define -
AFX-SALIDAPORPUERTOPPG-H - E95A0795-CFFE-11 D2-90B4-A532E4EAF
23- 4 INCLUDED-
llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoPropPage : See SalidaPorPuertoPpg.cpp.cpp for
implementation.
ll Constructor
public:
CSalidaPorPuertoPropPage();
ll Dialog Data
ll{{AFX~DATA(CSalidaPorPuertoPropPage)
enum { IDD = IDD-PROPPAGE-SALIDAPORPUERTO };
short m_puertoDeSalida;
short m-valorDeSalida;
l/)}AFX-DATA
ll Implementation
protected:
virtual void DoDataExchange(CDataExchange* pDX); ll DDXIDDV support
ll Message maps
protected:
ll{{AFX~MSG(CSalidaPorPuertoPropPage)
104
//{{AFX-INSERT-LOCATION}}
// Microsoft Developer Studio will insert additional declarations immediately before
the previous line.
#endif ll
!defined(AFX SALIDAPORPUERTOPPG-HVE95A0795-CFFE-1 1 D2-90B4-A53
2E4EAF234 --INCLUDED)
105
// SalidaPorPuertoPpg.cpp :
// implementacion de la clase de la pagina de proìedades del control
#include “stdafx. h”
#include “SalidaPorPuerto. h”
#include “SalidaPorPuertoPpg. h”
#ifdef -DEBUG
#define new DEBUG-NEW
#undef THIS-FILE
static char THIS-FILE[] = -FILE-;
#endif
IMPLEMENT-DYNCREATE(CSalidaPorPuertoPropPage, COlePropertyPage)
lllllIllllllllllllllllllll~llllll~lllllllllllllllllllllllllllllllllllllllllll
ll Message map
BEGIN-MESSAGE-MAP(CSalidaPorPuertoPropPage, COlePropertyPage)
//{{AFX-MSG-MAP(CSalidaPorPuertoPropPage)
// NOTE - ClassWizard will add and remove message map entries
// DO NOT EDIT what you see in these blocks of generated code !
//)}AFX-MSG-MAP
END-MESSAGE-MAP()
lllll~l~llllll~llllll~lllll~lllllllllllllllllllllllllllll~l~lll~ll~lll~llllll
ll Initialize class factory and guid
IMPLEMENT~OLECREATE~EX(CSalidaPorPuertoPropPage,
“SALIDAPORPUERTO.SalidaPorPuertoPropPage.1”,
Oxe95a0787, Oxcffe, Oxl ld2, Ox9O,Oxb4, Oxa5,Ox32, Oxe4, Oxea, Oxf2,
0x34)
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll
CSalidaPorPuertoPropPage::CSalidaPorPuer
BOOL
CSalidaPorPuertoPropPage::CSalidaPorPuer(
BOOL bRegister)
{
if (bRegister)
106
return
AfxOleRegisterProperyPageClass(AfxGetlnstanceHandle(),
m-clsid, IDS-SALIDAPORPUERTO-PPG);
else
return AfxOleUnregisterClass(m~clsid, NULL);
1
////////////////////////////////////l///////////l///////////l//////l/l//l
// CSalidaPorPuertoPropPage::CSalidaPorPuertoPropPage - Constructor
CSalidaPorPuertoPropPage::CSalidaPorPueroPropPage() :
COlePropertyPage(lDD, IDS~SALIDAPORPUERTO~PPG~CAPTION)
{
//{{AFX-DATA-INIT(CSalidaPorPuertoPropPage)
m_puertoDeSalida = 0;
m-valorDeSalida = 0;
//)}AFX-DATA-INIT
1
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoPropPage::DoDataExchange - Moves data between page and
properties
lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllll
ll CSalidaPorPuertoPropPage message handlers
107
EXPORTS
DIICanUnloadNow @l PRIVATE
DIIGetClassObject @2 PRIVATE
DIIRegisterServer @3 PRIVATE
DIIUnregisterServer @4 PRIVATE
// SalidaPorPuerto.odl :
// libreria de fuente de tipos
// SalidaPorPuerto.ocx.
[ uuid(E95A0784-CFFE-I I D2-90B4-A532E4EAF234),
helpstring(“Dispatch interface for SalidaPorPuerto Control”), hidden ]
dispinterface -DSalidaPorPuerto
{
properties:
// NOTE - ClassWizard will maintain property information here.
Il Use extreme caution when editing this section.
//{{AFX~ODL~PROP(CSalidaPorPuertoCtrl)
[id(l)] short PuertoDeSalida;
[id(2)] short ValorDeSalida;
[id(DISPID-BACKCOLOR), bindable, requestedit]
OLE-COLOR BackColor;
[id(DISPID-FORECOLOR), bindable, requestedit]
OLE-COLOR ForeColor;
[id(O)] OLE-COLOR -ForeColor;
[id(DISPID-BORDERSTYLE), bindable, requestedit] short
BorderStyle;
//)}AFX-ODL-PROP
108
methods:
// NOTE - ClassWizard will maintain method information here.
// Use extreme caution when editing this section.
//{{AFX~ODL~METHOD(CSalidaPorPuertoCtrl)
[id(3)] short SacarValor();
//)}AFX-ODL-METHOD
[ uuid(E95A0785CFFE-11 D2-90B4-A532E4EAF234),
helpstring(“Event interface for SalidaPorPuerto Control”) ]
dispinterface -DSalidaPorPuetioEvents
L {
properties:
// Event interface has no properties
methods:
// NOTE - ClassWizard will maintain event information here.
// Use extreme caution when editing this section.
//{{AFX-ODL-EVENT(CSalidaPorPuertoCtrl)
//)}AFX-ODL-EVENT
[ uuid(E95A0786-CFFE-I I D2-90B4-A532E4EAF234),
helpstring(“SalidaPorPuerto Control”), control ]
coclass SalidaPorPuerto
{
[default] dispinterface -DSalidaPorPuerto;
[default, source] dispinterface -DSalidaPorPuertoEvents;
1;
//{{AFX-APPEND-ODL)}
II)}AFX-APPEND-ODL}}
1;
109
Form5muAudio y Form%nuTV.
Case 0
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION 1”)
Case 1
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION2” & Idex)
Case 2
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION3” & Idex)
Case 3
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION4” & Idex)
Case 4
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONS” & Idex)
Case 5
110
Case 17
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONI 8” & Idex)
Case 18
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCIONI 9” & Idex)
Case 19
SalidaPorPuertol .ValorDeSalida = Index
SalidaPorPuertol .SacarValor
MsgBox (“FUNCION20” & Idex)
End Select
Case 2
MsgBox (“Activar funcion para falla 2”)
Case 3
MsgBox (“Activar funcion para falla 3”)
112
Case 4
MsgBox (“Activar funcion para falla 4”)
Case 5
MsgBox (“Activar funcion para falla 5”)
Case Else
MsgBox “NADA”
End Select
For i = 0 To (Commandl.Count - 1)
Command1 (i).Enabled = False
Next i
End Sub
Archivo
esta opción de menú únicamente le permite salir de la aplicación
Principios de...
En Televisión
En esta opción dispone de un documento H. T. M. L. el cual le permite conocer
lo5 principios de funcionamiento del televisor a través de hiper texto. 5i desea
conocer información de un tema en particular haga CI¡G en el híper texto
correspondiente e inmediatamente se le mostrará el tema en cuestión
Audio
En esta opción dispone de un documento H. T. M. L. el cual le permite conocer
lo5 principios de funcionamiento del radio a través de híper texto si desea
conocer información de un tema en particular haga clic en el hiper texto
correspondiente e inmediatamente se demostrará el tema en cuestión
Consulta Acerca de
En Televisión
En esta opción dispone de un sistema experto el cual le sirve de apoyo en la
reparación de un aparato de televisión, el sistema es muy sencillo de utilizar
ya que este es muy intuitivo. 5010 tiene que responder con un sí o un no a las
114
En Radio
En esta opción dispone de un sistema experto el cual le sirve de apoyo en la
reparación de un aparato de radio, el sistema e5,muy sencillo de utilizar ya
que este es muy intuitivo. 5010 tiene que responder con un sí o un no a la5
pregunta5 que se le muestran en un cuadro de dialogo, la respuesta la señala
en un par de botones de opción en lo5 cuales tiene que hacer clic según 5ea
su respuesta sí 0 no, el sistema le mostrará pregunta5 que servirán para
determinar el circuito de el radio que pudiera provocar la falla, notará que la5
pregunta5 están planeada5 cuidadosamente hacia situaciones bastante
obvia5 pero que posteriormente no conducirán a situaciones más complicada5
hasta determinar la CauSa, durante el proceso se le irán dando tips para que
vaya determinando por su cuenta la causa
115
5imulador
Televisión
En esta opción puede provocar fallas en el entrenador de televisión, sólo tiene
que elegir entre el conjunto de fallas que se muestran sobre el formulario,
internamente existe un control el cual manda un número de falla hacia el
puerto de la impresora y es a través de este y por medio de un circuito de
codificado que se acción a un relevador el cual provoca la falla en el circuito
correspondiente, una vez que provoca la falla puede ir a su entrenador en
donde tiene que detectar el circuito que está fallando, notará que sólo puede
provocar una falla a un mismo tiempo, por lo que deberá elegir la opción de
restablecer para que el entrenador vuelva a una condición normal de operación
y pueda elegir otra falla, si así lo desea puede ír al módulo de consulta para
auxiliarse en la detección de la falla.
Radio
En esta opción puede provocar fallas en el entrenador de radio, sólo tiene que
elegir entre el conjunto de fallas que se muestran sobre el formulario,
internamente existe un control el cual manda un número de falla hacia el
puerto de la impresora y es a través de este, que por medio de un circuito de
codificado, que se acción a un relevador el cual provoca la falla en el circuito
correspondiente, una vez que provoca la falla puede ir a su entrenador en el
que tiene que detectar el circuito que está fallando, notará que sólo puede
provocar una falla a un mismo tiempo, por lo que deberá elegir la opción de
restablecer para que el entrenador vuelva a una condición normal de operación
y pueda elegir otra falla, sí así lo desea puede ir al módulo de consulta para
auxiliarse en la detección de la falla.
Ayuda
Este menú sólo contiene un cuadro de diálogo el cual le muestra la
descripción del autor.
116
Amplificador/accionador
de relel Falla 1
AMPLIFICADORES DE SALIDA
ANTRADA DE SEÑAL DE SEÑAL DECODIFICADA
DESDE EL PUERTO PARCIALMENTE MOSTRADOS
DE LA JMRESORA
BUFFE ,R
CIRCUITO DECODIFICADOR
118
Lo5 usuarios del sistema debido a la rapidez con que aprenden, ya que
trabajan de una manera mucho muy intuitiva el sistema, piden más, y es que
está comprobado que la computadora como recur5o didáctico es un
instrumento excelente.
E l p r o y e c t o se q u i e r e p r o p o n e r c o m o u n recur5o d i d á c t i c o p a r a ser
extenderse hacia aparato5 más sofisticados como puede ser una video
producto5 más los programa5 con que se cuentan en los planteles para estos
M5-DO5 e incluso alguno5 están hechos en visual bá5ico pero para Windows
3.11
120
Por lo pronto, cabe mencionar que en el mercado existen programa5 105 cuales
por parte de una institución se puede hacer crecer el sistema experto para
+ 5ístemas Expertos
Autor: Dieter Nebend hal
Editorial: Marcombo