PROBLEMA DE INGENIERÍA

Tamaño: px
Comenzar la demostración a partir de la página:

Download "PROBLEMA DE INGENIERÍA"

Transcripción

1 UNIVERSIDAD TECNOLOGICA NACIONAL FACULTAD REGIONAL SAN NICOLAS INGENIERIA EN ELECTRONICA PROBLEMA DE INGENIERÍA TECNICAS DIGITALES III MANDO A DISTANCIA PARA PC Integrantes: Docentes: - Buxman Jorge A. - De Nicoló Lisandro. - Gallina Luciano. - Profesor: Poblete Felipe - Auxiliar: González Mariano AÑO 2007

2 INDICE OBJETIVOS DEL TRABAJO 3 MATERIAS INTEGRADAS... 3 POSIBLES APLICACIONES... 3 PROFESORES ENTREVISTADOS...3 BIBLIOGRAFÍA...3 DESARROLLO 4 INTRODUCCIÓN...4 TEORIA DE FUNCIONAMIENTO...4 EL ENLACE INFRARROJO...4 RECEPCION DE INFRARROJO...6 PROTOCOLO DE PHILIPS RC EL URC SBC-RU-240/38 DE PHILIPS...12 ESTANDAR RS DIAGRAMAS Y CIRCUITOS PRIMER INTENTO...15 RECEPTOR...16 EL CODIGO FUENTE DEL PIC16F84A...19 ESTRUCTURA DE UN PROGRAMA WINDOWS GUI...20 Parámetros de entrada de "WinMain"...22 Función WinMain típica...23 Declaración...24 Inicialización...24 Bucle de mensajes...24 El procedimiento de ventana Sintaxis...25 Prototipo de procedimiento de ventana...26 Implementación del procedimiento de ventana simple...26 RESULTADOS DE LAS PRUEBAS...27 CONCLUSIONES 29 ANEXOS 33 Anexo A: LISTADO DE PROGRAMAS...33 Código fuente para el PIC16F84A:...33 Código fuente para la PC:...41 Anexo B: Sitios en la WEB...57 Anexo C: GL3276A-datasheets (no incluído en este documento)...57 Anexo D: MAX232-datasheets (no incluído en este documento)

3 OBJETIVOS DEL TRABAJO Lograr el manejo o accionamiento de los comandos básicos de programas multimedia en plena reproducción mediante un mando a distancia enlazado con la PC a través de un enlace de señal infrarroja. La implementación requiere de la utilización de un control remoto comercial del tipo universal o cualquier otro control remoto de cualquier equipo en desuso (Equipo de audio o Tv, etc.). MATERIAS INTEGRADAS Informática I y II. Técnicas digitales I, II, y III. Física II y III. POSIBLES APLICACIONES Implementación de control sobre archivos multimedia en plena reproducción logrando una mayor comodidad, ya sean de audio o video. PROFESORES ENTREVISTADOS Ramiro Vota (Interfaz RS-232 en Windows XP). Mariano Gonzales (Ídem). BIBLIOGRAFÍA Turbo C/C++ Manual de referencia-herbert Schildt (serie McGary-Hill de Informática). Programación Elemental en C++ Manual de Referencia Abreviado revisión 1.2 (Universidad de Málaga Dpto. de Ing. Informática) Programación en C Metodología, algoritmos y estructura de datos.-luis Joyanes Aguilar / Ignacio Zahonero Martínez. Protocolo Philips RC-5 para control remoto descripción por Eduardo J. Carletti (Comunicacion_protocolorc5.htm). RS-232 Ingeniería en microcontroladores Ing. Eric López Pérez. Hojas de datos de los sistemas involucrados (apéndices). Organización de las computadoras-un enfoque estructurado-andrew S. Tanembaum. Diversos sitios web (ver al final de este informe). 3

4 DESARROLLO INTRODUCCIÓN Probablemente los botones más frecuentemente pulsados en cualquier casa son los del mando a distancia de la televisión, y es que actualmente el control remoto de aparatos electrónicos es algo habitual. Resulta evidente que los mandos por infrarrojos han sido una revolución. Por otra parte, es indudable que la presencia de ordenadores personales en hogares y oficinas, que duplican su capacidad a velocidades vertiginosas, facilita la extensa tarea en las diversas actividades que realiza el ser humano. La tendencia actual es optimizar el ordenador al máximo. Por todo ello, por qué no aplicar las comodidades del control remoto al ordenador?. Se pretende recibir la información enviada desde un emisor de infrarrojos, que será un mando a distancia convencional, procesar esa información y enviarla vía RS-232 a un ordenador personal. La información extraída del mando es una serie de pulsos que, en principio, no sirve de nada si no se procesa adecuadamente. Para llevar a cabo este proceso se utiliza un PIC modelo 16F84A de Microchip, que es un pequeño microcontrolador de 18 pines. Dicho PIC dispone de un entorno de desarrollo para la confección del programa que ejecutará y se encargará de procesar convenientemente la trama recibida del IR, obteniéndose así otra trama de ceros y unos que ahora sí es comprensible por cualquier sistema (palabra digital de 6 bits). Finalmente, como esta información se desea transmitir vía serie siguiendo el estándar RS-232, se utilizará un integrado comercial (MAX232) que adecua los niveles de la trama extraída por el PIC (trama TTL) a los requeridos por la norma. Importante señalar que el PIC ya se ha encargado de añadir los bits de STOP y START a cada una de las palabras digitales, no utilizándose control de flujo hardware. Se emplea como emisor un mando a distancia universal al que se le ha programado el código 033 correspondiente a los mandos PHILIPS (RC-05). TEORIA DE FUNCIONAMIENTO EL ENLACE INFRARROJO Un enlace infrarrojo consiste en una comunicación vía señalización lumínica. La luz infrarroja no es más que una onda electromagnética como las de radio (claro es, que se trata de una frecuencia muy diferente) y como las del resto de las ondas que constituyen el espectro de luz visible (desde el infrarrojo hasta el ultravioleta). El nombre de luz infrarroja, que significa por debajo del rojo, proviene de la primera vez que fue observada al dividir la luz solar en diferentes colores por medio de un prisma que separaba la luz en su espectro de manera que a ambos extremos aparecen visibles, las componentes del rojo al violeta (en ambos extremos). 4

5 Aunque estas experiencias habían sido realizadas anteriormente por Isaac Newton, William Herschel observó en el año 1800 que se recibía radiación debajo del rojo al situar medidores de calor en las diferentes zonas no visiblemente irradiadas por el espectro. Imagen de un perro tomada con radiación infrarroja media («térmica») y coloreada: Su longitud de onda es del orden de los 700 nano-metros: 5

6 Y su frecuencia: Todos estos parámetros son característicos de cualquier tipo de onda: RECEPCION DE INFRARROJO Todos los dispositivos semiconductores son sensibles a la luz (a todo tipo de luz), de hecho este es el principal factor que determina el encapsulado de los chips: un plástico completamente opaco, normalmente negro. Un sensor de infrarrojos está construido básicamente por una unión semiconductora recubierta por un cristal que sólo deja pasar la luz infrarroja (photodiodo). Un sensor de infrarrojos construido de esa forma será capaz de detectar la presencia de cualquier luz infrarroja, independientemente de la fuente que la genere. Los diseñadores de mandos a distancia tuvieron que añadir una característica diferenciadora a la luz emitida desde un mando a distancia para hacerla distinguible del resto de fuentes luminosas. La señal emitida por un mando está modulada a una frecuencia entre 32 y 40 KHz, dependiendo del fabricante y modelo del mando a distancia. No tenemos que perder de vista que todo lo que se haga para emitir la señal, luego durante la recepción se tendrá que deshacer. Si se emite luz infrarroja, luego se tendrá que recibir; si esta señal se modula con una portadora luego se tendrá que eliminar (filtrar) esa portadora. La demodulación se realiza analógicamente con un sencillo filtro paso banda (eliminar todas las frecuencias que no sean próximas a la frecuencia de emisión) junto con un rectificador/integrador. 6

7 Una onda modulada es una forma de onda obtenida mediante una operación matemática implementada a través de circuitos electrónicos y en la que intervienen la señal que se quiere transmitir (moduladora) y al onda portadora. Esta onda portadora es de una frecuencia mucho más alta que la de la señal moduladora (la señal que contiene la información a transmitir). Al modular una señal desplazamos su contenido espectral en frecuencia, ocupando un cierto ancho de banda alrededor de la frecuencia de la onda portadora (f 0 ). Esto nos permite multiplexar en frecuencia varias señales simplemente utilizando diferentes ondas portadoras y conseguir así un uso más eficiente del espectro de frecuencias. Luz infrarroja modulada a una frecuencia de 36 KHz (para nuestro caso de RC-05), es el medio de comunicación entre el emisor (mando a distancia) y el receptor (PIC16F84A). Ahora queda por determinar cómo se transmite la información, esto es, los bits que identifican la tecla del mando a distancia que se ha pulsado, pero esto se detallara en el apartado del protocolo RC-05. Para la realización de la tarea de recibir el dato empleamos un circuito integrado comercial estándar cuyas especificaciones se pueden consultar en el Anexo A (hoja de datos). Es el GL3276A el circuito mencionado y brevemente podemos decir que consta de los siguientes bloques funcionales: Características del integrado: Menor numero de errores asociados a la alta frecuencia emanada por luces fluorescentes (impulsos luminiscentes) mediante circuito trampa interna. Frecuencia de portadora (demodulación) preselecionable mediante resistencia instalada en el pin f 0 en un rango de 30 a 80 KHz. Margen de variación de f 0 reducido. Pocos elementos externos necesarios. Resistencias de pull-ups y filtros internas. Capacitores externos de capacidades bajas. Salida a colector abierto con resistencia de pull-up. 7

8 Este es un circuito integrado analógico diseñado especialmente para este tipo de aplicaciones, tanto es así que el fabricante nos aporta el circuito de aplicación típico que obviamente se consigue en cualquier tienda de electrónica completo dentro de una caja de chapa que hace a las veces de jaula de Faraday para disminuir el efecto de interferencias por ondas electromagnéticas. Como veremos a este se acopla directamente el photodiodo receptor y un conjunto mínimo de componentes de seteo y demás. Como se muestra en su diagrama de bloques consta en una primera instancia de un amplificador de entada, seguido de u limitador, un filtro pasa banda, un circuito detector y un acondicionador de forma de onda que va directo a la etapa de salida a colector abierto. El valor de R(f 0 ) lo encontramos mediante las curvas aportadas por el fabricante del circuito integrado. Para 36 KHz seria al rededor de 156 KΩ. 8

9 PROTOCOLO DE PHILIPS RC-05 Es evidente, dada la forma de modular la señal, que la información se transmite en serie, esto es, un bit detrás de otro, y por tanto sólo es necesario una línea (de datos) para recibirla. Descubramos un poco que es y como esta hecho el protocolo de Philips. El código RC-05 de Philips es, posiblemente, el protocolo más utilizado por los experimentadores, debido a la amplia disponibilidad de controles remotos baratos que se basan en él. Además, dentro de este protocolo hay comandos predefinidos para distintos artefactos, una característica que aporta una mayor compatibilidad al utilizarlo con muchos equipos hogareños. Philips ha comenzado a utilizar un nuevo protocolo, el RC-06, que tiene más capacidades. Características Dirección de 5 bit y comando de 6 bit (7 bits de comando para RC-05X) Codificación de doble fase o bi-fase (Bi-phase, también llamada código Manchester) Frecuencia de portadora de 36 KHz. Tiempo de bit constante de 1,778 ms (64 ciclos de 36 KHz.) Modulación El protocolo está basado en una modulación Manchester de doble fase sobre una portadora de 36 KHz. En esta codificación, todos los bits tienen la misma longitud, de 1,778 ms. La mitad del bit es un tren de pulsos de la portadora de 36 KHz., y en la otra mitad la señal está plana. El cero lógico es representado por un tren de pulsos en la primera mitad (primer nible) del tiempo que corresponde al bit. El uno lógico es representado por un tren de pulsos en la segunda mitad de este tiempo. La relación entre pulso y pausa en la portadora de 36 KHz. es de 1/3 o 1/4, lo que reduce el consumo de energía. Protocolo La imagen muestra un típico tren de pulsos en un mensaje RC-05. En este ejemplo se transmite la dirección $05 y el comando $35. Los dos primeros bits son los de inicio (start), que deben ser dos "1" lógicos. Nótese que transcurre medio tiempo de bit hasta que el receptor se entera de que ha comenzado el mensaje. 9

10 El protocolo RC-05 extendido (RC-05x) tiene un solo bit de inicio y este es en realidad el que utilizaremos pues es el que mas abunda aunque lo sigamos llamando RC-05. El tercer bit del protocolo RC-05, marcado como T en el dibujo, es el bit de conmutación (toggle). Este bit es invertido cada vez que se libera una tecla en el control remoto y se la presiona de nuevo o se presiona otra diferente. De esta manera el receptor puede distinguir entre una tecla que permanece presionada (mientras lo esté, el comando que le corresponde se repite indefinidamente en la señal) y una misma tecla a la que se la presiona varias veces. Para nuestra aplicación lo que haremos es que el PIC16f84A decodifique el mensaje enviado por el control remoto y envíe los datos a la PC mediante el puerto serie. Ya que hacemos esto, no es necesario pasarle a la PC toda la cadena, basta con que le pasemos el dato de comando para que la PC ejecute una tarea respectiva. Entonces el dato correspondiente al dispositivo que nos habla se lo queda el PIC para lograr el reconocimiento del mismo y así impedir leer mensajes de otros controles remotos circundantes. En la cadena que le pasamos a la PC haremos que, ya que nos sobran dos bis para completar el byte (6 bits de comando), el bit 6 (cadena 0~7 bits) de dicha cadena sea 1 lógico para informar no repetición de la tecla y 0 lógico para representar repetición de la tecla y así la PC pueda hacer alguna discriminación de ser necesario. El bit que sigue al bit T es el primero de la dirección del dispositivo receptor de infrarrojos (identificación de quien nos habla y por esto, obviamente, para quien es el mensaje), poniendo en primer lugar el bit más significativo de la dirección. A esta dirección le sigue el comando de 6 bits, también con su bit más significativo en primer lugar. Un mensaje, entonces, consiste de un total de 14 bits, que sumados dan una duración total del mensaje de 25 ms. A veces puede parecer que un mensaje es más corto debido a que la primera parte del bit de inicio S1 es inactiva. Mientras se mantenga presionada la tecla, el mensaje se repite cada 114 ms. El bit de conmutación mantendrá el mismo nivel lógico durante la repetición de un mensaje. Comandos predefinidos Philips ha creado una lista de comandos estandarizados. Esto asegura compatibilidad entre artefactos de un mismo tipo y evita que la tecla que cambia de canal en un televisor produzca al mismo tiempo algún efecto en una videocasetera que también esté allí, enfrente del control remoto. Una característica interesante es que la mayoría de los artefactos están representados dos veces, lo que permitiría tener dos videocaseteras juntas sin tener problemas para comandarlas por separado. 10

11 La lista que sigue no es exhaustiva. Dirección RC-5 Dispositivo Comando RC-5 Comando TV Comando VCR $00-0 TV1 $01-1 TV2 $02-2 Teletexto $03-3 Video $04-4 LV1 $05-5 VCR1 $06-6 VCR2 $07-7 Experimental $08-8 Sat1 $09-9 Cámara $0A - 10 Sat2 $0B - 11 $0C - 12 CDV $0D - 13 Camcorder $0E - 14 $0F - 15 $10-16 Preamplificador $11-17 Sintonizador $12-18 Grabador1 $13-19 Preamplificador $14-20 Reproductor CD $15-21 Teléfono $16-22 SatA $17-23 Grabador2 $ $ $ $ $ $ $ $ $ $ $0A /-- -/-- $0C - 12 Espera Espera $0D - 13 Silenciar $10-16 Volumen + $11-17 Volumen - $12-18 Brillo + $13-19 Brillo - $20-32 Programa + Programa + $21-33 Programa - Programa - $32-50 Retroceso rápido $34-52 Retroceso rápido $35-53 Reproducir $36-54 Detener $37-55 Grabar $18-24 $19-25 $1A - 26 CDR $1B - 27 $1C - 28 $1D - 29 Iluminación $1E - 30 Iluminación $1F - 31 Teléfono 11

12 EL URC SBC-RU-240/38 DE PHILIPS Utilizamos este control remoto universal de Philips y lo configuramos para trabaja con una VRC pues nos habilita la mayor cantidad de botones posible permitiéndonos, en definitiva, el mayor rango de interacción con la PC. Conseguimos entonces las siguientes salidas del control hacia nuestro sistema receptor: Estos códigos de salida además de aparecer en la tabla antes mostrada, los podemos comprobar y lo hicimos mediante el ordenador. En el código fuente del programa de la PC haremos la siguiente tabla de asignaciones por defecto (el usuario puede modificar dicha tabla cuando abre el programa). Esta es una asignación por defecto para controlar el programa WINAMP (configuración de teclado por defecto, del programa) de reproducción de archivos multimedia y además nos permitirá interactuar en lo que a las principales funciones respecta, con el sistema operativo Windows. 12

13 Para la configuración del control remoto: Elegir dispositivo (uno de cuatro los botones superiores), en nuestro caso VCR. Mantener presionado los botones numero 1 y numero 3, destello de led indicador de envío dos veces. Ingresar el código correspondiente al protocolo que el control remoto debe emitir, para nuestro caso es 033, destello de led indicador de envío una vez. Ahora tenemos el mando a distancia configurado para emitir en protocolo RC-05X en modo VCR. ESTANDAR RS- 232 La transmisión de datos en serie es una de las más comunes para aquellas aplicaciones en las que la velocidad no es demasiado importante, o no es posible conseguirla (por ejemplo, vía red telefónica). Para simplificar el proceso de enviar los bits uno por uno han surgido circuitos integrados que realizan la función, teniendo en cuenta todos los tiempos necesarios para lograr una correcta comunicación y aliviando a la CPU de esta pesada tarea. El circuito que estudiado es el 8250 de National, fabricado también por Intel, aunque existen diferencias respecto al Esta última UART es más reciente y mucho más potente (aunque solo sea por unos pequeños detalles) y cada vez está más extendida, en particular en las actuales placas base. 13

14 La línea que transmite los datos en serie está inicialmente en estado alto. Al comenzar la transferencia, se envía un bit a 0 ó bit de inicio. Tras él irán los 8 bits de datos a transmitir (en ocasiones son 7, 6 ó 5): estos bits están espaciados con un intervalo temporal fijo y preciso, ligado a la velocidad de transmisión que se esté empleando, en nuestro caso es de 9600 baudios. Tras ellos podría venir o no un bit de paridad generado automáticamente por la UART. Al final, aparecerá un bit (a veces un bit y medio ó dos bits) a 1, que son los bits de parada o bits de stop. Lo de medio bit significa que la señal correspondiente en el tiempo a un bit dura la mitad. La presencia de bits de arranque y paro permite sincronizar la estación emisora con la receptora, haciendo que los relojes de ambas vayan a la par. A la hora de transmitir los bits de datos unos tras otros, no se necesitan señales de reloj como se requieren para otras comunicaciones como es por ejemplo el I 2 C y por esto se considera al protocolo RS-232 asíncrono. El ACE 8250 (Asynchronous Communication Element) integra en un solo chip una UART (Universal Asynchronous Receiver/Transmitter) y un BRG (Baud Rate Generator). Soporta velocidades de hasta baudios con relojes de hasta 10 MHz. El BRG incorporado divide la frecuencia base para conseguir las velocidades estándar de la RS-232. Para llevar a cabo ala comunicación el integrado consta de varios registros en los que se aloja bandera de estado, configuración de línea y modem. También están los registros buffer en los que se encuentran los datos recibidos, los datos a enviar, el registro de salida secuencial bit a bit e ídem para la entrada. Desde un punto de vista eléctrico la norma RS-232 establece: Un 1 lógico es un voltaje comprendido entre 5v y 15ven el transmisor y entre -3v y - 25v en el receptor. Un 0 lógico es un voltaje comprendido entre +5v y +15v en el trasmisor y entre +3v y +25 v en el receptor. Para adaptar las salidas del micro controlador al protocola se usa el MAX232 este chip se utiliza en aquellas aplicaciones donde no se dispone de fuentes dobles de +12 y 12 Volts. El MAX 232 necesita solamente una fuente de +5V para su operación, internamente tiene un elevador de voltaje que convierte el voltaje de +5V al de doble polaridad de +12V y -12V. Cabe mencionar que existen una gran variedad de CI que cumplen con la norma RS-232 como lo son: MAX220, DS14C232, MAX233, LT1180A. 14

15 Implementación cableada En la siguiente tabla se muestra las señales y configuración RS-232 más común según se implemente ficha DV9 o DV25: DIAGRAMAS Y CIRCUITOS PRIMER INTENTO Parea enriquecimiento de nuestra experiencia en un primer intento por querer logra la comunicación vía puerto serie de la PC e ignorantes totalmente de la existencia del MAX232 intentamos hacer la adaptación de niveles de voltaje a través de un circuito a base de amplificadores operacionales (LM324) puestos como comparadores. Si bien conseguimos la comunicación, el dato transmitido era muy distante del que realmente queríamos enviar. Al observar el comportamiento del amplificador operacional configurado de esa manera con un osciloscopio, al atravesarlo un dato a transmitir, pudimos ver que la salida no podía acompañar a la entrada en tiempo y forma. Así que intentamos resolver el problema bajando la velocidad de transmisión, ya teníamos el hardware armado. Conseguimos una leve mejora a 330 baudios, así que debíamos intentar configurar el operacional como amplificador inverso de alguna manera. Como fuese, había que modificar el hardware y a su vez ya nos habíamos enterado de MAX232, así que para evitar mayores perdidas de tiempo nos inclinamos a la implementación de integrado, y problema resuelto. Además el otro método, por supuesto nos demandaba una fuente bipolar. 15

16 RECEPTOR E sistema de recepción esta compuesto por un hardware de detección-decodificación, integrado por un microcontrolador PIC16F84A, y la PC para la ejecución de una tarea determinada. En el circuito de detección-decodificación, el PIC16F84A, toma el dato serie (onda cuadrada) que el GL3276A proporciona como salida al recibir la señal del mando a distancia. Separa el código de mando del de dispositivo, hace el reconocimiento del dispositivo y envía el dato de comando mas el de repetición a la PC mediante el protocolo RS-232 a través del puerto serie de la misma. Para logra el cometido anterior, entre el PIC16F84A se instala un driver adaptador de nivel de señal MAX232. Este circuito integrado adapta la señal de 0V~5V que emite el PIC16F84A en su salida de dato a la PC a los respectivos niveles 10V~ (-10V) necesarios para representar el estado lógico en el protocolo RS-232. La transmisión a través del puerto serie se hace a 9600 baudios (baudio=bit/segundos) preseleccionados en la programación del PIC16F84A (ver código en PIC16F84A), y en el código fuente del programa que correrá en el ordenador (ver código en PC). Este es un esquemático del hardware de detección-decodificación: 16

17 Es un circuito muy sencillo: Led PWR : se enciende al alimentar el circuito. Led Led V : emite un destello por cada dato enviado a la PC, permanece encendido durante un segundo, aproximadamente (simultáneamente con Led R ) de no poder concretar la comunicación. De presionar el pulsador Borrar disp. durante cierto tiempo el led enciende por un segundo dos veces para indicar salida de dato paralelo y una ves para indicar salida de datos serie. Led Led R : al encender el receptor, este no esta vinculado a ningún dispositivo (TV, etc. ) entonces esta situación se ve indicada por la permanencia de este led encendido. La situación se revierte al enviarle algún mensaje desde el control remoto (presionando cualquier tecla del control). A partir de entonces el receptor solo reconocerá mensajes provenientes de ese mando a distancia y con ese código de dispositivo. Si se quiere cambiar el código de dispositivo de reconocimiento por cualquier razón, el receptor consta de un pulsador Borrar disp. Que al presionarlo durante un tiempo reducido deshace la vinculación encendiendo nuevamente Led R y poniendo al receptor a la espera del nuevo código de reconocimiento. Pulsador Borrar disp. : pensionándolo durante un breve lapso de tiempo se deshace la vinculación del receptor y el código de dispositivo (código de reconocimiento), se encenderá entonces el Led R. Si el pulsador se presiona durante un tiempo prolongado el receptor, además de desvincular el mendo a distancia, cambia su modo de transmisión de datos a la PC, si estaba transmitiendo en serie lo hará en paralelo entonces (enciende por un segundo dos veces Led V ), y viceversa (enciende por un segundo una vez Led V ). Nota: para que el hardware pueda comunicarse con el ordenador mediante el puerto paralelo, se debe quita el buffer MAX232 lo cual se puede llevar a cabo interponiendo un conector entre este y la electrónica principal. En este conector también se debe conectar el adaptador de conexiones para efectuar la comunicación vía puerto paralelo. Esta comunicación envía el dato en dos partes como puede verse en el código fuente del PIC16F84A. En una primera instancia se envían los cuatro bits más significativos, se espera un determinado tiempo 17

18 una confirmación por parte de la PC y se procede al envío del pedazo restante para completar el byte. Esto es así para aprovechar mejor y de manera más simple las características del puerto según nuestras necesidades. Puerto paralelo: El puerto paralelo se implementa en hardware a través de una ficha DV25 (25 pines) macho (hembra en la PC) de los cuales desde el pin 18, inclusive, hasta el pin 25, también inclusive, sirven de masa. EL controlador de la comunicación consta de tres registros de 8 bit cada uno (un byte). El registro PORT 888, puerto de datos, (dirección en memoria 888), Pines del 2 al 9, es de solo escritura, por este registro se envían los datos al exterior de la PC. El registro PORT 889, puerto de estado, es de solo lectura, por aquí se enviaremos señales eléctricas al ordenador, de este registro solo se utilizan los cinco bits de más peso, que son el bit 7, 6, 5, 4 y 3 teniendo en cuenta que el bit 7 funciona en modo invertido, pines 15, 13, 12, 10 y 11. El registro PORT 890, puerto de control, es de lectura/escritura, es decir, podremos enviar o recibir señales eléctricas, según nuestras necesidades. De los 8 bits de este registro solo se utilizan los cuatro de menor peso o sea el 0, 1, 2 y 3, con un pequeño detalle, los bits 0, 1, y 3 están invertidos. Adaptación: Para enviar el dato a la PC utilizamos del puerto de estado los pines 10, 12, 13, y 15 (E6, E5, E4 y E3 respectivamente). Para la confirmación la esperamos por el puerto de datos, pin 2 (D0). La conexión cableada deberá hacerse como se indica a continuación: 18

19 EL CODIGO FUENTE DEL PIC16F84A Este código fuente debe encargarse de las tareas descriptas antes. Es importante remarcar que la comunicación con la PC mediante el protocolo RS-232 se debe programar porque no viene incorporada a diferencia del siguiente modelo de microcontrolador de Microchip PIC16F873. Para entender más fácilmente el código se muestra el siguiente diagrama de bloque del algoritmo. 19

20 Código fuente: Para la elaboración de este código fuente se utilizo un entorno de desarrollo integrado distribuido en forma gratuita por Microchip, el MPLAB 9.0 IDE. Para la programación o grabado del código en la memoria del PIC16F84A se uso otro programa de distribución libre y gratuita, el IC-Prog. Para esta ultima tarea también se hizo uso de una tarjeta de programación llamada ProPic 2 Programer. (Ver código fuente para PIC16F84A en Anexo C). ESTRUCTURA DE UN PROGRAMA WINDOWS GUI Para el desarrollo de este código fuente se utilizo un entorno de desarrollo integrado también. Se utilizo Dev-C 4.9, un producto de Bloodshed y se programo WIN API (Appication Programming Interface) con clases. Los programas Windows son independientes de la máquina en la que se ejecutan (o al menos deberían serlo), el acceso a los dispositivos físicos se hace a través de interfaces, y nunca se accede 20

21 directamente a ellos. Esta es una de las principales ventajas para el programador, ya que no hay que preocuparse por el modelo de tarjeta gráfica o de impresora, la aplicación funcionará con todas, y será el sistema operativo el que se encargue de que así sea. Un concepto importante es el de recurso. Desde el punto de vista de Windows, un recurso es todo aquello que puede ser usado por una o varias aplicaciones. Existen recursos físicos, que son los dispositivos que componen el ordenador, como la memoria, la impresora, el teclado o el ratón y recursos virtuales o lógicos, como los gráficos, los iconos o las cadenas de caracteres, etc. Por ejemplo, si nuestra aplicación requiere el uso de un puerto serie, primero debe averiguar si está disponible, es decir, si existe y si no lo está usando otra aplicación; y después lo reservará para su uso. Esto es necesario porque este tipo de recurso no puede ser compartido. Los programas en Windows están orientados a eventos, esto significa que normalmente los programas están esperando a que se produzca un acontecimiento que les incumba, y mientras tanto permanecen aletargados o dormidos. Un evento puede ser por ejemplo, el movimiento del ratón, la activación de un menú, la llegada de información desde el puerto serie, una pulsación de una tecla... Esto es así porque Windows es un sistema operativo multitarea, y el tiempo del microprocesador ha de repartirse entre todos los programas que se estén ejecutando. Si los programas fueran secuenciales puros, esto no sería posible, ya que hasta que una aplicación finalizara, el sistema no podría atender al resto. Ejemplo de programa secuencial: Ejemplo de programa por eventos: 21

22 Hay algunas diferencias entre la estructura de un programa C/C++ normal, y la correspondiente a un programa Windows GUI. Algunas de estas diferencias se deben a que los programas GUI estás basados en mensajes, otros son sencillamente debidos a que siempre hay un determinado número de tareas que hay que realizar. // Ficheros include: #include <windows.h> // Prototipos: LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); // Función de entrada: int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpszcmdparam, int ncmdshow) // Declaración: // Inicialización: // Bucle de mensajes: return Message.wParam; // Definición de La función de entrada de un programa Windows es "WinMain", en lugar de la conocida "main". Normalmente, la definición de esta función cambia muy poco de una aplicación a otra. Se divide en tres partes claramente diferenciadas: declaración, inicialización y bucle de mensajes. Parámetros de entrada de "WinMain" int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpszcmdparam, int ncmdshow) La función WinMain tiene cuatro parámetros de entrada: hinstance es un manipulador para la instancia del programa que estamos ejecutando. Cada vez que se ejecuta una aplicación, Windows crea una Instancia para ella, y le pasa un manipulador de dicha instancia a la aplicación. hprevinstance es un manipulador a instancias previas de la misma aplicación. Como Windows es multitarea, pueden existir varias versiones de la misma aplicación ejecutándose, varias instancias. En Windows 3.1, este parámetro nos servía para saber si nuestra aplicación ya se estaba ejecutando, y de ese modo se podían compartir los datos comunes a todas las instancias. Pero eso era antes, ya que en Win32 usa un segmento distinto para cada instancia y este parámetro es siempre NULL, sólo se conserva por motivos de compatibilidad. lpszcmdparam, esta cadena contiene los argumentos de entrada del comando de línea. 22

23 ncmdshow, este parámetro especifica cómo se mostrará la ventana. Para ver sus posibles valores consultar valores de ncmdshow. Se recomienda no usar este parámetro en la función ShowWindow la primera vez que se ésta es llamada. En su lugar debe usarse el valor SW_SHOWDEFAULT. Función WinMain típica int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hprevinstance, LPSTR lpszcmdparam, int ncmdshow) /* Declaración: */ HWND hwnd; MSG mensaje; WNDCLASSEX wincl; /* Inicialización: */ /* Estructura de la ventana */ wincl.hinstance = hinstance; wincl.lpszclassname = "NUESTRA_CLASE"; wincl.lpfnwndproc = WindowProcedure; wincl.style = CS_DBLCLKS; wincl.cbsize = sizeof(wndclassex); /* Usar icono y puntero por defecto */ wincl.hicon = LoadIcon(NULL, IDI_APPLICATION); wincl.hiconsm = LoadIcon(NULL, IDI_APPLICATION); wincl.hcursor = LoadCursor(NULL, IDC_ARROW); wincl.lpszmenuname = NULL; wincl.cbclsextra = 0; wincl.cbwndextra = 0; wincl.hbrbackground = (HBRUSH)COLOR_BACKGROUND; /* Registrar la clase de ventana, si falla, salir del programa */ if(!registerclassex(&wincl)) return 0; hwnd = CreateWindowEx( 0, "NUESTRA_CLASE", "Ejemplo 001", WS_OVERLAPPEDWINDOW, CW_USEDEFAULT, CW_USEDEFAULT, 544, 375, HWND_DESKTOP, NULL, hthisinstance, NULL ); 23

24 ShowWindow(hwnd, SW_SHOWDEFAULT); /* Bucle de mensajes: */ while(true == GetMessage(&mensaje, 0, 0, 0)) TranslateMessage(&mensaje); DispatchMessage(&mensaje); return mensaje.wparam; Declaración En la primera zona declararemos las variables que necesitamos para nuestra función WinMain, que como mínimo serán tres: HWND hwnd, un manipulador para la ventana principal de la aplicación. Ya sabemos que nuestra aplicación necesitará al menos una ventana. MSG Message, una variable para manipular los mensajes que lleguen a nuestra aplicación. WNDCLASSEX wincl, una estructura que se usará para registrar la clase particular de ventana que usaremos en nuestra aplicación. Existe otra estructura para registrar clases que se usaba antiguamente, pero que ha sido desplazada por esta nueva versión, se trata de WNDCLASS. Inicialización Esta zona se encarga de registrar la clase o clases de ventana, crear la ventana y visualizarla en pantalla. Para registrar la clase primero hay que rellenar adecuadamente la estructura WNDCLASSEX, que define algunas características que serán comunes a todas las ventanas de una misma clase, como color de fondo, icono, menú por defecto, el procedimiento de ventana, etc. Después hay que llamar a la función RegisterClassEx. En el caso de usar una estructura WNDCLASS se debe registrar la clase usando la función RegisterClass. A continuación se crea la ventana usando la función CreateWindowEx, la función CreateWindow ha caído prácticamente en desuso. Cualquiera de estas dos funciones nos devuelve un manipulador de ventana que podemos necesitar en otras funciones, sin ir más lejos, la siguiente. Pero esto no muestra la ventana en la pantalla. Para que la ventana sea visible hay que llamar a la función ShowWindow. La primera vez que se llama a ésta función, después de crear la ventana, se puede usar el parámetro ncmdshow de WinMain como parámetro o mejor aún, como se recomienda por Windows, el valor SW_SHOWDEFAULT. 24

25 Bucle de mensajes Este es el núcleo de la aplicación, como se ve en el ejemplo el programa permanece en este bucle mientras la función GetMessage retorne con un valor TRUE. while(true == GetMessage(&mensaje, 0, 0, 0)) TranslateMessage(&mensaje); DispatchMessage(&mensaje); Este es el bucle de mensajes recomendable, aunque no sea el que se usa habitualmente. La razón es que la función GetMessage puede retornar tres valores: TRUE, FALSE ó -1. El valor -1 indica un error, así que en este caso se debería abandonar el bucle. El bucle de mensajes que encontraremos habitualmente es este: while(getmessage(&mensajee, 0, 0, 0)) TranslateMessage(&mensaje); DispatchMessage(&mensaje); NOTA: El problema con este bucle es que si GetMessage regresa con un valor -1, que indica un error, la condición del "while" se considera verdadera, y el bucle continúa. Si el error es permanente, el programa jamás terminará. La función TranslateMessage se usa para traducir los mensajes de teclas virtuales a mensajes de carácter. Los mensajes traducidos se reenvían a la lista de mensajes del proceso, y se recuperarán con las siguientes llamadas a GetMessage. La función DispatchMessage envía el mensaje al procedimiento de ventana, donde será tratado adecuadamente. El procedimiento de ventana Cada ventana tiene una función asociada, esta función se conoce como procedimiento de ventana, y es la encargada de procesar adecuadamente todos los mensajes enviados a una determinada clase de ventana. Es la responsable de todo lo relativo al aspecto y al comportamiento de una ventana. Normalmente, estas funciones están basadas en una estructura "switch" donde cada "case" corresponde aun determinado tipo de mensaje. Sintaxis LRESULT CALLBACK WindowProcedure( 25

26 HWND hwnd, // Manipulador de ventana UINT msg, // Mensaje WPARAM wparam, // Parámetro palabra, varía LPARAM lparam // Parámetro doble palabra, varía ); hwnd es el manipulador de la ventana a la que está destinado el mensaje. msg es el código del mensaje. wparam es el parámetro de tipo palabra asociado al mensaje. lparam es el parámetro de tipo doble palabra asociado al mensaje. Podemos considerar este prototipo como una plantilla para crear nuestros propios procedimientos de ventana. El nombre de la función puede cambiar, pero el valor de retorno y los parámetros deben ser los mismos. El miembro lpfnwndproc de la estructura WNDCLASS es un puntero a una función de este tipo, esa función es la que se encargará de procesar todos los mensajes para esa clase de ventana. Cuando registremos nuestra clase de ventana, tendremos que asignar a ese miembro el puntero a nuestro procedimiento de ventana. Prototipo de procedimiento de ventana LRESULT CALLBACK WindowProcedure(HWND, UINT, WPARAM, LPARAM); Implementación del procedimiento de ventana simple /* Esta función es llamada por la función del API DispatchMessage() */ LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) switch (msg) /* manipulador del mensaje */ case WM_DESTROY: PostQuitMessage(0); /* envía un mensaje WM_QUIT a la cola de mensajes */ default: /* para los mensajes de los que no nos ocupamos */ return DefWindowProc(hwnd, msg, wparam, lparam); return 0; En general, habrá tantos procedimientos de ventana como programas diferentes y todos serán distintos, pero también tendrán algo en común: todos ellos procesarán los mensajes que lleguen a una clase de ventana. En este ejemplo sólo procesamos un tipo de mensaje, se trata de WM_DESTROY que es el mensaje que se envía a una ventana cuando se recibe un comando de cerrar, ya sea por menú o mediante el icono de aspa en la esquina superior derecha de la ventana. 26

27 Este mensaje sólo sirve para informar a la aplicación de que el usuario tiene la intención de abandonar la aplicación, y le da una oportunidad de dejar las cosas en su sitio: cerrar ficheros, liberar memoria, guardar variables, etc. Incluso, la aplicación puede decidir que aún no es el momento adecuado para abandonar la aplicación. En el caso del ejemplo, efectivamente cierra la aplicación, y lo hace enviándole un mensaje WM_QUIT, mediante la función PostQuitMessage. El resto de los mensajes se procesan en el caso "default", y simplemente se cede su tratamiento a la función del API que hace el proceso por defecto para cada mensaje, DefWindowProc. Este es el camino que sigue el mensaje WM_QUIT cuando llega, ya que el proceso por defecto para este mensaje es cerrar la aplicación. A grandes rasgos, básicamente, ya sabemos hacer el esqueleto de una aplicación de Windows. Para entender el resto del código que se presenta a continuación se pide al lector remitirse a la bibliografía. (ver código fuente para la PC en Anexo C). RESULTADOS DE LAS PRUEBAS Las pruebas fueron satisfactorias. Hubo que realizar algunas modificaciones antes de alcanzar el material o información expuesta en este informe. Finalmente conseguimos fabricar tanto la aplicación de la PC como el Hardware externo para el resolver el problema de ingeniería que se nos propuso. El archivo ejecutable de la aplicación resultante consta de la siguiente representación grafica básica: Haciendo click sobre el botón Principal El ítem Reorganizar Botones modifica la organización de la tabla cargada por defecto mostrada en el apartado EL URC SBC-RU-240/38 DE PHILIPS. Al presionar este item se abre un nuevo cuadro de dialogo que nos permite elegir la combinación de teclas a reordenar y a continuación el programa se dispone a esperar el correspondiente código emitido por el control remoto. Cuando la PC recibe este dato, el programa nos devuelve un mensaje de código guardado. En este ejemplo se selecciona la opción 2 (Alt). 27

28 Después de aceptar la elección, presionamos un botón del mando a distancia y el programa nos informa de su recepción: El ítem Recordatorios nos permite colocar una etiqueta recordatorio para cada combinación de tecla disponible. 28

29 El ítem Default, carga la tabla indicada en el apartado EL URC SBC-RU-240/38 DE PHILIPS en el caso de que el usuario no encuentre una mejor disposición del control remoto. Por ultimo, el ítem Comenzar provoca que el programa se disponga a vigilar el puerto serie en espera por la entrada de cada nuevo comando. CONCLUSIONES Durante la realización del proyecto el grupo tuvo que enfrentarse a muchísimos problemas, algunos comentados en este informe. Tuvimos muchísimos problemas, en un principio con la comunicación por el puerto serie. En primer lugar era tema de total desconocimiento para todos nosotros, así mismo con la comunicación por puerto paralelo, la cual la aprendimos por necesidad para poder solucionar el problema de no funcionamiento del puerto serie. Por suerte justo antes de hacer la implementación, de dicha comunicación, en el código fuente de la PC, probamos por última vez con el puerto serie y nos anduvo. Por ello es que en el código fuente de la aplicación para la PC no aparece la interacción con el puerto paralelo a pesar de que el PIC16F84A si es capaz de soportarla (en teoría pues no la alcanzamos a probar). En cuanto a la programación en entorno Windows tuvimos que leer muchísimo para así a duras penas poder hacer algo. En los comienzos logramos antes que nada establecer la comunicación serie en Windows 98 con un código programado en Borland C++ que andaba pero al no ser una aplicación de Windows, no podíamos de ninguna manera simular el teclado. Entonces ya con medio proyecto realizado tuvimos que echarnos atrás, desistir del Borland C++ y utilizar las API de Windows. 29

30 Código en Borland: #include <dos.h> #include <conio.h> #include <stdio.h> #include <stdlib.h> #define LCR (base+3) /* registro de control de linea */ #define IER (base+1) /* registro de activacion de interrupciones */ #define DLL (base+0) /* parte baja del divisor */ #define DLM (base+1) /* parte alta del divisor */ #define MCR (base+4) /* registro de control del modem */ #define MSR (base+6) /* registro de estado del modem */ #define LSR (base+5) /* registro de estado de linea */ #define RBR (base+0) /* registro buffer de recepcion */ #define THR (base+0) /* registro de retencion de transmision */ #define DR 1 /* bit dato disponible del LSR */ #define OE 2 /* bit de error de overrun del LSR */ #define PE 4 /* bit de error de paridad del LSR */ #define FE 8 /* bit de error en bits de stop del LSR */ #define BI 16 /* bit de error de break en el LSR */ #define DSR 32 /* bit de data set ready */ unsigned com, base, dll, dlm, entrada, lsr, lcr, mcr, msr, divisor, con=0; char opc='z',c='z'; void impcart(void); void error(void); void correr(void); void ventana(void); void transdat(void); void main() com=1; princ: clrscr(); impcart(); printf("\n\r1:eleccion de puerto serie\n\r2:correr programa\n\r3:salir\n\ropcion: "); opc=getch(); switch (opc) case '1': sound(1250); delay(250); nosound(); ventana(); scanf ("%d", &com); sound(1250); delay(225); nosound(); delay(100); sound(1250); delay(225); nosound(); case '2': sound(1250); delay(225); 30

31 nosound(); delay(100); sound(1250); delay(225); nosound(); correr(); if(opc=='3'); else princ; void correr() clrscr(); impcart(); base=peek(0x40, (com-1)*2); if (base==0) error(); finc; divisor=115200/8300; //para 9600 baudios outportb (LCR, 0x83); /* DLAB=1, 8 bits, 1 stop, sin paridad */ outportb (IER, 0); outportb (DLL, divisor%256); //resto de la division por 256 outportb (DLM, divisor/256); //parte entera de la division por 256 dll=inportb(dll); dlm=inportb(dlm); outportb (LCR, 0x03); /* DLAB=0, 8 bits, 1 stop, sin paridad */ corr: outportb (MCR, 1); //limpio el control de modem do lsr=inportb(lsr); msr=inportb(msr); if(lsr & DR) outportb(mcr, 0); /* if (lsr & (PE FE BI)) error(); corr; */ while(!(lsr & DR) &&!kbhit()); entrada=inportb(rbr); if(kbhit()) c=getche(); if(c=='e') finc; clrscr(); printf("dato: %d", entrada); transdat(); corr; finc: c='z'; return; void error() 31

32 xy(23,11); textcolor(6); textbackground(4); cprintf(" error en la comunicacion "); textcolor(7); textbackground(0); getch(); return; void impcart() xy(23,1); textcolor(4); textbackground(3); cprintf(" control remoto IR \n"); textcolor(7); textbackground(0); return; void ventana() xy(23,11); textcolor(1); textbackground(3); cprintf(" ingrese el puerto preferido: "); textcolor(7); textbackground(0); return; void transdat() FILE *archi; archi=fopen("trans.txt", "w"); fprintf(archi, "%d", entrada); fclose(archi); return; En este código se puede ver el intento de envío del dato recibido por el puerto a través de un archivo de texto para interactuar con el programa que simulaba el teclado y que si corría bajo Windows. Si bien esta técnica presenta muchos problemas de errores conceptuales, conseguíamos una mínima interacción entre el control remoto y la PC. El grupo entero considera un enriquecimiento muy importante de conocimientos, aprendimos mucho acerca de Windows como sistema operativo y de la PC como sistema eléctrico. También consideramos haber aprendido mucho de cómo es que se encara un trabajo particular a nivel profesional. Agradecemos la interacción constante por parte de los profesores entrevistados, agradecemos toda su paciencia y participación para con los alumnos y los problemas con los que nos enfrentamos Gracias Ramiro 32

33 ANEXOS Anexo A: LISTADO DE PROGRAMAS Código fuente para el PIC16F84A: List P=16F84 pua equ 05h pub equ 06h copua equ 85h copub equ 86h inte equ 0Bh coti equ 01h opci equ 81h esta equ 03h cnttrb cbyte byte cont1 cont2 cont3 disp1 disp contr contr1 contr2 aux cblock endc 0X0C #define ir pub,0 #define rts pub,1 #define dtr pub,2 #define txd pub,3 #define rxd pub,4 #define dsr pub,5 #define cts pub,6 #define bot pub,7 #define ledv pua,0 #define ledr pua,2 #define prvz aux,0 #define resul aux,1 #define aplv aux,2 #define tsp aux,3 #define terr aux,4 #define resu aux,5 #define bit aux,6 #define cop aux,7 #define toif inte,2 #define rbo inte,4 #define tmro inte,5 #define todas inte,7 #define rbof inte,1 #define car esta,0 #define z esta,2 org 00h 33

34 inicio org inicio 04h intsub clrf esta bsf esta, 5 movlw b' ' movwf copub movlw b' ' movwf copua clrf opci ;iterrupcion por flanco ;desendente bsf opci,7 esta, 5 clrf pua bsf ledr clrf pub bsf dsr bsf rxd clrf inte clrf aux clrf disp movlw h'ff' movwf disp clrf disp1 clrf byte clrf cbyte movlw b' ' movwf inte ;habilita IR rcecptor esper btfss bot ;para retardo del pulsador esper ;la cantidad de pulsos de 1us ; para un reloj de 4 Mhz son: movlw d'33' ;1 movwf cont1 ;1 con1 ; movlw d'255' ;1*k movwf cont2 ;1*k con2 ; decfsz cont2,1 ;255*k+k=256*k con2 ;2*255*k=510*k decfsz cont1,1 ;k+1 con1 ;2*k btfss bot ;************** esper ;771*k+3=>si 771*k+3=20 ms/1 ;us=25000=>k=32.42~33 clrf disp1 prvz bsf ledr call retalar btfss bot esper movlw b' ' xorwf aux, 1 bsf ledv call retalar ledv btfss tsp esper call retalar bsf ledv 34

35 call retalar ledv esper ;****************************************************** ledat bsf esta,5 ;con un reloj de 4 Mhz: movlw b' ' ;tb'=889 us ;->tb=2*tb'=1.778 ms movwf opci ;TOIF= ;div*(257 us-tin)+2=889 esta,5 ;con div=4=> ;tin= /4=35.25~35 ;pero experimentalmente ;~36 entce ;voy a esperar ;que pase el primer ;bit de ;sincr btfss ir entce movlw d'147' ;pero la primer pregunta ;es a TOIF/2 movwf coti ;=>con div=4, ;tin= => ;tin~146, pero ;experimentalmente ~147 toif clrf byte bit clrf disp1 movlw d'26' movwf cnttrb etmr btfss toif etmr toif movlw d'36' movwf coti decf cnttrb,1 movlw d'24' subwf cnttrb,0 btfss z etmr comie btfss toif comie movlw d'36' movwf coti toif decf cnttrb,1 movlw d'12' subwf cnttrb,0 btfss z dsipo bit incf cnttrb,1 ;para corregir tb el ultimo nibble cmnz dsipo movlw b' ' xorwf aux,1 btfss bit 35

36 sgdo btfsc ir cerx bsf disp1,0 ;en disp1 esta guardando 1 ;bit de ;"T" y los 5 de ;dispositivo comie cerx disp1,0 comie sgdo btfss ir ceroz btfss disp1,0 listim car rlf disp1,1 comie ceroz btfsc disp1,0 listim car rlf disp1,1 comie cmnz btfss toif cmnz movlw d'36' movwf coti toif comma movlw b' ' xorwf aux,1 btfss bit sgdz btfsc ir crxz bsf byte,0 parch crxz byte,0 ;en byte guarda los 6 bit del comando parch sgdz btfss ir crz btfss byte,0 listim car rlf byte,1 parch crz btfsc byte,0 listim car rlf byte,1 parch decfsz cnttrb,1 cmnz acoreg ;pongo un cero en el bit 7 36

37 ;de byte si se da ;codigo de repeticion car rrf byte,1 comf byte,1 ;los datos estan ;exactamente al reves, ;comprobado con ;sciloscopio movlw b' ' andwf disp1,1 andwf byte,1 btfss disp1,5 not btfss disp,5 ciro byte,6 listi ciro bsf disp,5 bsf byte,6 listi not ;pongo un uno en el bit 7 ;de byte si no se da ;codigo de repeticion btfsc disp,5 cir byte,6 listi cir disp,5 bsf byte,6 listi listim bsf terr listi return ;****************************************************** cmprb movf disp1,0 subwf disp,0 btfsc z bsf cop finto return ;****************************************************** intsub todas call ledat btfsc terr finle btfsc prvz disp1,0 movwf disp bsf prvz ledr bsf ledv call retalar ledv fingdi call cmprb btfss cop 37

38 finle cop bsf ledv btfss tsp serie call datopcp finle serie call datopcs finle ledv terr rbof bsf todas retfie ;****************************************************** datopcs movf byte,0 movwf cbyte movlw d'09' movwf contr dsr ;espero un rato lo que dura un ;mensaje (25ms) y si la pc no me ;contesta, fue... bsf esta,5 ;para 25ms =>con div=128=> ;tin~61.7~62, pero ;experimentalmente ~61 movlw b' ' movwf opci movlw b' ' movwf copub esta,5 movlw d'61' movwf coti toif agnte btfss dtr acseg btfss toif agnte bsf ledr call retalar ledr fintr acseg bsf esta,5 movlw b' ' movwf opci esta,5 ;con un reloj de 4 Mhz, y ;para 9600 b/s: toif ;tb=1/9600= us rxd ;TOIF-> ;us=>toif=(257us*div)+2 ;=>div= ;us/257us=0.398 movlw d'206' ;=>adopto div=2 y preseteo ;el TMRO: movwf coti ;=>(257-in)*2us+2us= ; us=> ;tin= /2= ;205.92~206 ;experimentalmente ~206 38

39 toif sgteb estmr btfss cbyte,0 ;0 para empezar; ;transmitiendo el LSB. 7 ;de lo contrario. Se ;modifica el sentido de ;rotacion tb escer bsf rxd rrf cbyte,1 sgteb escer rxd rrf cbyte,1 sgteb btfss toif sgteb movlw d'206' movwf coti toif decfsz contr,1 estmr dtlst btfss toif dtlst bsf rxd fintr bsf dsr bsf rxd return ;************************************************* retalar movlw d'20' movwf cont1 bsf esta,5 movlw b' ' movwf opci esta,5 aquie clrf coti toif pruev btfss toif pruev decfsz cont1,1 aquie return ;******************************************************* datopcp bsf esta, 5 movlw b' ' movwf copub esta, 5 clrf cbyte btfsc byte, 0 bsf cbyte, 5 btfsc byte, 1 bsf cbyte, 6 btfsc byte, 2 bsf cbyte, 3 39

40 btfsc byte, 3 bsf cbyte, 1 movf cbyte, 0 movwf pub ;espero un rato lo que dura un ;mensaje ; ;(25ms) y si la pc no me ;contesta, fue... bsf esta,5 ;para 25ms =>con div=128=> ;tin~61.7~62, ;pero experimentalmente ~61 movlw b' ' movwf opci esta,5 movlw d'61' movwf coti toif agntep btfsc dtr acsegp btfss toif agntep bsf ledr call retalar ledr fintra acsegp clrf cbyte btfsc byte, 4 bsf cbyte, 5 btfsc byte, 5 bsf cbyte, 6 btfsc byte, 6 bsf cbyte, 3 btfsc byte, 7 bsf cbyte, 1 movf cbyte, 0 movwf pub fintra call retalar clrf pub return ;*************************************************** END 40

41 Código fuente para la PC: WinMain: #include <windows.h> #include <IDS3.h> #include <iostream> #include <string.h> #include <assert.h> #include <stdlib.h> #include <windows.h> #include <cstdlib> using namespace std; typedef struct char Puerto[5]; int Baudios; int BitsDatos; int BitsStop; char Paridad[25]; tipoopciones; // Variables globales: tipoopciones Ops; // Opciones HGLOBAL hcadena, hsalida; // Buffers int *sal, *cad; DCB dcb; // Puerto serie HANDLE idcomdev; bool Comunicacion; int aux2; char dinum[20]="c:\\nume.txt"; char diide[20]="c:\\iden.txt"; FILE *numeros, *ide; int num[50], con1, tec[50]; char idtf[22][80]; // Prototipos: void IniciarBuffers(); void comenzar(void); void actualizar(); void actualizaride(); void LiberarBuffers(); bool InicioComunicacion(void); bool FinComunicacion(void); int lee_el_puerto(void); void LeeSerie(); void crear_la_tabla(); void crear_la_tablaide(); void cargar_archivo(); void cargar_archivoide(); /* Declaración del procedimiento de ventana */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); BOOL CALLBACK DlgProc(HWND, UINT, WPARAM, LPARAM); BOOL CALLBACK DlgProc2(HWND, UINT, WPARAM, LPARAM); 41

42 /* Declaraciones de tipos */ typedef struct stdatos int Teclas; char identif1[80]; char identif2[80]; char identif3[80]; char identif4[80]; char identif5[80]; char identif6[80]; char identif7[80]; char identif8[80]; char identif9[80]; char identif10[80]; char identif11[80]; char identif12[80]; char identif13[80]; char identif14[80]; char identif15[80]; char identif16[80]; char identif17[80]; char identif18[80]; char identif19[80]; char identif20[80]; char identif21[80]; DATOS; int WINAPI WinMain (HINSTANCE hthisinstance, HINSTANCE hprevinstance, LPSTR lpszargument, int nfunsterstil) HWND hwnd; /* Manipulador de ventana */ MSG mensaje; /* Mensajes recibidos por la aplicación */ WNDCLASSEX wincl; /* Estructura de datos para la clase de ventana */ num[0]=eof; idtf[21][0]=eof; tec[0]=eof; /* Estructura de la ventana */ wincl.hinstance = hthisinstance; wincl.lpszclassname = "NUESTRA_CLASE"; wincl.lpfnwndproc = WindowProcedure; /* Esta función es invocada por Windows */ wincl.style = CS_DBLCLKS; /* Captura los doble-clicks */ wincl.cbsize = sizeof (WNDCLASSEX); /* Usar icono y puntero por defecto */ wincl.hicon = LoadIcon (hthisinstance, "icono"); wincl.hiconsm = LoadIcon (hthisinstance, "icono"); wincl.hcursor = LoadCursor (NULL, IDC_ARROW); wincl.lpszmenuname = "Menu"; wincl.cbclsextra = 0; /* Sin información adicional para la */ wincl.cbwndextra = 0; /* clase o la ventana */ /* Usar el color de fondo por defecto para la ventana */ wincl.hbrbackground = (HBRUSH) COLOR_BACKGROUND; /* Registrar la clase de ventana, si falla, salir del programa */ if(!registerclassex(&wincl)) return 0; 42

43 /* La clase está registrada, crear la ventana */ hwnd = CreateWindowEx( 0, /* Posibilidades de variación */ "NUESTRA_CLASE", /* Nombre de la clase */ "Control Remoto", /* Texto del título */ WS_OVERLAPPEDWINDOW, /* Tipo por defecto */ CW_USEDEFAULT, /* Windows decide la posición */ CW_USEDEFAULT, /* donde se coloca la ventana */ 200, /* Ancho */ 100, /* Alto en pixels */ HWND_DESKTOP, /* La ventana es hija del escritorio */ NULL, /* Sin menú */ hthisinstance, /* Manipulador de instancia */ NULL /* No hay datos de creación de ventana */ ); /* Mostrar la ventana */ ShowWindow(hwnd, SW_SHOWDEFAULT); /* Bucle de mensajes, se ejecuta hasta que haya error o GetMessage devuelva FALSE */ while(true == GetMessage(&mensaje, NULL, 0, 0)) /* Traducir mensajes de teclas virtuales a mensajes de caracteres */ TranslateMessage(&mensaje); /* Enviar mensaje al procedimiento de ventana */ DispatchMessage(&mensaje); /* Salir con valor de retorno */ return mensaje.wparam; /* Esta función es invocada por la función DispatchMessage() */ LRESULT CALLBACK WindowProcedure(HWND hwnd, UINT msg, WPARAM wparam, LPARAM lparam) static HINSTANCE hinstance; static DATOS Datos; switch (msg) /* manipulador del mensaje */ case WM_CREATE: hinstance = ((LPCREATESTRUCT)lParam)->hInstance; /* Inicialización de los datos de la aplicación */ Datos.Teclas = 1; return 0; case WM_COMMAND: if(loword(wparam) == CM_DIALOGO) DialogBoxParam(hInstance, "DialogoTeclas", hwnd, DlgProc, (LPARAM)&Datos); if(loword(wparam) == CM_DIALOGO2) DialogBoxParam(hInstance, "DialogoTeclasmos", hwnd, DlgProc2, (LPARAM)&Datos); if(loword(wparam) == CM_DIALOGO3) comenzar(); if(loword(wparam) == CM_DIALOGO4) crear_la_tabla(); 43

44 case WM_DESTROY: PostQuitMessage(0); mensajes */ default: */ return 0; /* envía un mensaje WM_QUIT a la cola de /* para los mensajes de los que no nos ocupamos return DefWindowProc(hwnd, msg, wparam, lparam); BOOL CALLBACK DlgProc(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam) BOOL NumeroOk; static DATOS *datos; int nume, auxi, auxi2; if((numeros=fopen(dinum, "rb"))==null) crear_la_tabla(); else fclose(numeros); cargar_archivo(); switch (msg) /* manipulador del mensaje */ case WM_INITDIALOG: datos = (DATOS *)lparam; SetDlgItemInt(hDlg, ID_TECLAS, (UINT)datos->Teclas, FALSE); SetFocus(GetDlgItem(hDlg, ID_TECLAS)); return FALSE; MB_OK); case WM_COMMAND: switch(loword(wparam)) case IDOK: nume = GetDlgItemInt(hDlg, ID_TECLAS, &NumeroOk, FALSE); if(numerook) inv: datos->teclas = nume; EndDialog(hDlg, FALSE); if(nume>21 nume<1) MessageBox(hDlg, "Entrada Invalida", "Relacionando", return FALSE; auxi=lee_el_puerto(); MessageBox(hDlg, "Codigo Guardado", "Relacionando", MB_OK); auxi2=num[nume-1]; for(con1=0;con1<21;con1++) if(num[con1]==auxi) num[con1]=auxi2; con1++; num[nume-1]=auxi; actualizar(); else MessageBox(hDlg, "Número no válido", "Error", MB_ICONEXCLAMATION MB_OK); case IDCANCEL: 44

45 EndDialog(hDlg, FALSE); return TRUE; return FALSE; BOOL CALLBACK DlgProc2(HWND hdlg, UINT msg, WPARAM wparam, LPARAM lparam) static DATOS *datos; if((ide=fopen(diide, "a"))==null) crear_la_tablaide(); else fclose(ide); cargar_archivoide(); switch (msg) /* manipulador del mensaje */ case WM_INITDIALOG: datos = (DATOS *)lparam; SetDlgItemText(hDlg, ID_IDENT1, idtf[0]); SetDlgItemText(hDlg, ID_IDENT2, idtf[1]); SetDlgItemText(hDlg, ID_IDENT3, idtf[2]); SetDlgItemText(hDlg, ID_IDENT4, idtf[3]); SetDlgItemText(hDlg, ID_IDENT5, idtf[4]); SetDlgItemText(hDlg, ID_IDENT6, idtf[5]); SetDlgItemText(hDlg, ID_IDENT7, idtf[6]); SetDlgItemText(hDlg, ID_IDENT8, idtf[7]); SetDlgItemText(hDlg, ID_IDENT9, idtf[8]); SetDlgItemText(hDlg, ID_IDENT10, idtf[9]); SetDlgItemText(hDlg, ID_IDENT11, idtf[10]); SetDlgItemText(hDlg, ID_IDENT12, idtf[11]); SetDlgItemText(hDlg, ID_IDENT13, idtf[12]); SetDlgItemText(hDlg, ID_IDENT14, idtf[13]); SetDlgItemText(hDlg, ID_IDENT15, idtf[14]); SetDlgItemText(hDlg, ID_IDENT16, idtf[15]); SetDlgItemText(hDlg, ID_IDENT17, idtf[16]); SetDlgItemText(hDlg, ID_IDENT18, idtf[17]); SetDlgItemText(hDlg, ID_IDENT19, idtf[18]); SetDlgItemText(hDlg, ID_IDENT20, idtf[19]); SetDlgItemText(hDlg, ID_IDENT21, idtf[20]); SetFocus(GetDlgItem(hDlg, ID_IDENT1)); return FALSE; case WM_COMMAND: switch(loword(wparam)) case IDOK: GetDlgItemText(hDlg, ID_IDENT1, datos->identif1, 80); strcpy(idtf[0], datos->identif1); GetDlgItemText(hDlg, ID_IDENT2, datos->identif2, 80); strcpy(idtf[1], datos->identif2); GetDlgItemText(hDlg, ID_IDENT3, datos->identif3, 80); strcpy(idtf[2], datos->identif3); GetDlgItemText(hDlg, ID_IDENT4, datos->identif4, 80); strcpy(idtf[3], datos->identif4); GetDlgItemText(hDlg, ID_IDENT5, datos->identif5, 80); strcpy(idtf[4], datos->identif5); GetDlgItemText(hDlg, ID_IDENT6, datos->identif6, 80); strcpy(idtf[5], datos->identif6); GetDlgItemText(hDlg, ID_IDENT7, datos->identif7, 80); strcpy(idtf[6], datos->identif7); 45

46 GetDlgItemText(hDlg, ID_IDENT8, datos->identif8, 80); strcpy(idtf[7], datos->identif8); GetDlgItemText(hDlg, ID_IDENT9, datos->identif9, 80); strcpy(idtf[8], datos->identif9); GetDlgItemText(hDlg, ID_IDENT10, datos->identif10, 80); strcpy(idtf[9], datos->identif10); GetDlgItemText(hDlg, ID_IDENT11, datos->identif11, 80); strcpy(idtf[10], datos->identif11); GetDlgItemText(hDlg, ID_IDENT12, datos->identif12, 80); strcpy(idtf[11], datos->identif12); GetDlgItemText(hDlg, ID_IDENT13, datos->identif13, 80); strcpy(idtf[12], datos->identif13); GetDlgItemText(hDlg, ID_IDENT14, datos->identif14, 80); strcpy(idtf[13], datos->identif14); GetDlgItemText(hDlg, ID_IDENT15, datos->identif15, 80); strcpy(idtf[14], datos->identif15); GetDlgItemText(hDlg, ID_IDENT16, datos->identif16, 80); strcpy(idtf[15], datos->identif16); GetDlgItemText(hDlg, ID_IDENT17, datos->identif17, 80); strcpy(idtf[16], datos->identif17); GetDlgItemText(hDlg, ID_IDENT18, datos->identif18, 80); strcpy(idtf[17], datos->identif18); GetDlgItemText(hDlg, ID_IDENT19, datos->identif19, 80); strcpy(idtf[18], datos->identif19); GetDlgItemText(hDlg, ID_IDENT20, datos->identif20, 80); strcpy(idtf[19], datos->identif20); GetDlgItemText(hDlg, ID_IDENT21, datos->identif21, 80); strcpy(idtf[20], datos->identif21); actualizaride(); EndDialog(hDlg, FALSE); case IDCANCEL: EndDialog(hDlg, FALSE); return TRUE; return FALSE; int lee_el_puerto(void) int c; DWORD dwevtmask; DWORD n, param, id; // Inicializar opciones del puerto serie: strcpy(ops.puerto, "COM1"); Ops.Baudios = 9600; Ops.BitsDatos = 8; Ops.BitsStop = 1; strcpy(ops.paridad, "Sin paridad"); IniciarBuffers(); // No se ha establecido comunicación: Comunicacion = false; if(!iniciocomunicacion()) LiberarBuffers(); return 1; 46

47 do while(!((waitcommevent(idcomdev, &dwevtmask, NULL))&&(dwEvtMask & EV_RXCHAR))); LeeSerie(); c=*cad; FinComunicacion(); LiberarBuffers(); aux2=c&127; c=c&63; aux2=aux2-c; return(c); // Reservar memoria global para buffers del puerto serie: void IniciarBuffers() hcadena = GlobalAlloc(GMEM_MOVEABLE, 4096); hsalida = GlobalAlloc(GMEM_MOVEABLE, 4096); cad = (int *)GlobalLock(hCadena); sal = (int *)GlobalLock(hSalida); // Liberar memoria global de buffers del puerto serie: void LiberarBuffers() GlobalUnlock(hCadena); GlobalUnlock(hSalida); GlobalFree(hCadena); GlobalFree(hSalida); // Iniciar el puerto serie: bool InicioComunicacion(void) bool fsuccess; // Abrir el fichero asociado al puerto: idcomdev = CreateFile(Ops.Puerto, GENERIC_READ GENERIC_WRITE, 0, NULL, OPEN_EXISTING, 0, NULL); if(idcomdev ==INVALID_HANDLE_VALUE) return false; // Leer estructura de control del puerto serie, cdb: fsuccess = GetCommState(idComDev, &dcb); if(!fsuccess) return false; // Modificar el dcb según las opciones definidas: dcb.baudrate = Ops.Baudios; dcb.bytesize = Ops.BitsDatos; if(!strcmp(ops.paridad, "Sin paridad")) dcb.parity = NOPARITY; if(!strcmp(ops.paridad, "Paridad par")) dcb.parity = EVENPARITY; if(!strcmp(ops.paridad, "Paridad impar")) dcb.parity = ODDPARITY; switch(ops.bitsstop) case 1: dcb.stopbits = ONESTOPBIT; case 2: dcb.stopbits = TWOSTOPBITS; 47

48 // Modificar la estructura de control del puerto serie: fsuccess = SetCommState(idComDev, &dcb); if(!fsuccess) return false; // Especifica que queremos monitorizar la recepción de datos: if(!setcommmask(idcomdev, EV_RXCHAR)) return false; // Comunicación establecida: Comunicacion = true; return true; // Finalizar comunicación por puerto serie: bool FinComunicacion(void) // Liberar máscara de eventos del puerto serie: SetCommMask(idComDev, 0); // Cerrar el puerto serie: CloseHandle(idComDev); // Comunicación interrumpida: Comunicacion = false; return true; // Leer datos del puerto serie: void LeeSerie() int i, j, k; DWORD x; COMSTAT cs; // Actualizar COMSTAT, sirve para // averiguar el número de bytes en el buffer de entrada: ClearCommError(idComDev, &x, &cs); // Leer cs.cbinque caracteres: ReadFile(idComDev, cad, cs.cbinque, &x, NULL); // Actualizar el fin de cadena: cad[x]=0; return; void comenzar() int delcontr, aux, i, k=0; //inicio if((numeros=fopen(dinum, "rb"))==null) crear_la_tabla(); else fclose(numeros); cargar_archivo(); if((ide=fopen(diide, "r"))==null) crear_la_tablaide(); else fclose(ide); cargar_archivoide(); for(i=0;i<21;i++) tec[i]=i+1; tec[21]=eof; otra: 48

49 delcontr=lee_el_puerto(); con1=0; while(num[con1]!=delcontr && (con1<100)) con1++; if((num[con1]==eof) ((aux!=9)&&(aux!=10)&&(aux2==0))) otra; aux=tec[con1]; switch(aux) case 1: keybd_event(vk_right,0xcd,0, 0); derecha keybd_event(vk_right,0xcd,keyeventf_keyup,0); derecha // Periona Flecha // Suelta Flecha case 2: if((k%2)==0) keybd_event(vk_menu,0xb8,0, 0); //Presiona Alt else keybd_event(vk_menu,0xb8,keyeventf_keyup,0); // Suelta Alt k++; case 3: keybd_event(vkkeyscan('b'),0xb0,0, 0); // Presiona 'B' keybd_event(vkkeyscan('b'),0xb0, KEYEVENTF_KEYUP,0); // Suelta 'B' case 4: keybd_event(vkkeyscan('z'),0xac,0, 0); // Presiona 'Z' keybd_event(vkkeyscan('z'),0xac, KEYEVENTF_KEYUP,0); // Suelta 'Z' case 5: keybd_event(vkkeyscan('x'),0xad,0, 0); // Presiona 'X' keybd_event(vkkeyscan('x'),0xad, KEYEVENTF_KEYUP,0); // Suelta 'X' case 6: keybd_event(vk_return,0x9c,0, 0); // Periona Enter keybd_event(vk_return,0x9c,keyeventf_keyup,0); // Suelta Enter case 7: keybd_event(vkkeyscan('l'),0xa6,0, 0); // Presiona 'L' keybd_event(vkkeyscan('l'),0xa6, KEYEVENTF_KEYUP,0); // Suelta 'L' case 8: keybd_event(vk_rshift,0xb6,0, 0); // Periona Shift derecho keybd_event(vkkeyscan('l'),0xa6,0, 0); // Presiona 'L' keybd_event(vkkeyscan('l'),0xa6, KEYEVENTF_KEYUP,0); // Suelta 'L' keybd_event(vk_rshift,0xb6,keyeventf_keyup,0); // Suelta Shift derecho case 9: keybd_event(vk_up,0xc8,0, 0); // Periona Flecha arriba keybd_event(vk_up,0xc8,keyeventf_keyup,0); // Suelta Flecha arriba case 10: keybd_event(vk_down,0xd0,0, 0); //Presiona Flecha abajo keybd_event(vk_down,0xd0,keyeventf_keyup,0); Flecha abajo case 11: keybd_event(vk_escape,0x81,0, 0); keybd_event(vk_escape,0x81, KEYEVENTF_KEYUP,0); case 12: keybd_event(vk_space,0xb9,0, 0); espaciadora keybd_event(vk_space,0xb9, KEYEVENTF_KEYUP,0); espaciadora case 13: keybd_event(vk_back,0x8e,0, 0); // Suelta // Presiona Esape // Suelta Esape // Presiona Barra // Suelta Barra // Presiona Back Space 49

50 keybd_event(vk_back,0x8e, KEYEVENTF_KEYUP,0); // suelta Back Space case 14: keybd_event(vk_menu,0xb8,0, 0); //Presiona Alt keybd_event(vk_space,0xb9,0, 0); // Presiona Barra espaciadora keybd_event(vk_space,0xb9, KEYEVENTF_KEYUP,0); // Suelta Barra espaciadora keybd_event(vk_menu,0xb8,keyeventf_keyup,0); // Suelta Alt case 15: keybd_event(vk_menu,0xb8,0, 0); //Presiona Alt keybd_event(vk_f4,0xbe,0, 0); // Presiona Tecla F4 keybd_event(vk_f4,0xbe, KEYEVENTF_KEYUP,0); // Suelta Tecla F4 keybd_event(vk_menu,0xb8,keyeventf_keyup,0); // Suelta Alt case 16: keybd_event(vk_control,0x9d,0, 0); // Periona Ctrl keybd_event(vk_tab,0x8f,0, 0); //Prtesiona tab keybd_event(vk_tab,0x8f, KEYEVENTF_KEYUP,0); //suelta tab keybd_event(vk_control,0x9d,keyeventf_keyup,0); // Suelta Ctrl case 17: keybd_event(vk_tab,0x8f,0, 0); //Prtesiona tab keybd_event(vk_tab,0x8f, KEYEVENTF_KEYUP,0); //suelta tab case 18: keybd_event(vk_left,0xcb,0, 0); // Flecha izquierda keybd_event(vk_left,0xcb, KEYEVENTF_KEYUP,0); // Flecha izquierda case 19: keybd_event(vk_lwin,0x9b,0, 0); // Periona Windows keybd_event(vk_lwin,0x9b,keyeventf_keyup,0); // Suelta Windows case 20: keybd_event(vk_lwin,0x9c,0, 0); // Periona Windows keybd_event(vkkeyscan('m'),0xa6,0, 0); // Presiona 'M' keybd_event(vkkeyscan('m'),0xa6, KEYEVENTF_KEYUP,0); // Suelta 'M' keybd_event(vk_lwin,0x9c,keyeventf_keyup,0); // Suelta Windows case 21: keybd_event(vk_rshift,0xb6,0, 0); // Periona Shift derecho keybd_event(vk_tab,0x8f,0, 0); //Prtesiona tab keybd_event(vk_tab,0x8f, KEYEVENTF_KEYUP,0); //suelta tab keybd_event(vk_rshift,0xb6,keyeventf_keyup,0); // Suelta Shift derecho otra; void crear_la_tabla() num[0]=52; num[1]=9; num[2]=3; num[3]=1; num[4]=2; num[5]=12; num[6]=7; num[7]=8; num[8]=32; num[9]=33; num[10]=55; num[11]=0; num[12]=48; num[13]=15; 50

51 num[14]=56; num[15]=5; num[16]=4; num[17]=50; num[18]=54; num[19]=53; num[20]=6; num[21]=eof; numeros=fopen(dinum, "wb"); for(con1=0;con1<21;con1++) fprintf(numeros, "%d\n", num[con1]); fclose(numeros); fclose(numeros); return; void cargar_archivo() numeros=fopen(dinum, "rb"); for(con1=0;con1<21;con1++) fscanf(numeros, "%d", &num[con1]); fclose(numeros); return; void actualizar() numeros=fopen(dinum, "wb"); con1=0; do fprintf(numeros, "%d\n", num[con1]); con1++; while(num[con1]!=eof); fclose(numeros); return; void actualizaride() ide=fopen(diide, "w"); fprintf(ide, "p\n"); for(con1=0;con1<21;con1++) fprintf(ide, "%s\n", idtf[con1]); fprintf(ide, "%d\n", EOF); fclose(ide); return; void cargar_archivoide() char pru; ide=fopen(diide, "r"); fscanf(ide, "%c\n", &pru); for(con1=0;con1<21;con1++) fscanf(ide, "%s\n", &idtf[con1][0]); fclose(ide); return; void crear_la_tablaide() for(con1=0;con1<21; con1++) strcpy(idtf[con1], " "); actualizaride(); return; 51

52 Archivo de Recursos: #include <windows.h> #include <IDS3.H> Menu MENU BEGIN POPUP "&Principal" BEGIN MENUITEM "&Reorganizar Botones", CM_DIALOGO MENUITEM SEPARATOR MENUITEM "&Recordatorios", CM_DIALOGO2 MENUITEM SEPARATOR MENUITEM "&Comenzar", CM_DIALOGO3 MENUITEM SEPARATOR MENUITEM "&Default Botones", CM_DIALOGO4 END END icono ICON "ICONGROUP_92.ico" DialogoTeclas DIALOG 0, 0, 145, 200 STYLE DS_MODALFRAME WS_POPUP WS_VISIBLE WS_CAPTION CAPTION "Ingresar Tecla" FONT 8, "Helv" CONTROL "1) Flchder", -1, "STATIC", 8, 5, 52, 34 CONTROL "2) Alt", -1, "STATIC", 8, 20, 52, 34 CONTROL "3) B", -1, "STATIC", 8, 35, 52, 34 CONTROL "4) Z", -1, "STATIC", 8, 50, 52, 34 CONTROL "5) X", -1, "STATIC", 8, 65, 52, 34 CONTROL "6) Enter", -1, "STATIC", 8, 85, 52, 34 CONTROL "7) L", -1, "STATIC", 8, 100, 52, 34 CONTROL "8) Shift+L", -1, "STATIC", 8, 115, 52, 34 CONTROL "9) Flcharr", -1, "STATIC", 8, 130, 52, 34 CONTROL "10) Flchaba", -1, "STATIC", 8, 145, 52, 34 CONTROL "11) Esc", -1, "STATIC", 88, 5, 52, 34 52

53 CONTROL "12) BarEspc", -1, "STATIC", 88, 20, 52, 34 CONTROL "13) BackSpc", -1, "STATIC", 88, 35, 52, 34 CONTROL "14) Alt+Espc", -1, "STATIC", 88, 50, 52, 34 CONTROL "15) Alt+F4", -1, "STATIC", 88, 65, 52, 34 CONTROL "16) Ctrl+Tab", -1, "STATIC", 88, 85, 52, 34 CONTROL "17) Tab", -1, "STATIC", 88, 100, 52, 34 CONTROL "18) Flchizq", -1, "STATIC", 88, 115, 52, 34 CONTROL "19) Inicio", -1, "STATIC", 88, 130, 52, 34 CONTROL "20) Escritorio", -1, "STATIC", 88, 145, 52, 34 CONTROL "21) Shift+Tab", -1, "STATIC", 88, 160, 52, 34 CONTROL "Eleccion:", -1, "static", 8, 160, 52, 34 CONTROL "", ID_TECLAS, "EDIT", ES_NUMBER ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 46, 160, 36, 12 CONTROL "Aceptar", IDOK, "BUTTON", BS_DEFPUSHBUTTON BS_CENTER WS_CHILD WS_VISIBLE WS_TABSTOP, 75, 175, 45, 14 CONTROL "Cancelar", IDCANCEL, "BUTTON", BS_PUSHBUTTON BS_CENTER WS_CHILD WS_VISIBLE WS_TABSTOP, 15, 175, 45, 14 DialogoTeclasmos DIALOG 0, 0, 310, 200 STYLE DS_MODALFRAME WS_POPUP WS_VISIBLE WS_CAPTION CAPTION "Relaciones Disponibles" FONT 8, "Helv" CONTROL "<-Recordartorios->", -1, "static", 121, 5, 60, 34 CONTROL "1) Flchder :", -1, "STATIC", 8, 5, 52, 34 CONTROL "", ID_IDENT1, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 5, 66, 12 CONTROL "2) Alt :", -1, "STATIC", 8, 20, 52, 34 53

54 CONTROL "", ID_IDENT2, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 20, 66, 12 CONTROL "3) B :", -1, "STATIC", 8, 35, 52, 34 CONTROL "", ID_IDENT3, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 35, 66, 12 CONTROL "4) Z :", -1, "STATIC", 8, 50, 52, 34 CONTROL "", ID_IDENT4, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 50, 66, 12 CONTROL "5) X :", -1, "STATIC", 8, 65, 52, 34 CONTROL "", ID_IDENT5, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 65, 66, 12 CONTROL "6) Enter :", -1, "STATIC", 8, 85, 52, 34 CONTROL "", ID_IDENT6, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 85, 66, 12 CONTROL "7) L :", -1, "STATIC", 8, 100, 52, 34 CONTROL "", ID_IDENT7, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 100, 66, 12 CONTROL "8) Shift+L :", -1, "STATIC", 8, 115, 60, 34 CONTROL "", ID_IDENT8, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 115, 66, 12 CONTROL "9) Flcharr :", -1, "STATIC", 8, 130, 60, 34 CONTROL "", ID_IDENT9, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 130, 66, 12 CONTROL "10) Flchaba :", -1, "STATIC", 8, 145, 60, 34 CONTROL "", ID_IDENT10, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 145, 66, 12 CONTROL ":12) Esc", -1, "STATIC", 250, 5, 52, 34 CONTROL "", ID_IDENT11, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 5, 66, 12 CONTROL ":13) BarEsp", -1, "STATIC", 250, 20, 52, 34 CONTROL "", ID_IDENT12, "EDIT", 54

55 ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 20, 66, 12 CONTROL ":14 BackSpa", -1, "STATIC", 250, 35, 52, 34 CONTROL "", ID_IDENT13, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 35, 66, 12 CONTROL ":15) Alt+Spac", -1, "STATIC", 250, 50, 52, 34 CONTROL "", ID_IDENT14, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 50, 66, 12 CONTROL ":16) Alt+F4", -1, "STATIC", 250, 65, 52, 34 CONTROL "", ID_IDENT15, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 65, 66, 12 CONTROL ":17) Ctrl+Tab", -1, "STATIC", 250, 85, 52, 34 CONTROL "", ID_IDENT16, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 85, 66, 12 CONTROL ":18) Tab", -1, "STATIC", 250, 100, 52, 34 CONTROL "", ID_IDENT17, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 100, 66, 12 CONTROL ":19) Flchizq", -1, "STATIC", 250, 115, 52, 34 CONTROL "", ID_IDENT18, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 115, 66, 12 CONTROL ":20) Inicio", -1, "STATIC", 250, 130, 52, 34 CONTROL "", ID_IDENT19, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 130, 66, 12 CONTROL ":21) Escritorio", -1, "STATIC", 250, 145, 52, 34 CONTROL "", ID_IDENT20, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 180, 145, 66, 12 CONTROL "11) Shift+Tab :", -1, "STATIC", 8, 160, 70, 34 CONTROL "", ID_IDENT21, "EDIT", ES_LEFT WS_CHILD WS_VISIBLE WS_BORDER WS_TABSTOP, 55, 160, 66, 12 CONTROL "Aceptar", IDOK, "BUTTON", BS_DEFPUSHBUTTON BS_CENTER WS_CHILD WS_VISIBLE WS_TABSTOP, 250, 175, 50, 14 CONTROL "Cancelar", IDCANCEL, "BUTTON", BS_PUSHBUTTON BS_CENTER WS_CHILD WS_VISIBLE WS_TABSTOP, 55

56 160, 175, 50, 14 Código de la librería IDS3.H Esta librería la creamos nosotros para suministrar las definiciones de las constantes que luego usamos tanto en el WinMain como en el archivo de recursos /* Identificadores */ /* Identificadores de comandos */ #define CM_DIALOGO 101 #define CM_DIALOGO2 102 #define CM_DIALOGO3 103 #define CM_DIALOGO4 104 /* Identificadores de diálogo */ #define ID_TECLAS 100 #define ID_TECLASMOS 101 #define ID_IDENT1 102 #define ID_IDENT2 103 #define ID_IDENT3 104 #define ID_IDENT4 105 #define ID_IDENT5 106 #define ID_IDENT6 122 #define ID_IDENT7 107 #define ID_IDENT8 108 #define ID_IDENT9 109 #define ID_IDENT #define ID_IDENT #define ID_IDENT #define ID_IDENT #define ID_IDENT #define ID_IDENT #define ID_IDENT #define ID_IDENT #define ID_IDENT #define ID_IDENT #define ID_IDENT #define ID_IDENT

57 Anexo B: Sitios en la WEB /Davshomepage.htm article137.html#lfindex Scan Codes by George Hernandez.htm Anexo C: GL3276A-datasheets (no incluído en este documento) Anexo D: MAX232-datasheets (no incluído en este documento) 57

Anexo B. Comunicaciones entre mc y PC

Anexo B. Comunicaciones entre mc y PC Anexo B Comunicaciones entre mc y PC En este apartado se hará hincapié en los comandos para el manejo del módulo de comunicaciones desde el PC. Conociendo estos comando se podrá realizar una aplicación

Más detalles

Creación de Funciones de Conducción

Creación de Funciones de Conducción Creación de Funciones de Conducción Requerimientos Para el desarrollo de esta actividad se requiere que: Contemos con un robot BoeBot armado con placa Arduino. Repetición En estos momentos habremos notado

Más detalles

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD

GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD GESTIÓN DOCUMENTAL PARA EL SISTEMA DE CALIDAD Manual de usuario 1 - ÍNDICE 1 - ÍNDICE... 2 2 - INTRODUCCIÓN... 3 3 - SELECCIÓN CARPETA TRABAJO... 4 3.1 CÓMO CAMBIAR DE EMPRESA O DE CARPETA DE TRABAJO?...

Más detalles

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación

Servicio de Informática Vicerrectorado de Tecnologías de la Información y la Comunicación Vicerrectorado de Tecnologías de la Información y la Comunicación Conexión mediante Escritorio Remoto de Windows Última Actualización 16 de septiembre de 2013 Histórico de cambios Fecha Descripción Autor

Más detalles

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10

CONCEPTOS BASICOS. Febrero 2003 Página - 1/10 CONCEPTOS BASICOS Febrero 2003 Página - 1/10 EL ESCRITORIO DE WINDOWS Se conoce como escritorio la zona habitual de trabajo con windows, cuando iniciamos windows entramos directamente dentro del escritorio,

Más detalles

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation.

Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation. WINDOWS Windows, Es un Sistema Operativo. Creado dentro de la línea de sistemas operativos producida por Microsoft Corporation. Dentro de los tipos de Software es un tipo de software de Sistemas. Windows

Más detalles

Accesibilidad web GUÍA FUNCIONAL

Accesibilidad web GUÍA FUNCIONAL Accesibilidad web GUÍA FUNCIONAL 0 _ ÍNDICE 01_Introducción 02_Primeros pasos 03_Conceptos 04_Navegación por voz 05_Navegación por teclado 06_Navegación por sonido 07_Compatibilidad con lectores de pantalla

Más detalles

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE MECANICA ELECTRICA LABORATORIO DE ELECTRONICA PENSUM COMUNICACIONES 3

UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE MECANICA ELECTRICA LABORATORIO DE ELECTRONICA PENSUM COMUNICACIONES 3 UNIVERSIDAD DE SAN CARLOS DE GUATEMALA FACULTAD DE INGENIERIA ESCUELA DE MECANICA ELECTRICA LABORATORIO DE ELECTRONICA PENSUM COMUNICACIONES 3 ~ 1 ~ ÍNDICE Introducción...página 3 Prácticas LabVolt...página

Más detalles

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3

UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 UNIDADES FUNCIONALES DEL ORDENADOR TEMA 3 INTRODUCCIÓN El elemento hardware de un sistema básico de proceso de datos se puede estructurar en tres partes claramente diferenciadas en cuanto a sus funciones:

Más detalles

Windows XP Instalación y configuración de hardware

Windows XP Instalación y configuración de hardware Servicio de Informática Atención al Usuario Windows XP Instalación y configuración de hardware Sección de Atención al Usuario Ultima modificación: 01 de Julio de 2.003 Instalación y configuración de hardware

Más detalles

GENERACIÓN DE TRANSFERENCIAS

GENERACIÓN DE TRANSFERENCIAS GENERACIÓN DE TRANSFERENCIAS 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de transferencias permite generar fácilmente órdenes para que la Caja efectúe transferencias, creando una base

Más detalles

WINDOWS 2008 5: TERMINAL SERVER

WINDOWS 2008 5: TERMINAL SERVER WINDOWS 2008 5: TERMINAL SERVER 1.- INTRODUCCION: Terminal Server proporciona una interfaz de usuario gráfica de Windows a equipos remotos a través de conexiones en una red local o a través de Internet.

Más detalles

T3-Rondas V 1.1. Help-Pc, S.L. C/ Pintor Pau Roig, 39 L-5 08330 Premià de Mar Barcelona Tel. (93) 754 90 19 Fax 93 752 35 18 marketing@t2app.

T3-Rondas V 1.1. Help-Pc, S.L. C/ Pintor Pau Roig, 39 L-5 08330 Premià de Mar Barcelona Tel. (93) 754 90 19 Fax 93 752 35 18 marketing@t2app. T3-Rondas V 1.1 1 Indice 1 Requisitos mínimos 3 2 Instalación 3 2.1 Instalación del software 3 2.2 Instalación del terminal 4 3 Configuración Inicial 4 3.1 Crear terminales 5 3.2 Crear puntos de lectura

Más detalles

Manual del Alumno de la plataforma de e-learning.

Manual del Alumno de la plataforma de e-learning. 2 Manual del Alumno de la Plataforma de E-learning 3 4 ÍNDICE 1. Página de Inicio...7 2. Opciones generales...8 2.1. Qué es el Campus...8 2.2. Nuestros Cursos...9 2.3. Cómo matricularme...9 2.4. Contactar...9

Más detalles

V i s i t a V i r t u a l e n e l H o s p i t a l

V i s i t a V i r t u a l e n e l H o s p i t a l V i s i t a V i r t u a l e n e l H o s p i t a l Manual de Restauración del PC Septiembre 2011 TABLA DE CONTENIDOS SOBRE EL SOFTWARE... 3 CONSIDERACIONES ANTES DE RESTAURAR... 4 PROCEDIMIENTO DE RECUPERACION...

Más detalles

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico)

MANUAL DE AYUDA. SAT Móvil (Movilidad del Servicio Técnico) MANUAL DE AYUDA SAT Móvil (Movilidad del Servicio Técnico) Fecha última revisión: Abril 2015 INDICE DE CONTENIDOS INTRODUCCION SAT Móvil... 3 CONFIGURACIONES PREVIAS EN GOTELGEST.NET... 4 1. INSTALACIÓN

Más detalles

Guía de uso del Cloud Datacenter de acens

Guía de uso del Cloud Datacenter de acens guíasdeuso Guía de uso del Cloud Datacenter de Calle San Rafael, 14 28108 Alcobendas (Madrid) 902 90 10 20 www..com Introducción Un Data Center o centro de datos físico es un espacio utilizado para alojar

Más detalles

UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid

UAM MANUAL DE EMPRESA. Universidad Autónoma de Madrid MANUAL DE EMPRESA Modo de entrar en ÍCARO Para comenzar a subir una oferta de empleo, el acceso es a través del siguiente enlace: http://icaro.uam.es A continuación, aparecerá la página de inicio de la

Más detalles

2_trabajar con calc I

2_trabajar con calc I Al igual que en las Tablas vistas en el procesador de texto, la interseccción de una columna y una fila se denomina Celda. Dentro de una celda, podemos encontrar diferentes tipos de datos: textos, números,

Más detalles

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7

AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Tutoriales de ayuda e información para todos los niveles AGREGAR UN EQUIPO A UNA RED Y COMPARTIR ARCHIVOS CON WINDOWS 7 Como agregar a una red existente un equipo con Windows 7 y compartir sus archivos

Más detalles

3. FUNCIONAMIENTO DE LA FUNCIONES TXD Y RXD 4. EJEMPLO DE ENVÍO DE SMS DESDE EL PLC 5. EJEMPLO DE RECEPCIÓN DE SMS EN EL PLC

3. FUNCIONAMIENTO DE LA FUNCIONES TXD Y RXD 4. EJEMPLO DE ENVÍO DE SMS DESDE EL PLC 5. EJEMPLO DE RECEPCIÓN DE SMS EN EL PLC MÓDEM-GSM INDICE 1. INTRODUCCIÓN Centro Integrado Politécnico ETI Departamento de Electricidad 2. CONFIGURACIÓN PUERTO SERIE CPU 3. FUNCIONAMIENTO DE LA FUNCIONES TXD Y RXD 4. EJEMPLO DE ENVÍO DE SMS DESDE

Más detalles

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos:

Presentaciones. Con el estudio de esta Unidad pretendemos alcanzar los siguientes objetivos: UNIDAD 8 Presentaciones Reunión. (ITE. Banco de imágenes) as presentaciones son documentos formados por una sucesión de páginas, llamadas diapositivas, que transmiten información estructurada de manera

Más detalles

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP

CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP CAPÍTULO 4. EL EXPLORADOR DE WINDOWS XP Características del Explorador de Windows El Explorador de Windows es una de las aplicaciones más importantes con las que cuenta Windows. Es una herramienta indispensable

Más detalles

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema

Sistema de Gestión Portuaria Sistema de Gestión Portuaria Uso General del Sistema Sistema de Gestión Portuaria Uso General del Sistema Uso General del Sistema Página 1 de 21 Contenido Contenido... 2 1.Ingreso al Sistema... 3 2.Uso del Menú... 6 3.Visualizar Novedades del Sistema...

Más detalles

Administración de la producción. Sesión 2: Sistema Operativo (Microsoft Windows XP)

Administración de la producción. Sesión 2: Sistema Operativo (Microsoft Windows XP) Administración de la producción Sesión 2: Sistema Operativo (Microsoft Windows XP) Contextualización El sistema operativo es el programa principal de la computadora que controla los procesos informáticos

Más detalles

Práctica 2NivelFisico: Estudio del nivel físico en la RS232 y en la RS485

Práctica 2NivelFisico: Estudio del nivel físico en la RS232 y en la RS485 Práctica 2NivelFisico: Estudio del nivel físico en la y en la RS485 1 Objetivos El objetivo de esta práctica es el estudio físico de la y de la RS485 y su relación cuando conviven en un mismo sistema.

Más detalles

MACROS. Automatizar tareas a través del uso de las macros.

MACROS. Automatizar tareas a través del uso de las macros. OBJETIVOS MACROS Definiciones Automatizar tareas a través del uso de las macros. Grabar Ejecutar Manipular macros. Tipos de Macros en Excel Introducción Las operaciones tradicionales que se pueden realizar

Más detalles

Placa de control MCC03

Placa de control MCC03 Placa de control MCC03 Placa de control MCC03 La placa de control basada en el micro controlador PIC 16F874A de Microchip, es la encargada del procesar los datos que se introducen en el sistema y actuar

Más detalles

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere.

Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere. UNIVERSIDAD DE CARABOBO FACULTAD DE CIENCIA Y TECNOLOGÍA DIRECCION DE EXTENSION COORDINACION DE PASANTIAS Modificación y parametrización del modulo de Solicitudes (Request) en el ERP/CRM Compiere. Pasante:

Más detalles

Para descargar la versión más reciente de Skype accedemos al sitio web de Skype y luego hacemos clic en Descargar Skype para escritorio de Windows.

Para descargar la versión más reciente de Skype accedemos al sitio web de Skype y luego hacemos clic en Descargar Skype para escritorio de Windows. Skype Skype: este servicio nos permite comunicarnos en forma sincrónica con nuestros contactos mediante mensajes instantáneos (chat) y realizando video llamadas. Skype Microsoft cuenta con un sistema de

Más detalles

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ

ÍNDICE DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ ELECTRÓNICA DIGITAL DISEÑO DE CONTADORES SÍNCRONOS JESÚS PIZARRO PELÁEZ IES TRINIDAD ARROYO DPTO. DE ELECTRÓNICA ÍNDICE ÍNDICE... 1 1. LIMITACIONES DE LOS CONTADORES ASÍNCRONOS... 2 2. CONTADORES SÍNCRONOS...

Más detalles

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana.

Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana. Guía para el tratamiento en Allegro de recibos para centros no pertenecientes a la Generalitat Valenciana. Esta guía muestra como proceder en la configuración y posterior uso de la aplicación Allegro en

Más detalles

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX

COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX COMO CONFIGURAR UNA MAQUINA VIRTUAL EN VIRTUALBOX PARA ELASTIX En este manual se presenta el proceso de configuración de una Maquina Virtual en VirtualBox, que será utilizada para instalar un Servidor

Más detalles

Conferencia con MSN Messenger

Conferencia con MSN Messenger Conferencia con MSN Messenger La utilización de herramientas telemáticas que permitan la comunicación en directo, a diferencia de las usadas habitualmente en la tutoría Mentor, puede resultar un complemento

Más detalles

5.2.- Configuración de un Servidor DHCP en Windows 2003 Server

5.2.- Configuración de un Servidor DHCP en Windows 2003 Server 5.2.- Configuración de un Servidor DHCP en Windows 2003 Server En este apartado vamos a configurar el servidor DHCP de "Windows 2003 Server", instalado en el apartado anterior. Lo primero que hemos de

Más detalles

INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA

INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA INSTITUTO TECNOLÓGICO DE COLIMA LIC. EN INFORMÁTICA TERMINAL SERVER TUTOR: JORGE CASTELLANOS MORFIN 19/02/2012 VILLA DE ALVARES, COLIMA Indice Introducción... 3 Objetivo... 3 Lista de Materiales... 3 Procedimiento...

Más detalles

La compañía Autodesk presenta la nueva versión de su aclamado

La compañía Autodesk presenta la nueva versión de su aclamado Presentación La compañía Autodesk presenta la nueva versión de su aclamado AutoCAD, AutoCAD 2011, como un potente y completísimo programa de diseño y dibujo asistido por ordenador. Elegido por un gran

Más detalles

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2

Manual de software. Dynamic Cloud. 10/2014 MS-Dynamic_Cloud v1.2 Manual de software Dynamic Cloud 10/2014 MS-Dynamic_Cloud v1.2 ÍNDICE GENERAL 1. INTRODUCCIÓN... 2 1.1 Configuración mínima del PC... 2 2. INSTALAR DYNAMIC CLOUD... 3 2.1 Ejecutar Dynamic Cloud por primera

Más detalles

WINDOWS. Iniciando Windows. El mouse

WINDOWS. Iniciando Windows. El mouse Windows es un sistema operativo, cuyo nombre lo debe al principal elemento de trabajo, la ventana - en inglés window -. Este tiene características como: Multitarea: durante una sesión de trabajo, es posible

Más detalles

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Unidad I Sistemas numéricos 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal) Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS.

Más detalles

Como funcionan las corrientes portadoras

Como funcionan las corrientes portadoras El sistema X-10 es el sistema estándar de tantos sistemas de corrientes portadoras ya que es el que más extendido. Este sistema se creo hace más de 20 años y sus antiguos componentes siguen funcionando

Más detalles

6. DESCRIPCIÓN DEL SOFTWARE

6. DESCRIPCIÓN DEL SOFTWARE Capítulo 2. Equipo 6. DESCRIPCIÓN DEL SOFTWARE 6.1 Introducción El equipo de medida descrito en el capítulo anterior lleva asociado un software que hace de sistema de control del proceso de medición. Este

Más detalles

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2. b) Adicionar grados Para llevar a cabo esta operación el usuario deberá realizar los siguientes pasos: Recuperar la información, para realizar esta operación el usuario puede hacerla de las siguientes

Más detalles

Trey-SAT Pag. 1. Manual de usuario

Trey-SAT Pag. 1. Manual de usuario Trey-SAT Pag. 1 Manual de usuario Trey-SAT Pag. 2 Modulo SAT : Servicio de asistencia técnica TREY-SAT es un potente módulo para el servicio de asistencia técnica, completamente integrado a la Gestión

Más detalles

Centro de Capacitación en Informática

Centro de Capacitación en Informática Fórmulas y Funciones Las fórmulas constituyen el núcleo de cualquier hoja de cálculo, y por tanto de Excel. Mediante fórmulas, se llevan a cabo todos los cálculos que se necesitan en una hoja de cálculo.

Más detalles

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes?

Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes? Preguntas frecuentes Cómo creo las bandejas del Registro de Entrada /Salida y de Gestión de Expedientes? Atención! Esta opción es de configuración y solamente la prodrá realizar el administrador de la

Más detalles

Oficina Online. Manual del administrador

Oficina Online. Manual del administrador Oficina Online Manual del administrador 2/31 ÍNDICE El administrador 3 Consola de Administración 3 Administración 6 Usuarios 6 Ordenar listado de usuarios 6 Cambio de clave del Administrador Principal

Más detalles

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES

MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES 1. ÍNDICE MANUAL APLICACIÓN. SOFTWARE GESTIÓN DE CLÍNICAS DENTALES 1. INTRODUCCIÓN...4 2 INSTALACIÓN DE LA APLICACIÓN...4 3 PANTALLA DE ACCESO...5 4 SELECCIÓN DE CLÍNICA...6 5 PANTALLA PRINCIPAL...7 6.

Más detalles

MANUAL DE AYUDA MODULO TALLAS Y COLORES

MANUAL DE AYUDA MODULO TALLAS Y COLORES MANUAL DE AYUDA MODULO TALLAS Y COLORES Fecha última revisión: Enero 2010 Índice TALLAS Y COLORES... 3 1. Introducción... 3 CONFIGURACIÓN PARÁMETROS TC (Tallas y Colores)... 3 2. Módulos Visibles... 3

Más detalles

SISTEMA DE REGISTRO DE TRANSACCIONES BURSATILES BAGSA MANUAL DE USUARIO

SISTEMA DE REGISTRO DE TRANSACCIONES BURSATILES BAGSA MANUAL DE USUARIO SISTEMA DE REGISTRO DE TRANSACCIONES BURSATILES BAGSA MANUAL DE USUARIO Consideraciones Iniciales I. El sistema está desarrollado bajo un entorno web por lo que puede ser accedido desde cualquier cliente

Más detalles

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora

MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA. Perfil Entidad Proveedora MANUAL DE USUARIO DE LA APLICACIÓN DE ACREDITACION DE ACTIVIDADES DE FORMACION CONTINUADA Perfil Entidad Proveedora El objetivo del módulo de Gestión de Solicitudes vía Internet es facilitar el trabajo

Más detalles

TPVFÁCIL. Caja Real. Definiciones.

TPVFÁCIL. Caja Real. Definiciones. TPVFÁCIL. Caja Real. TPVFÁCIL incluye desde la versión 3.3.2 la posibilidad de manejar dos cajas, la Caja Real y la Caja normal. La idea es esconder los datos de caja que pueden alcanzar los usuarios no

Más detalles

UNIDADES DE ALMACENAMIENTO DE DATOS

UNIDADES DE ALMACENAMIENTO DE DATOS 1.2 MATÉMATICAS DE REDES 1.2.1 REPRESENTACIÓN BINARIA DE DATOS Los computadores manipulan y almacenan los datos usando interruptores electrónicos que están ENCENDIDOS o APAGADOS. Los computadores sólo

Más detalles

Configuracion Escritorio Remoto Windows 2003

Configuracion Escritorio Remoto Windows 2003 Configuracion Escritorio Remoto Windows 2003 Instalar y configurar servicio de Terminal Server en Windows 2003 Fecha Lunes, 25 diciembre a las 17:04:14 Tema Windows (Sistema Operativo) Os explicamos cómo

Más detalles

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS

ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS ORGANIZAR LA INFORMACIÓN: EL EXPLORADOR DE WINDOWS Organizar la información: El explorador de Windows... 1 Introducción... 1 Explorador de Windows... 2 Ejercicio práctico del explorador de Windows... 5

Más detalles

Actividad 4: Comunicación entre PLC s vía Ethernet

Actividad 4: Comunicación entre PLC s vía Ethernet Actividad 4: Comunicación entre PLC s vía Ethernet 1.- Listado de materiales: PC con Tarjeta de red 3com o similar. 2 PLC Omrom CJ1M CPU11 ETN Estos autómatas llevan integrada la tarjeta de comunicaciones

Más detalles

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA

MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A GERENCIA DE INFORMATICA MANUAL DE USUARIOS DEL SISTEMA MESA DE SOPORTE PARA SOLICITAR SERVICIOS A Usuario Propietario: Gerencia de Informática Usuario Cliente: Todos los usuarios de ANDA Elaborada por: Gerencia de Informática,

Más detalles

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición.

La pestaña Inicio contiene las operaciones más comunes sobre copiar, cortar y pegar, además de las operaciones de Fuente, Párrafo, Estilo y Edición. Microsoft Word Microsoft Word es actualmente (2009) el procesador de textos líder en el mundo gracias a sus 500 millones de usuarios y sus 25 años de edad. Pero hoy en día, otras soluciones basadas en

Más detalles

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS

CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS CASO PRÁCTICO. ANÁLISIS DE DATOS EN TABLAS DINÁMICAS Nuestra empresa es una pequeña editorial que maneja habitualmente su lista de ventas en una hoja de cálculo y desea poder realizar un análisis de sus

Más detalles

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO

MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO MANUAL DE AYUDA HERRAMIENTA DE APROVISIONAMIENTO Fecha última revisión: Junio 2011 INDICE DE CONTENIDOS HERRAMIENTA DE APROVISIONAMIENTO... 3 1. QUÉ ES LA HERRAMIENTA DE APROVISIONAMIENTO... 3 HERRAMIENTA

Más detalles

UF0513 Gestión auxiliar de archivo en soporte convencional o informático

UF0513 Gestión auxiliar de archivo en soporte convencional o informático UF0513 Gestión auxiliar de archivo en soporte convencional o informático Tema 1. Sistemas operativos habituales Tema 2. Archivo y clasificación de documentación administrativa Tema 3. Base de datos Tema

Más detalles

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS.

Tema: INSTALACIÓN Y PARTICIONAMIENTO DE DISCOS DUROS. 1 Facultad: Ingeniería Escuela: Electrónica Asignatura: Arquitectura de computadoras Lugar de ejecución: Lab. de arquitectura de computadoras, edif. de electrónica. Tema: INSTALACIÓN Y PARTICIONAMIENTO

Más detalles

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC

Temporizadores y contadores en tiempo real: El módulo Timer0 y el prescaler del PIC Temporizadores y contadores en tiempo real: El módulo Timer0 y el aler del PIC 1. Introducción...1 2. Estructura del Timer0...1 3. Funcionamiento del Timer0...2 3.1. Entrada de reloj del modulo Timer0...

Más detalles

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos.

No se requiere que los discos sean del mismo tamaño ya que el objetivo es solamente adjuntar discos. RAIDS MODO LINEAL Es un tipo de raid que muestra lógicamente un disco pero se compone de 2 o más discos. Solamente llena el disco 0 y cuando este está lleno sigue con el disco 1 y así sucesivamente. Este

Más detalles

COMBINAR CORRESPONDENCIA EN MICROSOFT WORD

COMBINAR CORRESPONDENCIA EN MICROSOFT WORD COMBINAR CORRESPONDENCIA EN MICROSOFT WORD Combinar documentos consiste en unir dos documentos diferentes sin que se modifiquen los datos que aparecen en ellos. Esta operación es muy útil y muy frecuente

Más detalles

Guía de aprendizaje Audacity: guía de edición de sonido

Guía de aprendizaje Audacity: guía de edición de sonido Desarrollo del tutorial: paso 1 de 14 Grabar audio con Audacity es relativamente sencillo. Podemos dividir este proceso en tres tareas básicas: 1. Configurar los parámetros de calidad de grabación. Dependiendo

Más detalles

TRABAJO PRÁCTICO Nº 6: PUERTO SERIE

TRABAJO PRÁCTICO Nº 6: PUERTO SERIE TRABAJO PRÁCTICO Nº 6: PUERTO SERIE Introducción a las comunicaciones serie Las comunicaciones serie se utilizan para enviar datos a través de largas distancias, ya que las comunicaciones en paralelo exigen

Más detalles

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS

ESCUELA SUPERIOR DE INFORMATICA Prácticas de Estadística UNA SESIÓN EN SPSS UNA SESIÓN EN SPSS INTRODUCCIÓN. SPSS (Statistical Product and Service Solutions) es un paquete estadístico orientado, en principio, al ámbito de aplicación de las Ciencias sociales, es uno de las herramientas

Más detalles

CONFIGURACION AVANZADA DE MOZILLA THUNDERBIRD

CONFIGURACION AVANZADA DE MOZILLA THUNDERBIRD CONFIGURACION AVANZADA DE MOZILLA THUNDERBIRD Carpetas sin Conexión... 2 Gestión de mensajes enviados... 3 Gestión de mensajes eliminados... 6 Firma Digital... 8 Envío de mensajes firmados digitalmente...

Más detalles

Capítulo 9. Archivos de sintaxis

Capítulo 9. Archivos de sintaxis Capítulo 9 Archivos de sintaxis El SPSS permite generar y editar archivos de texto con sintaxis SPSS, es decir, archivos de texto con instrucciones de programación en un lenguaje propio del SPSS. Esta

Más detalles

Trabajar con diapositivas

Trabajar con diapositivas Trabajar con diapositivas INFORMÁTICA 4º ESO POWERPOINT Una vez creada una presentación podemos modificarla insertando, eliminando, copiando diapositivas, Insertar una nueva diapositiva.- Para insertar

Más detalles

Internet Information Server

Internet Information Server Internet Information Server Internet Information Server (IIS) es el servidor de páginas web avanzado de la plataforma Windows. Se distribuye gratuitamente junto con las versiones de Windows basadas en

Más detalles

Notas para la instalación de un lector de tarjetas inteligentes.

Notas para la instalación de un lector de tarjetas inteligentes. Notas para la instalación de un lector de tarjetas inteligentes. Índice 0. Obtención de todo lo necesario para la instalación. 3 1. Comprobación del estado del servicio Tarjeta inteligente. 4 2. Instalación

Más detalles

MANUAL DE USO DE LA APLICACIÓN

MANUAL DE USO DE LA APLICACIÓN MANUAL DE USO DE LA APLICACIÓN ÍNDICE 1. Acceso a la aplicación 2. Definición de funciones 3. Plantillas 4. Cómo crear una nueva encuesta 5. Cómo enviar una encuesta 6. Cómo copiar una encuesta 7. Cómo

Más detalles

Intérprete entre el Operador y el Ordenador.

Intérprete entre el Operador y el Ordenador. Introducción a Windows Generalidades Una computadora es un colaborador rápido y eficaz en la tarea administrativa de la información. La computadora en realidad es capaz de hacer muy pocas cosas, como ser:

Más detalles

MANUAL DE USUARIO Y EJEMPLO DE UTILIZACIÓN HERRAMIENTA DLP-DELPHI LEARNING PACKAGE

MANUAL DE USUARIO Y EJEMPLO DE UTILIZACIÓN HERRAMIENTA DLP-DELPHI LEARNING PACKAGE MANUAL DE USUARIO Y EJEMPLO DE UTILIZACIÓN HERRAMIENTA DLP-DELPHI LEARNING PACKAGE PROFESOR: Creación y puesta en marcha de un proceso de aprendizaje Delphi: En esta fase el profesor debe realizar las

Más detalles

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático

Manual de usuario de Parda Programa de Almacenamiento y Recuperación de Datos Automático Programa de Almacenamiento y Recuperación de Datos Automático CONSEJERÍA DE EDUCACIÓN Dirección General de Participación e Innovación Educativa Centro de Gestión Avanzado de Centros TIC Fecha: 20/04/10

Más detalles

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software.

Una computadora de cualquier forma que se vea tiene dos tipos de componentes: El Hardware y el Software. ARQUITECTURA DE LAS COMPUTADORAS QUE ES UNA COMPUTADORA (UN ORDENADOR)? Existen numerosas definiciones de una computadora, entre ellas las siguientes: 1) Una computadora es un dispositivo capaz de realizar

Más detalles

ANTENAS: Teledistribución y televisión por cable

ANTENAS: Teledistribución y televisión por cable 5.1 INTRODUCCIÓN A LA TELEDISTRIBUCIÓN La teledistribución o CATV, podemos considerarla como una gran instalación colectiva, con algunos servicios adicionales que puede soportar y que conectará por cable

Más detalles

La ventana de Microsoft Excel

La ventana de Microsoft Excel Actividad N 1 Conceptos básicos de Planilla de Cálculo La ventana del Microsoft Excel y sus partes. Movimiento del cursor. Tipos de datos. Metodología de trabajo con planillas. La ventana de Microsoft

Más detalles

Microsoft Access proporciona dos métodos para crear una Base de datos.

Microsoft Access proporciona dos métodos para crear una Base de datos. Operaciones básicas con Base de datos Crear una Base de datos Microsoft Access proporciona dos métodos para crear una Base de datos. Se puede crear una base de datos en blanco y agregarle más tarde las

Más detalles

CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6

CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6 CONFIGURACION AVANZADA DE OUTLOOK EXPRESS 6 Carpetas sin conexión Gestión de mensajes enviados Gestión de mensajes eliminados Firma digital Envío de mensajes firmados digitalmente Recepción de mensajes

Más detalles

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD

MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD MANUAL DE AYUDA TAREA PROGRAMADA COPIAS DE SEGURIDAD Fecha última revisión: Diciembre 2010 Tareas Programadas TAREAS PROGRAMADAS... 3 LAS TAREAS PROGRAMADAS EN GOTELGEST.NET... 4 A) DAR DE ALTA UN USUARIO...

Más detalles

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE

GUIA APLICACIÓN DE SOLICITUDES POR INTERNET. Gestión de Cursos, Certificados de Aptitud Profesional y Tarjetas de Cualificación de Conductores ÍNDICE ÍNDICE ACCESO A LA APLICACIÓN... 2 1.- HOMOLOGACIÓN DE CURSOS... 4 1.1.- INICIAR EXPEDIENTE... 4 1.2.- CONSULTA DE EXPEDIENTES... 13 1.3.- RENUNCIA A LA HOMOLOGACIÓN... 16 2.- MECÁNICA DE CURSOS... 19

Más detalles

Selección de los puntos de montaje

Selección de los puntos de montaje PARTICIONES PARA LINUX Selección de los puntos de montaje Tanto para aquellos que vayan a instalar ahora, como para quienes quieran cambiar el tamaño de una partición o formatear este apunte (resumen de

Más detalles

Edición de Ofertas Excel Manual de Usuario

Edición de Ofertas Excel Manual de Usuario Edición de Ofertas Excel Manual de Usuario Alfonso XI, 6 28014 Madrid F(+34) 91 524 03 96 www.omie.es Ref. MU_OfertasExcel.docx Versión 4.0 Fecha: 2012-11-26 ÍNDICE 1 INTRODUCCIÓN 3 2 CONSIDERACIONES DE

Más detalles

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS

MANUAL DE USUARIO APLICACIÓN SYSACTIVOS MANUAL DE USUARIO APLICACIÓN SYSACTIVOS Autor Edwar Orlando Amaya Diaz Analista de Desarrollo y Soporte Produce Sistemas y Soluciones Integradas S.A.S Versión 1.0 Fecha de Publicación 19 Diciembre 2014

Más detalles

Internet aula abierta

Internet aula abierta MINISTERIO DE EDUCACIÓN Y CIENCIA SECRETARÍA GENERAL DE EDUCACIÓN Y FORMACIÓN PROFESIONAL DIRECCIÓN GENERAL DE EDUCACIÓN, FORMACIÓN PROFESIONAL E INNOVACIÓN EDUCATIVA CENTRO NACIONAL DE INFORMACIÓN Y COMUNICACIÓN

Más detalles

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE

1.4.1.2. Resumen... 1.4.2. ÁREA DE FACTURACIÓN::INFORMES::Pedidos...27 1.4.2.1. Detalle... 1.4.2.2. Resumen... 1.4.3. ÁREA DE MANUAL DE USUARIO DE ABANQ 1 Índice de contenido 1 ÁREA DE FACTURACIÓN......4 1.1 ÁREA DE FACTURACIÓN::PRINCIPAL...4 1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA...4 1.1.1.1. ÁREA DE FACTURACIÓN::PRINCIPAL::EMPRESA::General...4

Más detalles

Manual de Usuario Consulte en www.jazztel.com. Equipo ADSL Huawei MT 882

Manual de Usuario Consulte en www.jazztel.com. Equipo ADSL Huawei MT 882 3950 Manual de Usuario Consulte en www.jazztel.com Equipo ADSL Huawei MT 882 Antes de comenzar la instalación MUY IMPORTANTE: Bienvenido a Internet de JAZZTEL. El siguiente manual le indica paso a paso

Más detalles

GedicoPDA: software de preventa

GedicoPDA: software de preventa GedicoPDA: software de preventa GedicoPDA es un sistema integrado para la toma de pedidos de preventa y gestión de cobros diseñado para trabajar con ruteros de clientes. La aplicación PDA está perfectamente

Más detalles

Práctica 3ProgramacionRS232: Programación básica de la RS232

Práctica 3ProgramacionRS232: Programación básica de la RS232 Práctica 3ProgramacionRS232: Programación básica de la RS232 1 Objetivos El objetivo de esta práctica es la iniciación del alumno en la programación de las comunicaciones en un entorno de desarrollo basado

Más detalles

GENERACIÓN DE ANTICIPOS DE CRÉDITO

GENERACIÓN DE ANTICIPOS DE CRÉDITO GENERACIÓN DE ANTICIPOS DE CRÉDITO 1 INFORMACIÓN BÁSICA La aplicación de generación de ficheros de anticipos de crédito permite generar fácilmente órdenes para que la Caja anticipe el cobro de créditos

Más detalles

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS

GUIA COMPLEMENTARIA PARA EL USUARIO DE AUTOAUDIT. Versión N 02 Fecha: 2011-Febrero Apartado: Archivos Anexos ARCHIVOS ANEXOS ARCHIVOS ANEXOS Son los documentos, hojas de cálculo o cualquier archivo que se anexa a las carpetas, subcarpetas, hallazgos u otros formularios de papeles de trabajo. Estos archivos constituyen la evidencia

Más detalles

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa...2. 1.1 Configuración Internet Explorer para ActiveX...

Ayuda para la instalación Componente Firma Digital INDICE. 1 Configuración previa...2. 1.1 Configuración Internet Explorer para ActiveX... INDICE 1 Configuración previa...2 1.1 Configuración Internet Explorer para ActiveX...2 1.2 Problemas comunes en sistema operativo Windows...8 1.2.1 Usuarios con sistema operativo Windows XP con el Service

Más detalles

Sincronización de carpetas con el disco duro virtual en sistemas Windows

Sincronización de carpetas con el disco duro virtual en sistemas Windows DDV: Disco Duro Virtual de la Universidad de Sevilla. Contenido Sincronización de carpetas con el disco duro virtual en sistemas Windows...1 1. Instalación del cliente de sincronización...1 2. Configuración

Más detalles

INGENIERIA EN MICROCONTROLADORES. Maquinas de Estado. Introducción

INGENIERIA EN MICROCONTROLADORES. Maquinas de Estado. Introducción INGENIERIA EN MICROCONTROLADORES Maquinas de Estado Introducción MAQUINA DE ESTADOS www.i-micro.com Ingeniería en Microcontroladores Teléfono 044 55 11 29 55 05 E-mail: [email protected] [email protected]

Más detalles

Guía de Usuario Programador USB

Guía de Usuario Programador USB Guía de Usuario Programador USB Tecnología Digital del Bajío Av. Vicente Guerrero 1003, Int. A Irapuato, Gto. Mex. C.P. 36690 Teléfono: (462) 145 35 22 www.tecdigitaldelbajio.com i Guía de Usuario, Programador

Más detalles

Paradigmas de Programación

Paradigmas de Programación Paradigmas de Programación 3.2. Orientación a Eventos Departamento de Informática Universidad de Valladolid Curso 2010-11 Grado en Ingeniería Informática Grado en Ingeniería Informática de Sistemas 11

Más detalles