projecte final de carrera - deeea.urv.catdeeea.urv.cat/public/propostes/pub/pdf/1139pub.pdf ·...

215
PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar Navas Luque Titulació: Enginyeria Tècnica Industrial en Electrònica Industrial Composició del Tribunal: President: Cabré Rodon, Roger Secretari: Cañellas Alberich, Nicolau Vocal: Garcés Miguel, Pedro

Upload: buidien

Post on 16-Feb-2018

218 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

PROJECTE FINAL DE CARRERA

Títol Projecte: Aplicación chequeo de calidadAlumne: Oscar Navas LuqueTitulació: Enginyeria Tècnica Industrial en Electrònica Industrial

Composició del Tribunal:President: Cabré Rodon, RogerSecretari: Cañellas Alberich, NicolauVocal: Garcés Miguel, Pedro

Page 2: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 0: Índice

1

Documento nº 1: MEMORIA DESCRIPTIVA Y FUNCIONAL

1.0 Índice ................................................................................................. 11

1.1 Objetivos del proyecto........................................................................14

1.2 Alcance del proyecto...........................................................................14

1.3 Antecedentes........... ............................................................................15

1.4 Normas y referencias ..........................................................................15

1.5 Bibliografía .........................................................................................16

1.6 Programas de cálculo y diseño ...........................................................18

1.7 Requisitos del diseño ..........................................................................19

1.8 Análisi de soluciones ........................................................................20

1.8.1 Captura estática.....................................................................20

1.8.2 Captura dinámica..................................................................21

1.8.3 Ventajas y desventajas..........................................................22

1.9 Análisi del equipamiento hardware....................................................23

1.9.1 Cámaras.................................................................................23

1.9.1.1 Monocromas.............................................................23

1.9.1.2 Color.........................................................................23

1.9.1.3 Alta de velocidad......................................................24

1.9.1.4 Alta sensibilidad.......................................................24

1.9.1.5 Lineales monocromo................................................25

1.9.1.6 Lineales color...........................................................26

1.9.1.7 Inteligentes...............................................................26

1.9.1.8 3D............................................................................27

Page 3: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 0: Índice

2

1.9.1.9 Infrarojas/térmicas...................................................27

1.9.1.10 Multiespectrales.....................................................28

1.9.2 Ópticas..................................................................................29

1.9.2.1 Standard...................................................................30

1.9.2.2 Para cámaras de alta resolución...............................30

1.9.2.3 Gran formato............................................................30

1.9.2.4 Para microcámaras...................................................31

1.9.2.5 Zoom standard.........................................................31

1.9.2.6 De precisión.............................................................31

1.9.3 Iluminicación........................................................................33

1.9.3.1 LED.........................................................................33

1.9.3.2 Fibra óptica..............................................................34

1.9.3.3 Fluorescente.............................................................35

1.9.3.4 Láser.........................................................................36

1.9.4 Interfaces de captura.............................................................37

1.9.4.1 Standard análagos....................................................37

1.9.4.2 Avanzados análogos................................................38

1.9.4.3 Avanzados digitales................................................39

1.9.4.4 Firewire...................................................................40

1.10 Resultados finales ............................................................................43

1.10.1 Solución adoptada...............................................................43

1.10.2 Hardware elegido...............................................................44

1.10.2.1 CPU X86 ...............................................................44

Page 4: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 0: Índice

3

1.10.2.2 Tarjeta I/O de adquisición .....................................49

1.10.2.3 Tarjeta I/O Optoacoplada ......................................52

1.10.2.4 Iluminación ............................................................54

1.10.2.5 Cámara ...................................................................56

1.10.3. Descriptivo de funcionamiento ..........................................59

1.10.3.1 Calibración del sistema ..........................................60

1.10.3.2 Funcionamiento en automático ..............................63

1.10.4 Comunicación con el exterior .............................................64

Page 5: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 0: Índice

4

Documento nº 2: MEMORIA DE CÁLCULO

2.0 Índice .................................................................................................68

2.1 Cálculo de resistencias

2.1.1 Cálculo de R1........................................................................69

2.1.2 Cálculo de R2 cuando el fototransistor está saturado............70

2.1.3 Cálculo de R2 cuando el fototransistor está en corte.............71

Page 6: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 0: Índice

5

Documento nº 3: PLANOS

3.0 Índice ...........................................................................74

Plano nº 1 ..........................................................................Ubicación

Plano nº 2 ......................................................................... Connector

Plano nº 3 ......................................................................... Bits 0-3 Entradas

Plano nº 4 .......................................................................... Bits 0-4 Salidas

Plano nº 5 ...........................................................................Libre de potencial

Page 7: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 0: Índice

6

Documento nº 4: PRESUPUESTO

4..0 Índice .............................................................................................76

4.1 Cuadro de precios

4.1.1 Capítulo 1. Elementos hardware..........................................77

4.2.2 Capítulo 2. Elementos software...........................................78

4.2 Presupuesto

4.2.1 Capítulo 1. Elementos hardware...........................................79

4.2.2 Capítulo 2. Elementos software............................................80

4.3 Resumen.............................................................................................81

Page 8: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 0: Índice

7

Documento nº 5: PLIEGO DE CONDICIONES

5.0 Índice ................................................................................................ 84

5.1 Condiciones generales........................................................................85

5.1.1 Vigencia ................................................................................85

5.1.2. Documentos del proyecto .....................................................85

5.1.3. Descripción ...........................................................................86

5.1.4 Especificaciones ....................................................................86

5.1.5 Orden de prioridad documental ..............................................87

5.1.6. Modificaciones ......................................................................87

5.1.7. Dirección e inspección ...........................................................87

5.1.8. Condiciones de seguridad ......................................................87

5.1.9. Garantía. ................................................................................88

5.2. Condiciones técnicas y de ejecución ..................................................88

5.2.1. Generalidades .........................................................................88

5.2.2. Condiciones de uso, mantenimiento y seguridad ...................89

5.3. Condiciones facultativas .....................................................................89

5.4. Condiciones económicas .....................................................................91

5.4.1. Responsabilidades ..................................................................91

5.4.2. Aumentos de precios ..............................................................91

5.4.3. Modificaciones .......................................................................91

5.4.4. Forma de pago ........................................................................91

5.5.5 Plazo de entrega.......................................................................92

Page 9: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 0: Índice

8

Documento nº 6: ANEXO 1 – COMPONENTES ELECTRÓNICOS

6.1.0 Índice .....................................................................................95

6.1.1 LM324 ...................................................................................96

6.1.2 ULN2003 .............................................................................. 102

6.1.3 TLP641-4 .............................................................................. 105

Page 10: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 0: Índice

9

Documento nº 6: ANEXO 2 - PROGRAMA

6.2.0 Índice .....................................................................................112

6.2.1 CPACDLLApp .......................................................................113

6.2.2 CPACDllDlg ...........................................................................115

6.2.3 CPACCVDisplay ....................................................................150

6.2.4 CPACDioscreen.......................................................................171

6.2.5 CPACGraph ............................................................................176

6.2.6 CPACImage ............................................................................196

6.2.7 CPACPicture ...........................................................................208

Page 11: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad

DOCUMENTO nº 1: MEMORIA DESCRIPTIVA Y FUNCIONAL

Autor: Oscar Navas LuqueDirector: Nicolau Cañellas Alberich

Fecha: Julio 2007

Page 12: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

11

Documento nº 1: MEMORIA DESCRIPTIVA Y FUNCIONAL

1.0 Índice ................................................................................................. 11

1.1 Objetivos del proyecto........................................................................14

1.2 Alcance del proyecto...........................................................................14

1.3 Antecedentes........... ............................................................................15

1.4 Normas y referencias ..........................................................................15

1.5 Bibliografía .........................................................................................16

1.6 Programas de cálculo y diseño ...........................................................18

1.7 Requisitos del diseño ..........................................................................19

1.8 Análisi de soluciones ........................................................................20

1.8.1 Captura estática.....................................................................20

1.8.2 Captura dinámica..................................................................21

1.8.3 Ventajas y desventajas..........................................................22

1.9 Análisi del equipamiento hardware....................................................23

1.9.1 Cámaras.................................................................................23

1.9.1.1 Monocromas.............................................................23

1.9.1.2 Color.........................................................................23

1.9.1.3 Alta de velocidad......................................................24

1.9.1.4 Alta sensibilidad.......................................................24

1.9.1.5 Lineales monocromo................................................25

1.9.1.6 Lineales color...........................................................26

1.9.1.7 Inteligentes...............................................................26

1.9.1.8 3D............................................................................27

Page 13: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

12

1.9.1.9 Infrarojas/térmicas...................................................27

1.9.1.10 Multiespectrales.....................................................28

1.9.2 Ópticas..................................................................................29

1.9.2.1 Standard...................................................................30

1.9.2.2 Para cámaras de alta resolución...............................30

1.9.2.3 Gran formato............................................................30

1.9.2.4 Para microcámaras...................................................31

1.9.2.5 Zoom standard.........................................................31

1.9.2.6 De precisión.............................................................31

1.9.3 Iluminicación........................................................................33

1.9.3.1 LED.........................................................................33

1.9.3.2 Fibra óptica..............................................................34

1.9.3.3 Fluorescente.............................................................35

1.9.3.4 Láser.........................................................................36

1.9.4 Interfaces de captura.............................................................37

1.9.4.1 Standard análagos....................................................37

1.9.4.2 Avanzados análogos................................................38

1.9.4.3 Avanzados digitales................................................39

1.9.4.4 Firewire...................................................................40

1.10 Resultados finales ............................................................................43

1.10.1 Solución adoptada...............................................................43

1.10.2 Hardware elegido...............................................................44

1.10.2.1 CPU X86 ...............................................................44

Page 14: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

13

1.10.2.2 Tarjeta I/O de adquisición .....................................49

1.10.2.3 Tarjeta I/O Optoacoplada ......................................52

1.10.2.4 Iluminación ............................................................54

1.10.2.5 Cámara ...................................................................56

1.10.3. Descriptivo de funcionamiento ..........................................59

1.10.3.1 Calibración del sistema ..........................................60

1.10.3.2 Funcionamiento en automático ..............................63

1.10.4 Comunicación con el exterior .............................................64

Page 15: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

14

1.1 Objetivos del proyecto

El sistema Naslu CPAC ha sido concebido con la intención deposibilitar el chequeo de sólidos continuos de forma dinámica y con unaprecisión y frecuencia muy superior a la del ojo humano. Estas ventajas sonresultado de la combinación de un sistemas de aportación de imágenes dealta resolución, capacidad de procesado por parte de un PC de altasprestaciones y la aplicación software que une a los dos anteriores.

Naslu CPAC tiene aplicación en la industria para chequeosdinámicos que requieran de altas prestaciones, tanto por las anteriormentemencionadas como por tratarse de un sistema funcional en entornosnocivos para el ser humano. Su compactación aporta un reducido volumen,sin necesidad de armarios eléctricos, lo cual permite su utilización en zonasde poco espacio.

1.2 Alcance del proyecto

El actual proyecto tiene como alcance el desarrollo tanto de laaplicación software Naslu CPAC como el suministro de los materialesnecesarios para su funcionamiento, siendo estos una cámara de altadefinición y scan progresivo, caja de interconexión y PC de análisis. NasluCPAC tiene una precisión de hasta 0.3 milímetros en su medición y unavelocidad de análisis que oscila alrededor de los 40 microsegundos, a la vezel sistema y sin alterar dichos valores está concebido para permitir lacomunicación de resultados hacia el exterior en tiempo real, bien se tratehacia un PLC, un robot, otro PC, etc. permitiendo rechazar las piezasproducto (en caso de error) en tiempo de aplicación y por lo tanto reducirpérdidas derivadas de producciones incorrectas y tiempos enreconocimiento de averías. Queda excluído cualquier elementos no expresoen este apartardo o en el pliego de condiciones.

Page 16: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

15

1.3 Antecedentes

El destinatario del proyecto, ASM sa se dedica al sector empresarialdel automóvil, tocando a la vez pero con menor incidencia sectores como elaeronáutico y fabricación de electrodomésticos. La mencionada empresadecide apostar por la visión artificial dado el avance realizado por latecnología que hace rival insuperable frente a las prestaciones ofrecidas porchequeos realizados por el humano.

1.4 Normas y referencias

El equipo suministrado se acoge a las siguientes normas del marcolegislativo:

• EN 55022. Define las estándares para la instalación de la tecnología de lainformación y describe en esencia los campos de interferencias, valoreslímites y procesos de medición.

• EN 61000 / EN 55024. Compatibilidad electromagnética.

• FCC Class B. Radiación/captación de energía por radio frecuencia.

Page 17: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

16

• DIN ISO 9002. Define términos(condiciones) que se relacionan con laspruebas ambientales de instrumentos ópticos y de instrumentos incluyendoasambleas ópticas y componentes ópticos, y especifica los rasgos básicosde pruebas.

• RD 485/1997. Sobre disposiciones mínimas de seguridad y salud para lautilización de los trabajadores de los equipos de trabajo.

1.5 Bibliografía

• Arroyo, A.; Alcalá, J.; Serradilla, F. Percepción computacional.Departamento de publicaciones de la Escuela Universitaria de Informática,2001.

• Escalera, A. Visión por Computador, Fundamentos y Métodos. Prentice-Hall, 2001.

Klette, R.; Zamperoni, P. Handbook of Image Processing Operators. JohnWiley & Sons. 1996.

• Maravall, D. Reconocimiento de Formas y Visión Artificial. RA-MA,1993.

Sonka, M; Hlavac, V; Boyle, R. Image Processing, Analysis and MachineVision. Chapman & Hall, 1993.

• G.A. Baxes, Digital Image Processing: Principles and Applications, J.Wiley & Sons, 1994. ISBN: 0-471-00949-0.

Page 18: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

17

• K. R. Castleman, Digital Image Processing, Prentice Hall, 1996. ISBN: 0-13-212467-4.

• C.H. Chen y P.S. Wang, Handbook of Pattern Recognition and ComputerVision, 3ª Ed, World Scientific, 2005. ISBN 981-256-105-6.

• A. de la Escalera, Visión por computador: Fundamentos y métodos,Pearson- Prentice Hall, 2001. ISBN: 84-205-3098-0.

• D.M. Etter, Solución de Problemas de Ingeniería con Matlab, 2ª Edición,Prentice Hall, 1997. ISBN: 0-13-397688-2.

• M. Faúndez Zanuy, Tratamiento Digital de Voz e Imagen y Aplicación ala Multimedia, Marcombo, 2000. ISBN: 84-267-1244-4.

• D.A. Forsyth y J. Ponce, Computer Vision: A Modern Approach, PrenticeHall, 2002. ISBN: 0-130-85198-1.

• A. Gruen y T.S. Huang, Calibration and Orientation of Cameras inComputer Vision, Springer, 2001. ISBN: 3-540-65283-3.

• P. Irarrázaval, Análisis de Señales, McGraw-Hill, 1999. ISBN: 956-278-079-1.

Page 19: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

18

• B. Jähne, Digital Image Processing, 5th Edition, Springer, 2002. ISBN: 3-540-67754-2.

• A. K. Jain, Fundamentals of Digital Image Processing, Prentice Hall,1989. ISBN: 0-13-3361659

• R. Jain, R. Kasturi y B.G. Schunk, Machine Vision, McGraw-Hill, 1995.

1.6 Programas de cálculo y diseño

• Microsoft Excel.

• ORCAD PCB Design tools.

• AutoCAD.

• Microsoft Visual Studio.

Page 20: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

19

1.7 Requisitos del diseño

Se procura llevar a cabo el análisis técnico y económico para lainstalación de un sistema de chequeo de la calidad aplicada sobre una piezaproducto en el caso concreto de parabrisas de automóvil. Comoespecificación tenemos por parte del cliente; un tiempo mínimo de análisis,en su totalidad de treinta segundos, y una superficie visto en planta deaproximadamente seis centímetros. A la vez, el sistema requiere la opciónde evaluar hasta diez diferentes piezas producto, existiendo por lo tanto, talcantidad de diferentes parabrisas.

El diagrama de bloques del estudio técnico sería el siguiente:

Código pieza producto

Reconocido?3seg

Aplicación y verificación25seg

Obtención resultado delanálisis

2seg

Correcto?

Inserción en carrocería Rechazo

Si

No

Si

No

Page 21: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

20

1.8 Análisis de soluciones

1.8.1 Captura estática

Para llegar a conseguir el objetivo anteriormente descrito, dosconfiguraciones se presentan como válidas. En primer lugar, tendríamos unsistema de captura fija, con capacidad de almacenaje y análisis de toda lasuperficie del parabrisas y cuya captura se realizaría tras la finalización dela aplicación y desde una distancia suficientemente lejana como paraabarcar la totalidad del parabrisas. A continuación se muestra un ejemplopráctico donde la captura se ha realizado a unos 600mm de distancia ydonde se analizan seis puntos del cordon de “primer” .

Imagen obtenida y analizada mediante captura estática:

Page 22: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

21

1.8.2 Captura dinámica

Como segunda opción, tendríamos un sistema de captura dinámica, siemprerecogiendo las imágenes a medida que se realiza la aplicación del producto,y desde una distancia suficientemente cercana como para capturar laporción necesaria entre captura y captura, considerando una velocidadmáxima de desplazamiento de quinientos milímetros por segundo.

Imagen obtenida y analizada mediante captura dinámica:

Page 23: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

22

1.8.3 Ventajas y desventajas

Ventajas Desventajas

Captura fija - Reducción decontaminación de lacámara

- Uso de CPU inferior

- Imagen a analizar muyamplia.

- Tiempo de análisisañadido al proceso.

Captura dinámica - Imagen a analizarreducida.

- Tiempo de análisis noañadido al proceso si noque transcurre enparalelo.

- Aumento decontaminación de lacámara.

- Uso de CPU superior.

Page 24: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

23

1.9 Análisis de equipamiento hardware

1.9.1 Cámaras

1.9.1.1 Cámaras monocromo.En este apartado se incluyen todas las cámaras que incorporan un sensormonocromo. El criterio de selección principal queda establecido por laresolución, diferenciando cinco clases: Estándar entrelazados, Progresivosinferiores a 1 Megapixel, Superiores a 1Megapixel, Superiores a 2Megapixel, Superiores a 4Megapixel y Superiores a 8 Megapixels.Referente a los sensores encontramos CCD o CMOS y otra referente al tipode Salida o Conexión Analógico, LVDS, CaneraLink, FireWire, USB2, yGigE Vision. Otras características que se debe destacar de las cámaras monocromas son:la opción de microcámaras, la alta sensibilidad en distintas partes delespectro visible y no visible (infrarrojo, ultravioleta), la opción deescaneado variable, la alta velocidad...

1.9.1.2 Cámaras Color

En este apartado se incluyen todas las cámaras que incorporan sensorescolor. El criterio de selección principal queda establecido por la resolución,diferenciando seis clases: Estandar entrelazados, Progresivos inferiores a 1Megapixel, Superiores a 1 Megapixel, Superiores a 2 Megapixel,Superiores a 4 Megapixel y Superiors a 8 Megapixels. Referente al sensorencontramos CCD o CMOS y referente al tipo de Salida o ConexiónAnalógico, LVDS, CameraLink, FireWire, USB2, y GigeVision.

Page 25: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

24

Otras características que se debe destacar de las cámaras color son: laposibilidad de trabajar con 1CCD o con 3CCD, la opción de microcámaras,la opción de escaneado variable, la alta velocidad,...

1.9.1.3 Alta Velocidad

En este apartado se incluyen las cámaras y sistemas de grabación de muyalta velocidad capaces de capturar desde 1.000 a 200.000 imágenes porsegundo. En apartados anteriores (Cámaras Monocromo, Cámaras Color)también se pueden encontrar cámaras capaces de alcanzar velocidades de1.000 imágenes por segundo pero no han sido específicamente concebidascomo cámaras de muy alta velocidad. Los sistemas y cámaras de alta velocidad se emplean en multitud deaplicaciones, industriales, científicas, militares y de aeronáutica. Entre lasaplicaciones más destacadas se encuentran: pruebas de "crash" deautomoción, estudio de proyectiles, balística, control de fabricación,estudios en fluidica, control de turbulencia, visualización de explosión,biomecánica, anuncios de publicidad...

1.9.1.4 Alta SensibilidadEste tipo de cámaras se utilizan tanto en aplicaciones científicas comoindustriales que requieran una gran calidad de imagen a muy bajailuminación. Proporcionan una serie de prestaciones como: Mayor RangoDinámico, Mejor Eficiencia Cuántica, Bajo Nivel de Ruido, PrecisiónSubpixel, Estabilidad en Tiempo y Temperatura...

Algunas cámaras de alta fidelidad también están diseñadas para capturarimágenes en condiciones de muy baja iluminación. Para ello, utilizansensores especiales de alta sensibilidad. Para mejorar la iluminación estossensores están cubiertos con polisilício que es transparente a las longitudesde onda altas pero que es opaca a las longitudes de onda más cortas de400nm. Es posible mediante ciertas técnicas reducir el espesor del CCD

Page 26: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

25

hasta aproximadamente 10 micras y focalizar la imagen. Este tipo de CCDtiene más del doble de Eficiencia Cuántica que los sensoresconvencionales.

1.9.1.5 Lineales MonocromoEl concepto de barrido lineal se asocia a la construcción de una imagenlínea a línea, utilizando un sensor lineal, de forma que la cámara sedesplaza con respecto al objeto a capturar, o bien el objeto se desplaza conrespecto a la cámara.

La tecnología de cámaras lineales fue desarrollada para aplicaciones deinspección de materiales fabricados en continuo, como papel, tela, planchasmetálicas, etc. Sin embargo en la actualidad se está imponiendo en muchosotros procesos productivos y de inspección, que requieren alta resolución y/ o alta velocidad a un precio competitivo.

Las cámaras lineales utilizan sensores lineales que acostumbran a tenerentre los 512 y 12.000 elementos (píxels), con una longitud lo más cortaposible, y con una gran calidad con el fin de obtener la mejor sensibilidad yprestaciones.

Page 27: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

26

1.9.1.6 Lineales ColorLas cámaras lineales en color pueden incorporar tres sensores lineales o unsolo sensor con filtros de color para cada uno de sus píxels.

MonosensorSon sensores CCD lineales que incorporan píxels adyacentes con filtroscorrespondientes a cada uno de los tres colores principales: Rojo, Verde yAzul. Esta arquitectura tiene una buena sensibilidad (similar a las cámarasmonocromas). Su propia estructura hace que la calidad de color sea similara la obtenida en las cámaras matriciales color con Filtro Bayer.

PrismaLos sensores se posicionan en tres caras de un prisma. Este tipo de cámaraspueden utilizarse en cualquier tipo de aplicación ya que los píxels R, G y Bcoinciden en la misma posición en el objeto. El inconveniente del prisma esque reduce la transmisión de la luz y por tanto el sensor debe ser mássensible, o utilizar una iluminación más potente. Este tipo de cámaras seutilizan cuando se quiere tener una gran calidad de color y cuando esnecesario discernir entre colores muy próximos.

1.9.1.7 Cámaras InteligentesEstas cámaras incorporan los elementos tradicionales de las cámarasconvencionales (sensor y electrónica asociada a la captura) pero además seacompañan de un procesador, memoria y sistema de comunicaciones con elexterior (Puerto Serie. I/O, Ethernet), y por tanto componen en si mismasun sistema completo de visión artificial.

Page 28: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

27

1.9.1.8 Cámaras 3D

Cámaras para medida de dimensiones 3D, permiten hacer medidas deformas en 3D a velocidades superiores a los 30.000 perfiles por segundo.

Este tipo de cámaras, en modo 3D, puede llegar a adquirir hasta 30.000perfiles por segundo, cada uno de ellos incluye 1.536 coordenadas 3D dealta calidad. Los cálculos de triangulación se ejecutan dentro de la cámara yse transfieren al ordenador a través de su conexión digital.

Algunas de estas cámaras puede funcionar en modo especial, permitiendode esta forma adquirir diversas características de las imágenes como: forma3D, y Nivel de Gris de la imagen simultáneamente. Todas lascaracterísticas del objeto se capturan cuando el producto pasa por debajo dela cámara funcionando de forma lineal y se envían al PC vía la interfase decomunicación.

1.9.1.9 Cam. Infrarrojas/TérmicasTodas las cámaras descritas hasta este momento son cámaras que funcionandentro del espectro visible, y que pueden capturar radiación infrarrojacercana hasta aproximadamente 1000nm.

Existen muchas aplicaciones de visión que requieren soluciones más alládel espectro visible, debido a las características de emisión de los objetos ode la aplicación a evaluar. Dentro de estos tipos de aplicaciones seencuentran todas aquellas que deben resolverse dentro del infrarrojo lejanomás allá de los 2µm.

Las cámaras térmicas son capaces de determinar la temperatura de loscuerpos a partir de su radiación infrarroja. Existen dos longitudes de ondapor excelencia donde trabajan las cámaras térmicas de 2 a 5 µm y de 7 a12 µm.

Page 29: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

28

1.9.1.10 Cámaras MultiespectralesLas cámaras multiespectrales generan imágenes del objetivo con decenas ocentenares de longitudes de onda simultáneamente.

Estas cámaras son la combinación compacta del espectrógrafo Inspectorcon una cámara matricial, que genera una imagen multiespectral , pudiendoresolver aplicaciones colorimétricas tanto en aplicaciones industriales comocientíficas.

Comparado con los sistemas de imágenes basados en filtros, las cámarasmultiespectrales proporcionan alta resolución espacial y espectral,selección flexible de las longitudes de onda por software y una ampliacobertura espectral desde el ultravioleta hasta el infrarrojo, pasando por elespectro visible.

Page 30: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

29

1.9.2 Ópticas

Las ópticas se utilizan para transmitir la luz al sensor de la cámara de unaforma controlada y de esta forma obtener una imagen enfocada de uno ovarios objetos.

Para saber exactamente que óptica debe utilizarse para la aplicación que sedesea resolver se debe tener en cuenta una serie de parámetros. Por unaparte se debe conocer el tamaño del sensor de la cámara, también se debesaber a que distancia estará el objeto de la cámara y por último se debeconocer el campo de visión que deseamos abarcar en nuestra aplicación.Una vez conocidos todos estos parámetros podremos calcular la óptica autilizar mediante la siguiente formula:

Distancia = (Tamaño del sensor * Distancia al objeto) / Tamaño del objeto

Hay muchos fabricantes de ópticas, que pueden producir lentes de distintascualidades. No hay ningún fabricante que tenga un rango total de ópticaspara cubrir todas las necesidades que se plantean en las aplicaciones devisión.

Para definir el tipo de óptica se deben seguir una serie de consideraciones:

El tipo de iluminación utilizado

Las especificaciones del sensor de la cámara

El tamaño y geometría del objeto

La distancia y el espacio disponible

Page 31: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

30

1.9.2.1 Opticas Estándar

Estas ópticas están optimizadas para enfocar desde infinito hasta pocoscentímetros del objeto.

Normalmente estas ópticas tienen un MTF de entre 70 y 90 lp/mm con unadistorsión moderadamente baja, y utilizables con cámaras de resoluciónestándar de hasta ½" o 2/3".

Son ideales para la mayoría de cámaras estándar, este tipo de ópticasdiseñadas para aplicaciones industriales utilizan cristales de calidad y sonde construcción robusta, para poder resistir las vibraciones y golpes sin quese desenfoquen o cambie la apertura.

1.9.2.2 Ópticas para cámaras de alta resolución montura C

Son una versión superior en cualidad a las lentes estándar. Normalmentecon especificaciones para cámaras CCD de 2/3" o superior, acostumbran atener un MTF superior a 120 lp/mm y presentan muy baja distorsión. Seutilizan conectadas a cámaras de alta resolución con tamaño de píxelpequeño, y en aplicaciones de medida y alineación.

1.9.2.3 Opticas de gran formato

Este tipo de ópticas se utilizan cuando el tamaño del sensor excede lasmedidasconvencionales, y por tanto no se pueden utilizar ópticas con roscaC.

Este tipo de lentes acostumbran a ser modulares y por tanto necesitandiferentes adaptadores y espaciadores para conseguir la correcta distanciade enfoque. Este tipo de ópticas se utilizan principalmente en cámaraslineales de 2048 píxels o superiores, o en cámaras matriciales de muy altadefinición.

1.9.2.4 Ópticas para Microcámaras

Page 32: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

31

Denominadas MicroOpticas son ópticas diseñadas para ser conectadas amicrocámaras o cámaras de cabezal remoto.

El propósito de utilizar estás ópticas es para asegurar que el tamaño de laóptica no sea mayor que el tamaño de la microcámara, cosa que ocurriría sise utilizaran ópticas convencionales. Hay dos tamaños de ópticasdisponibles, una para ser utilizadas con las cámaras con sensor de 1/3", quetienen un diámetro de 12mm, y otras para las microcámaras de ½", quetienen un diámetro de 17mm.El enfoque de estas lentes se hace a través de una pequeña rosca queincorporan, que una vez ajustado el foco puede fijarse. Estas ópticaspueden enfocar a distancias extremadamente cortas, inferiores alcentímetro.

1.9.2.5 Ópticas Zoom Estándar

Las ópticas Zoom estándar se utilizan en aplicaciones donde se requierecapturar la imagen con distintas magnificaciones. Este tipo de ópticaspermiten el control manual o motorizado, pudiendo cambiar el zoom, elenfoque y el diafragma de forma remota, tanto analógicamente como através de un ordenador.

1.9.2.6 Ópticas Zoom de precisión

Son ópticas zoom diseñadas para aplicaciones donde se requiere muchaprecisión y donde el campo de visión es de reducido tamaño. Este tipo dezoom ha sido diseñado para ser utilizado con cámaras con sensores de hasta2/3". Y pueden resolver todas las aplicaciones que requieran grandesmagnificaciones. Estos sistemas son extremadamente versátiles ya queestán compuestos por distintos elementos intercambiables, que permitenenfocar cualquier objeto a distintas distancias y con distintasmagnificaciones.

Los componentes fundamentales de este tipo de zoom son: el zoompropiamente dicho, los tubos de extensión, las lentes de aumento, el

Page 33: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

32

sistema de enfoque, el sistema de iluminación coaxial a través de la propiaóptica, y el sistema de motores para poder modificar el zoom de formaremota.

Page 34: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

33

1.9.3 Iluminación

Las cámaras capturan la luz reflejada de los objetos. El propósito de lailuminación utilizada en las aplicaciones de visión es controlar la forma enque la cámara va a ver el objeto. La luz se refleja de forma distinta si seilumina una bola de acero, que si se ilumina una hoja de papel blanco y elsistema de iluminación por tanto debe ajustarse al objeto a iluminar. Si seutiliza una iluminación adecuada, la aplicación se resolverá más fácilmente,mientras que si la misma aplicación recibe una iluminación incorrectapuede que sea imposible de resolver. Si para resolver una aplicación esnecesario utilizar muchos filtros de software, significa que la iluminaciónque se está aplicando no es lo suficientemente correcta. Una iluminaciónadecuada permitirá emplear menos filtros en la imagen y por tantoaumentar la velocidad de proceso en esa aplicación. Las ventajas inherentes a los sistemas de iluminación comerciales, frente alos construidos por uno mismo (a menudo complejos y caros en tiempo),son:

• Efectividad económica: Ahorrar tiempo y dinero en investigación,diseño, desarrollo y construcción del sistema de iluminación.

• Calidad: Miles de sistemas funcionando en todo el mundo.

• Efectividad: Larga duración con el mínimo servicio técnico.

• Repetibilidad: Siempre disponible en grandes cantidades y con lasmismas características.

• Gran Variedad: Muchos tipos de sistemas de iluminación disponiblesy probados.

1.9.3.1 LEDPara aplicaciones donde no se requiera una gran intensidad de iluminaciónse puede utilizar la iluminación por LED (Light Emiting Diodes). Los LEDproporcionan una intensidad de iluminación relativa a un coste muyinteresante, y además tienen una larga vida, aproximadamente 100.000horas. Otra consideración a tener en cuenta es que sólo requieren un cablede alimentación y no un haz de fibra óptica que en ocasiones es muydelicado. La intensidad de la iluminación continua por LED no es tan intensa comootros tipos de iluminación pero actualmente se están introduciendo los LEDde alta intensidad que empiezan a proporcionar una iluminación mucho

Page 35: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

34

más potente. Si los LED se conectan a un sistema estroboscópico se puedenalcanzar potencias lumínicas muy similares a los de la luz halógena. Aunque los sistemas con LED más comunes emiten luz de color rojo y seutilizan para aplicaciones monocromas, actualmente se está extendiendo eluso de otros colores como infrarrojo, verde, azul o blanco. El motivo por elque los LED rojos son los más utilizados en los sistemas de visión esporque son los más fáciles de encontrar y los más baratos. La vida media delos sistemas de LED pueden alcanzar hasta las 100.000 horas.

1.9.3.2 Fibra OpticaLa iluminación por fibra óptica, es actualmente, la que puede proporcionarla luz mas intensa de todos los tipos de iluminación que se utilizan envisión artificial. La idea básica es conducir la luz procedente de unabombilla halógena, o de xenón, que se encuentra en un fuente deiluminación, a través de un haz de fibras ópticas que termina en unaadaptador específico para cada tipo de aplicación. Estos adaptadorespueden tener forma circular, lineal, puntual o de panel, y puede ser dedistintos tamaños y dimensiones.

En los haces de fibra óptica hay cierta perdida de intensidad con relación ala longitud o distancia. Normalmente no se aconseja utilizar haces de fibraóptica de una longitud superior a 5 metros, ya que por una parte se pierdeintensidad y por otra el precio se hace un factor determinante. Una de lasventajas de la fibra óptica es que proporciona luz fría, y por tanto es idealen aplicaciones donde los sistemas que puedan emitir calor sean uninconveniente o también en entornos deflagrantes .

Las fuentes de iluminación acostumbran a incorporar una bombillahalógena y generalmente incluyen un estabilizador de corriente, con unafuente de alimentación para la lámpara halógena (150W) que se aloja en un

Page 36: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

35

espacio donde se conecta el haz de fibra óptica. La potencia de iluminaciónde la lámpara halógena se controla mediante un reóstato. La vida media delas lámparas halógenas utilizadas con este tipo de iluminación oscila entre1.000 y 2.000 horas.

1.9.3.3 Fluorescente

Los tubos fluorescentes se usan en muchas ocasiones en aplicaciones devisión artificial, aunque debido a su limitada variedad de formas, tambiénes limitada su utilización.

Para las aplicaciones industriales es importante que los fluorescentesfuncionen a alta frecuencia al menos a 25kHz. En aplicaciones de visión nopueden utilizarse fluorescentes estándar debido a su efecto de parpadeo,que dependiendo de la velocidad a la que la cámara funcione, puede versereflejado en la intensidad de la imagen capturada.

Los tubos fluorescentes estándar no presentan un balance de coloruniforme, incorporando longitudes de onda mayoritariamente azules. Paraaplicaciones de visión artificial es necesario utilizar fluorescentes conespectro conocido. Así es habitual utilizar en según que aplicaciones,fluorescentes casi monocromáticos: ultravioletas, amarillos, verdes,azules...

Para aplicaciones donde se requiere una gran intensidad de iluminación yuna larga longitud, se utilizan fluorescentes de apertura, en estosfluorescentes la luz se emite solo en una dirección y con un ángulo muyestrecho, esto permite que la intensidad lumínica pueda ser hasta 10 vecessuperior a la de un fluorescente estándar.

Page 37: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

36

Las fuentes de alimentación que proporcionan electricidad a losfluorescentes pueden venir equipados con fotodiodos, que permitencontrolar y regular automáticamente la estabilidad de la luz en todomomento, de forma que cuando la intensidad de la luz del fluorescentedisminuye la fuente hace que aumente la potencia hasta devolver laintensidad anterior. La vida media de los tubos fluorescentes es algosuperior a las 10000 horas.

1.9.3.4 LaserSon sistemas de luz láser estructurado. La luz estructurada en visiónartificial se utiliza para iluminar un objeto (desde un ángulo conocido) conun patrón de luz específico (Ej. Una línea) y viendo la forma como cambiaeste patrón sobre el objeto se puede obtener información de la terceradimensión del objeto iluminado.

Los sistemas láser comercializados pueden tener diferentes intensidades ylongitudes de onda y pueden suministrarse con diferentes patrones: puntos,líneas rectas, circunferencias, cruces, cuadrados, matrices de puntos, ymúltiples líneas.

Page 38: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

37

1.9.4 Interfaces de Captura

Algunas cámaras que se utilizan en visión artificial presentan una serie derequisitos que en la mayoría de ocasiones no son estándar. Lasespecificaciones y precios de las placas de captura de imagen (FrameGrabbers) varían enormemente y por tanto se deben tener en cuenta losrequisitos técnicos de cada frame grabber para su elección.

Los Interfaces de captura o frame grabbers han sido utilizados desde hacemucho tiempo para poder capturar las imágenes a alta velocidad. Eldesarrollo de este tipo de placas de captura ha ido paralelo al rápido avancede la velocidad de los ordenadores. En el pasado la limitada capacidad deproceso de los ordenadores limitaba la velocidad y la mayoría de framegrabbers llevaban procesadores abordo. En la actualidad los frame grabberscon procesadores abordo son menos frecuentes y se utilizan en procesosdonde se requiere una gran velocidad o una gran potencia de proceso.

Los frame grabbers “inteligentes” con procesadores a bordo se utilizan enaplicaciones donde la velocidad o la potencia de proceso no pueden serresueltos por los ordenadores convencionales. Ofrecen una gran potenciade proceso y análisis, liberando al ordenador para que pueda realizar otrastareas de control. Los requisitos de los frame grabbers que se utilizan enentornos industriales y científicos son muy diferentes de los que se utilizanen entornos multimedia, y deben incorporar características especiales talescomo: adquisición por trigger, frame reset, control de strobe, inclusión deEntradas / Salidas digitales, etc...

1.9.4.1 Estándar análogosLos frame grabbers estándar para visión artificial permiten obtenerimágenes con un nivel de calidad suficiente y vienen acompañados de unsoftware de desarrollo mínimo para poder programar cualquier tipo de

Page 39: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

38

aplicación.Los frame grabbers estándares incorporan componentes analógicos entrelos que se incluyen conversores análogo digitales, decodificadores ymultiplexores. Normalmente pueden conectarse solo a cámaras analógicasestándar monocromo (CCIR , RS-170) o color (PAL, NTSC). Estos tiposde frame grabbers no pueden ser conectados a cámaras progresivas, de altaresolución, o cámaras digitales.

Normalmente no incluyen memoria a bordo de la propia placa, debido aque acostumbra a incrementar el coste. Sin embargo mediante el bus PCIpueden transferir al procesador del ordenador las imágenes línea a línea agran velocidad. Este tipo de transferencia puede ser conflictivo si esnecesario hacer proceso en tiempo real en el ordenador, ya que noacostumbra a ser posible transferir las imágenes y procesar al mismotiempo con este tipo de frame grabbers. En la mayoría de las aplicacionesde visión industrial es necesario realizar proceso en tiempo en tiempo real ypor tanto se aconseja que las placas lleven memoria a bordo. Algunas deestas placas estándar incorporan memoria abordo y son las quenormalmente se aconsejan para garantizar la transferencia integra de lasimágenes en los tiempos correctos.

La mayoría de estos frame grabbers tipo, incluyen un multiplexor parafacilitar la conexión de múltiples cámaras, conectándose una a una alconversor análogo digital, hasta un máximo de 16 cámaras en alguna placa.Normalmente estos frame grabbers pueden conectarse a señales de videocompuesto o Súper VHS (Y /C) y algunos modelos incorporan puertos deEntrada /Salida.

Con estos frame grabbers es posible sincronizar la captura de la cámara conuna señal externa (trigger). Aunque no acostumbra a ser posible trabajarcon reset asíncrono. Por tanto con estos frame grabbers la captura serealizará con un retraso aleatorio debido a la relación entre el momento enque se emite la señal y el tiempo de sincronismo vertical de la cámara.

1.9.4.2 Avanzados análogosLos frame grabbers avanzados análogos de altas prestaciones son los quegeneralmente se utilizan en la mayoría de aplicaciones de visión artificial,donde se necesita conectar cámaras con salida de video no estándar.Los requisitos mínimos que debe cumplir un frame grabber de prestacionesavanzadas son: un circuito de conversión análogo/digital de excelentes

Page 40: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

39

prestaciones, así como la posibilidad de aceptar señales de sincronismo dela cámara, o poderle proveer de estas señales. Un PLL programableavanzado que se utiliza para ajustar las señales de video sean estándares ono. La mayoría de frame grabber avanzados incorporan entrada de píxelclock, que se utiliza que se utiliza para ajustar la digitalización de lospíxels.La mayoría de aplicaciones de visión artificial deben capturar las imágenesen un momento preciso que normalmente viene determinado por una señalexterna (trigger) y a su vez el frame grabber debe poder enviar una señal(strobe) para el control de otros componentes industriales. Este tipo deframe grabbers además deben ser capaces de funcionar con cámaras queincorporan la posibilidad de reset asíncrono donde el sincronismo esinterrumpido por esa señal externa (trigger).

También deben poder controlar la señal de entrada (ganancia y contraste)para poder compensar sus posibles variaciones dependiendo del tipo decámara. Normalmente incorporan circuitos de Look Up table de entrada ysalida que permiten hacer procesos por hardware.

1.9.4.3 Avanzados digitalesFrame grabbers diseñados específicamente para cumplir con todos losrequisitos necesarios en aplicaciones de visión artificial en las que se debanconectar cámaras digitales, tanto lineales como matriciales. Todos estosframe grabbers pueden enviar o recibir sincronismos de las cámaras. Soncapaces de ajustar la calidad de la imagen a nivel de píxel controlando elpíxel clock, y además funcionan con reset asíncrono con lo que permitencapturar la imagen en el momento preciso que requiera la aplicación.Permiten el control de encoders que facilitan el funcionamiento concámaras lineales.

Los frame grabbers digitales avanzados permiten conectar múltiplescámaras digitales en el mismo frame grabber o conectar cámaras conmúltiples salidas de datos (taps). La incorporación de memoria en la propiaplaca, así como de arquitectura scatter gatter y de transferencia DMAaseguran la perfecta transferencia a alta velocidad al procesador delordenador, asegurando la mínima sobrecarga. Algunas de estas placasincorporan procesadores específicos para mejorar el rendimiento de lascámaras matriciales y lineales de alta velocidad y de alta definición.

Page 41: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

40

Características generales

Se utilizan como interfases para cámaras digitales. Normalmentepresentan la mayoría de las siguientes características:

Entrada de 8 a 64 bits en formato Camera Link o LVDS (EIA-644)

Controles de tiempo y sincronización muy precisos

Soporte para cámaras con múltiples salidas (taps)

Control de cámara por el canal digital o a través de RS-232

Arquitectura Scatter Gather para transferencia y manejo de las imágenes.

Sincronización de múltiples cámara

1.9.4.4 Captura Firewire

Muchos ordenadores de hoy en día incorporan conexión directa digital paraformato FireWire IEEE-1394, siendo este un sistema de entrada salida dedatos de altas prestaciones, algunas de sus características mas notables semuestran a continuación:

Elevada velocidad de transferencia de información.

Flexibilidad de la conexión.

Capacidad de conectar un máximo de 63 dispositivos.

Page 42: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

41

Su velocidad hace que sea la interfaz más utilizada para audio y vídeodigital. Así, se usa mucho en cámaras de vídeo, discos duros, impresoras,reproductores de vídeo digital, sistemas domésticos para el ocio,sintetizadores de música y escáneres.

Existen dos versiones:

FireWire 400* (IEEE 1394a): tiene un ancho de banda de 400Mbit/s, 30 veces mayor que el USB 1.1 y similar a la del USB 2.0, quealcanza los 480.

IEEE 1394b, FireWire 800 ó FireWire 2: duplica la velocidad delFireWire 400.

Arquitectura altamente eficiente. IEEE 1394b reduce los retrasos enla negociación, gracias a 8B10B (código que codifica 8 bits en 10 bits, quepermite suficientes transiciones de reloj, la codificación de señales decontrol y detección de errores. El código 8B10B es similar a 4B5B deFDDI, el que no fue adoptado debido al pobre equilibrio de corrientecontinua), que reduce la distorsión de señal y aumenta la velocidad detransferencia. Proporciona, por tanto, una mejor vivencia como usuario.

Compatibilidad retroactiva. Los fabricantes han adoptado elFireWire para una amplia gama de dispositivos, como videocámarasdigitales, discos duros, cámaras fotográficas digitales, audio profesional,impresoras, escáneres y electrodomésticos para el ocio. Los cablesadaptadores para el conector de 9 contactos del FireWire 800 te permitenutilizar productos FireWire 400 en el puerto FireWire 800. FireWire 800comparte las revolucionarias prestaciones del FireWire 400.

Flexibles opciones de conexión. Conecta hasta 63 ordenadores ydispositivos a un único bus.

Distribución en el momento. Fundamental para aplicaciones de audioy vídeo, donde un fotograma que se retrasa o pierde la sincronizaciónarruina un trabajo, el FireWire puede garantizar una distribución de losdatos en perfecta sincronía.

Alimentación por el bus. Mientras el USB 2.0 permite laalimentación de dispositivos sencillos y lentos que consumen un máximode 2,5 W, como un mouse, los dispositivos con FireWire pueden

Page 43: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

42

proporcionar o consumir hasta 45 W, más que suficiente para discos durosde alto rendimiento y baterías de carga rápida.

Page 44: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

43

1.10 Resultados finales

1.10.1 Solución adoptada

Dado el punto considerado como vital del tiempo de análisis enparalelo al proceso productivo se opta por llevar a cabo la opción decaptura dinámica, dicha característica proporciona al usuario/cliente de unchequeo de acuerdo a las especificaciones sin la necesidad de ampliar lostiempos productivos y por lo tanto sin deterioro del volumen total devehículos fabricados.

A continuación se muestra la disposición física de los elementosinicialmente encargados de la iluminación y captura de las imágenesdurante las pruebas realizadas en nuestro laboratorio:

Page 45: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

44

1.10.2 Hardware elegido.

1.10.2.1 CPU X86

El PC de sobremesa con placa base ASUS P4S-800MX ha sidoelegido dada las prestaciones aportadas y el coste moderado de su compra.Dentro de las prestaciones definidas como vitales para la aplicación enconcreto hayamos la diversidad de puertos de conexión como PCI’s,AGP’s, Firewire, etc que nos posibilitan de una forma ágil la conexión dela cámara y tarjeta de entrada&salidas. A la vez, este PC posee unavelocidad de bus de 800MHz que junto a una CPU de reloj 3GHz y unaRAM máxima de 2GB ofrecen los requerimientos de análisis correctos parala aplicación en particular que este proyecto trata. Respecto al sistemaoperativo, conocido el entorno industrial donde la aplicación va adesarrollarse hemos elegido un sistema operativo con reconocidareputación en cuanto a estabilidad y fiabilidad frente a los nuevos sistemasoperativos de reciente aparación en mercado, el sistema operativo descritoy utilizado es el para muchos una de las mejores versiones de S.O. deWindows, el 2000 edición Professional.

A continuación se pueden apreciar los detalles relevantes de la placa encuestión junto con los componentes seleccionados:

Información técnica

General

Tipo de producto Placa base

Factor de forma Micro ATX

Page 46: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

45

Anchura 24.5 cm

Profundidad 24.5 cm

Procesadores compatibles Pentium 4

Socket del procesador Socket 478

Tipo conjunto de chips SiS661FX

Velocidad máxima del bus 800 MHz

Tipo BIOS Award

Controlador de almacenamiento ATA-133

Procesador

Cantidad instalada (máximosoportado)

0 ( 1 )

Memoria

Tecnología de RAM admitida DDR SDRAM

RAM instalada (máx.) 0 MB / 2 GB (máx.)

Velocidad de la memoria RAMsoportada

PC2100, PC2700, PC3200

Características de la RAM Sin memoria intermedia

Vídeo

Controlador gráfico SiS Mirage

Memoria de vídeo Memoria de vídeo compartida (UMA)

Page 47: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

46

Audio

Audio salida Tarjeta de sonido

Procesador de señal SiS963L

Modo de salida del sonido Sonido envolvente (surround) de canalesdiscretos 5.1

Telecom / Conexión de redes

Conexión de redes Adaptador de red - Ethernet, Fast Ethernet

Características

Características del BIOS Soporte de DMI, soporte para WfM 2.0

Monitorización de hardware Temperatura interna de CPU, temperatura delchasis, tacómetro de ventilador de CPU,tacómetro de la caja del ventilador, voltaje delsistema, tacómetro de ventilador de la fuente dealimentación

Desactivación / Activación Activación del teclado, activación de la LAN(WOL), activación del ratón, activación a travésde puerto USB, Wake on ring (WOR)

Características de hardware CrashFree BIOS, C.P.R. (Recuperación de losparámetros de la CPU)

Expansión / Conectividad

Ranura(s) de expansión 1 ( 1 ) x AGP 8x ( 1.5 V )5 ( 5 ) x PCI3 ( 3 ) x memoria - DIMM de 184 espigas

Page 48: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

47

1 ( 1 ) x procesador - Zócalo 478

Interfaces de almacenamiento ATA-133 - conector(es): 2 x 40pin IDC

Interfaces 1 x teclado - genérico - mini-DIN de 6 espigas(estilo PS/2)1 x ratón - genérico - mini-DIN de 6 espigas(estilo PS/2)1 x red - Ethernet 10Base-T/100Base-TX - RJ-451 x serial - RS-232 - D-Sub de 9 espigas (DB-9)1 x paralelo - IEEE 1284 (EPP/ECP) - D-Sub de25 espigas (DB-25)1 x pantalla / vídeo - VGA - HD D-Sub de 15espigas (HD-15)4 x Hi-Speed USB - 4 PIN USB tipo A1 x audio - salida de línea - mini-conexióntelefónica estéreo 3,5 mm1 x audio - entrada de línea - mini-conexióntelefónica estéreo 3,5 mm1 x micrófono - entrada - miniteléfono 3.5 mm2 x audio - entrada de línea - 4 PIN MPC

Conectores adicionales (opcional) 2 x Hi-Speed USB

Diverso

Cumplimiento de normas Plug and Play

Page 49: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

48

Físicamente

Especificaciones

• Sistema Operativo: Windows 2K Professional.

• Placa madre: ASUS P4S800-MX

• Procesador: Pentium 4 CPU 3GHz.

• Velocidad de bus: FSB 800MHz.

• RAM :512MB DDR.

• Disco duro: 80GB.

• Slots utilizados: 2 Ranuras PCI.

Page 50: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

49

1.10.2.2 Tarjeta I/O de adquisición

Iniciaremos la explicación de los motivos de eleccíon de esta tarjetacon la explicaión rápida y concisa de todo lo que aporta semejanteelemento.

La tarjeta PC-1200 elegida es una tarjeta denomida como de altorendimiento por su variedad de funciones ofrecidas, analógicamultifunción, tarjeta entrada-salida digital para PCs y con ordenadorescompatibles con slot 5V PCI. Además de las anteriores características, estaserie captura en continuo hasta 110 kilobyte muestras/segundo, laadquisición de datos sin espacios bajo DOS, Windows 95/98 y el WindowsNT 3.51/4.0. Esta familia consigue rasgos como: un convertidor analógicodigital a 330 kilobyte de 12 bit, dos convertidores independientes digitalanalógico de 12 bit, 16 canales entrada digital compatibles TTL y 16canales salida digital compatible TTL. También proporciona 32 canalessingle-ended o 16 entradas diferenciales. También denota la alta ganancia.Dos conversores digital analógico de esta tarjeta multifunción son devoltaje de salida independiente bipolar con jumper seleccionable paravoltaje de salida. La función de exploración de Digital Output es muyasombroso, llamada como Magicscan. Esto explora con modos deremolque: el modo de canal fijo y el modo de exploración de canal, ambosmodo pueden aumentar a muestras de 330 kilobyte por segundo. Tambiénproporciona tres modo de trigger para esta serie: el software trigger, elpacer trigger y trigger externo, cada modo de trigger usa "MagiScan" pararealizar la adquisición de datos. El trigger externo puede ser programado auno del tres método de trigger: pre-trigger, post-trigger y trigger medio.También soporta plug and play bajo Windows.

Page 51: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

50

Una vez expuesto todo el glosario de recursos comunicativos ofrecidos, ycon un toque claro de sinceridad, explicaré el por qué de tal elemento parauna aplicación como la nuestra. Dicha tarjeta, con el cometido decomunicar a los dos equipos encargados de la aplicación y del control de laaplicación, está sobredimensionada en recursos dadas la ampliasposibilidades que nos ofrece según lo anteriormente visto, dado quenosotros sólo requerimos entrada y salidas digitales (8bits). Me atrevería adecir que se explota a un 25% aproximadamente de su capacidad.Lógicamente y con un motivo de peso como es el económico, debería dedescartarse de inmediato por ofrecer un exceso de elementos técnicosinnecesarios que sólo aumentan el presupuesto y que no se considerannecesarios, afortunadamente, en este caso, estas tarjetas en concepto deelemento para pruebas y desarrollo por parte de uno de nuestros mas fielesproveedores, se nos entrega como regalo sin cargo o coste alguno, sin otromotivo mas que este y la cobertura técnica ofrecida, son las elegidas para laaplicación.

Físicamente

Page 52: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

51

Diagrama de bloques

Especificaciones

Page 53: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

52

1.10.2.3 Tarjeta I/O Optoacoplada

El motivo que nos empuja al diseño, compra, fabricación y montajede la placa optoacoplada que veremos a continuación es principalmente elconseguir una comunicación entre nuestro PC y el equipo en el otro lado deuna forma clara y nítida sin interfierencias de señales externas que puedandar lugar a errores de interpretación. Esto lo conseguimos a través deoptoacopladores que como función principal tienen el traspaso de lasseñales de electricas a traves de un medio conductor de luz, que ofrece laseparación eléctrica entre equipos.

Como segundo motivo en la creación de esta placa, tenemos la opción quenos ofrece de gobernar la iluminición con tensión de hasta 240Vac, siendolas habituales salidas de PC o tarjetas de adquisición de una tensiónmáxima de 24Vdc.

A continuación se muestran detalles de la placa en concreto:

Físicamente

Page 54: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

53

Diagrama de bloques

Especificaciones

Digital I/O

• 4 inputs nivel TTL

• 4 outputs nivel TTL

• Input low Vil=0.01V max.

• Output highVih=2.5V min.

• Requerimientos alimentación: +5Vcc

• Voltage de aislamiento: 5000 (AC, 1min, R.H.<60%) Vms.

Especificaciones generales

• I conector: x1 D-Sub 15 macho

• O conector: x1 D-Sub 15 macho

• IO conector: x1 D-Sub 15 macho

Page 55: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

54

• Temperatura de operación: 0 ∼ 80ºC

• Temperatura de almacenaje: -40 ∼ 80ºC

• Dimensiones: 107x121,25

1.10.2.4 Iluminación

Diversos sistemas han sido evaluados como los posibles encargadosde iluminar la aplicación que este proyecto en concreto trata, entre ellos lossistema de iluminación por LED, fluorescentes, láser, fibra óptica, etc.Gran parte de estos sistemas, de sobrada capacidad, han quedadodescartados por el alto coste que conlleva su compra, ejemplo de este casoes la fibra óptica y el láser. Por otro lado, y dentro de un coste massoportable hemos encontrado la iluminación mediante fluorescentes, noobstante, se descarta dada su iluminiación discontinua que a ojos humanospuede no apreciarse, pero que a la velociadad de captura de la cámarautilizada para este proyecto puede si acarrear perjuicios. Entre las opcionesfinales nos encontramos con la bombilla habitual de toda la vida hecha deWolframio Tugsteno y la iluminación ofrecida por LED’s. La opciónbasada en iluminación por LED dada su potencia lumínica y su bajoconsumo y moderado coste podría ser quizá la que mejor hubiese encajado,no obstante, y tras realizar pruebas en nuestro laboratorio, este sistema nollega a conseguir uno de los objetivos importantes que la iluminación debeaportar, que es el echo de obtener tal potencia lumínica sobre la piezaproducto que lleve a la clara distinción de la superficie impregnada por elproducto químico y la zona limpia, tal distinción es amplificada de formaimportante por la iluminación, llegando a quemar la zona limpia deproducto químico y así obtenener un contraste claro y beneficioso para laevaluación de contornos, por este motivo principalmente y por su costemoderado se acaba escogiendo la iluminación mediante bombillaincandescente de filamentos fabricados en Wolframio Tugsteno.

Page 56: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

55

A continuación se muestran algunas de sus características mas relevantes:

Físicamente

Especificaciones

• Iluminación articulada.

• Alimentación: 220 voltios.

• Potencia max: 50 wattios.

Page 57: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

56

1.10.2.5 Cámara

Dentro del amplio abanico de cámaras existentes en el mercado, laescogida para esta aplicación ha sido la versión monocroma con un sensorde 1/3”, una resolucion de 658x494 píxeles, velocidad de captura de hasta60fps, lente standard tipo C y una comunicación simple basada en elestándar Firewire. Estas caracerísticas descritas anteriormente quedan aljusto nivel de lo que la aplicación requiere por velocidad de desplazamientoy por la precisión en la medida. Cabe decir, que el precio de esta cámaraaunque considerable, queda todavía por debajo de la inmensa mayoría delas cámaras existentes. Para la elección de esta cámara se consideróinicialmente y como su mayor adversaria la versión color, la cual sedescarta automáticamente puesto que la aplicación de software requierellevar a escala de grises las imágenes capturadas, por consecuencia, elegiruna cámara color para después retornar a escala de grises repercutiría entiempo de proceso y coste de materiales. Descartando el modelo color deiguales prestaciones, el resto de cámaras quedan algo mas alejadas dadaslas características excesivas (nunca sobrantes técnicamente) que nosaumentan el presupuesto de una forma irazonable y que no aportan mayorrelevancia técnica que la monocroma. Aún y mencionado lo anterior,haremos mención de algunas de las cámaras evaluadas y los motivos porlos cuales se descartaron dando a elección la monocroma con sensor de1/3” y velocidad de captura normal. En tercer lugar considerando comoprimera la elegida, situariamos la cámara de alta velocidad, que dado elmovimiento conocido de nuestra pieza producto (hasta 500mm/s) podríallegar a ser una gran candidata, no obstante y volviendo a palabrasanteriores, la mencionada alta velocidad (hasta 200.000imágenes/seg)queda muy por encima de la necesidad y una vez mas nos obliga a elevar elpresupuesto sin aportación técnica relevante respecto de la elegida con sucaptura de 60fps, que nos ofrece un desplazamiento máximo de 8,3mmentre capturas. En cuarto lugar, nombraríamos la cámara de altasensibilidad, estas cámaras están diseñadas para entornos donde la

Page 58: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

57

luminosidad es precaria o por algún motivo no puede elevarse, tal y comose mencionó en el apartado de elección de la iluminación, nuestraaplicación tiene como unos de sus pilares importantes una aportaciónlumínica lo suficiéntemente alta como para llegar incluso a quemar laimagen en las zonas no contaminadas del producto químico a evaluar, poreste motivo y no sólo por el económico, la cámara de alta sensibilidadqueda descartada. En último lugar y de forma agrupada, quedarían lascámaras inteligentes (lente, procesador, etc), cámaras 3D ymultiespectrales, que por su concepción dirigida a otro tipo de aplicacionesse descartan sin llegar ni siquiera a evaluar su coste.

Conocidos los motivos que descartan otros tipos de cámaras para estaaplicación, a continuación explico algunas de las características relevantesde la cámara elegida. Esta cámara es de las primeras cámaras desarrolladaspara aplicaciones donde la limitación de espacio o peso requiera unacámara placa. El sensor de la cámara está separado de la placa, y puedeutilizarse en diferentes maneras, incluye un sistema de ensamblaje paraconectar distintos tipos de ópticas mediante adaptador C, CS o M12.La cámara placa incorpora un total de 4 inputs/outputs y un sofisticadoconcepto I/O: Todos los puertos pueden utilizarse como inputs o comooutputs. La modulación de anchura de pulso (PWM) hace que esto seaposible, por ejemplo, para direccionar una óptica específica. Control de iris,enfoque, zoom puede realizarse desde el PC a través de registros IEE1394disponibles para tal uso.

Page 59: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

58

Las cámara incluye, trigger asíncrono, control de ganancia y tiempo deexposición, selección de regiones de interés, LUTs programables, I/Oprogramables,…

Físicamente

Especificaciones

• Resolución: 658x494 pixels. 1/3”.

• Temperatura de operación: 5 ∼ 45ºC

• Temperatura de almacenaje: -10 ∼ 60ºC

• Lente tipo C.

Page 60: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

59

1.10.3 Descriptivo de funcionamiento

Pantalla principal:

Page 61: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

60

1.10.3.1 Calibración del sistema

El sistema requiere previo a su funcionamiento en modo automáticode un correcto calibrado de la cámara para así permitir al software conocerlas dimensiones del plano X-Y en el cual se haya, para ello, se debenrealizar los siguientes pasos:

1º desde el menú Settings seleccionamos Camera Calibration:

Una vez seleccionado, el sistema nos lo confirma mediante los siguientestextos marcados :

Page 62: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

61

2º Definimos un área de chequeo para posteriormente desplazar por este elútil de calibrado (folio con imagen de dimensión conocida). La definicióndel área de chequeo se realiza manteniendo el botón del mouse izquierdoapretado desde el punto de inicio hasta el punto final. Para definición deárea de chequeo las opciones Grab continuos image y Execute CPACdeben estar deshabilitadas.

3º Una vez definido el área, desplazamos el útil de calibración por el áreadefinido anteriormente. En esta ocasión las opciones Grab continuos yExecute CPAC deben estar habilitadas.

El resultado debería ser la imagen siguiente:

Page 63: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

62

4º Una vez realizada la calibración deshabilitamos Grab continuos yExecute CPAC y opuestamente al paso 1 deshabilatamos Cameracalibration dando así por concluida la calibración del sistema.

Page 64: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

63

1.10.3.2 Funcionamiento en automático

Una vez realizado el calibrado del sistema y tras la masterización dela pieza producto podemos poner el equipo en modo automático desdeMenu Run Mode, Automatic.

Page 65: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

64

1.10.4 Comunicación con el exterior

Tal y como se ha mencionado anteriormente, el sistema permite en paralelo al

proceso de verificación la comunicarse con el exterior, todo esto se realiza en modo

background cuando rueda en modo automático pero también visible en modo manual,

para ello el usuario posee una ventana desde la cual puede ver el estado actual de las

señales digitales e incluso forzar el estado de las salidas. Para este cometido existe la

siguiente pantalla desde el Menu Status, Dig Inputs & Outputs:

Page 66: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

65

Al igual que desde el monitor podemos verificar el estado medianteel chequeo (nos indica el estado activo/inactivo) de los correspondientesbits, la placa optoacoplada dispone de LED’s rojos para salidas y amarillospara entradas que nos permiten evaluar también el estado de las señalesdigitales.

Page 67: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

66

Tarragona Julio 2007

Oscar Navas Luque

Ingeniero Técnico Industrial Firma:

Page 68: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad

DOCUMENTO nº 2: MEMORIA DE CÁLCULO

Autor: Oscar Navas LuqueDirector: Nicolau Cañellas Alberich

Fecha: Julio 2007

Page 69: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Memoria de cálculo

68

Documento nº 2: MEMORIA DE CÁLCULO

2.0 Índice .................................................................................................68

2.1 Cálculo de resistencias

2.1.1 Cálculo de R1........................................................................69

2.1.2 Cálculo de R2 cuando el fototransistor está saturado............70

2.1.3 Cálculo de R2 cuando el fototransistor está en corte.............71

Page 70: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Memoria de cálculo

69

2.1 CÁLCULO DE RESISTENCIAS

En el circuito de la figura la salida del PC se acopla ópticamente a laentrada del operacional a través del optoacoplador TLP621-4.

Datos:

CTR=0.2 Vfmin=1.2V Vfmax=1.5max

Ifmax=50mA Iceomax=50nA Vcemax=0.5V

2.1.1. ELECCIÓN DE R1

El LED conduce cuando la salida del PC está a nivel bajo y noconduce cuando está a nivel alto. El valor de R1 determina la intensidadque circula por el led (If) cuando este conduce. If debe satisfacer lassiguientes condiciones:

If < Ifmax=50mA

Page 71: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Memoria de cálculo

70

La intensidad If se calcula fácilmente:

Elegimos un valor comercial de: 220 Ω

2.1.2 CALCULO D R2 CUANDO EL FOTOTRANSISTOR ESTÁSATURADO

Cuando el fototransistor está saturado, la tensión de su salida(Vcesatmax=0.5V) debe ser interpretada por el amplificadoroperacionalcomo nivel bajo, para que esté saturado Ic<CTR.If=0,2.If

A medida que R2 disminuye, Ic aumenta y el fototransistor puede llegar ala saturación

Page 72: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Memoria de cálculo

71

Cuando el fototransistor está en saturación, la tensión Vcesat debe serinferior a V- para que se produzca la saturación por parte del amplificadoroperacional a -Vcc.

Según la ecuación anterior:

Elegimos un valor comercial de: 4k7 Ω

2.1.3 CALCULO D R2 CUANDO EL FOTOTRANSISTOR ESTÁ ENCORTE

Page 73: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Memoria de cálculo

72

Cuando el fototransistor está en corte, la tensión Vceoff debe ser superior aV- para que se produzca la saturación por parte del amplificadoroperacional a +Vcc.

La tensión en V- es de 2v obtenidos mediante R3 y R4 (var), elegimos470Ω para R3 y 705Ω para R4.

Tarragona Julio 2007

Oscar Navas Luque

Ingeniero Industrial Firma:

Page 74: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad

DOCUMENTO nº 3: PLANOS

Autor: Oscar Navas LuqueDirector: Nicolau Cañellas Alberich

Fecha: Julio 2007

Page 75: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 1: Memoria descriptiva y funcional

74

Documento nº 3: PLANOS

3.0 Índice ...........................................................................74

Plano nº 1 ..........................................................................Ubicación

Plano nº 2 ......................................................................... Connector

Plano nº 3 ......................................................................... Bits 0-3 Entradas

Plano nº 4 .......................................................................... Bits 0-4 Salidas

Plano nº 5 ...........................................................................Libre de potencial

Tarragona Julio 2007

Oscar Navas Luque

Ingeniero Técnico Industrial Firma:

Page 76: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar
Page 77: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar
Page 78: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar
Page 79: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar
Page 80: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar
Page 81: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad

DOCUMENTO nº 4: PRESUPUESTO

Autor: Oscar Navas LuqueDirector: Nicolau Cañellas Alberich

Fecha: Julio 2007

Page 82: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Presupuesto

76

Documento nº 4: PRESUPUESTO

4..0 Índice .............................................................................................76

4.1 Cuadro de precios

4.1.1 Capítulo 1. Elementos hardware..........................................77

4.2.2 Capítulo 2. Elementos software...........................................78

4.2 Presupuesto

4.2.1 Capítulo 1. Elementos hardware...........................................79

4.2.2 Capítulo 2. Elementos software............................................80

4.3 Resumen.............................................................................................81

Page 83: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Presupuesto

77

4.1 CUADRO DE PRECIOS

4.1.1 CAPÍTULO 1. ELEMENTOS HARDWARE

Código Ud. Descripción Precio

C01E1 € Caja conexión 4 PG guía DIN 155x155 24

C01E2 € Soporte PCB 107x121.75 14

C01E3 € Circuito integrado LM124 1.2

C01E4 € Circuito integrado ULN2003 0.51

C01E5 € Circuito integrado TLP621 0.99

C01E6 € Leds diametro 3 0.12

C01E7 € Relé ZVNX normal tipo CO/270 4.58

C01E8 € Placa c.i. Vir. Baque to 2.5 2.24

C01E9 € Regleta 2 polos 0.57

C01E10 € Conector hembra c.plano 16v 0.33

C01E11 € Conector macho perfil red. 16v 0.32

C01E12 € Conector D25 pin p macho CI ACOD 1.25

C01E13 € Conector D 25 pin s hembra CINTA 3.63

C01E14 € Cable cinta 34 pin 1.25

C01E15 € Cable interc funda 12x0.25 0.73

C01E16 € Resistencia carbon 1/4W 0.24

Page 84: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Presupuesto

78

C01E17 € Potenciómetro horizontal 10K 0.8

C01E18 € Camara Lung 1/3" Mono 658x494 826

C01E19 € Óptica 12mm 1.4 rosca C 1/2" 128

C01E20 € Cable alimentación IEEE 35

C01E21 € Alimentador TRQ 12v 66

C01E22 € Soporte iluminación 220V 12.5

C01E23 € Bombilla 220V 20W 3.2

C01E24 € Tarqueta adquisición 1200 975

C01E25 € PC sobremesa ASUS P4S800-MX 680

C01E26 € Periféricos PC 155

4.1.2 CAPÍTULO 2. ELEMENTOS SOFTWARE

Código Ud. Descripción Precio

C02E01 € Aplicación Naslu CPAC 3230

C02E02 € Licencia Windows 2000 275

Page 85: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Presupuesto

79

4.2 PRESUPUESTO

4.2.1 CAPÍTULO 1. ELEMENTOS HARDWARE

Código Ud. Descripción Cant. Precio Total

C01E1 € Caja conexión 4 PG guía DIN155x155

1 24 24

C01E2 € Soporte PCB 107x121.75 1 14 14

C01E3 € Circuito integrado LM124 2 1.2 2.4

C01E4 € Circuito integrado ULN2003 1 0.51 0.51

C01E5 € Circuito integrado TLP621 2 0.99 1.98

C01E6 € Leds diametro 3 8 0.12 0.96

C01E7 € Relé ZVNX normal tipo CO/270 1 4.58 4.58

C01E8 € Placa c.i. Vir. Baquelita to 2.5 1 2.24 2.24

C01E9 € Regleta 2 polos 2 0.57 1.14

C01E10 € Conector hembra c.plano 16v 3 0.33 0.99

C01E11 € Conector macho perfil red. 16v 3 0.32 0.96

C01E12 € Conector D25 pin p macho CIACOD

1 1.25 1.25

C01E13 € Conector D 25 pin s hembraCINTA

1 3.63 3.63

C01E14 €/m Cable cinta 34 pin 2 1.25 2.5

C01E15 €/m Cable interc funda 12x0.25 2 0.73 1.46

C01E16 € Resistencia carbon 1/4W 15 0.24 3.6

Page 86: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Presupuesto

80

C01E17 € Potenciómetro horizontal 10K 2 0.8 1.6

C01E18 € Camara Lung 1/3" Mono658x494

1 826 826

C01E19 € Óptica 12mm 1.4 rosca C 1/2" 1 128 128

C01E20 € Cable alimentación IEEE 1 35 35

C01E21 € Alimentador TRQ 12v 1 66 66

C01E22 € Soporte iluminación 220V 1 12.5 12.5

C01E23 € Bombilla 220V 20W 1 3.2 3.2

C01E24 € Tarqueta adquisición 1200 1 975 975

C01E25 € PC sobremesa ASUS P4S800-MX

1 680 680

C01E26 € Periféricos PC 1 155 155

Total capítulo 1: Elementos hardware 2.948€

4.2.2 CAPÍTULO 2. ELEMENTOS SOFTWARE

Código Ud. Descripción Cant. Precio Total

C02E01 € Naslu CPAC 1 3230 3230

C02E02 € Licencia Windows 2000 1 275 275

Page 87: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Presupuesto

81

Total capítulo 1: Elementos software 3.505€

4.3 RESUMEN DEL PRESUPUESTO

CAPITULO RESUMEN IMPORTE %

C_01 Elementos hardware 2948.00€ 45.68

C_02 Elementos software 3505.00€ 54.32

TOTAL EJECUCIÓN 6453.00€

13% Gastos Generales 838.9

6% Beneficio Industrial 387.2

SumanGG y BI

1226.07€

16% IVA 1228.65€

Page 88: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 4: Presupuesto

82

TOTAL PRESUPUESTO GENERAL 8907.72€

Sube el presupuesto general la dicha cantidad de:

OCHO MIL NOVECIENTOS SIETE Euros con SETENTA Y DOScentimos.

Tarragona Julio 2007

Oscar Navas Luque

Ingeniero Industrial Firma:

Page 89: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

83

Aplicación chequeo de calidad

DOCUMENTO nº 5: PLIEGO DE CONDICIONES

Autor: Oscar Navas LuqueDirector: Nicolau Cañellas Alberich

Fecha: Julio 2007

Page 90: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 5: Pliego de condiciones

84

Documento nº 5: PLIEGO DE CONDICIONES

5.0 Índice ................................................................................................ 84

5.1 Condiciones generales........................................................................85

5.1.1 Vigencia ................................................................................85

5.1.2. Documentos del proyecto .....................................................85

5.1.3. Descripción ...........................................................................86

5.1.4 Especificaciones ....................................................................86

5.1.5 Orden de prioridad documental ..............................................87

5.1.6. Modificaciones ......................................................................87

5.1.7. Dirección e inspección ...........................................................87

5.1.8. Condiciones de seguridad ......................................................87

5.1.9. Garantía. ................................................................................88

5.2. Condiciones técnicas y de ejecución ..................................................88

5.2.1. Generalidades .........................................................................88

5.2.2. Condiciones de uso, mantenimiento y seguridad ...................89

5.3. Condiciones facultativas .....................................................................89

5.4. Condiciones económicas .....................................................................91

5.4.1. Responsabilidades ..................................................................91

5.4.2. Aumentos de precios ..............................................................91

5.4.3. Modificaciones ........................................................................91

5.4.4. Forma de pago .........................................................................91

5.5.5 Plazo de entrega ........................................................................92

Page 91: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

85

5.1.- CONDICIONES GENERALES .

El presente proyecto tiene carácter de obligado cumplimiento, una vezcumplimentado con los sellos correspondientes y la consiguiente legalización.

5.1.1.-VIGENCIA.

Este pliego con todos sus artículos estará en vigor durante la ejecución de lainstalación y hasta la terminación de la misma, entendiéndose que las partes a quehace referencia el mismo se aceptarán en todos sus puntos por el adjudicatario dela instalación.

5.1.2.- DOCUMENTOS DEL PROYECTO.

Todos los documentos parciales del proyecto se considerarán partes inseparablesde la unidad total que forma el proyecto, integrado por:

0.- Índice general.

1.- Memoria descriptiva.

2.- Memoria de cálculo.

3.- Planos.

4.- Presupuesto.

5.- Pliego de condiciones.

6.- Anexos.

5.1.3.- DESCRIPCIÓN.

Este proyecto regula las instalaciones y aplicaciones necesarias para realizarla verificación en continuo de la aplicación de productos químicos. La instalacióncomprende las siguientes partes :

Page 92: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 5: Pliego de condiciones

86

1 – Instalación del PC encargado de recibir, almacenar y analizar la información.

2 – Instalación del sistema de percepción artificial, cámara, caja electrónicaoptoacoplada.

3 – Conexiones entre los anteriores y hacia el equipo “master”, bien sea otro PC,PLC o robot.83

La aplicación sofware comprende:

1 – Software de verificación Naslu CPAC.

2 – Licencia Windows 2000.

5.1.4 - ESPECIFICACIONES

El equipo resultante de este proyecto tiene como objetivo la verificación encontinuo de masillas químicas durante su aplicación, las características máximasdel sistema según se muestra a continuación:

Velocidad máxima de desplazamiento, 500mm/s.

Precisión del sistema, +-1mm en x,y.

Tiempo de análisis, 0s, transcurriendo el análisis en paralelo al proceso.

Patrones máximos, 10.

Almacenaje de rechazos, 1 año.

5.1.5 ORDEN DE PRIORIDAD DOCUMENTAL

Page 93: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 5: Pliego de condiciones

87

El orden de prioridades de los documentos del proyecto es el siguiente:

1º Planos

2º Pliego de condiciones

3º Presupuesto

4º Memoria

5.1.6.- MODIFICACIONES.

Durante la ejecución del proyecto se podrán realizar cuantas modificaciones seestimen oportunas, siempre que las mismas sean aprobadas por el Ingenieroresponsable de la dirección del proyecto. Estas modificaciones serán adjuntadas alproyecto, así como las nuevas condiciones económicas.

No obstante, no se podrán realizar modificaciones durante el periodo de garantía,una vez que la instalación se haya terminado y probado.

5.1.7.- DIRECCIÓN E INSPECCIÓN.

La dirección de la instalación eléctrica/electrónica estará a cargo del Ingenieroresponsable de la dirección del proyecto, pudiendo éste, delegar en otro técnico desu confianza a cargo de la ejecución práctica de la instalación.

Page 94: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

88

5.1.8.-CONDICIONES DE SEGURIDAD.

El contratista, bajo su exclusiva responsabilidad, tomará toda clase deprecauciones exigidas por las reglamentaciones oficiales en este tipo detrabajos, con el fin de evitar accidentes, siendo responsable de lasconsecuencias de carácter civil o criminal que pudieran originarse durantela ejecución de la obra, bien por este motivo, bien por daños a terceros.

El personal de la Contrata estará obligado a usar todos los dispositivos,herramientas y prendas de seguridad exigidas, pudiendo el Ingenieroresponsable director del proyecto suspender los trabajos si estima que elpersonal citado está expuesto a peligros que son corregibles.

5.1.9.- GARANTÍA.

El plazo de garantía será de un año a partir de la fecha de recepciónprovisional. Transcurrido éste, se efectuará el reconocimiento final de lamisma, y si procede, su recepción definitiva.

Durante el periodo de garantía del sistema; correrán a cargo del contratistatodos los trabajos de conservación y reparación que sean necesarios,siempre que éstos no sean como consecuencia de una inadecuadautilización o manejo del equipo.

5.2. CONDICIONES TÉCNICAS Y DE EJECUCIÓN.

5.2.1. GENERALIDADES.

El contratista se comprometerá a utilizar los materiales con lascaracterísticas y marcas que se especifican en el proyecto, si por algunacircunstancia el Contratista quisiera utilizar materiales o aparatos distintosa los especificados en el proyecto, éstos deberán de ser de características

Page 95: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 5: Pliego de condiciones

89

similares y necesitará tener la pertinente autorización del Ingenieroresponsable director del proyecto para poder utilizar estos nuevosmateriales.

Una vez iniciadas las obras , deberán continuar sin interrupción , salvoindicación expresa del Ingeniero responsable director del proyecto.

El Contratista dispondrá de los medios técnicos y humanos adecuados parala ejecución adecuada y rápida de las mismas.

5.2.2. CONDICIONES DE USO, MANTENIMIENTO YSEGURIDAD.

El sistema deberá ser manejado por personal cualificado y siempre con eldebido curso formativo previamente realizado, en caso de no respetarse loespecificado anteriormente podrían ocurrir daños materiales importantes.

El sistema de chequeo dinámico Naslu CPAC sólo tiene comomantenimiento preventivo la limpieza de la óptica provocada por residuoscontaminantes químicos en la atmósfera. Dicha limpieza se define comouna vez cada tres meses siempre que no se reduzcan las distancias al puntode aplicación. La no realización de las tareas de mantenimiento preventivopodría ocasionar mal funcionamiento del equipo y pertinentes pérdidasproductivas que siempre correrán a cargo de la contrata o contratista.

Page 96: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 5: Pliego de condiciones

90

5.3.- CONDICIONES FACULTATIVAS.

La ejecución del proyecto hasta su terminación, estará sujeta a los artículosque se especifican a continuación y a las órdenes que para cada asunto enparticular considere el Ingeniero responsable director del proyecto.

Artículo 1.- La ejecución de la instalación se llevará a cabo de acuerdo conlas normas que prescriben los siguientes reglamentos y normas particulares:

Reglamento Electrotécnico de Baja Tensión.

Reglamento de Seguridad para Plantas.

Normas de Seguridad e Higiene.

Normas particulares de la empresa suministradora.

Artículo 2.- La realización de las diferentes partes de la instalación deberáhacerse estrictamente según los planos dados. De surgir cualquiereventualidad, la resolverá el Ingeniero responsable director del proyecto, elcual deberá redactar en el caso de que estime alguna modificación, elcorrespondiente documento reformado, que se considerará desde el día dela fecha como parte integrante del proyecto primitivo, y como tal , sujeto alas mismas consideraciones y especificaciones de todos y cada uno de losdocumentos de éste, en tanto en cuanto no se le opongan explícitamente.

Artículo 3.- Todos los materiales a emplear tendrán que reunir con todorigor las condiciones económicas, técnicas y físicas requeridas para cadauno de ellos.

Será facultativo del Ingeniero responsable director del proyecto, ordenarsean retirados o reemplazados, cualquiera de los materiales que a su juicioconsidere no garanticen la seguridad de la instalación.

Artículo 4.- Ingeniero responsable director del proyecto puede ordenar quese verifiquen los ensayos que considere oportunos, en caso de que se

Page 97: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 5: Pliego de condiciones

91

realicen, éstos correrán por cuenta del Contratista hasta un importe máximodel 1% del presupuesto de la obra.

Artículo 5.- Cuando las pruebas que se realicen en la instalación no den losresultados esperados según el proyecto y la instalación deba modificarse orehacerse por causas imputables al Contratista, éste correrá con los gastosque se originen, sin el tope del 1%.

Artículo 6.- La Contrata tendrá derecho a poseer una copia de todos y cadauno de los documentos del proyecto.

Artículo 7.- La Contrata no será responsable de los deterioros producidosen la instalación por una inadecuada utilización de la misma.

Artículo 8.- Se prohibe tajantemente la reproducción o divulgación de losdocumentos de que consta este proyecto, salvo en el caso que se cuente conla autorización previa de la firma propietaria.

Artículo 9.- Una vez finalizada la instalación, se procederá a realizar unaprueba general de la misma en la cual estarán presentes el Ingenieroresponsable director del proyecto por parte de la propiedad y unrepresentante de la compañía contratante.

5.4.- CONDICIONES ECONÓMICAS.

5.4.1.- RESPONSABILIDADES.

La empresa encargada de realizar el abastecimiento e instalación delsistema de chequeo dinámico será la única responsable de los gastos yconsecuencias que se deriven de trabajos y ensayos erróneos durante elmontaje y comprobación de la instalación.

5.4.2.- AUMENTOS DE PRECIOS.

Page 98: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 5: Pliego de condiciones

92

Si durante el periodo de la instalación se produjera un aumento en el preciode cualquiera de los productos y materiales destinados a la misma, siempreque el aumento sea superior a un 10% , se deberá adaptar el presupuesto ala nueva tarifa.

5.4.3.- MODIFICACIONES.

Si alguna de las partes de la instalación requiere alguna modificación porparte del Ingeniero responsable director del proyecto, y esto conlleva unamodificación de las condiciones económicas, la empresa encargada derealizar la instalación deberá tomar una decisión al respecto, y en caso deaceptarlas , deberá de confirmarlo por escrito.

5.4.4.- FORMA DE PAGO.

El importe de la Contrata se abonará en forma fraccionada contracertificaciones facultativas de obra ejecutada, y de las que se detraerá elimporte que corresponda por ensayos y análisis de los materiales yunidades de obra realizados por el correspondiente laboratorio, en base adichas certificaciones de obra.

5.5.5 PLAZO DE ENTREGA

El diagrama de Gantt estimado de planificación es el siguienteconsiderando como el día de inicio del proyecto el mismo día en el cual serecibe el pedido por parte del cliente y están claros todos los aspectos

Page 99: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad Documento nº 5: Pliego de condiciones

93

técnicos relacionados con el desarrollo del proyecto y que puedanrepercutir en un retraso del mismo.

TAREAS/TIEMPO Wk1

Wk2

Wk3

Wk4

Wk5

Wk6

Wk7

Wk8

Wk9

Wk10

Recepción del pedido

Diseño electrónico

Desarrollo de la aplicacióninformática

Compra de materiales

Recepción de materiales

Montaje cajaelectrica/electronica

Pruebas

Sistema productivo

Tarragona Julio 2007

Oscar Navas Luque

Ingeniero Técnico Industrial Firma:

Page 100: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad

DOCUMENTO nº 6: ANEXO 1 – COMPONENTES ELECTRÓNICOS

Autor: Oscar Navas LuqueDirector: Nicolau Cañellas Alberich

Fecha: Julio 2007

Page 101: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

95

Documento nº 6: ANEXO 1 – COMPONENTES ELECTRÓNICOS

6.1.0 Índice .....................................................................................95

6.1.1 LM324 ...................................................................................96

6.1.2 ULN2003 .............................................................................. 102

6.1.3 TLP641-4 .............................................................................. 105

Page 102: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

96

6.1.1 LM324

Page 103: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

97

Page 104: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

98

Page 105: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

99

Page 106: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

100

Page 107: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

101

Page 108: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

102

6.1.2 ULN2003

Page 109: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

103

Page 110: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

104

Page 111: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

105

6.1.3 TLP641-4

Page 112: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

106

Page 113: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

107

Page 114: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

108

Page 115: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

109

Page 116: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 1 Componentes electrónicos

110

Tarragona Julio 2007

Oscar Navas Luque Firma:Ingeniero Técnico Industrial

Page 117: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicación chequeo de calidad

DOCUMENTO nº 6: ANEXO 2 – PROGRAMA

Autor: Oscar Navas LuqueDirector: Nicolau Cañellas Alberich

Fecha: Julio 2007

Page 118: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

112

Documento nº 6: ANEXO 2 - PROGRAMA

6.2.0 Índice .....................................................................................112

6.2.1 CPACDLLApp .......................................................................113

6.2.2 CPACDllDlg ...........................................................................115

6.2.3 CPACCVDisplay ....................................................................150

6.2.4 CPACDioscreen.......................................................................171

6.2.5 CPACGraph ............................................................................176

6.2.6 CPACImage ............................................................................196

6.2.7 CPACPicture ...........................................................................208

Page 119: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

113

6.2.1 CPACDLLApp

// CVCEdgeDLLApp.cpp : Defines the class behaviors for the application.//

#include "stdafx.h"#include "VCEdgeDLL.h"#include "VCEdgeDLLDlg.h"

#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif

/////////////////////////////////////////////////////////////////////////////// CVCEdgeDLLApp

BEGIN_MESSAGE_MAP(CVCEdgeDLLApp, CWinApp)//{{AFX_MSG_MAP(CVCEdgeDLLApp)

// NOTE - the ClassWizard will add and remove mappingmacros here.

// DO NOT EDIT what you see in these blocks of generatedcode!

//}}AFX_MSGON_COMMAND(ID_HELP, CWinApp::OnHelp)

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////// CVCEdgeDLLApp construction

CVCEdgeDLLApp::CVCEdgeDLLApp(){

// TODO: add construction code here,// Place all significant initialization in InitInstance

}

/////////////////////////////////////////////////////////////////////////////// The one and only CVCEdgeDLLApp object

CVCEdgeDLLApp theApp;

Page 120: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

114

/////////////////////////////////////////////////////////////////////////////// CVCEdgeDLLApp initialization

BOOL CVCEdgeDLLApp::InitInstance(){

AfxEnableControlContainer();

// Standard initialization// If you are not using these features and wish to reduce the size// of your final executable, you should remove from the following// the specific initialization routines you do not need.

#ifdef _AFXDLLEnable3dControls(); // Call this when using MFC in

a shared DLL#else

Enable3dControlsStatic(); // Call this when linking to MFCstatically#endif

CVCEdgeDLLDlg dlg;m_pMainWnd = &dlg;int nResponse = dlg.DoModal();if (nResponse == IDOK){

// TODO: Place code here to handle when the dialog is// dismissed with OK

}else if (nResponse == IDCANCEL){

// TODO: Place code here to handle when the dialog is// dismissed with Cancel

}

// Since the dialog has been closed, return FALSE so that we exit the// application, rather than start the application's message pump.return FALSE;

}

Page 121: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

115

6.2.2 CPACDllDlg

#include "stdafx.h"#include "VCEdgeDLL.h"#include "P1200.H"#include "VCEdgeDLLDlg.h"#include "Dioscreen.h"#include "afxwin.h"

#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif

// link image manger lib's (LIB file directories must be set properly)#pragma comment (lib, "cvcimg.lib")#pragma comment (lib, "cvcutilities.lib")#pragma comment (lib, "cvcdriver.lib")#pragma comment (lib, "cvcedge.lib")

#define SEARCHMODE_THRESHOLD 0#define SEARCHMODE_THRESHOLD_SUB 1#define SEARCHMODE_CONTRAST 2#define SEARCHMODE_CONTRAST_SUB 3#define SEARCHMODE_DERIVATION_SUB 4

#define SEARCHFUNCTION_FIRST 0#define SEARCHFUNCTION_ALL 1#define SEARCHFUNCTION_PAIR 2#define SEARCHFUNCTION_BEST 3

volatile bool Out15;volatile bool Out14;volatile bool Out13;volatile bool Out12;volatile bool Out11;

Page 122: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

116

volatile bool Out10;volatile bool Out9;volatile bool Out8;volatile bool Out7;volatile bool Out6;volatile bool Out5;volatile bool Out4;volatile bool Out3;volatile bool Out2;volatile bool Out1;volatile bool Out0;volatile bool In15;volatile bool In14;volatile bool In13;volatile bool In12;volatile bool In11;volatile bool In10;volatile bool In9;volatile bool In8;volatile bool In7;volatile bool In6;volatile bool In5;volatile bool In4;volatile bool In3;volatile bool In2;volatile bool In1;volatile bool In0;

/////////////////////////////////////////////////////////////////////////////// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog{public:

CAboutDlg();

// Dialog Data//{{AFX_DATA(CAboutDlg)enum { IDD = IDD_ABOUTBOX };//}}AFX_DATA

// ClassWizard generated virtual function overrides

Page 123: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

117

//{{AFX_VIRTUAL(CAboutDlg)protected:virtual void DoDataExchange(CDataExchange* pDX); //

DDX/DDV support//}}AFX_VIRTUAL

// Implementationprotected:

//{{AFX_MSG(CAboutDlg)//}}AFX_MSGDECLARE_MESSAGE_MAP()

};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD){

//{{AFX_DATA_INIT(CAboutDlg)//}}AFX_DATA_INIT

}

void CAboutDlg::DoDataExchange(CDataExchange* pDX){

CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CAboutDlg)//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)//{{AFX_MSG_MAP(CAboutDlg)

// No message handlers//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////// CVCEdgeDLLDlg dialog

CVCEdgeDLLDlg::CVCEdgeDLLDlg(CWnd* pParent /*=NULL*/): CDialog(CVCEdgeDLLDlg::IDD, pParent)

{//{{AFX_DATA_INIT(CVCEdgeDLLDlg)m_bGrab = FALSE;m_lPolarity = POLARITY_POSITIVE;

Page 124: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

118

m_lSearchMode = SEARCHMODE_THRESHOLD_SUB;m_lThreshold = 160;m_csThreshold = _T("Threshold: 160");m_bBinaryDisplay = FALSE;m_bShowProjection = FALSE;m_lSearchFunction = SEARCHFUNCTION_PAIR;m_lPolarity2 = POLARITY_NEGATIVE;m_lThreshold2 = 160;m_csThreshold2 = _T("Threshold2: 160");m_csResults = _T("");m_bRepeated = FALSE;m_faccuracy = 0.0f;m_lmaxdiameter = 0;//}}AFX_DATA_INIT// Note that LoadIcon does not require a subsequent DestroyIcon in

Win32m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);

}

void CVCEdgeDLLDlg::DoDataExchange(CDataExchange* pDX){

CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CVCEdgeDLLDlg)DDX_Control(pDX, IDC_B_SNAP, m_bSnap);DDX_Control(pDX, IDC_SL_THRESDOLD2, m_slThreshold2);DDX_Control(pDX, IDC_SL_THRESDOLD, m_slThreshold);DDX_Check(pDX, IDC_C_GRAB, m_bGrab);DDX_Control(pDX, IDC_CV_DISP, m_cvDisp);DDX_Control(pDX, IDC_CV_IMG, m_cvImg);DDX_Radio(pDX, IDC_R_P_DONTCARE, m_lPolarity);DDX_Radio(pDX, IDC_R_SM_THRESHOLD, m_lSearchMode);DDX_Slider(pDX, IDC_SL_THRESDOLD, m_lThreshold);DDX_Text(pDX, IDC_TXT_THRESDOLD, m_csThreshold);DDX_Check(pDX, IDC_C_BINARY_DISPLAY,

m_bBinaryDisplay);DDX_Radio(pDX, IDC_R_SF_FINDFIRST, m_lSearchFunction);DDX_Radio(pDX, IDC_R_P_DONTCARE2, m_lPolarity2);DDX_Slider(pDX, IDC_SL_THRESDOLD2, m_lThreshold2);DDX_Text(pDX, IDC_TXT_THRESDOLD2, m_csThreshold2);DDX_Text(pDX, IDC_TXT_RESULTS, m_csResults);DDX_Check(pDX, IDC_C_REPEATED, m_bRepeated);DDX_Text(pDX, IDC_ACCURACY, m_faccuracy);DDX_Text(pDX, IDC_DIAMETER, m_lmaxdiameter);

Page 125: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

119

//}}AFX_DATA_MAP}

BEGIN_MESSAGE_MAP(CVCEdgeDLLDlg, CDialog)//{{AFX_MSG_MAP(CVCEdgeDLLDlg)ON_WM_SYSCOMMAND()ON_WM_PAINT()ON_WM_QUERYDRAGICON()ON_BN_CLICKED(IDC_B_SAVE, OnBSave)ON_BN_CLICKED(IDC_C_GRAB, OnCGrab)ON_BN_CLICKED(IDC_R_SM_CONTRAST, OnRSmContrast)ON_BN_CLICKED(IDC_R_SM_CONTRAST_SUB,

OnRSmContrastSub)ON_BN_CLICKED(IDC_R_SM_DERIVATION_SUB2,

OnRSmDerivationSub2)ON_BN_CLICKED(IDC_R_SM_THRESHOLD,

OnRSmThreshold)ON_BN_CLICKED(IDC_R_SM_THRESHOLD_SUB,

OnRSmThresholdSub)ON_BN_CLICKED(IDC_R_SF_FINDALL, OnRSfFindall)ON_BN_CLICKED(IDC_R_SF_FINDBEST, OnRSfFindbest)ON_BN_CLICKED(IDC_R_SF_FINDFIRST, OnRSfFindfirst)ON_BN_CLICKED(IDC_R_SF_FINDPAIR, OnRSfFindpair)ON_WM_HSCROLL()ON_BN_CLICKED(IDC_B_EXECUTE, OnBExecute)ON_BN_CLICKED(IDC_C_BINARY_DISPLAY,

OnCBinaryDisplay)ON_BN_CLICKED(IDC_B_SNAP, OnBSnap)ON_COMMAND(IDM_FILE_EXIT, OnFileExit)ON_COMMAND(IDM_ABOUT_ABOUT, OnAboutAbout)ON_COMMAND(IDM_SETTINGS_SETTINGS,

OnSettingsSettings)ON_COMMAND(IDM_SETTINGS_CAMERACALIBRATION,

OnSettingsCameracalibration)ON_COMMAND(IDM_STATUS_IOSTATUS, OnStatusIostatus)ON_WM_TIMER()ON_COMMAND(IDM_SETTTINGS_LIGHT, OnSetttingsLight)ON_WM_CLOSE()ON_UPDATE_COMMAND_UI(IDM_SETTTINGS_LIGHT,

OnUpdateSetttingsLight)//}}AFX_MSG_MAP

END_MESSAGE_MAP()

Page 126: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

120

/////////////////////////////////////////////////////////////////////////////// CVCEdgeDLLDlg message handlers

BOOL CVCEdgeDLLDlg::OnInitDialog(){

CDialog::OnInitDialog();

// Add "About..." menu item to system menu.

// IDM_ABOUTBOX must be in the system command range.ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);ASSERT(IDM_ABOUTBOX < 0xF000);

CMenu* pSysMenu = GetSystemMenu(FALSE);if (pSysMenu != NULL){

CString strAboutMenu;strAboutMenu.LoadString(IDS_ABOUTBOX);if (!strAboutMenu.IsEmpty()){

pSysMenu->AppendMenu(MF_SEPARATOR);pSysMenu->AppendMenu(MF_STRING,

IDM_ABOUTBOX, strAboutMenu);}

}

// Set the icon for this dialog. The framework does this automatically// when the application's main window is not a dialogSetIcon(m_hIcon, TRUE); // Set big iconSetIcon(m_hIcon, FALSE); // Set small icon

// Create the ToolTip control.m_tooltip.Create(this);m_tooltip.Activate(TRUE);

// assign tools to controls //SON LAS AYUDAS SOBRE CONTROLES //m_tooltip.AddTool(GetDlgItem(IDC_B_OPEN), "Open an Image orDriver"); m_tooltip.AddTool(GetDlgItem(IDC_B_SAVE), "Save the Image"); m_tooltip.AddTool(GetDlgItem(IDC_C_GRAB), "Turn grab on andoff"); m_tooltip.AddTool(GetDlgItem(IDC_C_REPEATED), "Execute onevery acquired image");

Page 127: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

121

// TODO: Use one of the following forms to add controls:// m_tooltip.AddTool(GetDlgItem(IDC_<name>), <string-table-id>);// m_tooltip.AddTool(GetDlgItem(IDC_<name>), "<text>");

// Common Vision Blox initialization m_Img = NULL; // UI initialization SetupUI (); // enable DirectDraw m_cvDisp.SetDirectDrawEnabled (TRUE); // enable scrollbars m_cvDisp.SetScrollBars (TRUE);

// TODO: Add extra initialization here

SetTimer(ID_CLOCK_IO_TIMER,250,NULL);//Inicialización timerpara lectura entradas.

/**************************************************************/ /* NOTICE: call P1200_DriverInit() to initialize the driver. */

/**************************************************************/

// Initial the device driver, and return the board number in the PC wInitialCode=P1200_DriverInit(&wTotalBoard); if( wInitialCode!=NoError )

{MessageBox("No PCI-1200 card in this system !!!","PCI-1200 Card Error",MB_OK);

}// else// MessageBox("PCI-1200 card in this system !!!",// "PCI-1200 Card Ok",MB_OK);

/*** assign Board 0 to active ***/P1200_ActiveBoard( 0 ); // assign Board 0 to active

Page 128: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

122

wRetVal=P1200_GetConfigAddressSpace(0, &wAddrTimer,&wAddrCtrl,

&wAddrDio, &wAddrAdda);

if( wRetVal!=NoError )MessageBox("Error when picking parameters!!","PCI-1200

Settings pick-up",MB_OK);

// load image using comdlgm_cvImg.LoadImage("cvAVT1394.vin");

// setup UISetupUI ();

//Inicialización de modos.SetSearchMode (m_lSearchMode);SetSearchFunction (m_lSearchFunction);

GetDlgItem(IDC_R_P_DONTCARE2) ->EnableWindow (TRUE); GetDlgItem(IDC_R_P_POSITIVE2) ->EnableWindow (TRUE); GetDlgItem(IDC_R_P_NEGATIVE2) ->EnableWindow (TRUE); GetDlgItem(IDC_SL_THRESDOLD2) ->EnableWindow (TRUE); GetDlgItem(IDC_TXT_THRESDOLD2) ->EnableWindow (TRUE);

maxdiameter=0;cam_calibration=FALSE;settings_on=TRUE;UpdateData(FALSE);return TRUE; // return TRUE unless you set the focus to a control

}

void CVCEdgeDLLDlg::OnSysCommand(UINT nID, LPARAM lParam){

if ((nID & 0xFFF0) == IDM_ABOUTBOX){

CAboutDlg dlgAbout;dlgAbout.DoModal();

}else

Page 129: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

123

{CDialog::OnSysCommand(nID, lParam);

}}

// If you add a minimize button to your dialog, you will need the codebelow// to draw the icon. For MFC applications using the document/viewmodel,// this is automatically done for you by the framework.

void CVCEdgeDLLDlg::OnPaint(){

if (IsIconic()){

CPaintDC dc(this); // device context for painting

SendMessage(WM_ICONERASEBKGND, (WPARAM)dc.GetSafeHdc(), 0);

// Center icon in client rectangleint cxIcon = GetSystemMetrics(SM_CXICON);int cyIcon = GetSystemMetrics(SM_CYICON);CRect rect;GetClientRect(&rect);int x = (rect.Width() - cxIcon + 1) / 2;int y = (rect.Height() - cyIcon + 1) / 2;

// Draw the icondc.DrawIcon(x, y, m_hIcon);

}else{

CDialog::OnPaint();}

}

// The system calls this to obtain the cursor to display while the user drags// the minimized window.HCURSOR CVCEdgeDLLDlg::OnQueryDragIcon(){

return (HCURSOR) m_hIcon;}

Page 130: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

124

BOOL CVCEdgeDLLDlg::PreTranslateMessage(MSG* pMsg){

// CG: The following block was added by the ToolTips component.{

// Let the ToolTip process this message.m_tooltip.RelayEvent(pMsg);

}return CDialog::PreTranslateMessage(pMsg); // CG: This was

added by the ToolTips component.}

BEGIN_EVENTSINK_MAP(CVCEdgeDLLDlg, CDialog) //{{AFX_EVENTSINK_MAP(CVCEdgeDLLDlg)

ON_EVENT(CVCEdgeDLLDlg, IDC_CV_IMG, 5 /* ImageSnaped*/, OnImageSnapedCvImg, VTS_NONE)

ON_EVENT(CVCEdgeDLLDlg, IDC_CV_DISP, 9 /* LabelClicked*/, OnLabelClickedCvDisp, VTS_I4)

ON_EVENT(CVCEdgeDLLDlg, IDC_CV_DISP, 16 /* CVCError*/, OnCVCErrorCvDisp, VTS_I4 VTS_BSTR VTS_PBOOL)

ON_EVENT(CVCEdgeDLLDlg, IDC_CV_IMG, 4 /* CVCError */,OnCVCErrorCvImg, VTS_I4 VTS_BSTR VTS_PBOOL)

//}}AFX_EVENTSINK_MAPEND_EVENTSINK_MAP()

void CVCEdgeDLLDlg::SetupUI (void){ CWnd *pWnd;

// save image handle m_Img = (IMG) m_cvImg.GetImage(); // set display image m_cvDisp.SetImage ((long) m_Img);

// enable / disable grab checkbox pWnd = GetDlgItem (IDC_C_GRAB); pWnd->EnableWindow (m_cvImg.GetIsGrabber());

pWnd = GetDlgItem (IDC_C_REPEATED); pWnd->EnableWindow (m_cvImg.GetIsGrabber());

// enable / disable snap button pWnd = GetDlgItem (IDC_B_SNAP);

Page 131: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

125

pWnd->EnableWindow (m_cvImg.GetIsGrabber());

// enable / disable save button pWnd = GetDlgItem (IDC_B_SAVE); pWnd->EnableWindow (IsImage(m_Img));

pWnd = GetDlgItem (IDC_B_EXECUTE); pWnd->EnableWindow (IsImage(m_Img));

// choose a display left button mode m_cvDisp.SetLeftButtonMode (LB_AREAMODE); m_cvDisp.SetRightButtonMode (RB_ZOOM);

// get datatype of plane 0 if(m_cvImg.GetImage() != 0) {

long lDataType = m_cvImg.DataType (0); // set slider range m_slThreshold.SetRange (1, (1 << (lDataType & 0xFFFF)) - 1,

TRUE); m_slThreshold2.SetRange (1, (1 << (lDataType & 0xFFFF)) - 1,

TRUE); }}

void CVCEdgeDLLDlg::OnBSave(){

// save image using comdlg m_cvImg.SaveImageByDialog ();}

void CVCEdgeDLLDlg::OnCGrab(){

// update checkbox state UpdateData (TRUE); // set grab m_cvImg.SetGrab (m_bGrab);}

void CVCEdgeDLLDlg::OnImageSnapedCvImg(){

Page 132: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

126

TArea Area; double x0, y0, x1, y1, x2, y2;

// refresh display m_cvDisp.Refresh (); // get selected area and build Area type of it m_cvDisp.GetSelectedArea (&x0, &y0, &x1, &y1, &x2, &y2); SetArea (x0, y0, x1, y1, x2, y2, Area); // remove all prev. labels m_cvDisp.RemoveAllLabels (); UpdateData (TRUE); if (m_bRepeated) OnBExecute ();}

void CVCEdgeDLLDlg::OnBSnap(){

// remove all prev. labelsm_cvDisp.RemoveAllLabels ();

m_bGrab = false; UpdateData(false);

// snap one image m_cvImg.Snap(); // refresh display

m_cvDisp.Refresh();

}

void CVCEdgeDLLDlg::SetSearchMode (long lNewMode){ UpdateData (TRUE); // disable depending controls GetDlgItem(IDC_R_P_DONTCARE) ->EnableWindow (FALSE); GetDlgItem(IDC_R_P_DONTCARE2) ->EnableWindow (FALSE); GetDlgItem(IDC_C_BINARY_DISPLAY)->EnableWindow (FALSE); GetDlgItem(IDC_R_SF_FINDBEST) ->EnableWindow (FALSE);

switch (lNewMode) {

Page 133: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

127

case SEARCHMODE_THRESHOLD: case SEARCHMODE_THRESHOLD_SUB: // enable binary display GetDlgItem(IDC_C_BINARY_DISPLAY)->EnableWindow (TRUE); // searchbest is supported only in derivation mode if (m_lSearchFunction == SEARCHFUNCTION_BEST) SetSearchFunction (SEARCHFUNCTION_FIRST); // don't care polarity only in derivation mode if (m_lPolarity == POLARITY_DONT_CARE) m_lPolarity = POLARITY_POSITIVE; break;

case SEARCHMODE_CONTRAST: case SEARCHMODE_CONTRAST_SUB: // searchbest is supported only in derivation mode if (m_lSearchFunction == SEARCHFUNCTION_BEST) SetSearchFunction (SEARCHFUNCTION_FIRST); // don't care polarity only in derivation mode if (m_lPolarity == POLARITY_DONT_CARE) m_lPolarity = POLARITY_POSITIVE; // dont't display binary m_bBinaryDisplay = FALSE; break;

case SEARCHMODE_DERIVATION_SUB: // enable don't care polarity GetDlgItem(IDC_R_P_DONTCARE) ->EnableWindow (TRUE); GetDlgItem(IDC_R_P_DONTCARE2) ->EnableWindow (TRUE); // enable findbest GetDlgItem(IDC_R_SF_FINDBEST) ->EnableWindow (TRUE); // dont't display binary m_bBinaryDisplay = FALSE; break; } // keep new mode m_lSearchMode = lNewMode; UpdateData (FALSE); OnCBinaryDisplay ();}

void CVCEdgeDLLDlg::OnRSmContrast(){

SetSearchMode (SEARCHMODE_CONTRAST);

Page 134: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

128

}

void CVCEdgeDLLDlg::OnRSmContrastSub(){

SetSearchMode (SEARCHMODE_CONTRAST_SUB);}

void CVCEdgeDLLDlg::OnRSmDerivationSub2(){

SetSearchMode (SEARCHMODE_DERIVATION_SUB);}

void CVCEdgeDLLDlg::OnRSmThreshold(){

SetSearchMode (SEARCHMODE_THRESHOLD);}

void CVCEdgeDLLDlg::OnRSmThresholdSub(){

SetSearchMode (SEARCHMODE_THRESHOLD_SUB);}

void CVCEdgeDLLDlg::SetSearchFunction (long lNewFunction){ UpdateData (TRUE); // disable depending controls GetDlgItem(IDC_R_P_DONTCARE2) ->EnableWindow (FALSE); GetDlgItem(IDC_R_P_POSITIVE2) ->EnableWindow (FALSE); GetDlgItem(IDC_R_P_NEGATIVE2) ->EnableWindow (FALSE); GetDlgItem(IDC_SL_THRESDOLD2) ->EnableWindow (FALSE); GetDlgItem(IDC_TXT_THRESDOLD2) ->EnableWindow (FALSE);

switch (lNewFunction) { case SEARCHFUNCTION_FIRST: case SEARCHFUNCTION_ALL: case SEARCHFUNCTION_BEST: break;

case SEARCHFUNCTION_PAIR: GetDlgItem(IDC_R_P_DONTCARE2) ->EnableWindow (TRUE); GetDlgItem(IDC_R_P_POSITIVE2) ->EnableWindow (TRUE); GetDlgItem(IDC_R_P_NEGATIVE2) ->EnableWindow (TRUE);

Page 135: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

129

GetDlgItem(IDC_SL_THRESDOLD2) ->EnableWindow (TRUE); GetDlgItem(IDC_TXT_THRESDOLD2) ->EnableWindow (TRUE); break; } // keep new function m_lSearchFunction = lNewFunction; UpdateData (FALSE);}

void CVCEdgeDLLDlg::OnRSfFindall(){

SetSearchFunction (SEARCHFUNCTION_ALL);}

void CVCEdgeDLLDlg::OnRSfFindbest(){

SetSearchFunction (SEARCHFUNCTION_BEST);}

void CVCEdgeDLLDlg::OnRSfFindfirst(){

SetSearchFunction (SEARCHFUNCTION_FIRST);}

void CVCEdgeDLLDlg::OnRSfFindpair(){

SetSearchFunction (SEARCHFUNCTION_PAIR);}

void CVCEdgeDLLDlg::OnHScroll(UINT nSBCode, UINT nPos,CScrollBar* pScrollBar){ UpdateData (TRUE);

// update thresholds m_csThreshold.Format ("Threshold: %u", m_lThreshold); m_csThreshold2.Format ("Threshold2: %u", m_lThreshold2); UpdateData (FALSE); CDialog::OnHScroll(nSBCode, nPos, pScrollBar);}

void CVCEdgeDLLDlg::OnBExecute(){

Page 136: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

130

UpdateData (TRUE);

// create TimeWatch object TWCreate(&m_lTimeHandle); // set unit to µs TWSetUnit(m_lTimeHandle, TW_MICROSECONDS);

// remove all prev. labels m_cvDisp.RemoveAllLabels ();

// init parameters BOOL bPositiveEdge1 = (m_lPolarity == POLARITY_POSITIVE ?TRUE : FALSE); BOOL bPositiveEdge2 = (m_lPolarity2 == POLARITY_POSITIVE ?TRUE : FALSE); double dThreshold1 = (double) m_lThreshold; double dThreshold2 = (double) m_lThreshold2; long lDensity = 1000; long lPlane = 0; long Aux0 = 0; long Aux1 = 0; float Width = 0;

// init area TArea Area; double x0, y0, x1, y1, x2, y2; // get selected area and build Area type of it m_cvDisp.GetSelectedArea (&x0, &y0, &x1, &y1, &x2, &y2); SetArea (x0, y0, x1, y1, x2, y2, Area);

// sarch result for OSFindAllEdges function EDGERESULTS results = NULL; // init result count m_lResultCount = 1; BOOL bEdgeFound= FALSE;

//benchmark TWStartStopWatch (m_lTimeHandle, 0); // start timer #0 // execute selected search function switch (m_lSearchMode) { case SEARCHMODE_THRESHOLD: {

Page 137: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

131

switch (m_lSearchFunction) { case SEARCHFUNCTION_FIRST: bEdgeFound = TFindFirstEdge (m_Img, lPlane, lDensity, Area,dThreshold1, bPositiveEdge1, m_Result[0]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

case SEARCHFUNCTION_ALL: bEdgeFound = TFindAllEdges (m_Img, lPlane, lDensity,

Area, dThreshold1, bPositiveEdge1, MAXRESULTS, m_Result,m_lResultCount); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

case SEARCHFUNCTION_PAIR: bEdgeFound = TFindEdgePair (m_Img, lPlane, lDensity,

Area, dThreshold1, bPositiveEdge1, m_Result[0], dThreshold2,bPositiveEdge2, m_Result[1]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); m_lResultCount = 2; break; } break; }

case SEARCHMODE_THRESHOLD_SUB: { switch (m_lSearchFunction) { case SEARCHFUNCTION_FIRST:

bEdgeFound = TSFindFirstEdge (m_Img, lPlane,lDensity, Area, dThreshold1, bPositiveEdge1, m_Result[0]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

case SEARCHFUNCTION_ALL: bEdgeFound = TSFindAllEdges (m_Img, lPlane,

lDensity, Area, dThreshold1, bPositiveEdge1, MAXRESULTS, m_Result,m_lResultCount); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

Page 138: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

132

case SEARCHFUNCTION_PAIR: bEdgeFound = TSFindEdgePair (m_Img, lPlane,

lDensity, Area, dThreshold1, bPositiveEdge1, m_Result[0], dThreshold2,bPositiveEdge2, m_Result[1]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); m_lResultCount = 2; break; } break; }

case SEARCHMODE_CONTRAST: { switch (m_lSearchFunction) { case SEARCHFUNCTION_FIRST:

bEdgeFound = CFindFirstEdge (m_Img, lPlane,lDensity, Area, dThreshold1, bPositiveEdge1, m_Result[0]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

case SEARCHFUNCTION_ALL: bEdgeFound = CFindAllEdges (m_Img, lPlane,

lDensity, Area, dThreshold1, bPositiveEdge1, MAXRESULTS, m_Result,m_lResultCount); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

case SEARCHFUNCTION_PAIR: bEdgeFound = CFindEdgePair (m_Img, lPlane,

lDensity, Area, dThreshold1, bPositiveEdge1, m_Result[0], dThreshold2,bPositiveEdge2, m_Result[1]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); m_lResultCount = 2; break; } break; }

case SEARCHMODE_CONTRAST_SUB: { switch (m_lSearchFunction) {

Page 139: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

133

case SEARCHFUNCTION_FIRST: bEdgeFound = CSFindFirstEdge (m_Img, lPlane,

lDensity, Area, dThreshold1, bPositiveEdge1, m_Result[0]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

case SEARCHFUNCTION_ALL: bEdgeFound = CSFindAllEdges (m_Img, lPlane,

lDensity, Area, dThreshold1, bPositiveEdge1, MAXRESULTS, m_Result,m_lResultCount); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

case SEARCHFUNCTION_PAIR: bEdgeFound = CSFindEdgePair (m_Img, lPlane,

lDensity, Area, dThreshold1, bPositiveEdge1, m_Result[0], dThreshold2,bPositiveEdge2, m_Result[1]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); m_lResultCount = 2; break; } break; }

case SEARCHMODE_DERIVATION_SUB: { switch (m_lSearchFunction) { case SEARCHFUNCTION_FIRST:

bEdgeFound = OSFindFirstEdge (m_Img, lPlane,lDensity, Area, dThreshold1, (TEdgePolarity)m_lPolarity, m_Result[0]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

case SEARCHFUNCTION_ALL: bEdgeFound = OSFindAllEdges (m_Img, lPlane,

lDensity, Area, dThreshold1, (TEdgePolarity)m_lPolarity, results); TWReadStopWatch (m_lTimeHandle, 0, &dVal); if (IsEdgeResults (results)) { // get result count m_lResultCount = EdgeResultsCount (results); // copy the results to our buffer

Page 140: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

134

for (long n = 0; n < m_lResultCount; n++) EdgeResult (results, n, m_Result[n].x, m_Result[n].y,m_Result[n].Quality); } break;

case SEARCHFUNCTION_BEST: bEdgeFound = OSFindBestEdge (m_Img, lPlane,

lDensity, Area, (TEdgePolarity)m_lPolarity, m_Result[0]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); break;

case SEARCHFUNCTION_PAIR: bEdgeFound = OSFindEdgePair (m_Img, lPlane,

lDensity, Area, dThreshold1, (TEdgePolarity)m_lPolarity, m_Result[0],dThreshold2, (TEdgePolarity)m_lPolarity2, m_Result[1]); TWReadStopWatch (m_lTimeHandle, 0, &dVal); m_lResultCount = 2; break; } break; } }

if (bEdgeFound) { for (long i=0; i < m_lResultCount; i++) { m_cvDisp.AddLabel ("P", FALSE, RGB(255,0,0), i,(long)m_Result[i].x, (long)m_Result[i].y);

}

Aux0=(long)m_Result[0].x-(long)m_Result[1].x;//Evalúo el ancho enpixels.

if (cam_calibration) //Si estoy en modo calibración.{ if (Aux0>maxdiameter)

maxdiameter=Aux0;

m_lmaxdiameter=maxdiameter;

Page 141: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

135

accuracy=float(35)/float(maxdiameter); m_faccuracy=accuracy;

}

// mark results Width=float(Aux0)*accuracy;//Ancho del objeto medido.

CString txtTime; txtTime.Format (" found in: %.2f µs, pattern width: %.2fmm",dVal,Width); m_cvDisp.SetStatusUserText (txtTime); // delete TimeWatch object TWDestroy (m_lTimeHandle);

// display result 0 OnLabelClickedCvDisp (0); } else { m_csResults.Format ("nothing found"); }

UpdateData (FALSE);}

void CVCEdgeDLLDlg::OnLabelClickedCvDisp(long ID){ // un-highlight labels for (long i = 0; i < MAXRESULTS; i++) m_cvDisp.HighLightLabel (i, FALSE); // highlight selected label m_cvDisp.HighLightLabel (ID, TRUE); // display selected info m_csResults.Format ("X: %1.2f; Y: %1.2f; Q: %1.2f", m_Result[ID].x,m_Result[ID].y, m_Result[ID].Quality);

UpdateData (FALSE);}

void CVCEdgeDLLDlg::OnCBinaryDisplay(){

UpdateData (TRUE); // display binary data

Page 142: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

136

if (m_bBinaryDisplay) { m_cvDisp.SetDisplayGain (255.0); m_cvDisp.SetDisplayOffset(250);//m_lThreshold); } else { m_cvDisp.SetDisplayGain (1.0); m_cvDisp.SetDisplayOffset(0); }}

void CVCEdgeDLLDlg::OnCVCErrorCvDisp(long ErrorCode, LPCTSTRErrorString, BOOL FAR* Continue){

// add your error handling here - see error event of Image Control

}

void CVCEdgeDLLDlg::OnCVCErrorCvImg(long ErrorCode, LPCTSTRErrorString, BOOL FAR* Continue){

CString csText;

csText.Format( " Error Code: %d . Continue?", ErrorCode);csText = ErrorString + csText;

if ( ErrorCode = 4 ) {

if ( MessageBox( csText,"Image Control error: TIMEOUT",MB_YESNO) == IDYES )

*Continue = TRUE; // yes continue acquisition andshow standard error message

else*Continue = FALSE; // cancel acquisition

}else

MessageBox( ErrorString, "CV Image Control Error" ,MB_OK );

Page 143: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

137

}

void CVCEdgeDLLDlg::OnFileExit(){

// TODO: Add your command handler code hereKillTimer(ID_CLOCK_IO_TIMER);//Paramos el Timer utilizado

para refresco IO.

P1200_Do(0x0000);//Finaliza outputs a cero.

/**************************************************************/ /* NOTICE: call P1200_DriverClose() to close the driver. */

/**************************************************************/

P1200_DriverClose(); // close the driverOnOK();

}

void CVCEdgeDLLDlg::OnAboutAbout(){

// TODO: Add your command handler code here// MessageBox("Continuos Primer Application check\nDeveloped byOscar Navas\nReview 1,0,0,0","About CPAC",MB_OK);

CAboutDlg dlgAbout;dlgAbout.DoModal();

}

void CVCEdgeDLLDlg::OnSettingsSettings(){

// TODO: Add your command handler code hereif (settings_on==FALSE)

{GetDlgItem(IDC_STATIC_EDGE) -> ShowWindow(TRUE);

Page 144: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

138

GetDlgItem(IDC_STATIC_EDGE) ->EnableWindow(TRUE);

GetDlgItem(IDC_STATIC_1STEDGE) ->ShowWindow(TRUE);

GetDlgItem(IDC_STATIC_1STEDGE) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_P_DONTCARE) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_P_DONTCARE) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_P_POSITIVE) -> ShowWindow(TRUE);GetDlgItem(IDC_R_P_POSITIVE) ->

EnableWindow(TRUE);GetDlgItem(IDC_R_P_NEGATIVE) ->

ShowWindow(TRUE);GetDlgItem(IDC_R_P_NEGATIVE) ->

EnableWindow(TRUE);GetDlgItem(IDC_SL_THRESDOLD) ->

ShowWindow(TRUE);GetDlgItem(IDC_SL_THRESDOLD) ->

EnableWindow(TRUE);GetDlgItem(IDC_TXT_THRESDOLD) ->

ShowWindow(TRUE);GetDlgItem(IDC_TXT_THRESDOLD) ->

EnableWindow(TRUE);

GetDlgItem(IDC_STATIC_2NDEDGE) ->ShowWindow(TRUE);

GetDlgItem(IDC_STATIC_2NDEDGE) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_P_DONTCARE2) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_P_DONTCARE2) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_P_POSITIVE2) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_P_POSITIVE2) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_P_NEGATIVE2) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_P_NEGATIVE2) ->EnableWindow(TRUE);

Page 145: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

139

GetDlgItem(IDC_SL_THRESDOLD2) ->ShowWindow(TRUE);

GetDlgItem(IDC_SL_THRESDOLD2) ->EnableWindow(TRUE);

GetDlgItem(IDC_TXT_THRESDOLD2) ->ShowWindow(TRUE);

GetDlgItem(IDC_TXT_THRESDOLD2) ->EnableWindow(TRUE);

GetDlgItem(IDC_STATIC_SMODE) ->ShowWindow(TRUE);

GetDlgItem(IDC_STATIC_SMODE) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_SM_THRESHOLD) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_SM_THRESHOLD) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_SM_THRESHOLD_SUB) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_SM_THRESHOLD_SUB) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_SM_CONTRAST) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_SM_CONTRAST) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_SM_CONTRAST_SUB) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_SM_CONTRAST_SUB) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_SM_DERIVATION_SUB2) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_SM_DERIVATION_SUB2) ->EnableWindow(TRUE);

GetDlgItem(IDC_C_BINARY_DISPLAY) ->ShowWindow(TRUE);

GetDlgItem(IDC_C_BINARY_DISPLAY) ->EnableWindow(TRUE);

GetDlgItem(IDC_STATIC_SFUNCTION) ->ShowWindow(TRUE);

GetDlgItem(IDC_STATIC_SFUNCTION) ->EnableWindow(TRUE);

Page 146: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

140

GetDlgItem(IDC_R_SF_FINDFIRST) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_SF_FINDFIRST) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_SF_FINDALL) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_SF_FINDALL) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_SF_FINDPAIR) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_SF_FINDPAIR) ->EnableWindow(TRUE);

GetDlgItem(IDC_R_SF_FINDBEST) ->ShowWindow(TRUE);

GetDlgItem(IDC_R_SF_FINDBEST) ->EnableWindow(TRUE);

settings_on=TRUE;}

else{

GetDlgItem(IDC_STATIC_EDGE) ->ShowWindow(FALSE);

GetDlgItem(IDC_STATIC_EDGE) ->EnableWindow(FALSE);

GetDlgItem(IDC_STATIC_1STEDGE) ->ShowWindow(FALSE);

GetDlgItem(IDC_STATIC_1STEDGE) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_P_DONTCARE) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_P_DONTCARE) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_P_POSITIVE) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_P_POSITIVE) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_P_NEGATIVE) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_P_NEGATIVE) ->EnableWindow(FALSE);

Page 147: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

141

GetDlgItem(IDC_SL_THRESDOLD) ->ShowWindow(FALSE);

GetDlgItem(IDC_SL_THRESDOLD) ->EnableWindow(FALSE);

GetDlgItem(IDC_TXT_THRESDOLD) ->ShowWindow(FALSE);

GetDlgItem(IDC_TXT_THRESDOLD) ->EnableWindow(FALSE);

GetDlgItem(IDC_STATIC_2NDEDGE) ->ShowWindow(FALSE);

GetDlgItem(IDC_STATIC_2NDEDGE) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_P_DONTCARE2) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_P_DONTCARE2) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_P_POSITIVE2) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_P_POSITIVE2) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_P_NEGATIVE2) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_P_NEGATIVE2) ->EnableWindow(FALSE);

GetDlgItem(IDC_SL_THRESDOLD2) ->ShowWindow(FALSE);

GetDlgItem(IDC_SL_THRESDOLD2) ->EnableWindow(FALSE);

GetDlgItem(IDC_TXT_THRESDOLD2) ->ShowWindow(FALSE);

GetDlgItem(IDC_TXT_THRESDOLD2) ->EnableWindow(FALSE);

GetDlgItem(IDC_STATIC_SMODE) ->ShowWindow(FALSE);

GetDlgItem(IDC_STATIC_SMODE) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_SM_THRESHOLD) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_SM_THRESHOLD) ->EnableWindow(FALSE);

Page 148: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

142

GetDlgItem(IDC_R_SM_THRESHOLD_SUB) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_SM_THRESHOLD_SUB) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_SM_CONTRAST) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_SM_CONTRAST) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_SM_CONTRAST_SUB) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_SM_CONTRAST_SUB) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_SM_DERIVATION_SUB2) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_SM_DERIVATION_SUB2) ->EnableWindow(FALSE);

GetDlgItem(IDC_C_BINARY_DISPLAY) ->ShowWindow(FALSE);

GetDlgItem(IDC_C_BINARY_DISPLAY) ->EnableWindow(FALSE);

GetDlgItem(IDC_STATIC_SFUNCTION) ->ShowWindow(FALSE);

GetDlgItem(IDC_STATIC_SFUNCTION) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_SF_FINDFIRST) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_SF_FINDFIRST) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_SF_FINDALL) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_SF_FINDALL) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_SF_FINDPAIR) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_SF_FINDPAIR) ->EnableWindow(FALSE);

GetDlgItem(IDC_R_SF_FINDBEST) ->ShowWindow(FALSE);

GetDlgItem(IDC_R_SF_FINDBEST) ->EnableWindow(FALSE);

settings_on=FALSE;}

Page 149: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

143

}

void CVCEdgeDLLDlg::OnSettingsCameracalibration(){

// TODO: Add your command handler code here

if (cam_calibration==FALSE){

GetDlgItem(IDC_STATIC_CC_ACTIVE) ->ShowWindow(TRUE);

GetDlgItem(IDC_STATIC_CC_ACTIVE) ->EnableWindow(TRUE);

GetDlgItem(IDC_STATIC_MAXDIAMETER) ->ShowWindow(TRUE);

GetDlgItem(IDC_STATIC_MAXDIAMETER) ->EnableWindow(TRUE);

GetDlgItem(IDC_STATIC_ACCURACY) ->ShowWindow(TRUE);

GetDlgItem(IDC_STATIC_ACCURACY) ->EnableWindow(TRUE);

GetDlgItem(IDC_STATIC_MM) -> ShowWindow(TRUE);GetDlgItem(IDC_STATIC_MM) -> EnableWindow(TRUE);GetDlgItem(IDC_DIAMETER) -> ShowWindow(TRUE);GetDlgItem(IDC_DIAMETER) -> EnableWindow(TRUE);GetDlgItem(IDC_ACCURACY) -> ShowWindow(TRUE);GetDlgItem(IDC_ACCURACY) -> EnableWindow(TRUE);cam_calibration=TRUE;

}else

{GetDlgItem(IDC_STATIC_CC_ACTIVE) ->

ShowWindow(FALSE);GetDlgItem(IDC_STATIC_CC_ACTIVE) ->

EnableWindow(FALSE);GetDlgItem(IDC_STATIC_MAXDIAMETER) ->

ShowWindow(FALSE);GetDlgItem(IDC_STATIC_MAXDIAMETER) ->

EnableWindow(FALSE);GetDlgItem(IDC_STATIC_ACCURACY) ->

ShowWindow(FALSE);GetDlgItem(IDC_STATIC_ACCURACY) ->

EnableWindow(FALSE);

Page 150: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

144

GetDlgItem(IDC_STATIC_MM) -> ShowWindow(FALSE);GetDlgItem(IDC_STATIC_MM) -> EnableWindow(FALSE);GetDlgItem(IDC_DIAMETER) -> ShowWindow(FALSE);GetDlgItem(IDC_DIAMETER) -> EnableWindow(FALSE);GetDlgItem(IDC_ACCURACY) -> ShowWindow(FALSE);GetDlgItem(IDC_ACCURACY) -> EnableWindow(FALSE);cam_calibration=FALSE;

}

}

void CVCEdgeDLLDlg::OnStatusIostatus(){

// TODO: Add your command handler code here// WinExec("c:\\Oscar

Navas\\proyectos\\CartaDIO\\debug\\CartaDIO.exe", SW_SHOW);

CDioscreen* dialogo;dialogo = new CDioscreen();

if( dialogo != NULL){

BOOL ret = dialogo->Create(IDD_DIOSCREEN,this);if(!ret) //Create failed.

AfxMessageBox("Error creating Dialog"); dialogo->ShowWindow(SW_SHOW);

} else AfxMessageBox("Error Creating Dialog Object");

}

void CVCEdgeDLLDlg::OnTimer(UINT nIDEvent){

// TODO: Add your message handler code here and/or call defaultif (ID_CLOCK_IO_TIMER)

CheckInputs();

CDialog::OnTimer(nIDEvent);

Page 151: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

145

}

void CVCEdgeDLLDlg::CheckInputs(){

P1200_Di(&wIn);

wDiData=wIn;

if(wDiData&0x0001)In0=TRUE;

elseIn0=FALSE;

if(wDiData&0x0002)In1=TRUE;

elseIn1=FALSE;

if(wDiData&0x0004)In2=TRUE;

elseIn2=FALSE;

if(wDiData&0x0008)In3=TRUE;

elseIn3=FALSE;

if(wDiData&0x0010)In4=TRUE;

elseIn4=FALSE;

if(wDiData&0x0020)In5=TRUE;

elseIn5=FALSE;

if(wDiData&0x0040)In6=TRUE;

elseIn6=FALSE;

Page 152: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

146

if(wDiData&0x0080)In7=TRUE;

elseIn7=FALSE;

if(wDiData&0x0100)In8=TRUE;

elseIn8=FALSE;

if(wDiData&0x0200)In9=TRUE;

elseIn9=FALSE;

if(wDiData&0x0400)In10=TRUE;

elseIn10=FALSE;

if(wDiData&0x0800)In11=TRUE;

elseIn11=FALSE;

if(wDiData&0x1000)In12=TRUE;

elseIn12=FALSE;

if(wDiData&0x2000)In13=TRUE;

elseIn13=FALSE;

if(wDiData&0x4000)In14=TRUE;

elseIn14=FALSE;

if(wDiData&0x8000)In15=TRUE;

Page 153: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

147

elseIn15=FALSE;

}

void CVCEdgeDLLDlg::OnOutputs(){

// TODO: Add your control notification handler code here

if(Out0)wDoData=wDoData|0x0001;

elsewDoData=wDoData&~0x0001;

if(Out1)wDoData=wDoData|0x0002;

elsewDoData=wDoData&~0x0002;

if(Out2)wDoData=wDoData|0x0004;

elsewDoData=wDoData&~0x0004;

if(Out3)wDoData=wDoData|0x0008;

elsewDoData=wDoData&~0x0008;

if(Out4)wDoData=wDoData|0x0010;

elsewDoData=wDoData&~0x0010;

if(Out5)wDoData=wDoData|0x0020;

elsewDoData=wDoData&~0x0020;

if(Out6)wDoData=wDoData|0x0040;

elsewDoData=wDoData&~0x0040;

if(Out7)wDoData=wDoData|0x0080;

elsewDoData=wDoData&~0x0080;

Page 154: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

148

if(Out8)wDoData=wDoData|0x0100;

elsewDoData=wDoData&~0x0100;

if(Out9)wDoData=wDoData|0x0200;

elsewDoData=wDoData&~0x0200;

if(Out10)wDoData=wDoData|0x0400;

elsewDoData=wDoData&~0x0400;

if(Out11)wDoData=wDoData|0x0800;

elsewDoData=wDoData&~0x0800;

if(Out12)wDoData=wDoData|0x1000;

elsewDoData=wDoData&~0x1000;

if(Out13)wDoData=wDoData|0x2000;

elsewDoData=wDoData&~0x2000;

if(Out14)wDoData=wDoData|0x4000;

elsewDoData=wDoData&~0x4000;

if(Out15)wDoData=wDoData|0x8000;

elsewDoData=wDoData&~0x8000;

P1200_Do(wDoData);//Carga del valor a puerto de salida

}

void CVCEdgeDLLDlg::OnSetttingsLight(){

// TODO: Add your command handler code hereif (Out8)

Page 155: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

149

Out8=FALSE;

elseOut8=TRUE;

OnOutputs();//Cargamos sobre puerto salidas. }

void CVCEdgeDLLDlg::OnClose(){

// TODO: Add your message handler code here and/or call defaultOnFileExit();//Antes de salir pasamos por procedimiento de salida.

CDialog::OnClose();}

void CVCEdgeDLLDlg::OnUpdateSetttingsLight(CCmdUI* pCmdUI){

// TODO: Add your command update UI handler code herepCmdUI->SetCheck(Out8==TRUE);

}

/*void CVCEdgeDLLDlg::OnButton1(){

// TODO: Add your control notification handler code herem_iborrame=sizeof(pieza1)/sizeof(int); //Devuelve en valor en bytes.

UpdateData(FALSE);}*/

Page 156: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

150

6.2.3 CPACCVDisplay

#include "stdafx.h"#include "cvdisplay.h"

/////////////////////////////////////////////////////////////////////////////// CCVdisplay

IMPLEMENT_DYNCREATE(CCVdisplay, CWnd)

/////////////////////////////////////////////////////////////////////////////// CCVdisplay properties

long CCVdisplay::GetImage(){

long result;GetProperty(0x1, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetImage(long propVal){

SetProperty(0x1, VT_I4, propVal);}

double CCVdisplay::GetDisplayGain(){

double result;GetProperty(0x2, VT_R8, (void*)&result);return result;

}

void CCVdisplay::SetDisplayGain(double propVal){

SetProperty(0x2, VT_R8, propVal);}

long CCVdisplay::GetDisplayOffset(){

long result;GetProperty(0x3, VT_I4, (void*)&result);return result;

}

Page 157: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

151

void CCVdisplay::SetDisplayOffset(long propVal){

SetProperty(0x3, VT_I4, propVal);}

long CCVdisplay::GetLeftButtonMode(){

long result;GetProperty(0x4, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetLeftButtonMode(long propVal){

SetProperty(0x4, VT_I4, propVal);}

BOOL CCVdisplay::GetStatusImageSize(){

BOOL result;GetProperty(0x5, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetStatusImageSize(BOOL propVal){

SetProperty(0x5, VT_BOOL, propVal);}

BOOL CCVdisplay::GetStatusEmpty(){

BOOL result;GetProperty(0x6, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetStatusEmpty(BOOL propVal){

SetProperty(0x6, VT_BOOL, propVal);}

BOOL CCVdisplay::GetStatusScale()

Page 158: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

152

{BOOL result;GetProperty(0x7, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetStatusScale(BOOL propVal){

SetProperty(0x7, VT_BOOL, propVal);}

BOOL CCVdisplay::GetStatusCurrentPos(){

BOOL result;GetProperty(0x8, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetStatusCurrentPos(BOOL propVal){

SetProperty(0x8, VT_BOOL, propVal);}

BOOL CCVdisplay::GetStatusGrayValue(){

BOOL result;GetProperty(0x9, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetStatusGrayValue(BOOL propVal){

SetProperty(0x9, VT_BOOL, propVal);}

BOOL CCVdisplay::GetScrollBars(){

BOOL result;GetProperty(0xa, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetScrollBars(BOOL propVal)

Page 159: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

153

{SetProperty(0xa, VT_BOOL, propVal);

}

BOOL CCVdisplay::GetShowCoords(){

BOOL result;GetProperty(0xb, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetShowCoords(BOOL propVal){

SetProperty(0xb, VT_BOOL, propVal);}

BOOL CCVdisplay::GetDrawErase(){

BOOL result;GetProperty(0xc, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetDrawErase(BOOL propVal){

SetProperty(0xc, VT_BOOL, propVal);}

long CCVdisplay::GetGreenPage(){

long result;GetProperty(0xd, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetGreenPage(long propVal){

SetProperty(0xd, VT_I4, propVal);}

long CCVdisplay::GetRedPage(){

long result;

Page 160: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

154

GetProperty(0xe, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetRedPage(long propVal){

SetProperty(0xe, VT_I4, propVal);}

long CCVdisplay::GetBluePage(){

long result;GetProperty(0xf, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetBluePage(long propVal){

SetProperty(0xf, VT_I4, propVal);}

BOOL CCVdisplay::GetBevelInner(){

BOOL result;GetProperty(0x10, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetBevelInner(BOOL propVal){

SetProperty(0x10, VT_BOOL, propVal);}

BOOL CCVdisplay::GetBevelOuter(){

BOOL result;GetProperty(0x11, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetBevelOuter(BOOL propVal){

SetProperty(0x11, VT_BOOL, propVal);

Page 161: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

155

}

long CCVdisplay::GetCoordStyle(){

long result;GetProperty(0x12, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetCoordStyle(long propVal){

SetProperty(0x12, VT_I4, propVal);}

short CCVdisplay::GetAppearance(){

short result;GetProperty(DISPID_APPEARANCE, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetAppearance(short propVal){

SetProperty(DISPID_APPEARANCE, VT_I4, propVal);}

short CCVdisplay::GetBorderStyle(){

short result;GetProperty(DISPID_BORDERSTYLE, VT_I2, (void*)&result);return result;

}

void CCVdisplay::SetBorderStyle(short propVal){

SetProperty(DISPID_BORDERSTYLE, VT_I2, propVal);}

BOOL CCVdisplay::GetEnabled(){

BOOL result;GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);return result;

Page 162: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

156

}

void CCVdisplay::SetEnabled(BOOL propVal){

SetProperty(DISPID_ENABLED, VT_BOOL, propVal);}

OLE_HANDLE CCVdisplay::GetHWnd(){

OLE_HANDLE result;GetProperty(DISPID_HWND, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetHWnd(OLE_HANDLE propVal){

SetProperty(DISPID_HWND, VT_I4, propVal);}

CString CCVdisplay::GetStatusUserText(){

CString result;GetProperty(0x13, VT_BSTR, (void*)&result);return result;

}

void CCVdisplay::SetStatusUserText(LPCTSTR propVal){

SetProperty(0x13, VT_BSTR, propVal);}

BOOL CCVdisplay::GetRulerEnabled(){

BOOL result;GetProperty(0x14, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetRulerEnabled(BOOL propVal){

SetProperty(0x14, VT_BOOL, propVal);}

Page 163: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

157

BOOL CCVdisplay::GetDirectDrawEnabled(){

BOOL result;GetProperty(0x15, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetDirectDrawEnabled(BOOL propVal){

SetProperty(0x15, VT_BOOL, propVal);}

long CCVdisplay::GetAOOCount(){

long result;GetProperty(0x16, VT_I4, (void*)&result);return result;

}

CString CCVdisplay::GetAOOName(){

CString result;GetProperty(0x17, VT_BSTR, (void*)&result);return result;

}

long CCVdisplay::GetAOOType(){

long result;GetProperty(0x18, VT_I4, (void*)&result);return result;

}

long CCVdisplay::GetAOONumVertices(){

long result;GetProperty(0x19, VT_I4, (void*)&result);return result;

}

long CCVdisplay::GetAOONumVerticesUsed(){

long result;

Page 164: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

158

GetProperty(0x1a, VT_I4, (void*)&result);return result;

}

long CCVdisplay::GetAOOIndex(){

long result;GetProperty(0x1b, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetAOOIndex(long propVal){

SetProperty(0x1b, VT_I4, propVal);}

long CCVdisplay::GetRightButtonMode(){

long result;GetProperty(0x1c, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetRightButtonMode(long propVal){

SetProperty(0x1c, VT_I4, propVal);}

BOOL CCVdisplay::GetManualDisplayRefresh(){

BOOL result;GetProperty(0x41, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetManualDisplayRefresh(BOOL propVal){

SetProperty(0x41, VT_BOOL, propVal);}

BOOL CCVdisplay::GetOverlayDragAndDelete(){

BOOL result;

Page 165: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

159

GetProperty(0x42, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetOverlayDragAndDelete(BOOL propVal){

SetProperty(0x42, VT_BOOL, propVal);}

BOOL CCVdisplay::GetSyncRefreshToMonitor(){

BOOL result;GetProperty(0x43, VT_BOOL, (void*)&result);return result;

}

void CCVdisplay::SetSyncRefreshToMonitor(BOOL propVal){

SetProperty(0x43, VT_BOOL, propVal);}

long CCVdisplay::GetMouseWheelMode(){

long result;GetProperty(0x44, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetMouseWheelMode(long propVal){

SetProperty(0x44, VT_I4, propVal);}

long CCVdisplay::GetDisplayRectPercentage(){

long result;GetProperty(0x45, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetDisplayRectPercentage(long propVal){

SetProperty(0x45, VT_I4, propVal);

Page 166: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

160

}

OLE_COLOR CCVdisplay::GetBackColor(){

OLE_COLOR result;GetProperty(DISPID_BACKCOLOR, VT_I4, (void*)&result);return result;

}

void CCVdisplay::SetBackColor(OLE_COLOR propVal){

SetProperty(DISPID_BACKCOLOR, VT_I4, propVal);}

/////////////////////////////////////////////////////////////////////////////// CCVdisplay operations

BOOL CCVdisplay::SaveImageByDialog(){

BOOL result;InvokeHelper(0x1d, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVdisplay::SaveImage(LPCTSTR Filename){

BOOL result;static BYTE parms[] =

VTS_BSTR;InvokeHelper(0x1e, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,Filename);

return result;}

BOOL CCVdisplay::CopyImageToClipboard(){

BOOL result;InvokeHelper(0x1f, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

Page 167: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

161

BOOL CCVdisplay::GetSelectedArea(double* x0, double* y0, double* x1,double* y1, double* x2, double* y2){

BOOL result;static BYTE parms[] =

VTS_PR8 VTS_PR8 VTS_PR8 VTS_PR8 VTS_PR8VTS_PR8;

InvokeHelper(0x20, DISPATCH_METHOD, VT_BOOL,(void*)&result, parms,

x0, y0, x1, y1, x2, y2);return result;

}

BOOL CCVdisplay::SetSelectedArea(double x0, double y0, double x1,double y1, double x2, double y2){

BOOL result;static BYTE parms[] =

VTS_R8 VTS_R8 VTS_R8 VTS_R8 VTS_R8 VTS_R8;InvokeHelper(0x21, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,x0, y0, x1, y1, x2, y2);

return result;}

BOOL CCVdisplay::RemoveLabel(long ID){

BOOL result;static BYTE parms[] =

VTS_I4;InvokeHelper(0x22, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID);

return result;}

BOOL CCVdisplay::RemoveAllLabels(){

BOOL result;InvokeHelper(0x23, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

Page 168: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

162

}

BOOL CCVdisplay::SubAreaSelected(){

BOOL result;InvokeHelper(0x24, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVdisplay::MakeOverlayImage(){

BOOL result;InvokeHelper(0x25, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVdisplay::HighLightLabel(long ID, BOOL Highlight){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_BOOL;InvokeHelper(0x26, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID, Highlight);

return result;}

BOOL CCVdisplay::GetLabelPosition(long ID, long* x, long* y){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_PI4 VTS_PI4;InvokeHelper(0x27, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID, x, y);

return result;}

BOOL CCVdisplay::AddLabel(LPCTSTR Text, BOOL CanDrag, longColor, long ID, long x, long y){

Page 169: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

163

BOOL result;static BYTE parms[] =

VTS_BSTR VTS_BOOL VTS_I4 VTS_I4 VTS_I4 VTS_I4;InvokeHelper(0x28, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,Text, CanDrag, Color, ID, x, y);

return result;}

void CCVdisplay::Refresh(){

InvokeHelper(DISPID_REFRESH, DISPATCH_METHOD,VT_EMPTY, NULL, NULL);}

BOOL CCVdisplay::RemoveUserObject(long ID){

BOOL result;static BYTE parms[] =

VTS_I4;InvokeHelper(0x29, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID);

return result;}

BOOL CCVdisplay::RemoveAllUserObjects(){

BOOL result;InvokeHelper(0x2a, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVdisplay::GetUserObjectPosition(long ID, long Index, long* x,long* y){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_I4 VTS_PI4 VTS_PI4;InvokeHelper(0x2b, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID, Index, x, y);

Page 170: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

164

return result;}

BOOL CCVdisplay::ImageToClient(long ImageX, long ImageY, long*ClientX, long* ClientY){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_I4 VTS_PI4 VTS_PI4;InvokeHelper(0x2c, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ImageX, ImageY, ClientX, ClientY);

return result;}

BOOL CCVdisplay::ClientToImage(long ClientX, long ClientY, long*ImageX, long* ImageY){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_I4 VTS_PI4 VTS_PI4;InvokeHelper(0x2d, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ClientX, ClientY, ImageX, ImageY);

return result;}

BOOL CCVdisplay::AddUserObject(LPCTSTR Text, BOOL CanDrag,BOOL XorOnly, long NumVertices, long ID, long Vertices){

BOOL result;static BYTE parms[] =

VTS_BSTR VTS_BOOL VTS_BOOL VTS_I4 VTS_I4VTS_I4;

InvokeHelper(0x2e, DISPATCH_METHOD, VT_BOOL,(void*)&result, parms,

Text, CanDrag, XorOnly, NumVertices, ID, Vertices);return result;

}

BOOL CCVdisplay::RemoveOverlayObject(long ID){

BOOL result;

Page 171: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

165

static BYTE parms[] =VTS_I4;

InvokeHelper(0x2f, DISPATCH_METHOD, VT_BOOL,(void*)&result, parms,

ID);return result;

}

BOOL CCVdisplay::RemoveAllOverlayObjects(){

BOOL result;InvokeHelper(0x30, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVdisplay::GetOverlayObjectPosition(long ID, long Index, long*x, long* y){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_I4 VTS_PI4 VTS_PI4;InvokeHelper(0x31, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID, Index, x, y);

return result;}

BOOL CCVdisplay::HighLightOverlayObject(long ID, BOOL Highlight){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_BOOL;InvokeHelper(0x32, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID, Highlight);

return result;}

BOOL CCVdisplay::MoveOverlayObject(long ID, long x, long y, BOOLMoveAbsolute){

BOOL result;

Page 172: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

166

static BYTE parms[] =VTS_I4 VTS_I4 VTS_I4 VTS_BOOL;

InvokeHelper(0x33, DISPATCH_METHOD, VT_BOOL,(void*)&result, parms,

ID, x, y, MoveAbsolute);return result;

}

BOOL CCVdisplay::IsOverlayObjectAvailable(LPCTSTR ObjectName,long* ObjectType, long* NumVertices, long* NumVerticesUsed){

BOOL result;static BYTE parms[] =

VTS_BSTR VTS_PI4 VTS_PI4 VTS_PI4;InvokeHelper(0x34, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ObjectName, ObjectType, NumVertices, NumVerticesUsed);

return result;}

BOOL CCVdisplay::AddOverlayObject(LPCTSTR ObjectName,LPCTSTR Text, BOOL CanDrag, BOOL XorOnly, long Color, longHighLightColor, BOOL Filled, long ID, long* Vertices, long* ObjectData){

BOOL result;static BYTE parms[] =

VTS_BSTR VTS_BSTR VTS_BOOL VTS_BOOL VTS_I4VTS_I4 VTS_BOOL VTS_I4 VTS_PI4 VTS_PI4;

InvokeHelper(0x35, DISPATCH_METHOD, VT_BOOL,(void*)&result, parms,

ObjectName, Text, CanDrag, XorOnly, Color,HighLightColor, Filled, ID, Vertices, ObjectData);

return result;}

BOOL CCVdisplay::GetDisplayZoom(long* CenterX, long* CenterY,long* ZoomFactor){

BOOL result;static BYTE parms[] =

VTS_PI4 VTS_PI4 VTS_PI4;InvokeHelper(0x36, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,

Page 173: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

167

CenterX, CenterY, ZoomFactor);return result;

}

BOOL CCVdisplay::SetDisplayZoom(long CenterX, long CenterY, longZoomFactor){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_I4 VTS_I4;InvokeHelper(0x37, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,CenterX, CenterY, ZoomFactor);

return result;}

void CCVdisplay::Lock(){

InvokeHelper(0x38, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

void CCVdisplay::Unlock(){

InvokeHelper(0x39, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

BOOL CCVdisplay::RemoveAllOverlays(){

BOOL result;InvokeHelper(0x3a, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVdisplay::SaveWindowToBitmap(long hWnd, LPCTSTRFilename){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_BSTR;

Page 174: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

168

InvokeHelper(0x3b, DISPATCH_METHOD, VT_BOOL,(void*)&result, parms,

hWnd, Filename);return result;

}

BOOL CCVdisplay::HasLabel(long ID){

BOOL result;static BYTE parms[] =

VTS_I4;InvokeHelper(0x3c, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID);

return result;}

BOOL CCVdisplay::HasOverlayObject(long ID){

BOOL result;static BYTE parms[] =

VTS_I4;InvokeHelper(0x3d, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID);

return result;}

BOOL CCVdisplay::HasUserObject(long ID){

BOOL result;static BYTE parms[] =

VTS_I4;InvokeHelper(0x3e, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,ID);

return result;}

BOOL CCVdisplay::AddUserObjectNET(LPCTSTR Text, BOOLCanDrag, BOOL XorOnly, long ID, long PixelList){

BOOL result;

Page 175: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

169

static BYTE parms[] =VTS_BSTR VTS_BOOL VTS_BOOL VTS_I4 VTS_I4;

InvokeHelper(0x40, DISPATCH_METHOD, VT_BOOL,(void*)&result, parms,

Text, CanDrag, XorOnly, ID, PixelList);return result;

}

BOOL CCVdisplay::SetDisplayZoomEx(long CenterX, long CenterY,double ZoomFactor){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_I4 VTS_R8;InvokeHelper(0x46, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,CenterX, CenterY, ZoomFactor);

return result;}

BOOL CCVdisplay::GetDisplayZoomEx(long* CenterX, long* CenterY,double* ZoomFactor){

BOOL result;static BYTE parms[] =

VTS_PI4 VTS_PI4 VTS_PR8;InvokeHelper(0x47, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,CenterX, CenterY, ZoomFactor);

return result;}

double CCVdisplay::GetPanoramaZoomFactor(){

double result;InvokeHelper(0x48, DISPATCH_METHOD, VT_R8,

(void*)&result, NULL);return result;

}

void CCVdisplay::AboutBox(){

Page 176: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

170

InvokeHelper(0xfffffdd8, DISPATCH_METHOD, VT_EMPTY,NULL, NULL);}

Page 177: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

171

6.2.4 CPACDioscreen

// Dioscreen.cpp : implementation file//

#include "stdafx.h"#include "VCEdgeDLLDlg.h"#include "Dioscreen.h"

#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif

extern volatile boolIn0,In1,In2,In3,In4,In5,In6,In7,In8,In9,In10,In11,In12,In13,In14,In15;extern volatile boolOut0,Out1,Out2,Out3,Out4,Out5,Out6,Out7,Out8,Out9,Out10,Out11,Out12,Out13,Out14,Out15;

/////////////////////////////////////////////////////////////////////////////// CDioscreen dialog

CDioscreen::CDioscreen(CWnd* pParent /*=NULL*/): CDialog(CDioscreen::IDD, pParent)

{//{{AFX_DATA_INIT(CDioscreen)//}}AFX_DATA_INIT

}

void CDioscreen::DoDataExchange(CDataExchange* pDX){

CDialog::DoDataExchange(pDX);//{{AFX_DATA_MAP(CDioscreen)DDX_Check(pDX, IDC_IN_BIT0, m_bIn0);DDX_Check(pDX, IDC_IN_BIT1, m_bIn1);

Page 178: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

172

DDX_Check(pDX, IDC_IN_BIT2, m_bIn2);DDX_Check(pDX, IDC_IN_BIT3, m_bIn3);DDX_Check(pDX, IDC_IN_BIT4, m_bIn4);DDX_Check(pDX, IDC_IN_BIT5, m_bIn5);DDX_Check(pDX, IDC_IN_BIT6, m_bIn6);DDX_Check(pDX, IDC_IN_BIT7, m_bIn7);DDX_Check(pDX, IDC_IN_BIT8, m_bIn8);DDX_Check(pDX, IDC_IN_BIT9, m_bIn9);DDX_Check(pDX, IDC_IN_BIT10, m_bIn10);DDX_Check(pDX, IDC_IN_BIT11, m_bIn11);DDX_Check(pDX, IDC_IN_BIT12, m_bIn12);DDX_Check(pDX, IDC_IN_BIT13, m_bIn13);DDX_Check(pDX, IDC_IN_BIT14, m_bIn14);DDX_Check(pDX, IDC_IN_BIT15, m_bIn15);DDX_Check(pDX, IDC_OUT_BIT0, m_bOut0);DDX_Check(pDX, IDC_OUT_BIT1, m_bOut1);DDX_Check(pDX, IDC_OUT_BIT2, m_bOut2);DDX_Check(pDX, IDC_OUT_BIT3, m_bOut3);DDX_Check(pDX, IDC_OUT_BIT4, m_bOut4);DDX_Check(pDX, IDC_OUT_BIT5, m_bOut5);DDX_Check(pDX, IDC_OUT_BIT6, m_bOut6);DDX_Check(pDX, IDC_OUT_BIT7, m_bOut7);DDX_Check(pDX, IDC_OUT_BIT8, m_bOut8);DDX_Check(pDX, IDC_OUT_BIT9, m_bOut9);DDX_Check(pDX, IDC_OUT_BIT10, m_bOut10);DDX_Check(pDX, IDC_OUT_BIT11, m_bOut11);DDX_Check(pDX, IDC_OUT_BIT12, m_bOut12);DDX_Check(pDX, IDC_OUT_BIT13, m_bOut13);DDX_Check(pDX, IDC_OUT_BIT14, m_bOut14);DDX_Check(pDX, IDC_OUT_BIT15, m_bOut15);//}}AFX_DATA_MAP

}

BEGIN_MESSAGE_MAP(CDioscreen, CDialog)//{{AFX_MSG_MAP(CDioscreen)ON_BN_CLICKED(IDC_OUT_BIT0, OnOutputs)ON_WM_TIMER()ON_WM_CLOSE()ON_BN_CLICKED(IDC_OUT_BIT1, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT10, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT11, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT12, OnOutputs)

Page 179: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

173

ON_BN_CLICKED(IDC_OUT_BIT13, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT14, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT15, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT2, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT3, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT4, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT5, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT6, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT7, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT8, OnOutputs)ON_BN_CLICKED(IDC_OUT_BIT9, OnOutputs)//}}AFX_MSG_MAP

END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////// CDioscreen message handlers

BOOL CDioscreen::OnInitDialog(){

CDialog::OnInitDialog();

// TODO: Add extra initialization here

CVCEdgeDLLDlg Derived_CVCEdgeDLLDlg;

m_bOut0=Out0; //Actualiza pantalla con valores utilizados.m_bOut1=Out1;m_bOut2=Out2;m_bOut3=Out3;m_bOut4=Out4;m_bOut5=Out5;m_bOut6=Out6;m_bOut7=Out7;m_bOut8=Out8;m_bOut9=Out9;m_bOut10=Out10;m_bOut11=Out11;m_bOut12=Out12;m_bOut13=Out13;m_bOut14=Out14;m_bOut15=Out15;

UpdateData(FALSE);//Volcamos sobre pantalla.

Page 180: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

174

SetTimer(ID_CLOCK_IO_TIMER2,300, NULL);//Evitamos solapecon ...TIMER==1000MS

return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE

}

void CDioscreen::OnOutputs(){

// TODO: Add your control notification handler code here

UpdateData(TRUE);// Recojemos desde pantalla.

Out0=m_bOut0;Out1=m_bOut1;Out2=m_bOut2;Out3=m_bOut3;Out4=m_bOut4;Out5=m_bOut5;Out6=m_bOut6;Out7=m_bOut7;Out8=m_bOut8;Out9=m_bOut9;Out10=m_bOut10;Out11=m_bOut11;Out12=m_bOut12;Out13=m_bOut13;Out14=m_bOut14;Out15=m_bOut15;

CVCEdgeDLLDlg Derived_CVCEdgeDLLDlg;

Derived_CVCEdgeDLLDlg.OnOutputs();

}

void CDioscreen::OnTimer(UINT nIDEvent){

// TODO: Add your message handler code here and/or call default

Page 181: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

175

m_bIn0=In0;m_bIn1=In1;m_bIn2=In2;m_bIn3=In3;m_bIn4=In4;m_bIn5=In5;m_bIn6=In6;m_bIn7=In7;m_bIn8=In8;m_bIn9=In9;m_bIn10=In10;m_bIn11=In11;m_bIn12=In12;m_bIn13=In13;m_bIn14=In14;m_bIn15=In15;

UpdateData(FALSE);//Volcamos sobre pantalla.

CDialog::OnTimer(nIDEvent);}

void CDioscreen::OnClose(){

// TODO: Add your message handler code here and/or call defaultKillTimer(ID_CLOCK_IO_TIMER2);

CDialog::OnClose();}

Page 182: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

176

6.2.5 CPACGraph

#include "stdafx.h"#include "ntgraph.h"

// Dispatch interfaces referenced by this interface#include "font.h"#include "Picture.h"

/////////////////////////////////////////////////////////////////////////////// CNTGraph

IMPLEMENT_DYNCREATE(CNTGraph, CWnd)

/////////////////////////////////////////////////////////////////////////////// CNTGraph properties

short CNTGraph::GetAppearance(){

short result;GetProperty(DISPID_APPEARANCE, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetAppearance(short propVal){

SetProperty(DISPID_APPEARANCE, VT_I2, propVal);}

CString CNTGraph::GetCaption(){

CString result;GetProperty(DISPID_CAPTION, VT_BSTR, (void*)&result);return result;

}

void CNTGraph::SetCaption(LPCTSTR propVal){

SetProperty(DISPID_CAPTION, VT_BSTR, propVal);}

BOOL CNTGraph::GetEnabled(){

Page 183: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

177

BOOL result;GetProperty(DISPID_ENABLED, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetEnabled(BOOL propVal){

SetProperty(DISPID_ENABLED, VT_BOOL, propVal);}

unsigned long CNTGraph::GetAxisColor(){

unsigned long result;GetProperty(0x1, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetAxisColor(unsigned long propVal){

SetProperty(0x1, VT_I4, propVal);}

unsigned long CNTGraph::GetGridColor(){

unsigned long result;GetProperty(0x2, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetGridColor(unsigned long propVal){

SetProperty(0x2, VT_I4, propVal);}

unsigned long CNTGraph::GetLabelColor(){

unsigned long result;GetProperty(0x3, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetLabelColor(unsigned long propVal){

Page 184: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

178

SetProperty(0x3, VT_I4, propVal);}

unsigned long CNTGraph::GetCursorColor(){

unsigned long result;GetProperty(0x4, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetCursorColor(unsigned long propVal){

SetProperty(0x4, VT_I4, propVal);}

COleFont CNTGraph::GetLabelFont(){

LPDISPATCH pDispatch;GetProperty(0x2b, VT_DISPATCH, (void*)&pDispatch);return COleFont(pDispatch);

}

void CNTGraph::SetLabelFont(LPDISPATCH propVal){

SetProperty(0x2b, VT_DISPATCH, propVal);}

COleFont CNTGraph::GetTickFont(){

LPDISPATCH pDispatch;GetProperty(0x2c, VT_DISPATCH, (void*)&pDispatch);return COleFont(pDispatch);

}

void CNTGraph::SetTickFont(LPDISPATCH propVal){

SetProperty(0x2c, VT_DISPATCH, propVal);}

COleFont CNTGraph::GetTitleFont(){

LPDISPATCH pDispatch;GetProperty(0x2d, VT_DISPATCH, (void*)&pDispatch);

Page 185: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

179

return COleFont(pDispatch);}

void CNTGraph::SetTitleFont(LPDISPATCH propVal){

SetProperty(0x2d, VT_DISPATCH, propVal);}

COleFont CNTGraph::GetIdentFont(){

LPDISPATCH pDispatch;GetProperty(0x2e, VT_DISPATCH, (void*)&pDispatch);return COleFont(pDispatch);

}

void CNTGraph::SetIdentFont(LPDISPATCH propVal){

SetProperty(0x2e, VT_DISPATCH, propVal);}

short CNTGraph::GetXGridNumber(){

short result;GetProperty(0x5, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetXGridNumber(short propVal){

SetProperty(0x5, VT_I2, propVal);}

short CNTGraph::GetYGridNumber(){

short result;GetProperty(0x6, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetYGridNumber(short propVal){

SetProperty(0x6, VT_I2, propVal);}

Page 186: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

180

BOOL CNTGraph::GetShowGrid(){

BOOL result;GetProperty(0x7, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetShowGrid(BOOL propVal){

SetProperty(0x7, VT_BOOL, propVal);}

CString CNTGraph::GetXLabel(){

CString result;GetProperty(0x8, VT_BSTR, (void*)&result);return result;

}

void CNTGraph::SetXLabel(LPCTSTR propVal){

SetProperty(0x8, VT_BSTR, propVal);}

CString CNTGraph::GetYLabel(){

CString result;GetProperty(0x9, VT_BSTR, (void*)&result);return result;

}

void CNTGraph::SetYLabel(LPCTSTR propVal){

SetProperty(0x9, VT_BSTR, propVal);}

unsigned long CNTGraph::GetElementLineColor(){

unsigned long result;GetProperty(0xa, VT_I4, (void*)&result);return result;

}

Page 187: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

181

void CNTGraph::SetElementLineColor(unsigned long propVal){

SetProperty(0xa, VT_I4, propVal);}

unsigned long CNTGraph::GetElementPointColor(){

unsigned long result;GetProperty(0xb, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetElementPointColor(unsigned long propVal){

SetProperty(0xb, VT_I4, propVal);}

long CNTGraph::GetElementLinetype(){

long result;GetProperty(0xc, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetElementLinetype(long propVal){

SetProperty(0xc, VT_I4, propVal);}

long CNTGraph::GetElementWidth(){

long result;GetProperty(0xd, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetElementWidth(long propVal){

SetProperty(0xd, VT_I4, propVal);}

long CNTGraph::GetElementPointSymbol()

Page 188: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

182

{long result;GetProperty(0xe, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetElementPointSymbol(long propVal){

SetProperty(0xe, VT_I4, propVal);}

BOOL CNTGraph::GetElementSolidPoint(){

BOOL result;GetProperty(0xf, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetElementSolidPoint(BOOL propVal){

SetProperty(0xf, VT_BOOL, propVal);}

BOOL CNTGraph::GetElementShow(){

BOOL result;GetProperty(0x10, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetElementShow(BOOL propVal){

SetProperty(0x10, VT_BOOL, propVal);}

long CNTGraph::GetTrackMode(){

long result;GetProperty(0x2f, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetTrackMode(long propVal)

Page 189: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

183

{SetProperty(0x2f, VT_I4, propVal);

}

CString CNTGraph::GetElementName(){

CString result;GetProperty(0x11, VT_BSTR, (void*)&result);return result;

}

void CNTGraph::SetElementName(LPCTSTR propVal){

SetProperty(0x11, VT_BSTR, propVal);}

BOOL CNTGraph::GetElementIdentify(){

BOOL result;GetProperty(0x12, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetElementIdentify(BOOL propVal){

SetProperty(0x12, VT_BOOL, propVal);}

BOOL CNTGraph::GetXLog(){

BOOL result;GetProperty(0x13, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetXLog(BOOL propVal){

SetProperty(0x13, VT_BOOL, propVal);}

BOOL CNTGraph::GetYLog(){

BOOL result;

Page 190: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

184

GetProperty(0x14, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetYLog(BOOL propVal){

SetProperty(0x14, VT_BOOL, propVal);}

CPicture CNTGraph::GetControlFramePicture(){

LPDISPATCH pDispatch;GetProperty(0x30, VT_DISPATCH, (void*)&pDispatch);return CPicture(pDispatch);

}

void CNTGraph::SetControlFramePicture(LPDISPATCH propVal){

SetProperty(0x30, VT_DISPATCH, propVal);}

CPicture CNTGraph::GetPlotAreaPicture(){

LPDISPATCH pDispatch;GetProperty(0x31, VT_DISPATCH, (void*)&pDispatch);return CPicture(pDispatch);

}

void CNTGraph::SetPlotAreaPicture(LPDISPATCH propVal){

SetProperty(0x31, VT_DISPATCH, propVal);}

unsigned long CNTGraph::GetControlFrameColor(){

unsigned long result;GetProperty(0x15, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetControlFrameColor(unsigned long propVal){

SetProperty(0x15, VT_I4, propVal);

Page 191: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

185

}

unsigned long CNTGraph::GetPlotAreaColor(){

unsigned long result;GetProperty(0x16, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetPlotAreaColor(unsigned long propVal){

SetProperty(0x16, VT_I4, propVal);}

long CNTGraph::GetFrameStyle(){

long result;GetProperty(0x17, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetFrameStyle(long propVal){

SetProperty(0x17, VT_I4, propVal);}

CString CNTGraph::GetAnnoLabelCaption(){

CString result;GetProperty(0x18, VT_BSTR, (void*)&result);return result;

}

void CNTGraph::SetAnnoLabelCaption(LPCTSTR propVal){

SetProperty(0x18, VT_BSTR, propVal);}

double CNTGraph::GetAnnoLabelX(){

double result;GetProperty(0x19, VT_R8, (void*)&result);return result;

Page 192: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

186

}

void CNTGraph::SetAnnoLabelX(double propVal){

SetProperty(0x19, VT_R8, propVal);}

double CNTGraph::GetAnnoLabelY(){

double result;GetProperty(0x1a, VT_R8, (void*)&result);return result;

}

void CNTGraph::SetAnnoLabelY(double propVal){

SetProperty(0x1a, VT_R8, propVal);}

unsigned long CNTGraph::GetAnnoLabelColor(){

unsigned long result;GetProperty(0x1b, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetAnnoLabelColor(unsigned long propVal){

SetProperty(0x1b, VT_I4, propVal);}

BOOL CNTGraph::GetAnnoLabelHorizontal(){

BOOL result;GetProperty(0x1c, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetAnnoLabelHorizontal(BOOL propVal){

SetProperty(0x1c, VT_BOOL, propVal);}

Page 193: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

187

short CNTGraph::GetAnnotation(){

short result;GetProperty(0x1d, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetAnnotation(short propVal){

SetProperty(0x1d, VT_I2, propVal);}

BOOL CNTGraph::GetAnnoVisible(){

BOOL result;GetProperty(0x1e, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetAnnoVisible(BOOL propVal){

SetProperty(0x1e, VT_BOOL, propVal);}

short CNTGraph::GetAnnoCount(){

short result;GetProperty(0x32, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetAnnoCount(short propVal){

SetProperty(0x32, VT_I2, propVal);}

short CNTGraph::GetElement(){

short result;GetProperty(0x1f, VT_I2, (void*)&result);return result;

}

Page 194: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

188

void CNTGraph::SetElement(short propVal){

SetProperty(0x1f, VT_I2, propVal);}

short CNTGraph::GetElementCount(){

short result;GetProperty(0x33, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetElementCount(short propVal){

SetProperty(0x33, VT_I2, propVal);}

unsigned long CNTGraph::GetAnnoLabelBkColor(){

unsigned long result;GetProperty(0x20, VT_I4, (void*)&result);return result;

}

void CNTGraph::SetAnnoLabelBkColor(unsigned long propVal){

SetProperty(0x20, VT_I4, propVal);}

short CNTGraph::GetCursorCount(){

short result;GetProperty(0x34, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetCursorCount(short propVal){

SetProperty(0x34, VT_I2, propVal);}

short CNTGraph::GetCursor(){

Page 195: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

189

short result;GetProperty(0x21, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetCursor(short propVal){

SetProperty(0x21, VT_I2, propVal);}

double CNTGraph::GetCursorX(){

double result;GetProperty(0x22, VT_R8, (void*)&result);return result;

}

void CNTGraph::SetCursorX(double propVal){

SetProperty(0x22, VT_R8, propVal);}

double CNTGraph::GetCursorY(){

double result;GetProperty(0x23, VT_R8, (void*)&result);return result;

}

void CNTGraph::SetCursorY(double propVal){

SetProperty(0x23, VT_R8, propVal);}

short CNTGraph::GetCursorStyle(){

short result;GetProperty(0x24, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetCursorStyle(short propVal){

Page 196: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

190

SetProperty(0x24, VT_I2, propVal);}

BOOL CNTGraph::GetCursorVisible(){

BOOL result;GetProperty(0x25, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetCursorVisible(BOOL propVal){

SetProperty(0x25, VT_BOOL, propVal);}

short CNTGraph::GetCursorMode(){

short result;GetProperty(0x26, VT_I2, (void*)&result);return result;

}

void CNTGraph::SetCursorMode(short propVal){

SetProperty(0x26, VT_I2, propVal);}

CString CNTGraph::GetFormatAxisBottom(){

CString result;GetProperty(0x27, VT_BSTR, (void*)&result);return result;

}

void CNTGraph::SetFormatAxisBottom(LPCTSTR propVal){

SetProperty(0x27, VT_BSTR, propVal);}

CString CNTGraph::GetFormatAxisLeft(){

CString result;GetProperty(0x28, VT_BSTR, (void*)&result);

Page 197: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

191

return result;}

void CNTGraph::SetFormatAxisLeft(LPCTSTR propVal){

SetProperty(0x28, VT_BSTR, propVal);}

BOOL CNTGraph::GetYTime(){

BOOL result;GetProperty(0x29, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetYTime(BOOL propVal){

SetProperty(0x29, VT_BOOL, propVal);}

BOOL CNTGraph::GetXTime(){

BOOL result;GetProperty(0x2a, VT_BOOL, (void*)&result);return result;

}

void CNTGraph::SetXTime(BOOL propVal){

SetProperty(0x2a, VT_BOOL, propVal);}

/////////////////////////////////////////////////////////////////////////////// CNTGraph operations

void CNTGraph::SetRange(double xmin, double xmax, double ymin,double ymax){

static BYTE parms[] =VTS_R8 VTS_R8 VTS_R8 VTS_R8;

InvokeHelper(0x35, DISPATCH_METHOD, VT_EMPTY, NULL,parms,

xmin, xmax, ymin, ymax);

Page 198: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

192

}

void CNTGraph::AutoRange(){

InvokeHelper(0x36, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

void CNTGraph::CopyToClipboard(){

InvokeHelper(0x37, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

void CNTGraph::PrintGraph(){

InvokeHelper(0x38, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

void CNTGraph::AddElement(){

InvokeHelper(0x39, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

void CNTGraph::DeleteElement(short ElementID){

static BYTE parms[] =VTS_I2;

InvokeHelper(0x3a, DISPATCH_METHOD, VT_EMPTY, NULL,parms,

ElementID);}

void CNTGraph::ClearGraph(){

InvokeHelper(0x3b, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

double CNTGraph::GetElementXValue(long index, short ElementID){

Page 199: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

193

double result;static BYTE parms[] =

VTS_I4 VTS_I2;InvokeHelper(0x44, DISPATCH_PROPERTYGET, VT_R8,

(void*)&result, parms,index, ElementID);

return result;}

void CNTGraph::SetElementXValue(long index, short ElementID, doublenewValue){

static BYTE parms[] =VTS_I4 VTS_I2 VTS_R8;

InvokeHelper(0x44, DISPATCH_PROPERTYPUT, VT_EMPTY,NULL, parms,

index, ElementID, newValue);}

double CNTGraph::GetElementYValue(long index, short ElementID){

double result;static BYTE parms[] =

VTS_I4 VTS_I2;InvokeHelper(0x45, DISPATCH_PROPERTYGET, VT_R8,

(void*)&result, parms,index, ElementID);

return result;}

void CNTGraph::SetElementYValue(long index, short ElementID, doublenewValue){

static BYTE parms[] =VTS_I4 VTS_I2 VTS_R8;

InvokeHelper(0x45, DISPATCH_PROPERTYPUT, VT_EMPTY,NULL, parms,

index, ElementID, newValue);}

void CNTGraph::PlotXY(double X, double Y, short ElementID){

static BYTE parms[] =

Page 200: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

194

VTS_R8 VTS_R8 VTS_I2;InvokeHelper(0x3c, DISPATCH_METHOD, VT_EMPTY, NULL,

parms, X, Y, ElementID);

}

void CNTGraph::PlotY(double Y, short ElementID){

static BYTE parms[] =VTS_R8 VTS_I2;

InvokeHelper(0x3d, DISPATCH_METHOD, VT_EMPTY, NULL,parms,

Y, ElementID);}

void CNTGraph::ShowProperties(){

InvokeHelper(0x3e, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

void CNTGraph::SaveAs(LPCTSTR szFilename){

static BYTE parms[] =VTS_BSTR;

InvokeHelper(0x3f, DISPATCH_METHOD, VT_EMPTY, NULL,parms,

szFilename);}

void CNTGraph::AddAnnotation(){

InvokeHelper(0x40, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

void CNTGraph::DeleteAnnotation(short annoID){

static BYTE parms[] =VTS_I2;

InvokeHelper(0x41, DISPATCH_METHOD, VT_EMPTY, NULL,parms,

annoID);

Page 201: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

195

}

void CNTGraph::AddCursor(){

InvokeHelper(0x42, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

void CNTGraph::DeleteCursor(short cursorID){

static BYTE parms[] =VTS_I2;

InvokeHelper(0x43, DISPATCH_METHOD, VT_EMPTY, NULL,parms,

cursorID);}

void CNTGraph::AboutBox(){

InvokeHelper(0xfffffdd8, DISPATCH_METHOD, VT_EMPTY,NULL, NULL);}

Page 202: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

196

6.2.6 CPACImage

#include "stdafx.h"#include "cvimage.h"

/////////////////////////////////////////////////////////////////////////////// CCVimage

IMPLEMENT_DYNCREATE(CCVimage, CWnd)

/////////////////////////////////////////////////////////////////////////////// CCVimage properties

long CCVimage::GetImage(){

long result;GetProperty(0x1, VT_I4, (void*)&result);return result;

}

void CCVimage::SetImage(long propVal){

SetProperty(0x1, VT_I4, propVal);}

long CCVimage::GetImageWidth(){

long result;GetProperty(0x2, VT_I4, (void*)&result);return result;

}

long CCVimage::GetImageHeight(){

long result;GetProperty(0x3, VT_I4, (void*)&result);return result;

}

long CCVimage::GetImageDimension(){

long result;

Page 203: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

197

GetProperty(0x4, VT_I4, (void*)&result);return result;

}

CString CCVimage::GetFilename(){

CString result;GetProperty(0x5, VT_BSTR, (void*)&result);return result;

}

void CCVimage::SetFilename(LPCTSTR propVal){

SetProperty(0x5, VT_BSTR, propVal);}

BOOL CCVimage::GetIsGrabber(){

BOOL result;GetProperty(0x6, VT_BOOL, (void*)&result);return result;

}

long CCVimage::GetSerialNumber(){

long result;GetProperty(0x7, VT_I4, (void*)&result);return result;

}

double CCVimage::GetOriginX(){

double result;GetProperty(0x8, VT_R8, (void*)&result);return result;

}

void CCVimage::SetOriginX(double propVal){

SetProperty(0x8, VT_R8, propVal);}

double CCVimage::GetOriginY()

Page 204: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

198

{double result;GetProperty(0x9, VT_R8, (void*)&result);return result;

}

void CCVimage::SetOriginY(double propVal){

SetProperty(0x9, VT_R8, propVal);}

BOOL CCVimage::GetEntire(){

BOOL result;GetProperty(0xa, VT_BOOL, (void*)&result);return result;

}

void CCVimage::SetEntire(BOOL propVal){

SetProperty(0xa, VT_BOOL, propVal);}

double CCVimage::GetScaleX(){

double result;GetProperty(0xb, VT_R8, (void*)&result);return result;

}

void CCVimage::SetScaleX(double propVal){

SetProperty(0xb, VT_R8, propVal);}

double CCVimage::GetScaleY(){

double result;GetProperty(0xc, VT_R8, (void*)&result);return result;

}

void CCVimage::SetScaleY(double propVal)

Page 205: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

199

{SetProperty(0xc, VT_R8, propVal);

}

double CCVimage::GetAreaX0(){

double result;GetProperty(0xd, VT_R8, (void*)&result);return result;

}

void CCVimage::SetAreaX0(double propVal){

SetProperty(0xd, VT_R8, propVal);}

double CCVimage::GetAreaX1(){

double result;GetProperty(0xe, VT_R8, (void*)&result);return result;

}

void CCVimage::SetAreaX1(double propVal){

SetProperty(0xe, VT_R8, propVal);}

double CCVimage::GetAreaX2(){

double result;GetProperty(0xf, VT_R8, (void*)&result);return result;

}

void CCVimage::SetAreaX2(double propVal){

SetProperty(0xf, VT_R8, propVal);}

double CCVimage::GetAreaY0(){

double result;

Page 206: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

200

GetProperty(0x10, VT_R8, (void*)&result);return result;

}

void CCVimage::SetAreaY0(double propVal){

SetProperty(0x10, VT_R8, propVal);}

double CCVimage::GetAreaY1(){

double result;GetProperty(0x11, VT_R8, (void*)&result);return result;

}

void CCVimage::SetAreaY1(double propVal){

SetProperty(0x11, VT_R8, propVal);}

double CCVimage::GetAreaY2(){

double result;GetProperty(0x12, VT_R8, (void*)&result);return result;

}

void CCVimage::SetAreaY2(double propVal){

SetProperty(0x12, VT_R8, propVal);}

BOOL CCVimage::GetResetCS(){

BOOL result;GetProperty(0x13, VT_BOOL, (void*)&result);return result;

}

void CCVimage::SetResetCS(BOOL propVal){

SetProperty(0x13, VT_BOOL, propVal);

Page 207: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

201

}

double CCVimage::GetCsa11(){

double result;GetProperty(0x14, VT_R8, (void*)&result);return result;

}

void CCVimage::SetCsa11(double propVal){

SetProperty(0x14, VT_R8, propVal);}

double CCVimage::GetCsa12(){

double result;GetProperty(0x15, VT_R8, (void*)&result);return result;

}

void CCVimage::SetCsa12(double propVal){

SetProperty(0x15, VT_R8, propVal);}

double CCVimage::GetCsa21(){

double result;GetProperty(0x16, VT_R8, (void*)&result);return result;

}

void CCVimage::SetCsa21(double propVal){

SetProperty(0x16, VT_R8, propVal);}

double CCVimage::GetCsa22(){

double result;GetProperty(0x17, VT_R8, (void*)&result);return result;

Page 208: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

202

}

void CCVimage::SetCsa22(double propVal){

SetProperty(0x17, VT_R8, propVal);}

double CCVimage::GetRotationX(){

double result;GetProperty(0x18, VT_R8, (void*)&result);return result;

}

void CCVimage::SetRotationX(double propVal){

SetProperty(0x18, VT_R8, propVal);}

double CCVimage::GetRotationY(){

double result;GetProperty(0x19, VT_R8, (void*)&result);return result;

}

void CCVimage::SetRotationY(double propVal){

SetProperty(0x19, VT_R8, propVal);}

BOOL CCVimage::GetGrab(){

BOOL result;GetProperty(0x1a, VT_BOOL, (void*)&result);return result;

}

void CCVimage::SetGrab(BOOL propVal){

SetProperty(0x1a, VT_BOOL, propVal);}

Page 209: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

203

BOOL CCVimage::GetPingPongEnabled(){

BOOL result;GetProperty(0x1b, VT_BOOL, (void*)&result);return result;

}

void CCVimage::SetPingPongEnabled(BOOL propVal){

SetProperty(0x1b, VT_BOOL, propVal);}

/////////////////////////////////////////////////////////////////////////////// CCVimage operations

BOOL CCVimage::SaveImage(LPCTSTR Filename){

BOOL result;static BYTE parms[] =

VTS_BSTR;InvokeHelper(0x1c, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,Filename);

return result;}

BOOL CCVimage::CopyImageToClipboard(){

BOOL result;InvokeHelper(0x1d, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVimage::PasteImageFromClipboard(){

BOOL result;InvokeHelper(0x1e, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVimage::LoadImageByDialog()

Page 210: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

204

{BOOL result;InvokeHelper(0x1f, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVimage::SaveImageByDialog(){

BOOL result;InvokeHelper(0x20, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVimage::LoadImage(LPCTSTR Filename){

BOOL result;static BYTE parms[] =

VTS_BSTR;InvokeHelper(0x21, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,Filename);

return result;}

BOOL CCVimage::ScanPlane(long Plane, long Density, BOOL UseCS){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_I4 VTS_BOOL;InvokeHelper(0x22, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,Plane, Density, UseCS);

return result;}

BOOL CCVimage::ScanImage(long Density, BOOL UseCS){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_BOOL;

Page 211: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

205

InvokeHelper(0x23, DISPATCH_METHOD, VT_BOOL,(void*)&result, parms,

Density, UseCS);return result;

}

BOOL CCVimage::CreateEmptyImage(long Dimension, long Width, longHeight, BOOL ForceOverlay){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_I4 VTS_I4 VTS_BOOL;InvokeHelper(0x24, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,Dimension, Width, Height, ForceOverlay);

return result;}

BOOL CCVimage::LoadImageByUserDialog(LPCTSTR DefaultPath,LPCTSTR Titel, LPCTSTR Filter){

BOOL result;static BYTE parms[] =

VTS_BSTR VTS_BSTR VTS_BSTR;InvokeHelper(0x25, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,DefaultPath, Titel, Filter);

return result;}

BOOL CCVimage::SaveImageByUserDialog(LPCTSTR DefaultPath,LPCTSTR Titel, LPCTSTR Filter){

BOOL result;static BYTE parms[] =

VTS_BSTR VTS_BSTR VTS_BSTR;InvokeHelper(0x26, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,DefaultPath, Titel, Filter);

return result;}

void CCVimage::Lock()

Page 212: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

206

{InvokeHelper(0x27, DISPATCH_METHOD, VT_EMPTY, NULL,

NULL);}

void CCVimage::Unlock(){

InvokeHelper(0x28, DISPATCH_METHOD, VT_EMPTY, NULL,NULL);}

BOOL CCVimage::Clear(long Plane, double Value){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_R8;InvokeHelper(0x29, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,Plane, Value);

return result;}

long CCVimage::DataType(long Plane){

long result;static BYTE parms[] =

VTS_I4;InvokeHelper(0x2a, DISPATCH_METHOD, VT_I4, (void*)&result,

parms,Plane);

return result;}

BOOL CCVimage::Snap(){

BOOL result;InvokeHelper(0x2b, DISPATCH_METHOD, VT_BOOL,

(void*)&result, NULL);return result;

}

BOOL CCVimage::SaveLossyImage(LPCTSTR Filename, double Quality){

Page 213: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

207

BOOL result;static BYTE parms[] =

VTS_BSTR VTS_R8;InvokeHelper(0x2c, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,Filename, Quality);

return result;}

BOOL CCVimage::GetGrab2Status(long Grab2InfoType, double*Grab2Info){

BOOL result;static BYTE parms[] =

VTS_I4 VTS_PR8;InvokeHelper(0x2d, DISPATCH_METHOD, VT_BOOL,

(void*)&result, parms,Grab2InfoType, Grab2Info);

return result;}

void CCVimage::AboutBox(){

InvokeHelper(0xfffffdd8, DISPATCH_METHOD, VT_EMPTY,NULL, NULL);}

Page 214: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

208

6.2.7 CPACPicture

#include "stdafx.h"#include "picture.h"

/////////////////////////////////////////////////////////////////////////////// CPicture properties

long CPicture::GetHandle(){

long result;GetProperty(0x0, VT_I4, (void*)&result);return result;

}

long CPicture::GetHPal(){

long result;GetProperty(0x2, VT_I4, (void*)&result);return result;

}

void CPicture::SetHPal(long propVal){

SetProperty(0x2, VT_I4, propVal);}

short CPicture::GetType(){

short result;GetProperty(0x3, VT_I2, (void*)&result);return result;

}

long CPicture::GetWidth(){

long result;GetProperty(0x4, VT_I4, (void*)&result);return result;

}

long CPicture::GetHeight()

Page 215: PROJECTE FINAL DE CARRERA - deeea.urv.catdeeea.urv.cat/public/PROPOSTES/pub/pdf/1139pub.pdf · PROJECTE FINAL DE CARRERA Títol Projecte: Aplicación chequeo de calidad Alumne: Oscar

Aplicació chequeo de calidad Documento nº 6: Anexo 2 Programa

209

{long result;GetProperty(0x5, VT_I4, (void*)&result);return result;

}

/////////////////////////////////////////////////////////////////////////////// CPicture operations