102
SISTEMA PARA EL MANEJO DE UN GRAFICADOR BAJO AMBIENTE UNIX TESIS PROFESIONAL QUE PARA OBTENER EL TITULO DE: LICENCIADA EN CIENCIAS DE LA COMPUTACIÓN PRESENTA: MARÍA DEL ROSARIO MUÑOZ HERNÁNDEZ ASESOR: DR. J. JAVIER BÁEZ ROJAS (INAOE) COASESOR: DR. MANUEL MARTÍN ORTÍZ (FCC- BUAP) PUEBLA, PUE. ABRIL DEL 2001

TES360

Embed Size (px)

Citation preview

Page 1: TES360

SISTEMA PARA EL MANEJO DE UN GRAFICADOR BAJO

AMBIENTE UNIX

TESIS PROFESIONAL

QUE PARA OBTENER EL TITULO DE:

LICENCIADA EN CIENCIAS DE LA COMPUTACIÓN

PRESENTA:

MARÍA DEL ROSARIO MUÑOZ HERNÁNDEZ

ASESOR: DR. J. JAVIER BÁEZ ROJAS (INAOE)

COASESOR: DR. MANUEL MARTÍN ORTÍZ (FCC-BUAP) PUEBLA, PUE. ABRIL DEL 2001

Page 2: TES360

BENEMÉRITA UNIVERSIDAD AUTÓNOMA DE PUEBLA

FACULTAD DE CIENCIAS DE LA COMPUTACIÓN

SISTEMA PARA EL MANEJO DE UN GRAFICADOR BAJO AMBIENTE UNIX

TESIS PROFESIONAL

QUE PARA OBTENER EL TÍTULO DE

LICENCIADA EN CIENCIAS DE LA COMPUTACIÓN

PRESENTA:

MARIA DEL ROSARIO MUÑOZ HERNÁNDEZ

PUEBLA, PUE. 2001.

Page 3: TES360

ii

A MIS PADRES, HERMANAS Y HERMANOS:

SEÑOR: JUAN MUÑOZ RUBIN SEÑORA: MARGARITA HERNÁNDEZ HUERTA

MARGARITA, SILVIA, OCTAVIANO Y RUFINO.

Page 4: TES360

iii

ÍNDICE

PRÓLOGO ………………………………………………………………………………………………………... v

CAPÍTULO 1. OBJETIVOS ..................................………………………………………………….….1

1.1 OBJETIVO DEL PROYECTO DE TÉSIS …………………………………1 1.2 ANTECEDENTES GENERALES ………………………..……….…………1 1.3 ANTECEDENTES ESPECÍFICOS ……………………................………….2 1.4 DESARROLLO DE LA SOLUCIÓN ………………………………………....2

CAPÍTULO 2. MARCO TEÓRICO …… …………………………….....…………...………4

2.1 INTRODUCCIÓN ……………………………………………………………..…….4

2.2 GRAFICADORES ……………………………………………………………..……4 2.2.1 CARACTERÍSTICAS PARTICULARES DE GRAFICADORES .…. 5

CAPÍTULO3. DISPOSITIVOS Y PUERTO SERIAL …………………. ……………...9

3.1 INTRODUCCIÓN . ………………………………………………………………..10 3.2 GRAFICADOR DMP-61 Y LA ESTACIÓN DE TRABAJO…………..10 3.2.1 COMPONENTES Y CARACTERÍSTICAS

DEL GRAFICADOR DMP-61 …………………………………………….…....10 3.2.2 FUNCIONAMIENTO DE LA PLUMA . ……………………………………...10 3.2.3 MEDIO AMBIENTE DE OPERACIÓN . …………………………...………..11 3.2.4 LENGUAJES DEL GRAFICADOR . …………………………………..….….11 3.2.5 ESTACIÓN DE TRABAJO(WORK STATION ó WS) . …………….…..12 3.3 PUERTO SERIAL ............................................................................................14 3.3.1 BASE DE LA COMUNICACIÓN SERIAL ……………………………....….15

3.3.2 COMUNICACIÓN ASÍNCRONA ………………………………………….…...15 3.3.3 ACCESANDO EL PUERTO SERIAL …………………………………….….17

Page 5: TES360

iv

3.3.4 CONFIGURACIÓN DEL PUERTO SERIAL ……………………………...19 3.3.5 COMUNICACIÓN ………………………………………………………………….23

CAPÍTULO 4. PROGRAMACIÓN DE LA BIBLIOTECA LGHP………………………..24

4.1 INTRODUCCIÓN ………………………………………………………….……….24 4.2 CARACTERÍSTICAS DE LA PROGRAMACIÓN

DE LA BIBLIOTECA ……………………………………………………………...24 4.3 PASOS PARA CREAR COMANDOS DE LA BIBLIOTECA ……..…24 4.4 CREACIÓN DE LA BIBLIOTECA LGHP …………………………….....…26 4.5 FUNCIONES DE LA BIBLIOTECA MAS ELABORADAS ..............27 4.6 LISTA DE FUNCIONES DE ACUERDO A SUS CARACTERISTICAS……………………………………………………………….29

4.7 PROGRAMA DE USUARIO ........................................................................37

CAPÍTULO 5.EJEMPLOS DE PROGRAMACIÓN ……………………………………………41

5.1 INTRODUCCIÓN …………………………………………………………………41 5.2 CÓDIGOS FUENTE Y FIGURAS OBTENIDAS ………………..………41

CONCLUSIONES …………………………………………………………………………………..……………56

VENTAJAS, LIMITACIONES Y PERSPECTIVAS ……………………………………………56

GLOSARIO ………………………………………………………………………………………….………………58 APÉNDICES …………………………………………………………………………………………..…..………62

A. GUÍA PARA EL USO DE COMANDOS HPGL ………………….....…....62

B. CABLE RS-232 ……………………………………………………………..………64 C. FUNCIONES DE LA BIBLIOTECA LHGP.H (COMPLEMENTO).....67

Page 6: TES360

v

D. FUNCIONES Y COMANDOS DEL LENGUAJE HPGL …………..…..87

E. CONJUNTO DE CARACTERES ASCII ………………………………..…..93

BIBLIOGRAFÍA ……………………………………………………………………………………………..….…94

Page 7: TES360

vi

PRÓLOGO

El trabajo que se presenta se realizó en el Instituto Nacional de Astrofísica, Óptica y

Electrónica (INAOE) para el grupo de Instrumentación y Sistemas Ópticos Digitales del Área de Óptica, el objetivo fue poner a disponibilidad de los usuarios de Estación de Trabajo el graficador DMP-61, usando el sistema operativo UNIX de una manera fácil. Esta tesis consta de cinco capítulos y cinco apéndices. En los cuales se describen los antecedentes de los graficadores en general, las características principales de una configuración serial, como programar desde una estación de trabajo utilizando las herramientas del lenguaje C de UNIX aplicadas de una manera sencilla al lenguaje estándar HPGL del graficador. Para la obtención de figuras lineales; se incluyen ejemplos. La mayoría de estos ejemplos pueden ser, realizados por los lectores.

Los apéndices son un gran apoyo para la programación del graficador DMP-61.

Page 8: TES360

vii

Mi agradecimiento por el apoyo en servicios profesionales, técnicos, de equipo e

instalaciones a:

Dr. José Javier Báez Rojas. Doctor en Óptica; del Instituto Nacional de Astrofísica, Óptica y Electrónica. Dr. Manuel Martín Ortiz. Doctor en Ciencias; de la Facultad de Ciencias de la Computación de la Benemérita Universidad Autónoma de Puebla. Licenciada Ana María Zarate Rivera. Técnico en investigación; del Instituto Nacional de Astrofísica, Óptica y Electrónica. Licenciada María de Lourdes Orta Cortés. Técnico en investigación; del Instituto Nacional de Astrofísica, Óptica y electrónica. José Pedro Hernández Enríquez, del Departamento de Aplicación de Microcomputadoras, del ICUAP. Al Instituto Nacional de Astrofísica, Óptica y Electrónica (INAOE). A la Facultad de Ciencias de la Computación de la Benemérita Universidad Autónoma de Puebla (FCC-BUAP). Al Departamento de Aplicación de Microcomputadoras, del Instituto de Ciencias de la Universidad Autónoma de Puebla (ICUAP).

Page 9: TES360

1

CAPÍTULO 1 OBJETIVOS

1.1 OBJETIVO DEL PROYECTO DE TESIS Crear una biblioteca para el lenguaje emulador HPGL que permita el uso del graficador DMP-61, desde una estación de trabajo, bajo el sistema UNIX. 1.2 ANTECEDENTES GENERALES.

El uso de los graficadores surge como una necesidad de obtener patrones con una mayor definición de imagen a la que proporcionaban las impresoras de matriz de punto, posteriormente se adaptan más soportes de pluma al graficador para darle color a la imagen, los primeros graficadores eran llamados de mesa ya que la hoja se colocaba sobre la base y solo se movía la pluma, el uso de estos equipos comenzó a crecer en la industria y la ingeniería, por tal razón los fabricantes de estos equipos se dieron a la tarea de hacer un equipo de graficado donde se obtuviese una imagen con un mejor tamaño, tratando de que fuera lo más real posible, surgen así, los graficadores de tambor que son equipos que ocupan menos espacio para graficar, a diferencia de los anteriores ahora se mueve tanto la pluma como el papel. El tamaño de una figura dependía de lo ancho del graficador, actualmente ya no es necesario para ciertos usos. Además el trazo de cualquier punto sobre el papel requiere de una exactitud tal que se tuvieron que cambiar las plumas por cartuchos de tinta de colores, e implementar equipo físico para enrollar el papel (o cualquier otro material p.ej.

Page 10: TES360

2

tela). Las aplicaciones de un graficador tienen mayor demanda en la publicidad y diseño; que igualan a lo original en color e imagen y sobrepasan el tamaño, por ejemplo:

Dibujar anuncios espectaculares donde la imágen se grafica en un solo lienzo a lo largo, y después realizar el corte y pegado de la misma en la estructura. Dibujar objetos y aparatos industriales con la mejor precisión posible. Dibujar planos ya no solo de una casa, sino de una área más grande como pueden ser un centro comercial, una INFONAVIT, la estructura de las calles de una ciudad completa, etc.

1.3 ANTECEDENTES ESPECÍFICOS.

El grupo de instrumentación cuenta con un graficador modelo Houston Instrument DMP-61, y el cual actualmente se usa bajo los sistemas operativos DOS y Windows con los paquetes de software: ORIGIN(análisis de datos y técnicas de graficado), SIGMA(simulación de diseños ópticos), COREL DRAW, entre otros.

1.4 DESARROLLO DE LA SOLUCIÓN

En principio, el desconocimiento del sistema operativo UNIX, así como del funcionamiento del graficador y la forma de comunicación entre la estación de trabajo y el graficador; fueron los

Page 11: TES360

3

principales obstáculos. Sin contar con que toda la información que se utilizó esta escrita en inglés.

Así la primera etapa fue: Leer, traducir y estudiar el manual del graficador DMP-61 y después de algunas semanas utilizar el graficador de manera manual, para posteriormente conocer superficialmente el sistema de graficación llamado ORIGIN, el cuál es uno de los más usuales para el manejo del graficador desde los sistemas operativos DOS y Windows.

La siguiente etapa fue leer, traducir y estudiar: libros de texto del lenguaje C

para UNIX, libros de sistemas operativos con plataforma UNIX, manuales de la estación de trabajo, el manual en línea de la misma estación de trabajo y buscar en Internet. De esta manera comenzar a hacer uso del shell del Sistema Operativo con algunos comandos, lo más importante, fue buscar referencias del puerto serial.

La tercera etapa fue relacionar ambos equipos, a través de su respectivo

puerto serial, programar la interfase y programar el conjunto de funciones que hacen referencia a los comandos que sirven de interprete para el envío de datos en lenguaje HPGL al graficador.

Revisar el funcionamiento de los comandos, realizando las pruebas

respectivas de los comandos más importantes.

Page 12: TES360

4

CAPÍTULO 2

MARCO TEÓRICO.

2.1 INTRODUCCIÓN Un equipo de graficación es utilizado en industrias, empresas textiles, empresas particulares, por arquitectos, ingenieros civiles, en ingeniería aplicada a la computación, ingeniería de dominio eléctrico entre otros. Los graficadores en su mayoría utilizan lenguajes específicos, y accesorios originales creados por el mismo fabricante. Las constantes aplicaciones, fuerzan a los fabricantes a desarrollar mejores equipos y tratan de enfocar su búsqueda al realismo.

2.2 GRAFICADORES. Cada equipo tiene accesorios únicos para el uso correspondiente. Por ejemplo: existen graficadores que trazan sobre diferentes tipos de material: plásticos, telas, papel. Algunos de los sistemas para uso de graficadores son:

autoCAD. Creado para diseño gráfico por computadora. MicroGDS. Tiene una interfase de programación aplicable (API), se desarrolla en lenguajes de Visual Basic y Visual C++. WinLINE. Trabaja con programas estandar de windows para generar salidas a graficadores de pluma, graficadores a chorro de tinta, cortadores de vinil y gravados a través de interfase de sistemas de impresión de Microsoft.

Page 13: TES360

5

Wx Plotter. Diseñado para ser usado por meteorólogos.

Algunos de los lenguajes de graficación son: HPGL, DM/PL, HP-GL/2, PostScript (Lenguaje de programación optimizado para imprimir gráficos y texto). Algunas marcas de fabricantes. CalComp, Hewlett Packard, canon, encad, océ, texas Instruments, oyo instruments, Veritas.

2.2.1 CARACTERÍSTICAS PARTICULARES DE GRAFICADORES. • Graficador térmico V36 de Veritas.

Ancho del graficador: Carro 36 “ Ancho efectivo: Aproximado 35.52” Resolución: 200/400 dpi Bytes por analizar: Arriba de 1776 bytes Modo Comando: Modo trazo Modo impresión Formatos: rollo, plegado (fanfold) Medio del graficador /Consumibles: Térmico, sensible al papel y película Paso del motor: Tecnología Micrométrica Panel de control: Función completa alfanumérica LCD

(despliega en cristal liquido) Funciones de usuario desde el panel de control: Escala vertical, control de contraste Control histerectomía Rapidez de trazo Ancho de trazo (cuenta byte ) - (predetermina 24"/36") Prueba trazo, prueba impresión Forma libre de longitud ajustada

Page 14: TES360

6

203/406 dpi emulación vertical En línea/fuera de línea Alimento de forma, ajusta alimento de forma Avance manual Corte manual /corte Automático Reflejo de imagen Detección panel de control: Salida de papel Tope de formato Temperatura de cabeza automática y realimentación (feedback) Rapidez de trazo: Selección Manual 0.125" por segundo a 2" por segundo Interfase: Versatec™ Greensheet Longline / Shortline Opciones: SCSI Externa (interfase estándar de computadoras pequeñas) Retención de papel Memoria expandible a 32 MB Requerimientos de energía: Auto alcance de entrada: 110V AC / 60Hz-220V AC / 50Hz vigente: 13 Amperios Máximo y 110V AC 6 Amperios Máximo y 220V AC CARACTERISTICAS FISICAS Dimensiones: Alto: 39.5 “ Fondo: 20 “ Ancho: 46 “ Peso: 68 kg (150 lbs x 453.6 grs) CARACTERISTICAS DE AMBIENTE Temperatura de Operación: 32° - 95° F

Page 15: TES360

7

0° - 35° C Humedad de operación: 5% - 95% No-condensada FCC: Clase A Certificada

• Graficador de tipo hidráulico. Modelo: CL-0-1800B/2000B/2300B Rodillo: 24 C a r a c t e r í s t i c a s A p l i c a c i o n e s Dispositivo de frenado electromagnético Tela de paño Eliminador electrostático Manta, sarape Dispositivo de presión hidráulica diferencial Abrigos Dispositivo de seguridad Piel sintética Contador electrónico de yarda Forro interior Dispositivo de calibración Felpa para sofá Rodillo para pintar Anti-acumulador de pintura Dispositivo de pintado Cinta especial de pintado

• Graficador de tipo horizontal con barras de 3-6 niveles, con equipo mejorado con barra elevada Modelo CL-G 1800/2000/2200 Rodillo: 24

C a r a c t e r í s t i c a s A p l i c a c i o n e s Equipo que cambia de un solo lado Tela de paño Equipado con tornillos que producen Sarapes, cobijas

Page 16: TES360

8

Velocidad diferencial Rodillo peludo tirado por engranajes Sacos, abrigos Eliminador estático Forro interior Partes que son cambiadas de fabricación Piel sintética

Page 17: TES360

CAPÍTULO 3

CARACTERÍSTICAS DE LOS DISPOSITIVOS Y EL PUERTO

3.1 INTRODUCCIÓN.

El uso adecuado del graficador depende de las condiciones ambientales y del manejo. La estación de trabajo debe tener conectado el cable del puerto serial y/o tener los permisos necesarios asignados por un super-usuario.

3.2 GRAFICADOR DMP-61 Y LA ESTACIÓN DE TRABAJO El graficador tiene un tablero que refleja los errores con la combinación de encendido fijo y/o

intermitente de los leds de cuatro membranas principales ( fig. 1) .

3.2.1 COMPONENTES Y CARACTERÍSTICAS DEL GRAFICADOR DMP-61.

Fig. 1 Graficador DMP-61 serie 60.

9

Page 18: TES360

10

Tiene una base de metal en la cual posará el material (papel bond, capa de película limpia, papel escarchado, bond opaco) a ser trazado.

Sensores que verifican la existencia y el tamaño del material. Rodillos y palancas para presionar y manipular el movimiento del material de graficado. Tablero con botones o membranas que se manipulan dando origen a la ejecución de funciones propias del equipo.

Brazo de metal (esta sobre una barra del mismo material) que sostiene el portaplumas o el

cartucho de tinta. Conector de puerto para el cable serial. Cable para la interfase física de la computadora al dispositivo de graficado.

3.2.2 FUNCIONAMIENTO DE LA PLUMA. Ya que utiliza sensores para reconocer las dimensiones del papel, además se debe cuidar de movimientos bruscos, de ello depende la calibración del soporte de la pluma. Así como la perfecta colocación del papel, de lo contrario éste se podría doblar o romper y dañar la punta de la pluma.

Precisión 18° a 30° C, 0.2% de movimiento ó 0.010 pulgadas(0.254 mm), cualquiera es mayor. DMP-61 velocidad de pluma 1 a 32 pulgadas por segundo máximo DMP-61 aceleración de la pluma 0.5 g , 1g, 2g. Resolución direccionable 0.001”, ó 0.005”, ó 0.1 mm, 0.025 mm

Page 19: TES360

11

3.2.3 MEDIO AMBIENTE DE OPERACIÓN.

Temperatura de operación. 5° a 35° C Humedad relativa de operación. 20% a 95% Línea nominal línea min/max fusible 100 Vac 89-108 Vac 1 Amp. 120 Vac 108-130 Vac 1 Amp. Tamaño de papel Ingeniería A, B, C, y D Arquitectura A, B, C, y D Din A4, A3, A2, y A1 Áreas máximas del graficador 62.5 cm X 63.5 cm ó 63.5 X 62.5 cm

3.2.4 LENGUAJES DEL GRAFICADOR.

El graficador maneja el lenguaje DM/PL de Houston Instrument y emula al modelo 7580B de Hewlett Packard para el lenguaje HPGL.

DM/PL. Tiene 49 comandos y utilizan un formato sencillo. HPGL. Tiene 19 funciones y 108 comandos de los cuales 15 tienen el mismo mnemónico pero

diferentes argumentos y 14 no se aplican lógicamente a éste graficador (NOP), es decir, no son compatibles con el equipo de graficado(el graficador ignora las instrucciones y no genera errores ver apéndice c).

El significado de HPGL es: Lenguaje de graficación de Hewlett-Packard (Hewlett-Packard Graphics Language), actualmente existen otros lenguajes de graficación (HPGL/2, MultiCam utiliza comandos para 3D)que se han mejorado a partir de éste, ya que los nuevos comandos se siguen anexando a los primitivos.

Page 20: TES360

Las funciones listadas en el apéndice C son completamente soportados por el graficador y operan exactamente tal y como están escritos en el párrafo 4.5 del capítulo 4. Los ejemplos se encuentran en el capítulo 5.

3.2.5 ESTACIÓN DE TRABAJO(WORK STATION ó WS).

La estación de trabajo es un equipo de cómputo diseñado usualmente para que más de una persona a la vez (multiusuarios), reciba un alto nivel de funcionamiento, especialmente respecto a gráficas, poder de procesamiento y habilidad de llevar acabo varias tareas al mismo tiempo (multitareas).

Fig.2 estación de trabajo SPARCstation 20.

La WS en la cuál se realizó el trabajo (fig. 2), tiene las siguientes características: Equipo. SPARCstation 20 32 Mb RAM, monitor Sun de 17”. Velocidad de reloj. 50 Mega Hertz. Procesador. RISC.

12

Page 21: TES360

13

Sistema Operativo. UNIX versión 2.4 de Sun Solaris.

3.2.5.a SISTEMA OPERATIVO UNIX. En las palabras del autor es (“ A weak pun on Multics”) el plural de “Unices”. Un sistema operativo de tiempo compartido interactivo inventado en 1969 por Ken Thompson antes de que le diera a los Laboratorios Bell el multi-proyecto, originalmente inicio practicando en una PDP-7. Dennis Ritchie, el inventor de C, es considerado como co-autor del sistema. El punto de regreso en la historia de Unix llega cuando fue re-implementado enteramente en C durante los años 1972-1974, haciendo el primer Sistema Operativo fuente-portable. Unix subsecuentemente tuvo cambios y una expansión al ir de mano en mano por mucha gente tan diferente, resultando únicamente flexible y con un medio ambiente de desarrollo amigable. Para 1991, Unix llego a ser el sistema operativo multi-usuario de propósito general más ampliamente usado en el mundo. El sistema operativo Unix o Unix-like incluye OSF, Versión 7, BSD, Unix USG, Xenix,Ultrix,Linux, y GNU.

3.2.5.b El proceso. Tiempo compartido en el sistema UNIX. La única Unidad Central de Proceso es un recurso que es compartido por todos los usuarios y procesos—El núcleo también crea la impresión de que cada proceso individual, dispone de la máquina completa, aun cuando pueda realmente controlar la máquina durante menos de un segundo cada vez.

Prioridad. Generalmente los procesos tienen la misma prioridad. La prioridad de tiempo real permite finalmente al sistema UNIX ser utilizado en aplicaciones que demanden una respuesta rígida y rápida.

Page 22: TES360

14

3.2.5.c Administración del sistema UNIX.

El administrador del sistema es generalmente un usuario individual responsable de mantener el sistema en ejecución correctamente. El sistema UNIX proporciona un id de presentación especial, root, para el administrador del sistema. El id root tiene su propia contraseña y también privilegios especiales, incluyendo acceso completo a todos los archivos y recursos del sistema, la presentación root se denomina superusuario.

3.2.5.d Seguridad.

Si el administrador y los usuarios del sistema utilizan frecuentemente las órdenes ps, who, ls y otras órdenes de información del sistema, se familiarizarán con la actividad normal día a día de la máquina y estarán alerta al estado del sistema en todo momento. La protección de los datos frente a los otros usuarios. Los archivos del sistema de archivos tienen tres niveles de permiso: los de usuario individual, los de grupo al que el usuario pertenece y los de todos los demás usuarios de la máquina.

3.3 PUERTO SERIAL. Cuando se usa un puerto serial la transferencia es menos rápida pero más segura, por tal motivo se sigue utilizando este puerto, ya que es una de las partes universales de la PC. Se puede conectar un ratón, un modem, una impresora, un graficador, otra PC.

Page 23: TES360

15

3.3.1 BASE DE LA COMUNICACIÓN SERIAL

Es la transferencia de la información entre computadoras, de uno ó más bits a la vez. El término serial se refiere a la transferencia de bits de datos de uno en uno: La mayoría de las comunicaciones seriales incluye dispositivos de red, teclados, ratones, módems, graficadores y terminales.

Cuando sucede una comunicación serial, cada palabra (un byte o carácter) de datos que se envía o recibe, se transfiere en bits(de uno en uno). Cada bit se encuentra encendido (on) ó apagado (off). Los términos que se escuchan algunas veces son: Mark para estado on y space para el estado de off.

La rapidez de los datos seriales es expresada frecuentemente como bits por segundo(“bps”) o cambio de estado de la línea por segundo (“baud”). El envío máximo de 300 baudios era considerado rápido, pero hoy las computadoras pueden manipular en un RS-232 una rapidez tan alta como 430,800 baudios! Cuando el incremento proporcional excede los 1,000 baudios este incremento se muestra en kilo baudios, o kbps(ejem. 9.6 kbps, 19.2 kbps, etc.). Por arriba de 1,000,000 se muestra en mega baudios, o Mbps (ejem. 1.5 Mbps).

Al hacer referencia a un dispositivo serial o puerto, estos están etiquetados como Equipo de Comunicación de Datos (Data Communications Equipment ) o Equipo Terminal de datos (Data Terminal Equipment). La diferencia entre ellos es simple – cada par de señales, como transmitir y recibir, es intercambiada. Cuando se conectan dos interfaces juntas, dos DCE o dos DTE, se usa un cable serial null-modem o un adaptador, para el intercambio de los pares de señales.

La comunicación necesaria para la conexión de la estación de trabajo con el graficador es DCE y DTE respectivamente.

3.3.2 COMUNICACIÓN ASÍNCRONA

Para que la computadora interprete el dato serial que recibe, necesita de alguna manera determinar donde termina un carácter y donde inicia el otro.

Page 24: TES360

En modo asíncrono la línea de dato serial permanece en el estado mark hasta que un carácter es transmitido. Un bit de inicio precede cada carácter y es seguido inmediatamente por cada bit del carácter, un bit opcional de paridad, y uno o más bits de stop. El bit start es siempre un space indicando a la computadora que un nuevo dato serial esta disponible. Los datos pueden ser enviados o recibidos en cualquier momento, de ahí el nombre de asíncrono.

16

space High ‘0’ +12V

Low ‘1’ -12V

(2)

mark

(1) (3)

(1)star bit (2)data bits (3)stop bit(s)

Fig. 3.3 El dato no es transmitido.

space 1 lógico s 1 1 0 1 0 stop

mark

(1) (2)

High ‘1’ -12V Low ‘0’ +12V (3)

(1)star bit (2)data bits (3)stop bit(s)

Fig. 3.4 El dato es transmitido.

Así se transmite el flujo de bits 01011, el cual se envía del menos significativo al más significativo.

Bit de paridad opcional. Es una simple suma de bits de datos que indican si el dato contiene ó

no un número par o impar de bits, con valor 1. Con paridad par. El bit de paridad es 0 si hay un número par de 1’s en el carácter. Con paridad impar. El bit de paridad es 0 si hay un número impar de 1’s en el dato. Es posible

escuchar los términos en ingles space parity, mark parity, y no parity.

Page 25: TES360

17

Space parity. Significa que el bit de paridad es siempre 0, mientras que mark parity significa que el bit es siempre 1.

no parity. Significa que el bit está presente o transmitido. bits de stop(parada), son los bits restantes. Puede haber 1,1.5, ó 2 bits de stop entre

caracteres y siempre tienen el valor de 1. Los bits de stop tradicionalmente se usaron para dar tiempo a la computadora para procesar el carácter previo, pero ahora únicamente sirven para sincronizar la recepción de los caracteres de entrada, de la computadora. Los formatos de datos asíncronos son usualmente expresados como “8N1”, “7E1”, etcétera. Esto se interpreta como “8 bits de datos, no paridad, 1 bit de parada” y “ 7 bits de datos, paridad par, 1 bit de parada” respectivamente.

Existen importantes consideraciones para la comunicación serial . - limite en la distancia - aislamiento óptico y sobrecarga de tensión(surge supression) - regresa a tierra (ground loops)

3.3.3 ACCESANDO EL PUERTO SERIAL

UNIX provee acceso a todos los dispositivos, por medio de archivos de dispositivos. Para accesar el puerto serial simplemente abre el archivo de dispositivo para el caso del puerto serial correspondiente ver tabla.3.1.

Tabla.3.1 Archivos de dispositivos de puerto serial.

Sistema Puerto 1 Puerto2 Solaris/SunOS /dev/ttya /dev/ttyb Linux /dev/ttys0 /dev/ttyS1 Digital UNIX /dev/tty01 /dev/tty02

Page 26: TES360

18

Cada puerto serial en un sistema UNIX tiene uno o más archivos de dispositivo(en el directorio /dev ) asociado a él. El puerto de comunicación serial de la estación de trabajo es /dev/ ttya.

3.3.3.a Abriendo un puerto serial

La función de bajo nivel open(); es usada para accesar el puerto serial. fd = open(“/dev/ttya”,O_WRITE); fd se refiere al descriptor de archivo que abre el puerto /dev/ttya en este caso solo para escritura. Después de definir el puerto, sigue la configuración del mismo (3.4).

3.3.3.b Leyendo datos del puerto serial

Cuando el puerto opera en modo raw (sin formato), cada llamada del sistema de read() regresará muchos caracteres que están disponibles en el buffer de entrada serial. Si no hay caracteres disponibles, la llamada se bloqueará (wait) hasta que los caracteres lleguen, expira en un intervalo de tiempo, o cuando ocurra un error. La función read() se usa para regresar inmediatamente el control al sistema al realizar lo siguiente:

fcntl(fd, F_SETFL, FNDELAY); La opción FNDELAY causa que la función read() retorne 0 si no hay caracteres disponibles en el puerto. Para regresar a su estado normal (blocking), la llamada fcntl() va sin la opción FNDELAY:

fcntl(fd, F_SETFL, 0);

3.3.3.c Escribiendo al puerto serial

Para enviar la información al graficador, se utiliza la función de bajo nivel llamada write(); write(/dev/ttya, &variable, longitud);

Page 27: TES360

19

3.3.3.d Cerrando el puerto serial

Al final el archivo de dispositivo se cierra con la función de bajo nivel close(); de la siguiente manera.

close(archivo);

3.3.4 CONFIGURACIÓN DEL PUERTO SERIAL

Establecer la comunicación serial desde la estación de trabajo, implica tener acceso completo a los archivos de directorios que sólo un súper-usuario tiene permitido.

Se requiere modificar los permisos de acceso del archivo correspondiente al puerto serial (proceso efectuado por el super-usuario).

Se necesita incluir el archivo <termios.h>; el cuál define la estructura de control del graficador como también las funciones de control POSIX( estandar internacional de sistemas operativos de tipo UNIX).

Las dos funciones más importantes son tcgetattr y tcsetattr. Éstas obtienen y colocan respectivamente los atributos del graficador; proporcionan un apuntador a la estructura termios que contiene las opciones seriales disponibles.

TABLA 3.2 Opciones de la estructura termios

Miembro Descripción c_cflag Opciones de control c_lflag Opciones de línea c_iflag Opciones de entrada c_cc Caracteres de control c_ispeed Baudios de entrada c_ospeed Baudios de salida

Page 28: TES360

20

3.3.4.a Opciones de control de c_cflag

Las opciones de control c_cflag controlan: el baud rate, número de bits de datos , la paridad, los bits de parada y el control de flujo del hardware (cable serial). Estas, son constantes para toda la configuración soportada. Y se establecen las siguientes constantes:

Baudios 9600 b9600 Bits de datos 7 cs7 Bits de paridad 1 parenb Bits de parada 2 cstopb Receptor cread Línea local clocal

Las dos variables (cread y clocal) deben permanecer siempre. Esto asegura que el

programa no iniciará con propiedades de un puerto residente que haya controlado un trabajo esporádico y suspenda las señales.

Las constantes de baud rate (CBAUD, B9600, etc.) son usadas por interfaces que son obsoletas y carecen de los miembros c_ispeed y c_ospeed; considerando que el máximo de baudios es 32 veces mayor en la estación de trabajo que la del graficador, esto es 115,200 & 9600 baudios.

La siguiente función coloca las nuevas opciones para el puerto: tcgetattr(fd, &opciones); Y la función que establece la recepción y los pone en modo local es: tcsetattr(fd, TCSANOW, &opciones); La función tcgetattr usa la estructura de termios proporcionando la configuración del

puerto serial. Al seleccionar la nueva configuración esta usando tcsetattr. La constante

Page 29: TES360

21

TCSANOW especifica que todos los cambios deben ocurrir inmediatamente sin esperar por los datos de salida para finalizar enviando o recibiendo datos de entrada para terminar.

3.3.4.b Opciones de control de c_lflag

Las opciones de control de c_lflag son miembros de modo local que controlan; cómo son administrados los carácteres de entrada por el drive serial. En general se configura el miembro c_lflag para modo de entrada canónica ó raw.

Eligiendo entrada canónica La entrada canónica esta orientada en línea. Los caracteres de entrada son colocados dentro del buffer el cuál puede ser editado interactivamente por el usuario hasta que suceda un retorno de carro (CR) ó Alimento de línea (LF) el carácter es recibido.

Cuando se selecciona el modo normal, se utiliza: options.c_lflag |= ICANON;

Eligiendo entrada raw. La entrada raw es no-procesada. Los caracteres de entrada son pasados a través del puerto exactamente como llegan, cuando son recibidos.

Cuando se selecciona este modo, la constante se escribe: options.c_lflag &= ~(ICANON);

3.3.4.c Opciones de control de c_iflag

El miembro de modo de entrada c_iflag controla cualquier proceso de entrada que es hecho por los carácteres de entrada recibidos en el puerto.

Para establecer la paridad entrada checando cuando se establece la paridad en el miembro c_cflag(PARENB).

IGNPAR. Es una opción de alguna manera peligrosa que le dice al drive serial que ignore los errores de paridad e ingrese los datos como si no hubiera ocurrido ningún error.

Page 30: TES360

22

Esto es usual para comprobar la calidad de la liga de comunicación, pero en general no es usado por razones prácticas.

Este miembro incluye el control de flujo por software usando IXON, IXOFF e IXANY. IXON. Establece el control de flujo por software(envío). IXOFF. Establece el control de flujo por software (ingreso). IXANY. Permite que cualquier carácter inicie el flujo de cualquier carácter.

3.3.4.d Opciones de control de c_oflag

El miembro c_oflag contiene opciones de salida filtradas. Como los modos de entrada, se puede seleccionar salida procesada o raw.

La salida procesada es seleccionada al colocar la opción OPOST en el miembro c_oflag:

Options.c_oflag |=OPOST; De todas las opciones únicamente se use la opción ONLCR la cuál mapea nuevas

líneas en parejas. El resto de las opciones de salida son históricas y rezagadas, desde que las impresoras en línea y las terminales podían resguardar el flujo del dato serial.

3.3.4.e Caracteres de control El arreglo de caracteres c_cc contiene las definiciones del carácter de control también los parámetros. Las constantes son definidas por cada elemento de su arreglo.

Colocando la interrupción temporal de lectura. El drive de la interfase serial UNIX, tiene la ventaja de especificar el carácter y la

interrupción temporal del bloque. Dos elementos del arreglo c_cc son usados para interrupción temporal: VMIN y VTIME. La interrupción temporal es inundara en modo de entrada canónica o cuando la opción NDELAY es colocada en el archivo vía open o fcntl.

Page 31: TES360

23

3.3.5 COMUNICACIÓN

La programación de la interfase para establecer la comunicación se realizó y se hicieron las siguientes pruebas: Primero, de estación de trabajo a graficador sin obtener resultados. Se utilizó un programa llamado vterm para comprobar si transmitía datos utilizando dos PC´s, no funciono. Al analizar el cable se comprobó que este era el problema, se cambio el cable y se hizo otra prueba de PC a PC obteniendo buenos resultados.

Se hicieron pruebas desde la estación de trabajo a la PC utilizando el comando cat de la siguiente manera:

adelita% cat archivo > /dev/ttya Sin mayor dificultad se estableció comunicación, por lo cuál se procedió a hacer la

conexión con el graficador(ver apéndice B). El problema posterior fue la lejanía de la estación de trabajo del área donde se

encuentra el graficador, en la misma sala; por tal motivo se implemento un nuevo cable serial que cumplía con las características del RS-232-C especificado en el manual del graficador DMP-61 y está explicado en el apéndice B.

Page 32: TES360

24

CAPÍTULO 4 PROGRAMACIÓN DE LA BIBLIOTECA LGHP

4.1 INTRODUCCIÓN

Al crear la biblioteca se pensó en aprovechar la interfase física y las pruebas básicas de los comandos de HPGL, para crear una biblioteca que fuera de uso fácil para el usuario. Se describe la manera en que fueron hechos y ejecutados los comandos para así crear una biblioteca llamada LGHP.H (Lenguaje de Graficación de Hewlett Packard). Se comentan algunas funciones más elaboradas. Así como los pasos para ejecutar un programa de usuario (ver capítulo 5).

4.2 CARACTERÍSTICAS DE LA PROGRAMACIÓN DE LA BIBLIOTECA

La idea que siguió fue obtener y elaborar los archivos: objeto y el de declaración de funciones ó prototipos respectivamente, a partir del archivo fuente conteniendo la definición de cada comando del graficador, y así, crear una biblioteca en lenguaje C que estuviera disponible para los usuarios que crearán sus propios programas utilizando el lenguaje C del sistema operativo UNIX en la estación de trabajo.

4.3 PASOS PARA CREAR LOS COMANDOS DE BIBLIOTECA LGHP

Las características principales para crear la biblioteca fueron las siguientes:

• Utilizar el mínimo de comandos básicos (p. ej. pluma arriba, pluma abajo, etc.)

• Cada comando debe obtener las características de configuración del puerto.

• Cada comando debe ser único sintácticamente y tener los argumentos que le corresponden.

Page 33: TES360

• Los comandos deben cumplir con el formato definido por el lenguaje de graficador.

4.3.a. Diagrama de flujo de la ejecución de cada comando en la biblioteca lghp.

si

no

Configura él Puerto serial

Lee datos de una función en memoria

si Esta

Configurado el puerto

serial

Coloca los datos en un arreglo en

memoria para formarel comando de hpgl

Elimina datodel arreglo

Y posiciona eapuntador

al principio de mismo arregl

fin

Envía el comando Al graficador

Hay más datos en memoria de otra función

no

inicio

25

s

l

l o

Page 34: TES360

26

4.4 CREACIÓN DE LA BIBLIOTECA DE GRAFICADO LGHP El programa que contiene las definiciones de los comandos originales de HPGL, se desarrolló en lenguaje “C”.

Para crear la biblioteca se procedió a realizar lo siguiente: 0) Compilar el programa lghp.c, para crear el archivo objeto lghp.o

De la forma: % cc -c lghp.c

1) Insertar el archivo objeto en un subdirectorio. El subdirectorio debe nombrarse anteponiendo la palabra lib como sigue: % ar r libgraf.a lghp.o

2) Se puede listar el contenido del archivo con el comando “ar t”. %ar t libgraf.a

3) Los programas de usuario que requirieran usar la biblioteca deberán hacerlos de la siguiente manera: cc –o arch_usuario arch_usuario.c

Las trayectorias utilizadas para colocar el archivo objeto y las declaraciones de las funciones respectivamente fueron:

usr/ccs/lib (.o) y usr/ccs/include (.h)

Nota: Si se adiciona a una biblioteca un archivo objeto el cuál ya existe, el comando “ar r” reemplaza la versión anterior.

Page 35: TES360

4.5 FUNCIONES DE LA BIBLIOTECA LGHP MÁS ELABORADAS

Escala de usuario. sclu(x1,x2,y1,y2); x1 y x2 corresponden a los puntos inicial y final del eje X y1 y y2 corresponden a los puntos inicial y final del eje y El origen corresponde a la coordenada (x1,y1);

X Y

El tamaño de cada eje se debe calcular en milímetros. Con esta función y utilizando diferentes tamaños de argumentos, el usuario puede dibujar elipses.

Escala de acuerdo a un solo eje. Sclx(x1,x2); x1, x2 corresponden a los puntos inicial y final del eje x. Los puntos del eje y serán los siguientes: y1 = x1 , y2=(x2-x1)*2/3

función de texto tx(); Esta función define un arreglo tipo carácter de 100 elementos. Limpia el arreglo antes de colocar el texto nuevo, al final del texto coloca el terminal (ETX) y es enviado al puerto y por seguridad vuelve a limpiar el arreglo. Como el comando DT es el terminal de texto, ya esta incluido en la función tx(); , el usuario se ahorra la necesidad de escribirla. 27

Page 36: TES360

Tamaño de carácter absoluto tca(); La función tca(); sin argumentos indica que deshabilita tal función. Lo mismo sucede con las demás funciones que están duplicadas pero difieren en los argumentos. Tc_a(ancho, alto); El tamaño de carácter con respecto a lo alto es proporcional a 1.54 * ancho. Las medidas están dadas en centímetros. Por ejemplo tc_a(5,5); equivale al tamaño real de 5 cm. De alto y 3.246 cm de ancho, Esto es 5/1.54. Para que quede cuadrado sería (5*1.54) y quedaría como tc_a(7.7,5); para obtener un carácter cuadrado.

Colocación de los puntos extremos p1 y p2 de la hoja. Pto(); pto2(); Estos puntos extremos dan la pauta al usuario del área que usara para graficar. Existe un margen de 15 mm que automáticamente realiza el graficador.

Y p2

p1 235mm(0,0)

x

157mm

28

Page 37: TES360

29

4.6 LISTA DE FUNCIONES DE ACUERDO A SUS CARACTERÍSTICAS

FUNCIONES DE INSTRUCCIÓN DE CONFIGURACIÓN:

Inicia in(); Comando de hpgl. IN; USO: Inicializa el subsistema, esta instrucción coloca las condiciones iniciales al graficado.

Sintáxis: in();

Coloca valores por default def(); Comando de hpgl. DF; USO: Coloca ciertos vectores en estados predefinidos que no son pasados a otro programa.

Sintáxis: def();

Función Instrucción equivalente

Condiciones

Trazo absoluto Dirección relativa Diseño de línea Entra ventana Tamaño carácter rel. Modo símbolos Selec. carácter estandar Selec. Carácter alterno Carácter inclinado abs. Escala Terminal de texto Tolerancia

mva(); dr_r(0,1); d_ln();m

evt(); tcr();

smb(); scs(); sca(); cin(0); scl();

-- --

Absoluto Horizontal

Línea sólida, 4% de distancia diagonal / p1 y p2. Coloca límites de la hoja Ancho 0.75%(p2x-p1x) y alto 1.5%(p2y-p1y) off coloca 0 coloca 0 coloca el ángulo escala en off ETX (ASCII 3 decimal) 5 grados

Page 38: TES360

30

Escala sclu sclx scl Comando de hpgl. SC USO: Instrucciones de escala, sclu establece el sistema de coordenadas en unidades de usuario al mapear valores sobre los puntos de escala p1 y p2. sclx establece el sistema de coordenadas para un mapeo uniforme; obtiene y1, y2 a partir de x1, x2.

Sintáxis: sclu(x1 , x2, y1, y2); sclx(x1abajo, x2); scl();

Parámetro Formato

X1, y1, x2, y2 Flotantes / mm

Baja pluma bp(); Comando de hpgl. PD USO: Inicia y para el trazo de vectores, pueden ser usados con parámetros para moverse al punto especificado por los parámetros

Sintáxis: bp(); b_p(x1, y1); Parámetro Formato Valor común

Posición Flotante / mm --

Sube pluma sp(); s_p(x1,y1); Comando hpgl. PU; USO: La pluma se mantiene elevada después de esta instrucción a menos que, se utilice la instrucción de pluma abajo.

Sintáxis: sp(); s_p(x1, y1);

Parámetro Formato Valor común

Posición Flotante / mm --

Selecciona número de pluma pl(); Comando en hpgl. SP

Page 39: TES360

31

USO: Selecciona Número de pluma, para este graficador solo se usa una pluma.

Sintáxis: pl(); pl_n(x);

Parámetro Formato Valor común

Número de pluma Entero 1

Trazo absoluto mva(); Comando de hpgl. PA USO: Realiza un movimiento con pluma abajo en coordenadas absolutas Sintáxis: mva(x1, y1);

Parámetro Formato Valor común

x1, y1 Flotante / mm --

Trazo relativo mvr(); Comando de hpgl. PR USO: Realiza un movimiento con pluma abajo con referencia a la última posición. Sintáxis: mvr(x1,y1);

Parámetro Formato Valor común

x1, y1 Flotante / mm --

FUNCIONES DE LÍNEA

Diseño de línea dln(); Comando de hpgl. LT USO: Son 7 tipos diferentes (0-6). Cero especifica únicamente los puntos que son trazados. Si

no tiene parámetro la línea es continua Sintáxis: dln(); d_ln(tipo);

Parámetro Formato Rango funcional Valor común

Tipo Entero 0-6 Sin tipo, es línea continua

Page 40: TES360

32

Longitud de grosor ma(); Comando de hpgl. TL USO: Esto es, el ancho de una línea por ejemplo Sintáxis: ma(positivo);

Parámetro Formato Rango funcional Valor común

Ancho Entero 0-8 Línea sólida

FUNCIONES DE CURVA

Circulo ci(); cia(); cir(); Comandos de hpgl. CI USO: Dibuja un circulo de radio r, o un circulo en una posición absoluta con radio r y una tolerancia de 5 % o menos, o un circulo en una posición relativa con radio r y tolerancia de 5% o menos.

Sintáxis: ci(r); cia(x,y,r,tol); cir(x,y,r,tol);

Parámetro Formato Valor común

x, y, r, tol Flotante --

FUNCIONES DE CARÁCTER

Texto tx(); Comando de hpgl. LABEL USO: El contenido debe ser una cadena de ASCII entre comillas y sin ningún carácter terminal.

Sintáxis: tx(“c….c”);

Parámetro Formato Rango funcional Valor común “c…c” carácter Cualquier carácter --

Page 41: TES360

33

Tamaño de carácter absoluto tca(); Comando de hpgl. SI USO: Especifica el tamaño actual de caracteres y símbolos en centímetros. Esto puede ser usado para cambiar el tamaño del carácter de su valor común y establece el tamaño del carácter absoluto en centímetros, así que el tamaño no depende de los puntos p1 y p2.

Sintáxis: tca(); tc_a(ancho, alto);

Parámetro Formato Rango funcional Valor común

Ancho, alto Flotante -- --

Carácter inclinado absoluto cin(); Comando de hpgl. SL USO: Especifica la inclinación con la cual los caracteres son escritos. Esto se entiende como la tangente del ángulo de la vertical (en grados).

Sintáxis: cin(ángulo);

Parámetro Formato Rango funcional Valor común

Tangente del ángulo Entero -- 0

Dirección absoluta dira(); Comando de hpgl. DI USO: Especifica la dirección de los caracteres que son trazados. Se usa para cambiar la dirección de los letreros a una nueva dirección absoluta

Sintáxis: dira(); dir_a(x, y);

Parámetro Formato Rango funcional Valor común

x (o cos θ) y (o sin θ)

Flotante Flotante

-- --

1 0

Page 42: TES360

34

FUNCIONES DE POLÍGONO

Borde absoluto del rectángulo bda(); Comando de hpgl. EA USO: Define y obtiene líneas de salida de rectángulo usando coordenadas absolutas Sintáxis: bda(xarribader, yarribader);

Parámetro Formato

Coordenadas x,y Flotante / milímetros

Llenar tipo llt(); Comando de hpgl. FT USO: utiliza el modelo para llenar polígonos ( llp), rectángulos (lla o llr), o cuñas (llw). Usa llt() para agrandar el trazo con llenado sólido. Sintáxis: llt(tipo, espacio, ángulo);

Parámetro Formato Rango funcional Valor común

Tipo Espacio Ángulo

Entero --

flotante / grados

1 al 4 , 10, 11 --

+-360

1 -- --

Llena rectángulo absoluto llra(); Comando de hpgl. RA USO: Define y llena un rectángulo usando coordenadas absolutas. Usar llra(); para llenar bordes u orillas rectangulares en el trazo.

Sintáxis: llra(xarrder, yarrder);

Parámetro Formato Rango funcional Valor común

Coordenadas x, y Milímetros -- --

Llena acuñación llw(r, ángulo, barrido); Comando de hpgl. WG

Page 43: TES360

35

USO: Define y llena cualquier cuña. Dibuja sectores de tipo pastel Sintáxis: llw(r, ángulo, barrido);

Parámetro Formato Rango funcional Valor común

Radio Ángulo Barrido

Milímetros Flotante / grados Flotante / grados

-- +-360 +-360

-- -- --

LISTA DE FUNCIONES DE ESCAPE Para la siguiente lista de funciones existe un formato para ingresar los datos correspondientes y es el siguiente: func(); Comando de hpgl. No existe USO: Crea el ASCII de “ESC.” Internamente y el usuario escribe la letra mayuscula y parámetros que faltan según lo requiera la función. Sintáxis: func(“ “);

Parámetro Formato Rango funcional Valor común

“C…” Letra mayúscula y sus

argumentos

( ,) , Y, Z, @, H, I, R, M, N, P, Q, T, B, E, I, O, A,

S, J, K

Una letra mayúscula del rango funcional

(se adicionan arfumentos sí existen)

ESC.H coloca protocolo en modo 1 Sintaxis: func(“H tamaño de bloque; carácter de indagación; reconocimiento de cadena”); o func(“H:”);

Parámetro Formato Rango Default

tamaño de bloque carácter de indagación reconocimiento de cadena

Entero ASCII ASCII

0, 10 a 18 0 a 26, 28 a 31

0 a126

80 bytes 0 0

Page 44: TES360

36

ESC.I Coloca protocolo en modo 2 Sintáxis xon-xoff: func(“I xoff; omitido; xon:”);

Parámetro Formato Rango default

Xoff Omitido

Xon

Entero Entero ASCII

0 A 1024 0

0 A 126

80 bytes --

0(si no hay carácter) ESC.J dispositivo de control para abortar Sintáxis: func(“J”); ESC.K gráfica para abortar Sintáxis: func(“K”); ESC.M Coloca modo de salida Sintáxis: func(“M delay; salida trigger; terminal echo; terminal salida; inicia salida”);

Parámetro Formato Default

Delay Salida trigger Terminal echo Terminal salida

Inicia salida

Entero ASCII ASCII ASCII ASCII

0 0 0

13 0

ESC.P Coloca modo de protocolo Sintáxis: func(“P handshake”);

Parámetro Formato Rango default

Handshake Entero

0(ninguno) 1(Xon-Xoff)

2(ENQ/ACK) 3(hardwire)

0

Page 45: TES360

37

ESC.R Reset Sintáxis: func(“R”); ESC.Y o ESC.( Graficador encendido Sintáxis: func(“Y”); o func(“(“); ESC.Z o ESC.) Graficador apagado Sintáxis: func(“Z”); o func(“)”);

Parámetro Formato Rango default

Tamaño de buffer lógico de entrada Condiciones de entrada

Entero 0 A 1024 0 a 31

1024 3

Número de bit

Estado lógico

Descripción

3

0 1

Desestablece modo monitor Establece modo monitor (solo en RS-232-C, especifica en

el bit 2 uno de dos modos de monitor ). 4.7 PROGRAMA DE USUARIO

El usuario debe saber entre otras cosas:

• Conocer la resolución del graficador. Es cuarenta puntos por milímetro.

• Conocer el área de graficado en el papel. Es automático o definido por el usuario si esta definida la función sclu().

• Conocer el origen sobre el papel, esto es x,y con valores de cero.

• En caso de requerir un marco en la hoja especificar la función bda() con los valores máximos de la función sclu().

• La parte final de un programa debe ser, colocar la pluma en el origen y cerrar el archivo usado por el puerto serial con la función termina();

Page 46: TES360

4.7.a Diagrama de flujo correspondiente al realizar y ejecutar un programa de usuario.

Prpr

de

fin

Inicio

38

no

ograma incipal usuario

Corregir programa

Compilación del programa

con la biblioteca

Lghp

Encender el graficador

Con papel y pluma

si

Es correcta la compilación

Crear el

programa ejecutable

Ejecutar el programa

Page 47: TES360

39

4.7.b. PASOS PARA VERIFICAR LAS FUNCIONES DEL PROGRAMA DE USUARIO

• Antes de enviar los datos al graficador, se enviaron a la salida estandar, para visualizarlos y llevar un mejor control.

• El orden del envío de los comandos, repercute en la forma del dibujo graficado.

• Cuando el dibujo se realiza en área de graficado mayor a la original, no hay problema si los comandos utilizados son valores relativos a la escala definida con el comando sclx.

• Al programar, el usuario debe incluir al final la función termina();, que es la que cierra el archivo descriptor del puerto.

4.7.c. Estructura general de un programa de usuario #include <stdio.h> #include <stdlib.h> #include <string.h> #include <lghp.h> main() { sclx(0,600); sp(); mva(0,0); . . /* El usuario escribe su código */ . . . sp(); s_p(0); termina(); }

Page 48: TES360

40

4.7.d. Para compilar y ejecutar el programa se realiza lo siguiente: % cc –o archivo_salida archivo_fuente –L. –lgraf % archivo_salida

Page 49: TES360

41

CAPÍTULO 5 PRUEBAS Y RESULTADOS

5.1 INTRODUCCIÓN. Aplicar la biblioteca para obtener resultados es el fin obtenido y se demuestra en los siguientes ejemplos. Cada una de estas pruebas, utiliza al menos una función diferente. 5.2 CÓDIGOS FUENTE Y FIGURAS OBTENIDAS La siguiente tabla describe el orden de cada figura (código fuente, gráfica). Tabla 5.3 lista de figuras y su descripción breve.

Número de

Figura Descripción

Página del Código Fuente

1 __Código fuente __ Descripción de comandos utilizados __ Código ASCII __Gráfica correspondiente

42 43 43

2 Círculos concéntricos, con d_ln() inversa 45 3 Círculos con posición relativa y absoluta 46 4 Letreros en posiciones inclinadas 47 5 Relleno de rectángulos c/barrido diferente 49 6 Cuatro rehiletes y tres líneas de texto 50 7 Letreros con diferentes posiciones y tamaños 52 8 Función seno 53

Page 50: TES360

42

FIGURA 1. Programa que dibuja círculos concéntricos desde el centro de la hoja, utilizando el tipo de línea 3. C. FUENTE #include<stdio.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <lghp.h>

main() { int i; sclu(0,221,0,221); sp();mva(0,0);bp(); bda(221,221); sclx(0,221); sp(); d_ln(3); for( i=5; i< 80 ;i+=10 ) cia(113,77,i,5); sp(); mva(180,5); tx("figura 1"); sp(); pl_n(0); termina(); }

Page 51: TES360

43

DESCRIPCIÓN DE COMANDOS UTILIZADOS

Tabla 5.4 Comandos del ejemplo 1.

Función Descripción

sclu establece el tamaño de la hoja en unidades de usuario, esto es 600 unidades en X, y 600 unidades en Y.

sp pluma arriba mva posición absoluta en x,y bp pluma abajo bda Hace el marco del tamaño máximo que es de x,y d_ln Es tipo de línea cia Rea liza un circulo de radio i con tolerancia de 5% tx Gráfica los letreros entrecomillados

pl_n Coloca el soporte en la posición original termina Cierra archivo utilizado para el puerto serial

CÓDIGO ASCII

La información enviada a través del puerto /dev/ttya es la siguiente: SC 0.000000,8840.000000,0,8840.000000; PU; PA 0.000000,0.000000; PD; EA 8840.000000,8840.000000; SC 0.000000,8840.000000,0,5893.333333; PU; LT 3; PA 4520.000000,3080.000000; CI 200.000000,5.00; PA 4520.000000,3080.000000; CI 600.000000,5.00;

Page 52: TES360

44

PA 4520.000000,3080.000000; CI 1000.000000,5.00; PA 4520.000000,3080.000000; CI 1400.000000,5.00; PA 4520.000000,3080.000000; CI 1800.000000,5.00; PA 4520.000000,3080.000000; CI 2200.000000,5.00; PA 4520.000000,3080.000000; CI 2600.000000,5.00; PU; PA 7200.000000,200.000000; LB FIGURA 1 PU;SP 0;

Page 53: TES360

45

FIGURA 2

Son círculos concéntricos que se encuentran en la esquina inferior izquierda y esquina superior derecha, utilizan tipo de línea diferente y en sentido inverso. #include <stdio.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <lghp.h> main() { int i,j; sclu(0,230,0,230); bda(230,230); sclx(0,235); sp(); mva(0,0); bp(); sp(); mva(60,50); bp(); for(j=1,i=3; j<=6,i< 45; j++,i+=4){ d_ln(j); ci(i); } sp(); mva(165,105); bp(); for( j=6,i=3; j>=4,i< 45; j-=.2,i+=4) { d_ln(j); ci(i); } sp(); mva(180,5); tx("figura 2"); sp(); pl_n(0); termina(); }

Page 54: TES360

46

FIGURA 3 El graficador dibuja círculos a distancia relativa uno del otro, usa tipo de línea 6(raya y 5 puntos), 3(raya y un punto), 4(raya y dos puntos). #include<stdio.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <lghp.h> main() { sclu(0,235,0,235); bda(235,235); sclx(0,235); sp(); mva(5,5); d_ln(6); cir(26,26,25,5); cir(25,0,25,5); cir(25,0,25,5); sp(); d_ln(3); cir(23,50,25,5); cir(25,0,25,5); sp(); d_ln(4); cir(20,50,25,5); cir(25,0,25,5); cir(25,0,25,5); sp(); mva(190,5); tx("figura 3"); sp(); pl_n(0); termina(); }

Page 55: TES360

tx("I.N.A.O.E.");

47

FIGURA 4 El graficador coloca los letreros de forma transversal dibujando letreros que forman rombos y medios rombos. El tamaño de la letra decrece a medida que se grafícan los letreros de la palabra “optica”. #include<stdio.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <lghp.h>

main() { int i,j; sclu(0,221,0,221); bda(221,221); sp();mva(0,0); tc_a(.15,.25); cin(0); dir_a(1,1); mva(30,150); tx("I.N.A.O.E."); dir_a(1,-1); tx("I.N.A.O.E."); dir_a(-1,-1); tx("I.N.A.O.E."); dir_a(-1,1); tx("I.N.A.O.E."); sp(); for(i=0; i< 5000; i++) printf(" %i ",i); tc_a(.15,.25); cin(0); dir_a(1,1); mva(90,150); tx("I.N.A.O.E."); dir_a(1,-1); tx("I.N.A.O.E."); dir_a(-1,-1); tx("I.N.A.O.E."); dir_a(-1,1); tx("I.N.A.O.E."); sp(); for(i=0; i<5000; i++) printf(" %i ",i); tc_a(.15,.25); cin(0); dir_a(1,1); mva(150,150); tx("I.N.A.O.E."); dir_a(1,-1); tx("I.N.A.O.E."); dir_a(-1,-1); tx("I.N.A.O.E."); dir_a(-1,1);

Page 56: TES360

48

sp(); for(i=0; i< 5000; i++) printf(" %i ",i); tc_a(.45,.25); cin(0); mva(140,90); dir_a(1,-1); tx("optica"); dir_a(-1,-1); tx("optica"); sp(); tc_a(.25,.45); cin(0); mva(115,90); dir_a(1,-1); tx("optica"); dir_a(-1,-1); tx("optica"); sp(); tc_a(.1,.15); cin(0); mva(90,90); dir_a(1,-1); tx("optica"); dir_a(-1,-1); tx("optica"); sp(); tc_a(.1,.06); cin(0); mva(65,90); dir_a(1,-1); tx("optica"); dir_a(-1,-1); tx("optica"); sp(); mva(180,5); tc_a(.25,.45);dir_a(1,0); tx("figura 4"); sp(); pl_n(0); termina(); }

Page 57: TES360

49

FIGURA 5 Programa que traza tres rectángulos con diferente relleno. El primero arriba a la derecha dibuja líneas transversales muy juntas, el segundo es trazado con líneas más separadas y trazadas en sentido inverso formando una malla, el tercero lo mismo que el primero solo que en diferente posición y una ligera pero diferente inclinación de trazado. #include<stdio.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <lghp.h> main() { sp(); mva(62.5,25); llt(2,1.25,5); llra(20,24); sp(); mva(62.5,-25); llt(4,50,30); llra(0.5,0.6); sp(); mva(-75,-12.5); llt(6,1.25,20); llra(0.5,0.6); sp(); mva(50,-75); tc_a(.30,.25);dir_a(1,0);tx("figura 5");sp(); mva(-100,-80);bp(); mva(-100,80); mva(100,80); mva(100,-80);mva(-100,-80); sp(); pl_n(0); termina(); }

Page 58: TES360

50

FIGURA 6 Programa que hace cuatro rehiletes de diferentes en tamaño, tres letreros y su marco respectivo. #include<stdio.h>

#include <stdlib.h>

#include <string.h>

#include <errno.h>

#include <lghp.h> main() { int i,j; sp();mva(0,0); i=0; for( j=45; i<360; j-=5) { llw(10,i,j); /*radio, inicio angulo, barrido */ i+=j+15; } sp(); mva(-82.5,40); tx(" Ma. del Rosario M. H."); sp(); mva(-70,7.5); for(i=0; i<380; i+=40) llw(15,i,10); sp(); mva(-40.5,-20); llw(10,40,60);/* radio, angulo, barrido */ llw(10,160,60); llw(10,280,60); sp(); mva(60.5,25); llw(30,40,80);/* radio, angulo, barrido */ llw(30,160,80); llw(30,280,80); sp(); mva(-59.5,-50); tx(" instrumentacion - optica - inaoe"); sp(); sclu(0,15,0,10); sp();mva(0,0); bda(15,10);

Page 59: TES360

51

mva(11.75,0.12); tx("figura 6"); sp(); pl_n(0); termina(); }

Page 60: TES360

52

FIGURA 7 El programa muestra los tipos de inclinación (con sus valores respectivos)y tamaños de los textos. #include <stdio.h> #include <stdlib.h> #include <string.h> #include <errno.h> #include <lghp.h> main() { float i,j; sclu(0,230,0,230); bda(230,230); sclx(0,235); sp(); mva(0,0); ma(0.2); tc_a(0.3,0.5); mvr(0.5,8); tx("a~o 2001"); mva(19,60); dir_a(-1,0); tx("-1,0"); mva(20,60); dir_a(1,0); tx("1,0"); mva(20,58); dir_a(0,-1); tx("0,-1"); mva(20,61); dir_a(0,1); tx("0,1"); mva(22,115); dir_a(-1,-1); tx("-1,-1"); mva(23,116); dir_a(-1,1); tx("-1,1"); mva(22,115); dir_a(1,1); tx("1,1"); mva(23,115); dir_a(1,-1); tx("1,-1"); mva(200,140); dir_a(1,0); tc_a(-1,1); tx("reversa"); mva(150,110); dir_a(1,0); tc_a(0.2,0.1); tx("peque~a"); mva(150,120); dir_a(1,0); tc_a(0.5,0.5); tx("mediano"); mva(180,5); dir_a(1,0); tca(); tx("figura 7"); mva(115,25); dir_a(1,0); tc_a(1,3); tx("largo"); sp(); pl_n(0); termina(); }

Page 61: TES360

53

FIGURA 8 El objetivo de este programa es graficar la función seno. La ejecución del programa solicita al usuario el rango [x1,x2]. Los trazos se realizan a partir del uso de las funciones de la biblioteca lghp #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> #include <lghp.h> #define _POSIX_SOURCE 1 #define coi 1 #define cof 50 #define rei 1 #define ref 50 #define tameval 2500 #define xy 2 double areag[tameval][xy]; double evalua[tameval][xy]; double postrz[tameval][xy]; double ymax, ymin; main() { inicializa(); funcion(); } inicializa() { int i,j; for(i=0; i<= tameval; i++) for(j=1; j<=2; j++) { areag[i][j]=0.0; evalua[i][j]=0.0; postrz[i][j]=0.0; } } maximin( int i, int j) { int e;

Page 62: TES360

54

ymin= evalua[0][j]; ymax=ymin; for(e=0; e<= i;e++) { areag[e][1] = evalua[e][j]; if(areag[e][1] < ymin) ymin = areag[e][1]; if(areag[e][1] > ymax) ymax = areag[e][1]; } printf("max %lf min%lf ", ymax,ymin); } funcion ( ) { char letrero[15]; int i,j,e,k; double posx,posy,ren; double a,b,dx,p1; a=b=dx=posx=posy=ren=0.0; printf("Proporcione el intervalo "); printf("A: ");scanf("%lf",&a); printf("B: ");scanf("%lf",&b); dx = (b-a)/ref; printf("%f \n",dx); i=0; j=2; evalua[0][1]=a; while(evalua[i][1] < b+dx) { evalua[i][j]= sin(evalua[i][1]); i++; evalua[i][1]= evalua[i-1][1]+dx; } func("R"); sclu(0,157,0,235); bda(235,235); if((a*b) < 0) { posy = 1-(a/(a-b))*(-(ref-2)); mva(1,posy);bp(); mva(ref,posy);sp(); /* eje y */ } maximin(i,j); if((ymin*ymax) < 0) { posx =1 -(ymax/(ymax-ymin))*(-(cof-1)); mva(posx,1); bp(); mva(posx,cof); sp(); /* eje x */ } for(e=0; e<= i-1; e++) postrz[e][1] = evalua[e][j]; for(e=0; e<= i-1;e++) { postrz[e][2]= 1-((ymax-postrz[e][1])/(ymax-ymin))*(-(cof-1)); p1 = postrz[e][2]; for(k=1;k<100;k++); mva(p1,e); bp();

Page 63: TES360

55

} for(i=0; i<= e-1; i++) sp(); pl_n(0); termina(); }

Page 64: TES360

56

CONCLUSIONES 1. El acceso de la estación de trabajo al graficador se cumplió teniendo la configuración

del cable y del puerto. 2. El graficador funciona como se había esperado. 3. Se implementó la biblioteca llamada LGHP, para el lenguaje HPGL, en el ambiente

UNIX, es de tamaño suficiente y ofrece los servicios elementales para el departamento de Instrumentación-Óptica.

4. La efectividad del lenguaje en la nueva biblioteca se comprobó al realizar un conjunto de ejemplos.

5. Se probó la biblioteca en ejemplos particulares, con resultados satisfactorios.

VENTAJAS, LIMITACIONES Y PERSPECTIVAS

Ventajas

1. La biblioteca de graficado es accesible dentro del lenguaje “C” del sistema Solaris 2.4 2. La verificación de la sintáxis de los comandos es correcta, garantizando que el

código enviado al graficador es correcto. 3. Es posible graficar Un archivo en lenguaje HPGL redireccionando al graficador con el

comando “cat”. 4. Obtención de gráficas en tamaño real bajo el sistema Solaris 2.4 5. La posibilidad de poder enriquecer esta biblioteca al tener acceso a los fuentes.

Page 65: TES360

57

Limitaciones 1. No se muestra la gráfica previamente en pantalla. 2. Sólo se obtienen gráficas en dos dimensiones 3. Actualmente el graficador, sólo se puede accesar, desde la estación de trabajo donde

está conectado físicamente. 4. Solo se implemento en lenguaje HPGL.

Perspectivas. 1. Implementar el despliegue de las gráficas en pantalla. 2. Accesar el graficador desde “cualquier” estación de trabajo autorizada en red. 3. Implementar otra biblioteca de graficado para utilizar el lenguaje DM/PL.

Page 66: TES360

58

GLOSARIO ASCII. Son las siglas en ingles de código estandar americano para intercambio de

información. Código de 8 bits que usan 7 bits para representar el dato del carácter así como letras, puntuación, símbolos, y carácteres de control. El bit 8 es usado para la paridad.

BAUDIOS (Baud Rate). Representa el número de unos y ceros que pueden ser enviados en un segundo entre una computadora y un periférico.

BUFFER. Una parte o partes de memoria de la computadora o dispositivo donde el dato es

almacenado hasta que sea procesado. Usualmente se refiere al área de memoria reservada para operaciones de entrada/salida.

COMANDO HPGL. Es el nombre de una función del lenguaje de graficación de Hewlett-Packard con el siguiente formato:

MNEMÓNICO(parámetros); Donde: MNEMÓNICO. Son dos letras mayúsculas(ó abreviaciones del comando). Y

los parámetros pueden ser de tipo entero y/o flotante ó alfabético. CONFIGURACIÓN. Es la manera en que el equipo de computo y el software es conectado y

configurado para operar como un sistema. CONTROL DE FLUJO. Es la colección de técnicas usadas en comunicación serial para

detener al que envía enviando un dato hasta que el que recibe pueda aceptarlo. Puede ser mediante el control de flujo por software o por hardware.

DCE. Equipo de Comunicación de Datos (Data Communications Equipment). Se refiere al

equipo que va a enviar los datos, en este caso, la estación de trabajo (WS).

Page 67: TES360

59

DEFAULT. Un valor o condición que es asumido si no hay otro valor o condición especificada. DESCRIPTOR DE ARCHIVOS. Es un entero pequeño que identifica un archivo abierto en un

proceso. Este número es obtenido como un resultado de abrir un archivo. Las operaciones las cuales son lee, escribe o cierra un archivo tomaran el descriptor de archivo como un parámetro de entrada.

DISPOSITIVO MANEJADOR(device driver). Desde el punto de vista del sistema operativo:

es el software que controla los componentes del hardware o dispositivos periféricos de una computadora como un disco magnético, cinta magnética, impresora, graficador etcétera. Un driver es responsable para accesar los registros del hardware del dispositivo y a menudo incluye un manejador de interrupciones al servicio de interrupciones generadas por el dispositivo. Un driver a menudo forma parte del nivel más bajo del núcleo del sistema operativo, el cuál está ligado cuando el núcleo se construye. Algunos sistemas recientes tienen drivers que pueden ser instalados desde archivos después de que el sistema operativo este en ejecución.

DIFERENCIA DE POTENCIAL. Es la que causa el movimiento de los electrones. Una corriente de sólo un amperio mueve 6.25 x 1018 electrones en un segundo. Cuanto más alta sea la diferencia de potencial entre los terminales del circuito, mayor será el flujo de corriente. Tanto el flujo de corriente como los niveles de tensión se pueden emplear para representar datos y señales de comunicación de datos.

DRIVER. Configuración de datos usado por el software para controlar entrada y salida entre la computadora y el dispositivo periférico(graficador).

DTE. Equipo Terminal de Datos (Data Terminal Equipment). Es el dispositivo que recibe la

información, éste, es el graficador (G). ESCALA. Es la división del área del graficador en unidades convenientes para una aplicación.

Page 68: TES360

60

HANDSHAKING. El hardware predeterminado o la actividad del software diseñado establece o mantiene dos maquinas o programas en sincronización. El handshaking a menudo concierne el cambio de mensajes o paquetes de datos entre dos sistemas con buffers limitados. Un simple protocolo de handshaking podría complicar, el recibir enviando un mensaje con el significado de “recibí tu último mensaje y estoy listo para que me envíes otro.” En protocolo handshaking más complejo, podría permitir enviar a preguntar al que recibe si esta listo para recibir o para que reciba una réplica con un reconocimiento negativo que signifique “no recibí tu último mensaje correctamente, por favor reenvíalo”. El Handshaking por hardware usa niveles de voltaje o pulsos en las líneas que llevan las señales, mientras el handshaking por software usa unidades de datos (p.ej. caracteres ASCII: DC1,DC2,DC3,DC4)

HPGL. Lenguaje de graficación Hewlett-Packard. (Hewlett-Packard Graphics Language) INTERFASE. Cualquier cosa usada para juntar componentes de un sistema de computación

de manera que esas funciones sean compatibles y coordinadas. MODO LOCAL. En una configuración RS-232-C, un modo en el cuál el graficador acepta

instrucciones a través de un cable insertado en el conector de la interfase del graficador llamado TERMINAL.

PUERTO. Es el punto físico en el que un dispositivo periférico, como una terminal o una red,

está conectado a la computadora. En este caso son los conectores del cable serial unido a la salida y entrada, de la estación de trabajo(WS) y el graficador(G), respectivamente.

PROTOCOLO. Grupo de características formales que describen como se transmiten los

datos,especialmente RESOLUCIÓN. Es la medida de la imagen expresada agudamente como un número de líneas

por unidad de longitud. Cuando se refiere al graficador, la resolución direccionable es

Page 69: TES360

61

el medio para el movimiento más pequeño del graficador que puede hacer en un programa. En este graficador la resolución es de 1016 unidades por pulgada o 40 unidades por milímetro.

RISC. Grupo de Instrucciones Reducidas de Computadora Reducidas.(Reduced Instruction

Set Computer), un procesador donde el diseño esta basado en la ejecución rápida de una secuencia de instrucciones simples.

UNIX. En las palabras de los autores es “a weak pun on multics” el plural de “Unices”. Un sistema operativo de tiempo compartido interactivo inventado en 1969 por Ken Thompson después los Laboratorios Bell retoman el proyecto. Dennis Ritchie, El inventor de C, es considerado co-autor del sistema. VOLTIO. Es una medida de la diferencia de potencial necesaria para conseguir que los

electrones se muevan por el circuito. VELOCIDAD DE RELOJ. La velocidad se fundamenta en ciclos por segundo a la cuál

una computadora ejecuta sus operaciones más básicas, así como sumar dos números o transferir un valor de un registro a otro. La velocidad de reloj de una computadora es determinada normalmente por la frecuencia de un cristal.

Page 70: TES360

62

APÉNDICE A

GUÍA PARA EL USO DE COMANDOS HPGL . Los graficadores son dispositivos de hardware básicos para dibujar líneas, ésta operación esta controlada por cuatro comandos. PA trazo absoluto PR trazo relativo PU pluma arriba PD pluma abajo Pluma arriba y abajo tienen movimiento cuando una línea se comienza a crear, en los comandos de absoluto y relativo definen el tipo de movimiento entre puntos. Por ejemplo dibujar una línea de (1,0) a (2,0) se puede especificar como sigue: p_u();pa(1,0); p_d();pr(1,0);p_u(); El resultado enviado al graficador es: PU;PA1,0,PD;PR1,0;PU; Hay dos atributos básicos que pueden ser asignados a una línea, como esperar que se apliquen a una pluma, y son: SP número de pluma PT espesor de pluma El número de pluma actúa como un índice de color, comúnmente son 8 colores. Y la otra es la geometría con la que pueden ser especificados y ellos son: AR arco relativo CI circulo EA borde del rectángulo absoluto

Page 71: TES360

63

ER borde del rectángulo relativo EP borde del polígono EW borde unido (wedge) LB letrero In(); inicializa: pa(); la pluma se estaciona en el lugar predeterminado (home), limpia el estado interno, reinicia. Le da sentido a la posición. OI identidad de salida: Nombre, versión, fecha. PA trazo absoluto: Los movimientos son con referencia a home (0,0) PD pluma (z) abajo: si ya esta abajo, no hay movimiento. PR trazo relativo: Los movimientos son con referencia a la posición corriente PU pluma (z) arriba: solo sube la pluma sin avanzar. SP selecciona una pluma : la misma acción como en IN si n == 0 ó n!= al n previo. Puede forzar una

pausa. SP0 como IN, y debe liberarse. LB El letrero debe estar entre comillas, por ej. “hola”.

Page 72: TES360

64

APÉNDICE B

CABLE RS-232.

El RS-232 es una interface eléctrica estándar para comunicación serial definida por “Electronic Industries Association” (“EIA”). Actualmente viene en 3 diferentes tipos (A, B y C) cada uno definido con un rango de voltaje diferente para los niveles de on y off. El RS-232C envía los datos por la interfaz mediante cambios de niveles de tensión ó voltios. De la variedad, lo que más se usa es RS-232C, el cuál define un bit de marca (on ó 1) con un voltaje entre –3V y –12V y un bit de espacio (off ó 0) con un voltaje entre +3V y +12V. Las especificaciones dicen que estas señales pueden llegar cerca de 8m. (25 pies). RS-232C, la C representa la cuarta versión, aprobada en 1981. RS-232C describe cuatro funciones de interfaz:

• Definición de las señales de control de la interfaz.

• Movimientos de datos de usuario a través de la interfaz.

• Transmisión de señales de reloj para sincronizar el flujo de datos:

• Formación de las características eléctricas reales de la interfaz. Pata 7 Tierra de señal(GND): Tierra común para todos los circuitos. Así se establece la tensión de referencia para las otras líneas. Técnicamente no es una señal, Pero sin ella ninguna de las otras señales funciona. Pata 2 Datos de transmisión(TXD): Señales de datos transmitidas desde la estación de trabajo(WS) que es el DCE, hacia el graficador(G) que es el DTE. Generalmente representan datos de usuario, una marca de voltaje es interpretada como 1 y un espacio de voltaje es interpretado como 0. Pata 3 Datos de recepción(RXD): Señales de datos de usuario transmitidas desde un G hacia una WS. Como en TXD, marca y espacio son 1 y 0, respectivamente.

Page 73: TES360

Pata 4 Solicitud de envío(RTS): Señal de WS (DCE) a G (DTE). El RTS es una señal que se coloca como un voltaje de espacio por la WS (DCE) para indicar que hay más datos que están listos para ser enviados. RTS ayuda a regular el flujo de datos entre la WS (DCE) y G (DTE). Muchas de las WS llevan la señal colocada todo el tiempo. Pata 5 Permiso para transmitir(CTS): La señal CTS es recibida por la otra terminal del cable. Un voltaje de espacio indica esta listo para enviar más datos seriales de la WS. Especificación del cable serial en el manual del graficador. Graficador Estación de trabajo Conector DB-25S Conector DB-25P

2 TD -------------------------------------------3 3 RD ------------------------------------------ 2 4 RTS ---------------------------------------- 5

7 GND ---------------------------------------- 7 CONECTOR DB25

65

Page 74: TES360

66

TABLA B-4 CIRCUITO SERIAL DE LA ESTACION DE TRABAJO SPARC, RS-423/RS-232

Pata

Función I/O Nivel

1 2 3 4 5 6 7 8

9-14 15 16 17

18-19 20

21-23 24 25

--- TxD RxD RTS CTS DSR Gnd DCD

--- TRxC

--- RTxC

--- DTR ---

TxC ---

--- O I O I I I

--- I

--- I

--- O --- O ---

No se conecta Transmite dato

Recibe dato Listo para enviar Limpia el envío

Equipo de datos preparado Señal de tierra

Detecta transmisión de datos No se conectan Transmite reloj No se conecta

Terminal de datos preparado No conectado

Terminal de datos preparado No conectado

Transmite reloj No conectado

Page 75: TES360

67

APÉNDICE C FUNCIONES DE LA BIBLIOTECA LHGP.H (COMPLEMENTO). FUNCIONES DE INSTRUCCIÓN DE CONFIGURACIÓN

Inicia in(); Comando de hpgl. IN; USO: Inicializa el subsistema, esta instrucción coloca las condiciones iniciales al graficado.

Sintáxis: in();

Mascara de entrada no hay Comando de hpgl. IM; USO: Los parámetros son ignorados, ya que tienen significado únicamente para la interfase de comunicación GPIB O HP-IB, y no se usa en este graficador.

Coloca valores por default def(); Comando de hpgl. DF; USO: Coloca ciertos vectores en estados predefinidos que no son pasados a otro programa.

Sintáxis: def();

Función Instrucción equivalente

Condiciones

Trazo absoluto Dirección relativa Diseño de línea Entra ventana Tamaño carácter rel. Modo símbolos Selec. carácter estandar Selec. Carácter alterno Carácter inclinado abs.

mva(); dr_r(0,1); d_ln();m

evt(); tcr();

smb(); scs(); sca(); cin(0);

Absoluto Horizontal

Línea sólida, 4% de distancia diagonal / p1 y p2. Coloca límites de la hoja Ancho 0.75%(p2x-p1x) y alto 1.5%(p2y-p1y) off coloca 0 coloca 0 coloca el ángulo

Page 76: TES360

68

Escala Terminal de texto Tolerancia

scl(); -- --

escala en off ETX (ASCII 3 decimal) 5 grados

Entrada de ventana evt( ); Comando de hpgl. IW USO: Provee el medio para restringir el área de trabajo a la pluma en la superficie del graficador. Esta área es llamada ventana.

Sintáxis: evt( x1abajoiz., y1abajoiz, x2arrder., y2arrder.);

Parámetro Formato Valor común

x1,y1,x2,y2 Flotante Limites del sujetador de papel

Salida de ventana svt(); Comando de hpgl. OW; USO: Establece valores predeterminados.

Sintáxis: svt();

Entra p1 y p2 pto(); pto2(); Comando hpgl. IP USO: Es el medio para localizar los puntos p1 y p2 a través del control del programa. La instrucción de pto() o pto2() es usada para asegurar que el área de graficación es del mismo tamaño, especialmente cuando el usuario y el programador no son la misma persona.

Sintáxis: pto(x1, y1 ); pto2(x1, y1, x2, y2 );

Parámetro Formato Valor común

x1, y1, x2, y2 Flotante / mm Limites del sujetador de papel

Page 77: TES360

69

Sale p1 y p2 spto(); Comando hpgl . OP; USO: Hace las coordenadas comunes de p1 y p2 disponible a la salida y es usada para determinar la posición de p1 y p2 en unidades en las que se encuentra la escala.

Sintáxis: spto();

Parámetro Respuesta

Ninguna x1, y1, x2, y2

Tolerancia tol(); Comando de hpgl. CT; USO: Si el valor de tolerancia de la cuerda, se especifica como menor o igual a 5°, el graficador automáticamente usa la rutina de curva para dibujar un circulo(ver 4.4.17 del manual de operación)

Sintáxis: tol(tipo);

Parámetro Formato Rango funcional Valor común

Tipo Entero 0(ángulo cuerda)

1(distancia de desviación) 0

No esta listo nol(); Comando hpgl. NR; USO: Al recibir el comando el graficador establece el modo local y se debe presionar local key. (ver 4.4.2 manual de operación). Sintáxis: nol();

Sistema de coordenadas de rotación rota(); Comando de hpgl. RO USO: Sistema de coordenadas de rotación. Rota el trazo por unidades de milímetro ó por unidades de usuario, ángulo es el valor de rotación 1 es por default horizontal al texto, 2 rota 90 grados de la posición original ro(1), 3 rota 180 grados desde ro(1), 4 rota 180 grados de derecha a izquierda, 5

Page 78: TES360

70

cambia la orientación de ro(1), 6 cambia la orientación de ro(2), 7 cambia la orientación de ro(3), 7 cambia la orientación de ro(4).

Sintáxis: rota(ángulo);

Parámetro Formato Rango funcional Valor común

Ángulo entero 1-7 1

Almacén de datos BF No esta habilitada para este equipo (NOP).

Re-gráfica RP

No esta habilitada para este equipo (NOP).

Sube pluma automática spa(); Comando de hpgl. AP USO: Eleva la pluma en caso de que no este en movimiento . Sintáxis: spa();

Selecciona velocidad v(); v_n(rapidez); Comando de hpgl. VS USO: Especifica la rapidez de la pluma. Se usa para optimizar la calidad de la línea

Sintáxis: v(); v_n(rapidez); Parámetro Formato Rango funcional Valor común

rapidez Entero 30-800 mm/s 800

Velocidad adaptativa VA No esta habilitada para este equipo (NOP).

Page 79: TES360

71

Velocidad normal VN No esta habilitada para este equipo (NOP).

Selecciona aceleración ac(); Comando de hpgl. AS USO: Se aplica al realizar cualquier tipo de curvas.

Sintáxis: ac(); ac_n(acelerac.); Parámetro Formato Rango funcional Valor común

Aceleración Flotante 0.5, 1, 2, 3, 4 4

FUNCIONES DE LÍNEA

Grosor de eje x ejx(); Comando de hpgl. XT USO: Dibuja una marca vertical con cierto grosor en la localización corriente. Sintáxis: ejx();

Parámetro Formato Rango funcional Valor común

ninguno -- -- --

Marca de eje y ejy(); Comando de hpgl. YT USO: Dibuja una marca horizontal con cierto grosor en la localización corriente Sintáxis: ejy();

Parámetro Formato Rango funcional Valor común

ninguno -- -- --

Page 80: TES360

72

FUNCIONES DE CURVA Arco absoluto ara(); arat(); Comando de hpgl. AA USO: Dibuja un arco, usando coordenadas absolutas, que inician en la localización x,y.

Sintáxis: ara(x, y, ángulo); arat(x, y, ángulo, arco);

Parámetro Formato Rango funcional Valor común

x, y Ángulo

arco

Flotante / mm Flotante Flotante

Flotante +- 360°

0.5° - 180°

-- -- 5°

Arco relativo arr(); arrt(); Comando de hpgl. AR USO: Dibuja un arco, usando coordenadas relativas, que inician en la localización x,y.

Sintáxis: arr(x, y, ángulo); arrt(x, y, ángulo, arco);

Parámetro Formato Rango funcional Valor común

x, y Ángulo

arco

Flotante / mm Flotante Flotante

Flotante +- 360°

0.5° - 180°

-- -- 5°

FUNCIONES DE CARÁCTER

Diseño carácter estándar dc(); Comando de hpgl. CS

Page 81: TES360

73

USO: Puede ser usado para elegir el carácter el grupo de caracteres estandar apropiados para una aplicación. Esto es de gran ayuda especialmente cuando los letreros están en otro idioma.(ver párrafo 4.4.8 del manual de operación).

Sintáxis: dc(); d_c(vector, arco v, arco f);

Parámetro Formato Rango funcional Valor común

Vector Arco variable

Arco fijo

Entero Entero Entero

0-9, 30-39 10-19, 40-49 20-29, 50-59

0 10 20

Diseño de carácter alterno dca(); dc_a(vector,arco v, arco f); Comando de hpgl. CA USO: Es el medio de diseño de caracteres para alternar con otro grupo de caracteres( ver manual de operación). Sintáxis: dca(); dc_a(vector,arco variable,arco fijo);

Parámetro Formato Rango funcional Valor común

Vector Arco variable

Arco fijo

Entero Entero entero

0-9, 30-39 10-19, 40-49 20-29, 50-59

0 10 20

Selecciona carácter estándar scs(); Comando hpgl. SS USO: Permite seleccionar las instrucciones diseñadas por dc() como los caracteres que se usaran

para letreros

Sintáxis: scs();

Selecciona carácter alterno sca(); Comando de hpgl. SA USO: Se elige el grupo alterno diseñado por la instrucción más reciente como el grupo de caracteres que será usado para todos los letreros

Page 82: TES360

74

Sintáxis: sca();

Modo de símbolos smb(); Comando de hpgl. SM USO: Es usada con mva(); y mvr(); es la forma de dibujar un solo carácter el cual es centrado al fin de cada trazo. Puede ser usado para dibujar puntos esparcidos en forma de spray, o dibujos geométricos, o múltiples líneas diferentes. La instrucción sin parámetro retorna un símbolo de off. La instrucción se mantiene hasta que un in(); ó df(); son ejecutadas.

Sintáxis: smb(); s_mb(c);

Parámetro Formato Rango funcional Valor común

Carácter Texto -- (0-10-20)

Tamaño de carácter relativo tcr(); Comando de hpgl. SR USO: Especifica el tamaño de caracteres y símbolos como porcentaje relativo de la distancia entre

los puntos de escala p1 y p2.

Sintáxis: tcr(); tc_r(ancho, alto);

Parámetro Formato Rango funcional Valor común

Ancho, alto Flotante -- --

Grafica carácter grc(); Comando de hpgl. CP USO: Mueve la pluma al número especificado de espacios. Esto es usado para mover cualquier número de espacios de carácter o líneas de un punto en la superficie de trazo

Sintáxis: grc(); gr_c(espacio a lo ancho, espacio a lo alto);

Parámetro Formato Valor común Espacio a lo ancho

Espacio a lo alto Flotante Flotante

-- --

Page 83: TES360

75

Dirección relativa dirr(); Comando de hpgl. DR USO: Cambia dirección de los letreros a una nueva dirección relativa a la escala de los puntos P1 y P2

Sintáxis: dirr(); dir_r(x, y);

Parámetro Formato Rango funcional Valor común

x(o cos θ ) y(o sin θ )

Flotante Flotante

-- --

1 0

Cadena almacenada de la función texto txal(); Comando de hpgl. BL USO: Cadena almacenada en buffer. Nota: No se encontró más información de apoyo en los manuales utilizados. Sintáxis: txal(“c...c”);

Parámetro Formato Rango funcional Valor común

“c....c” Carácter -- --

Ángulo de arco del carácter CC

Nota: No esta habilitado en el equipo de graficación.

Modo selección de carácter CM Nota: No esta habilitado en el equipo de graficación.

Carácter copiable DL Nota: No esta habilitado en el equipo de graficación.

Espacio extra spc(); Comando de hpgl. ES USO: Espacio que se ajusta entre caracteres y líneas de cadenas sin afectar el tamaño del carácter.

Page 84: TES360

76

Sintáxis: spc(); sp_c(c);

Parámetro Formato Rango funcional Valor común

C -- -- ---

Origen de la cadena orx(); Comando de hpgl. LO USO: Coloca la cadena relativa en el lugar donde se encuentra la pluma

Sintáxis: orx(); or_x(x);

Parámetro Formato Rango funcional Valor común

Posición Entero 1 a 9 o 11 a 19 1

Longitud de salida de función texto lg_x(); Comando de hpgl. OL USO: longitud de la cadena de salida Nota: No se encontró mayor información en los manuales de apoyo.

Sintáxis: lg_x();

Imprime el texto almacenado im_x(); Comando de hpgl. PB USO: imprime cadena almacenada No se encotró mayor información en los manuales de apoyo

Sintáxis: im_x();

Carácter de entrada IC

No esta habilitado en este modelo de graficador

Escribe a la pantalla WD EOT

No esta habilitado en este graficador

Page 85: TES360

77

Dirección vertical drv(); Comando de hpgl. DV USO: Dirección vertical Nota : no se encontró más información en los manuales de apoyo. Sintáxis: drv();

FUNCIONES DE DIGITALIZACIÓN

Digitaliza un punto dgp(); Comando de hpgl. DP USO: después de que recibe el comando de digitalizar un punto, el graficador entra en modo digital, como será indicado por el led de ENTER en el panel de contol. Sintáxis: dgp();

Digitaliza punto de salida dgs(); Comando de hpgl. OD USO: Obtiene la coordenada de X,Y y la posición asociada con el último punto digitalizado. Se usa esta instrucción después de la instrucción dgp() para regresar las coordenadas del punto digitalizado en la computadora. Sintáxis: dgs();

Limpia modo digital dglm(); Comando de hpgl. DC USO: Termina modo digital. Sintáxis: dglm();

FUNCIONES DE ESTADO

Page 86: TES360

78

Identificación de salida ids(); Comando de hpgl. OI USO: Escribe el número de identificación del graficador en el papel. Son 7580B para DMP-61 Y 7585B para DMP-62. Sintáxis: ids();

Estado de salida eds(); Comando de hpgl. OS USO: Escribe el valor decimal de los bytes de estado. Se usa eds() cuando este depurando un programa. Sintáxis: eds();

Parámetro Respuesta Formato Rango

Ninguno Número Entero 0 a 255

Lo siguiente describe los valores de estado del byte.

Valor Decimal

Significado Número de

Bit 1 2 4 8

16 32 64

128

Pluma abajo P1 o P2 son establecidas nuevamente No usado Inicializado Listo para vaciar el buffer de datos Error No usado No usado

0 1 2 3 4 5 6 7

Factor de salida fcs(); Comando de hpgl. OF USO: obtiene el factor de salida en el graficador. Sintáxis: fcs();

Error de salida errs();

Page 87: TES360

79

Comando de hpgl. OE USO: Se escribe en el graficador el número correspondiente al tipo de error recibido por el graficador después de la instrucción in(); más reciente, restaura el panel de control o la instrucción errs(). Usar errs() para depurar el programa. Sintáxis: errs();

Posición actual de salida pos(); Comando de hpgl. OA USO: Si la pluma esta estacionada sin actividad, el graficador reporta la localización como la posición actual de esta función. Sintáxis: pos();

Ordenando Posición de salida opos(); Comando de hpgl. OC USO: Ordena posición de salida al graficador. Nota : no se encontró más información en los manuales de apoyo. Sintáxis: opos();

Opciones de salida ops(); Comando de hpgl. OO USO: Obtiene opciones de salida en el graficador. Nota : no se encontró más información en los manuales de apoyo. Sintáxis: OPS();

Borde del limite de salida lms(); Comando de hpgl. OH USO: Obtiene las coordenadas x, y de los límites al avanzar el papel en el graficador. Sintáxis: lms();

Tipo de salida carousel tsc();

Page 88: TES360

80

Comando de hpgl. OT Nota : no se encontró más información en los manuales de apoyo. Sintáxis: tsc();

Dimensión caja caracteres salida cjs(); Comando de hpgl. OB Nota : no se encontró más información en los manuales de apoyo. Sintáxis: cjs();

Tecla de salida tcls(); Comando de hpgl. OK Nota : no se encontró más información en los manuales de apoyo. Sintáxis: tcls();

FUNCIONES DE MAPEO

Avance página completa PG Nota: No esta habilitado en este graficador (NOP).

Avanza la mitad de página AH Nota: No esta habilitado en este graficador (NOP).

Establece corte de línea EC Nota: No esta habilitado en este graficador (NOP).

Establece corte de línea EC1 Nota: No esta habilitado en este graficador (NOP).

Avance de marco (advance frame) FR

Page 89: TES360

81

Nota: No esta habilitado en este graficador (NOP).

FUNCIONES DE POLÍGONO

Borde relativo del rectángulo bdr(); Comando de hpgl. ER USO: Define y obtiene las líneas de salida de un rectángulo usando coordenadas relativas Sintáxis:bdr(xarribader, yarribader)

Parámetro Formato

Incrementos x, y Flotante / milímetros

Borde del polígono bdp(); Comando de hpgl. EP USO: Obtiene líneas de polígono corriente, almacenadas en el buffer de polígono. Usa bordes de polígono que están definidos en modo polígono y con rectángulo relleno. Sintáxis: bdp();

Borde acuñado bdw(); Comando de hpgl. EW USO: obtienen líneas de cualquier acuñación. Utiliza bdw() para dibujar sectores de tipo pastel. Sintáxis: bdw(radio, ángulo, barrido);

Parámetro Formato Rango

funcional

Radio Ángulo barrido

Milímetros Flotante / grados Flotante / grados

-- +-360 +-360

Llenar polígono llp();

Page 90: TES360

82

Comando de hpgl. FP USO: llena el polígono del buffer de polígono. Usa llp() para llenar polígonos definidos en modo polígono así como las instrucciones de bda(), bdr() y bdw(). Sintáxis: llp();

Modo polígono mop(); mo_p(flota x); Comando de hpgl. PM USO: entra en modo polígono para definir la forma, así como los bloques de letras o cualquier área única, y existe para llenado subsecuente y/o las orillas. Llena polígonos usando la instrucción de llenado de polígono (llp), y/o obteniendo líneas de salida con la instrucción (bdp). Sintáxis:mop(); mo_p(x);

Parámetro Formato Rango funcional Valor común

Operación Entero O(modo polígono) 1(cierra polígono) 2(sale modo polígono)

0

Espesor de la pluma esp(); es_p(); Comando de hpgl. PT Nota: No se encontro más información en los manuales de apoyo

Sintáxis: esp(); es_p(ancho);

Llena rectángulo relativo llrr(); Comando de hpgl. RR USO: Define y llena un rectángulo usando coordenadas relativas. Utilizar llrr() para llenar contornos retangulares.

Sintáxis: llrr(xarrder, yarrder);

Parámetro Formato Rango funcional Valor común

Incrementos x, y Milímetros -- --

Page 91: TES360

83

Llena tipo definido por el Usuario lltu(x); Comando de hpgl. UF USO: Crea tipos de línea especificando el modelo de intervalos. Usar la instrucción d_ln() para seleccionar el modelo. Sintáxis: lltu(x);

Parámetro Formato Rango funcional Valor común

Intervalo Flotante -- --

LISTA DE FUNCIONES DE ESCAPE

ESC.A, Identificación de salida Sintaxis: func(“A”);

Parámetro Respuesta Formato Rango

Ningúno Identificación del graficador

Cadena de caracteres

Hasta 30 caracteres

El siguiente muestra la cadena de idetificación de cada modo de emulación

Modo de emulación Cadena de identificación

DMP-61 DMP-62

HP-GL (758X)

7580B 7585B 7585B

ESC.B Espacio del buffer de salida Sintáxis: func(“B”); o func(“B n”);

Parámetro Respuesta Formato Rango

Ninguna Entrada lógica disponible en el

espacio del buffer

Entero 0 a 1024 bytes

ESC.E Error extendido de salida Sintáxis: func(“E”); o func(“E n”);

Parámetro Respuesta Formato Rango

Ninguno Número de error Entero 0, 10 a 18

Page 92: TES360

84

ESC.H coloca protocolo en modo 1 Sintáxis: func(“H tamaño de bloque; carácter de indagación; reconocimiento de cadena”); o func(“H:”);

Parámetro Formato Rango Default

tamaño de bloque carácter de indagación reconocimiento de cadena

Entero ASCII ASCII

0, 10 a 18 0 a 26, 28 a 31

0 a126

80 bytes 0 0

ESC.I Coloca protocolo en modo 2 Sintáxis xon-xoff: func(“I xoff; omitido; xon:”);

Parámetro Formato Rango default

Xoff Omitido

Xon

Entero Entero ASCII

0 A 1024 0

0 A 126

80 bytes --

0(si no hay carácter) ESC.J dispositivo de control para abortar Sintáxis: func(“J”); ESC.K gráfica para abortar Sintáxis: func(“K”); ESC.L Tamaño de buffer de salida cuando se vacía Sintáxis: func(“L”); ESC.M Coloca modo de salida

Page 93: TES360

85

Sintáxis: func(“M delay; salida trigger; terminal echo; terminal salida; inicia salida”);

Parámetro Formato Default

Delay Salida trigger Terminal echo Terminal salida

Inicia salida

Entero ASCII ASCII ASCII ASCII

0 0 0

13 0

ESC.N Coloca salida extendida Sintáxis: func(“N delay; handshake dependiendo del parámetro”);

Parámetro Formato Default

Delay Handshake Xon-xoff

Handshake Asegura reconocimiento

Entero ASCII ASCII

0 0 0

ESC.O Estado extendido de salida Sintáxis: func(“O”); ESC.P Coloca modo de protocolo Sintáxis: func(“P handshake”);

Parámetro Formato Rango default

Handshake Entero

0(ninguno) 1(Xon-Xoff)

2(ENQ/ACK) 3(hardwire)

0

ESC.R Reset Sintáxis: func(“R”); ESC.S Tamaño de memoria configurable de salida Sintáxis: func(“S n:”);

Page 94: TES360

86

Parámetro Formato Rango default

n Entero 0 A 6 0(configuración total de memoria) ESC.T localiza memoria configurable Sintáxis: func(“T buffer de e/s fisico; buffer de polígono; buffer de carácter downloadable; buffer de vector; buffer de clase de plumas ”);

Parámetro Formato Default

buffer de e/s fisico buffer de polígono

buffer de carácter downloadable buffer de vector

buffer de clase de plumas

Entero Entero Entero Entero Entero Entero

1024 6144 6144

0 3000 25672

ESC.U Modo rápido de termino Sintáxis: func(“U”); ESC.Y o ESC.( Graficador encendido Sintáxis: func(“Y”); ESC.Z o ESC.) Graficador apagado Sintáxis: func(“Z”); o func(“)”);

Parámetro Formato Rango default

Tamaño de buffer lógico de entrada Condiciones de entrada

Entero 0 A 1024 0 a 31

1024 3

Número de bit

Estado lógico

Descripción

3

0 1

Desestablece modo monitor Establece modo monitor (solo en RS-232-C, especifica en

el bit 2 uno de dos modos de monitor ). ESC.@ Coloca configuración del graficador Sintáxis: func(“@”);

Page 95: TES360

87

APÉNDICE D

FUNCIONES Y COMANDOS DEL LENGUAJE HPGL FUNCIONES DE HPGL funciones de selección: ESC.Y o ESC.( Graficador encendido. ESC.Z o ESC.) Graficador apagado. Funciones de configuración: ESC.@ (buffer);(modo): Configuración del graficador. Coloca el tamaño de buffer máximo y establece/desestablece el protocolo hardwire DTR. ESC.H (bloque);(indagación);(r1; …;r10): Modo 1 Set Handshake define el tamaño de bloque de datos para indagar y reconocer el protocolo de comunicación. El tamaño de bloque se mide en bytes, la indagación; son ASCII equivalentes de 0 a 126 o cero por default, va de uno a diez carácteres (ASCII decimal equivalente de cero a 127) separados por una coma; por default todos son ceros. ESC.I (bloque);(indagación);(r1; … r10): Modo 2 Set Handshake. Cuando el host no requiere parámetros de respuesta. ESC.R Reestablecer. Causa que todos los vectores recibidos antes de que la instrucción sea graficada, entonces el buffer del vector es vaciado. ESC.M (reactivación); (triare); (eco)(terminador); (terminador); (iniciador): Modo salida. Coloca los parámetros que mandan la respuesta del graficador al host. La reactivación esta en milisegundos, trigger son decimales ASCII equivalente de 0 a 126 por default es cero, lo mismo en eco, el terminal de salida es uno o dos decimales ASCII equivalentes, el terminal es un retorno de carro.

Page 96: TES360

88

ESC.N (retrazo);(t1;… t10): Coloca Salida Extendida y modo Handshake (protocolo). La instrucción define el retardo y dependiendo del protocolo seleccionado, define la cadena de respuesta inmediata, va de uno a diez carácteres (ASCII decimal equivalente de 0 a 127) separados por una coma; por default todos son ceros. ESC.P modo: o ESC.P: Coloca modo Handshake ESC.Q modo: o ESC.Q: Coloca Modo Monitor ESC.T (E/S); (polígono); (descargable): Funciones de salida: ESC.B Espacio del buffer de salida ESC.E Error extendido de salida. ESC.L Tamaño del buffer de salida (en bytes). ESC.O Posición extendida de salida ESC.A Identificación de salida ESC.S buffer: ESC.S: Tamaño de memoria de salida Funciones para abortar: ESC.J Control para abortar el dispositivo. Desde que este es ejecutado cuando lo toma del buffer de entrada, únicamente puede ser reconocido cuando otro comando no esta comenzando a ser procesado. ESC.K Control para abortar el gráfico

Page 97: TES360

89

LISTA DE COMANDOS DE HPGL

COMANDOS DE INSTRUCCIONES DE CONFIGURACIÓN

Nombre Comandos Inicializa IN;

Mascara de entrada IM;

Coloca valores por default DF;

Entrada de ventana IW x,y,x2,y2;

Salida de ventana OW;

Entra p1 y p2 IPX,Y;

Sale p1 y p2 OP;

Escala SC x,y,x2,y2;

Tolerancia

No esta listo

Sist.. Coordenadas de rotación

Almacén de datos (buffer)

Re-grafica

CT;

NR;

RO;

BF;

RP;

COMANDOS DE LA PLUMA

Nombre Comandos

Pluma abajo PD;

Sube pluma automática PU; ó PU x,y;

Pluma arriba AP;

Selecciona pluma SP; ó SP x; Trazo absoluto PA x,y;

Trazo relativo PR x,y;

Selecciona velocidad VS; VS x;

Velocidad adaptativa VA;

Velocidad normal VN;

Selecciona aceleración AS; ó AS x;

Page 98: TES360

90

COMANDOS DE LÍNEA

Nombre Comandos

Diseño de línea LT;

Longitud de marca TL;

Señal de eje x XT;

Señal de eje y YT;

COMANDOS DE CURVA

Nombre Comando

Circulo CI x,y;

Arco absoluto AA x,y,z;

Arco relativo AR x,y,z;

COMANDOS DE CARÁCTER

Nombre Comando Diseño de carácter estandar CS; ó CS x,y,z;

Diseño alterno de carácter CA; ó CA x; Selecciona carácter estandar SS;

Selecciona carácter alterno SA;

Define terminal de func.label DT; ó DT x;

Modo de símbolos SM; ó SM x;

Label LB cadena

Tamaño de carácter absoluto SI; ó SI x,y;

Tamaño de carácter relativo SR; ó SR x,y;

Carácter inclinado absoluto SL;

Gráfica carácter CP; ó CP x,y; Dirección absoluta DI; ó DI x,y;

Dirección relativa DR; DR x,y;

Cadena almacenada func. Label BL cadena

Page 99: TES360

91

Ángulo de acuerdo al carácter CC; CC x;

Modo selección de carácter CM; CM x; Carácter de sombra DL; ó DL C; ó DL x,y,z;

Diseña carácter en la ranura DS x,y;

Espacio extra ES c;

Invoca carácter IV x;

Origen de la func. Label LO; ó LO x;

Long. de salida de func. Label OL;

Imprime lo almac.en label PB;

Carácter de entrada IC x;

Escribe a la pantalla WD EOT; Dirección vertical DV; ó DV x;

DIGITALIZACIÓN DE COMANDOS

Nombre Comando Digitaliza un punto DP;

Digitaliza pto de salida OD;

Limpia modo digitalizar DC;

ESTADO DE COMANDOS

Nombre Comando Identificación de salida OI;

Estado de salida OS;

Factor de salida OF;

Error de salida OE; Posición actual de salida OA;

Ordenando Posición de salida OC;

Opciones de salida OO;

Borde del limite de salida OH;

Tipo de salida carousel OT;

Dimensión caja carac.salida OB;

Tecla de salida OK;

Page 100: TES360

92

COMANDOS DE MAPEO

Nombre Comando Avance pagina completa AF; ó PG; ó PGL;

Avanza la mitad de página AH;

Establece corte de línea AC; ó ECL; Avance de marco (advance frame FR;

COMANDOS DE POLÍGONO

Nombre Comando Borde absoluto del rectángulo EA x,y;

Borde relativo del rectángulo ER x,y;

Borde del polígono EP;

Borde acuñado EW x,y,z;

Llenar polígono FP;

Llenar tipo FT x,y,z;

Modo polígono PM; ó PM x;

Espesor de la pluma PT; ó PT x; Llenar rectángulo absoluto RA x,y;

Llenar rectángulo relativo RR x, y;

Llenar tipo definido por el Usuario UF gap 1;

Llenar acuñación WG(x,y,z);

Page 101: TES360

93

APÉNDICE E EL CONJUNTO DE CARACTERES ASCII Valor carácter ASCII

Valor carácter ASCII

Valor carácter ASCII

Valor carácter ASCII

000 NUL 001 SOH 002 STX 003 ETX 004 EOT 005 ENQ 006 ACK 007 BEL 008 BS 009 HT 010 LF 011 VT 012 FF 013 CR 014 SO 015 SI 016 DLE 017 DC1 018 DC2 019 DC3 020 DC4 021 NAK 022 SYN 023 ETB 024 CAN 025 EM 026 SUB 027 ESC 028 FS 029 GS 030 RS 031 US

032 blanco 033 ! 034 “ 035 # 036 $ 037 % 038 & 039 ´ 040 ( 041 ) 042 * 043 + 044 , 045 - 046 . 047 / 048 0 049 1 050 2 051 3 052 4 053 5 054 6 055 7 056 8 057 9 058 : 059 ; 060 < 061 = 062 > 063 ?

064 @ 065 A 066 B 067 C 068 D 069 E 070 F 071 G 072 H 073 I 074 J 075 K 076 L 077 M 078 N 079 O 080 P 081 Q 082 R 083 S 084 T 085 U 086 V 087 W 088 X 089 Y 090 Z 091 [ 092 \ 093 ] 094 ^ 095 _

096 ` 097 a 098 b 099 c 100 d 101 e 102 f 103 g 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 DEL

Nota: Los 32 primeros caracteres y el último son caracteres de control; no se pueden imprimir.

Page 102: TES360

94

BIBLIOGRAFÍA 1) C. Schirmer. Programming in C for UNIX, (c) 1987 English Language Edition Ellis Harwood

Limited. 2) DMP-60 series plotters operation manual. Copyright 1987-1990 Houston Instrument Division of

Summagraphics Corp. 3) Evi Nemeth & Gorth Snyder, Scott Seebass. Unix System Administration Handbook.(c) 1989 by

PTR Prentice-Hall, inc. A-Simon & Schuster Company Englewood Cliffs, New jersey 07632. 4) Harvey M. Deitel, Operating Systems. Ed. Addison-Wesley Publishing Company 1990. 5) Marc J. Rochkind ed. Prentice-Hall, inc. Advanced Unix Programming, Englewood Cliffs, New

Jersey 07632. 6) Pajari George . Writing UNIX Device Drivers. Ed. Addison-Wesley Publishing Company, Inc.1992. 7) Pérez Lezama Verónica . Guía de Operación del Graficador DMP-61, INAOE. 8) Richard Gauthier. Using the Unix System. Ed. Reston Publishing company, Company, inc. A

Prentice-Hall Company. Reston, Virginia 1981. 9) Stephen Coffin. UNIX sistema V versión 4. Manual de Referencia. Ed. Osborne/McGraw-Hill