You are on page 1of 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 (FCCPUEBLA, PUE. ABRIL DEL 2001 BUAP)

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.

A MIS PADRES, HERMANAS Y HERMANOS: SEÑOR: JUAN MUÑOZ RUBIN SEÑORA: MARGARITA HERNÁNDEZ HUERTA MARGARITA, SILVIA, OCTAVIANO Y RUFINO.

ii

ÍNDICE
PRÓLOGO ………………………………………………………………………………………………………... v CAPÍTULO 1. OBJETIVOS
1.1 1.2 1.3 1.4
..................................………………………………………………….….1

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

CAPÍTULO 2.
2.1 2.2 2.2.1

MARCO TEÓRICO

…… …………………………….....…………...………4

INTRODUCCIÓN ……………………………………………………………..…….4 GRAFICADORES ……………………………………………………………..……4 CARACTERÍSTICAS PARTICULARES DE GRAFICADORES .…. 5
…………………. ……………...9

CAPÍTULO3.
3.1 3.2

DISPOSITIVOS Y PUERTO SERIAL

INTRODUCCIÓN . ………………………………………………………………..10 GRAFICADOR DMP-61 Y LA ESTACIÓN DE TRABAJO…………..10 COMPONENTES Y CARACTERÍSTICAS DEL GRAFICADOR DMP-61 …………………………………………….…....10 FUNCIONAMIENTO DE LA PLUMA . ……………………………………...10 MEDIO AMBIENTE DE OPERACIÓN . …………………………...………..11 LENGUAJES DEL GRAFICADOR . …………………………………..….….11 ESTACIÓN DE TRABAJO(WORK STATION ó WS) . …………….…..12 PUERTO SERIAL ............................................................................................14 BASE DE LA COMUNICACIÓN SERIAL ……………………………....….15 COMUNICACIÓN ASÍNCRONA ………………………………………….…...15 ACCESANDO EL PUERTO SERIAL …………………………………….….17
iii

3.2.1 3.2.2 3.2.3 3.2.4 3.2.5 3.3 3.3.1 3.3.2 3.3.3

3.3.4 3.3.5

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

CAPÍTULO 4. PROGRAMACIÓN DE LA BIBLIOTECA LGHP………………………..24
4.1 4.2 4.3 4.4 4.5 4.6 4.7 INTRODUCCIÓN ………………………………………………………….……….24 CARACTERÍSTICAS DE LA PROGRAMACIÓN DE LA BIBLIOTECA ……………………………………………………………...24 PASOS PARA CREAR COMANDOS DE LA BIBLIOTECA ……..…24 CREACIÓN DE LA BIBLIOTECA LGHP …………………………….....…26 FUNCIONES DE LA BIBLIOTECA MAS ELABORADAS ..............27 LISTA DE FUNCIONES DE ACUERDO A SUS CARACTERISTICAS……………………………………………………………….29 PROGRAMA DE USUARIO ........................................................................37

CAPÍTULO 5.EJEMPLOS DE PROGRAMACIÓN ……………………………………………41
5.1 5.2 INTRODUCCIÓN …………………………………………………………………41 CÓDIGOS FUENTE Y FIGURAS OBTENIDAS ………………..………41

CONCLUSIONES …………………………………………………………………………………..……………56 VENTAJAS, LIMITACIONES Y PERSPECTIVAS ……………………………………………56 GLOSARIO ………………………………………………………………………………………….………………58 APÉNDICES
…………………………………………………………………………………………..…..………62

A. B. C.

GUÍA PARA EL USO DE COMANDOS HPGL ………………….....…....62 CABLE RS-232 ……………………………………………………………..………64 FUNCIONES DE LA BIBLIOTECA LHGP.H (COMPLEMENTO).....67
iv

D. E.

FUNCIONES Y COMANDOS DEL LENGUAJE HPGL …………..…..87 CONJUNTO DE CARACTERES ASCII ………………………………..…..93

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

v

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.

vi

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).

vii

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 DMP61, 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.

1

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

2

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.

3

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: telas, papel.

existen graficadores que trazan sobre diferentes tipos de material: plásticos,

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.
4

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: Ancho efectivo: Resolución: Bytes por analizar: Modo Comando: Formatos: Paso del motor: Panel de control: Carro 36 “ Aproximado 35.52” 200/400 dpi Arriba de 1776 bytes Modo trazo Modo impresión rollo, plegado (fanfold) Tecnología Micrométrica Función completa alfanumérica LCD (despliega en cristal liquido) Funciones de usuario desde el panel de control: Control histerectomía Rapidez de trazo Ancho de trazo (cuenta byte ) - (predetermina 24"/36") Prueba trazo, prueba impresión Forma libre de longitud ajustada
5

Medio del graficador /Consumibles: Térmico, sensible al papel y película

Escala vertical, control de contraste

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: Interfase: Opciones: Selección Manual 0.125" por segundo a 2" por segundo Versatec™ Greensheet Longline / Shortline 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: vigente: 110V AC / 60Hz-220V AC / 50Hz 13 Amperios Máximo y 110V AC 6 Amperios Máximo y 220V AC CARACTERISTICAS FISICAS Dimensiones: Alto: Fondo: Ancho: Peso: CARACTERISTICAS DE AMBIENTE Temperatura de Operación: 32° - 95° F
6

39.5 “ 20 “ 46 “ 68 kg (150 lbs x 453.6 grs)

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

• Graficador de tipo hidráulico. Modelo: CL-0-1800B/2000B/2300B Rodillo: 24

Características Dispositivo de frenado electromagnético Eliminador electrostático Dispositivo de presión hidráulica diferencial Dispositivo de seguridad Contador electrónico de yarda Dispositivo de calibración Rodillo para pintar Anti-acumulador de pintura Dispositivo de pintado Cinta especial de pintado

Aplicaciones Tela de paño Manta, sarape Abrigos Piel sintética Forro interior Felpa para sofá

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

Características Equipo que cambia de un solo lado Equipado con tornillos que producen

Aplicaciones Tela de paño Sarapes, cobijas
7

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

8

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

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 DMP-61 velocidad de pluma DMP-61 aceleración de la pluma Resolución direccionable

18° a 30° C, 0.2% de movimiento ó 0.010 pulgadas(0.254 mm), cualquiera es mayor. 1 a 32 pulgadas por segundo máximo 0.5 g , 1g, 2g. 0.001”, ó 0.005”, ó 0.1 mm, 0.025 mm

10

3.2.3 MEDIO AMBIENTE DE OPERACIÓN.
Temperatura de operación. Humedad relativa de operación. Línea nominal 100 Vac 120 Vac Tamaño de papel línea min/max 89-108 Vac 108-130 Vac 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 5° a 35° C 20% a 95% fusible 1 Amp. 1 Amp.

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.

11

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. Velocidad de reloj. Procesador. SPARCstation 20 32 Mb RAM, monitor Sun de 17”. 50 Mega Hertz. RISC.
12

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.

13

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.

14

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.
15

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. space High ‘0’ +12V

mark (1) (2)

Low ‘1’ -12V (3)

(1)star bit (2)data bits (3)stop bit(s) Fig. 3.3 El dato no es transmitido.

mark

High ‘1’ -12V

1 lógico
space (1)

s 1 1

0 1 0
(2)

stop
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.
16

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
Solaris/SunOS Linux Digital UNIX

Puerto 1
/dev/ttya /dev/ttys0 /dev/tty01

Puerto2
/dev/ttyb /dev/ttyS1 /dev/tty02

17

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);

18

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 c_cflag c_lflag c_iflag c_cc c_ispeed c_ospeed Opciones de la estructura termios Descripción Opciones de control Opciones de línea Opciones de entrada Caracteres de control Baudios de entrada Baudios de salida

Miembro

19

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 Bits de datos Bits de paridad Bits de parada Receptor Línea local 9600 7 1 2 b9600 cs7 parenb cstopb cread 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

20

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.
21

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.

22

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.

23

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.
24

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.

inicio

Lee datos de una función en memoria

Esta Configurado el puerto serial

si

no
Configura él Puerto serial

Envía el comando Al graficador

Coloca los datos en un arreglo en memoria para formar el comando de hpgl

si

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

Elimina datos del arreglo Y posiciona el apuntador al principio del mismo arreglo

no fin
25

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.

26

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

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 157mm

p1 (0,0) 235mm

x

28

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
Comando de hpgl. DF;

def();

USO: Coloca ciertos vectores en estados predefinidos que no son pasados a otro programa.

Sintáxis:

def(); Instrucción equivalente mva(); dr_r(0,1); d_ln();m evt(); tcr(); smb(); scs(); sca(); cin(0); scl(); --Condiciones 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

Función 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

29

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);
Parámetro X1, y1, x2, y2

sclx(x1abajo, x2); scl(); Formato

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);
Formato Flotante / mm Valor común --

Parámetro Posición

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); Formato Flotante / mm Valor común --

Parámetro Posición

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

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

Sintáxis: pl();
Parámetro

pl_n(x); Formato Entero Valor común 1

Número de pluma

Trazo absoluto mva();
Comando de hpgl. PA USO: Realiza un movimiento con pluma abajo en coordenadas absolutas Sintáxis: mva(x1, y1); Formato Flotante / mm Valor común -Parámetro x1, y1

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); Formato Flotante / mm Valor común -Parámetro x1, y1

FUNCIONES DE LÍNEA Diseño de línea
Comando de hpgl. LT

dln();

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 Tipo Formato Entero Rango funcional 0-6 Valor común Sin tipo, es línea continua
31

Longitud de grosor
Comando de hpgl. TL

ma();

USO: Esto es, el ancho de una línea por ejemplo Sintáxis: ma(positivo); Formato Entero Rango funcional 0-8 Valor común Línea sólida Parámetro Ancho

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); Formato Flotante Valor común --

Parámetro x, y, r, tol

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”); Formato carácter Rango funcional Cualquier carácter Valor común --

Parámetro “c…c”

32

Tamaño de carácter absoluto
Comando de hpgl. SI

tca();

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); Formato Flotante Rango funcional -Valor común --

Parámetro Ancho, alto

Carácter inclinado absoluto
Comando de hpgl. SL

cin();

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); Formato Entero Rango funcional -Valor común 0

Parámetro Tangente del ángulo

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();
Parámetro x (o cos θ) y (o sin θ)

dir_a(x, y); Formato Flotante Flotante Rango funcional --Valor común 1 0

33

FUNCIONES DE POLÍGONO Borde absoluto del rectángulo
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 Coordenadas x,y Formato Flotante / milímetros

bda();

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 Tipo Espacio Ángulo Formato Entero -flotante / grados Rango funcional 1 al 4 , 10, 11 -+-360 Valor común 1 ---

Llena rectángulo absoluto
Comando de hpgl. RA

llra();

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);
Formato Milímetros Rango funcional -Valor común --

Parámetro Coordenadas x, y

Llena acuñación
Comando de hpgl. WG

llw(r, ángulo, barrido);

34

USO: Define y llena cualquier cuña. Dibuja sectores de tipo pastel Sintáxis: Radio Ángulo Barrido

llw(r, ángulo, barrido);
Formato Milímetros Flotante / grados Flotante / grados Rango funcional -+-360 +-360 Valor común ----

Parámetro

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 Letra mayúscula y sus argumentos Rango funcional ( ,) , Y, Z, @, H, I, R, M, N, P, Q, T, B, E, I, O, A, S, J, K Valor común Una letra mayúscula del rango funcional (se adicionan arfumentos sí existen)

“C…”

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

35

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

36

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
Número de bit Estado lógico

Entero

0 A 1024 0 a 31

1024 3

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();
37

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

Programa principal de usuario

Compilación del programa con la biblioteca Lghp

Corregir programa

no
Es correcta la compilación

si
Encender el graficador Con papel y pluma

fin

Ejecutar el programa

Crear el programa ejecutable

38

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(); }

39

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

% archivo_salida

40

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 1 __Código fuente __ Descripción de comandos utilizados __ Código ASCII __Gráfica correspondiente 2 3 4 5 6 7 8 Círculos concéntricos, con d_ln() inversa Círculos con posición relativa y absoluta Letreros en posiciones inclinadas Relleno de rectángulos c/barrido diferente Cuatro rehiletes y tres líneas de texto Letreros con diferentes posiciones y tamaños Función seno 45 46 47 49 50 52 53 Descripción Página del Código Fuente 42 43 43

41

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(); }

42

DESCRIPCIÓN DE COMANDOS UTILIZADOS Tabla 5.4 Comandos del ejemplo 1. Función sclu sp mva bp bda d_ln cia tx pl_n termina Descripción establece el tamaño de la hoja en unidades de usuario, esto es 600 unidades en X, y 600 unidades en Y. pluma arriba posición absoluta en x,y pluma abajo Hace el marco del tamaño máximo que es de x,y Es tipo de línea Rea liza un circulo de radio i con tolerancia de 5% Gráfica los letreros entrecomillados Coloca el soporte en la posición original 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;
43

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;

44

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();

}

45

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(); }

46

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); tx("I.N.A.O.E."); 47

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(); }

48

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();

}

49

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); 50

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

}

51

FIGURA 7
El programa muestra los tipos de inclinación (con sus valores respectivos)y tamaños de los textos.
#include #include #include #include #include <stdio.h> <stdlib.h> <string.h> <errno.h> <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); mva(23,116); mva(22,115); mva(23,115); mva(200,140); mva(150,110); mva(150,120); mva(180,5); mva(115,25); sp(); pl_n(0); termina(); } dir_a(-1,-1); tx("-1,-1"); dir_a(-1,1); tx("-1,1"); dir_a(1,1); tx("1,1"); dir_a(1,-1); tx("1,-1"); dir_a(1,0); dir_a(1,0); dir_a(1,0); dir_a(1,0); dir_a(1,0); tc_a(-1,1); tx("reversa"); tc_a(0.2,0.1); tx("peque~a"); tc_a(0.5,0.5); tx("mediano"); tca(); tx("figura 7"); tc_a(1,3); tx("largo");

52

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 double double double 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; 53 areag[tameval][xy]; evalua[tameval][xy]; postrz[tameval][xy]; ymax, ymin;

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(); /* } maximin(i,j); if((ymin*ymax) < 0) { posx =1 -(ymax/(ymax-ymin))*(-(cof-1)); mva(posx,1); bp(); mva(posx,cof); sp(); }

eje y */

/*

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(); 54

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

55

CONCLUSIONES

1. 2. 3.

El acceso de la estación de trabajo al graficador se cumplió teniendo la configuración del cable y del puerto. El graficador funciona como se había esperado. 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. 5.

La efectividad del lenguaje en la nueva biblioteca se comprobó al realizar un conjunto de ejemplos. Se probó la biblioteca en ejemplos particulares, con resultados satisfactorios.

VENTAJAS, LIMITACIONES Y PERSPECTIVAS

Ventajas
1. 2. 3. 4. 5. La biblioteca de graficado es accesible dentro del lenguaje “C” del sistema Solaris 2.4 La verificación de la sintáxis de los comandos es correcta, garantizando que el código enviado al graficador es correcto. Es posible graficar Un archivo en lenguaje HPGL redireccionando al graficador con el comando “cat”. Obtención de gráficas en tamaño real bajo el sistema Solaris 2.4 La posibilidad de poder enriquecer esta biblioteca al tener acceso a los fuentes.

56

Limitaciones
1. 2. 3. 4. No se muestra la gráfica previamente en pantalla. Sólo se obtienen gráficas en dos dimensiones Actualmente el graficador, sólo se puede accesar, desde la estación de trabajo donde está conectado físicamente. Solo se implemento en lenguaje HPGL.

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

57

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 HewlettPackard 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).

58

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.

59

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
60

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.

61

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 PR PU PD trazo absoluto trazo relativo pluma arriba 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 PT número de pluma 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 CI EA arco relativo circulo borde del rectángulo absoluto
62

ER EP EW LB

borde del rectángulo relativo borde del polígono borde unido (wedge) 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”.

63

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 RS232C, 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.

64

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 Conector DB-25S 2 3 4 7 Estación de trabajo Conector DB-25P

TD -------------------------------------------3 RD ------------------------------------------ 2 RTS ---------------------------------------- 5 GND ---------------------------------------- 7

CONECTOR DB25

65

TABLA B-4 CIRCUITO SERIAL DE LA ESTACION DE TRABAJO SPARC, RS-423/RS-232 Pata 1 2 3 4 5 6 7 8 9-14 15 16 17 18-19 20 21-23 24 25 Función --TxD RxD RTS CTS DSR Gnd DCD --TRxC --RTxC --DTR --TxC --I --I --I --O --O --I/O --O I O I I Nivel 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

66

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
Comando de hpgl. IM;

no hay

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
Comando de hpgl. DF;

def();

USO: Coloca ciertos vectores en estados predefinidos que no son pasados a otro programa.

Sintáxis:

def(); Instrucción equivalente mva(); dr_r(0,1); d_ln();m evt(); tcr(); smb(); scs(); sca(); cin(0); Condiciones 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
67

Función 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

scl(); ---

escala en off ETX (ASCII 3 decimal) 5 grados

Entrada de ventana
Comando de hpgl. IW

evt( );

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 x1,y1,x2,y2 Formato Valor común Limites del sujetador de papel

Flotante

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

Sintáxis:

svt();

Entra p1 y p2
Comando hpgl.

pto(); pto2();
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 );
Parámetro x1, y1, x2, y2

pto2(x1, y1, x2, y2 ); Formato Flotante / mm Valor común Limites del sujetador de papel

68

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(); Respuesta x1, y1, x2, y2

Parámetro

Ninguna

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); Formato Entero Rango funcional 0(ángulo cuerda) 1(distancia de desviación) Valor común 0

Parámetro Tipo

No esta listo
Comando hpgl.

nol();
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
Comando de hpgl. RO

rota();

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

69

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:
Parámetro Ángulo

rota(ángulo); Formato entero Rango funcional 1-7 Valor común 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. Sintáxis: spa(); AP USO: Eleva la pluma en caso de que no este en movimiento .

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

v(); v_n(rapidez);
Formato Entero Rango funcional 30-800 mm/s Valor común 800

Parámetro rapidez

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

70

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

Selecciona aceleración
Comando de hpgl. AS

ac();

USO: Se aplica al realizar cualquier tipo de curvas. Sintáxis:

ac(); ac_n(acelerac.);
Formato Flotante Rango funcional 0.5, 1, 2, 3, 4 Valor común 4

Parámetro Aceleración

FUNCIONES DE LÍNEA Grosor de eje x
Comando de hpgl. XT USO: Dibuja una marca vertical con cierto grosor en la localización corriente. Sintáxis: ejx(); Parámetro ninguno Formato -Rango funcional -Valor común --

ejx();

Marca de eje y
Comando de hpgl. YT

ejy();

USO: Dibuja una marca horizontal con cierto grosor en la localización corriente Sintáxis: ejy(); Formato -Rango funcional -Valor común -Parámetro ninguno

71

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:
x, y

ara(x, y, ángulo); arat(x, y, ángulo, arco); Formato Flotante / mm Flotante Flotante Rango funcional Flotante +- 360° 0.5° - 180° Valor común --5°

Parámetro Ángulo arco

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:
x, y

arr(x, y, ángulo); arrt(x, y, ángulo, arco); Formato Flotante / mm Flotante Flotante Rango funcional Flotante +- 360° 0.5° - 180° Valor común --5°

Parámetro Ángulo arco

FUNCIONES DE CARÁCTER Diseño carácter estándar
Comando de hpgl. CS

dc();

72

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); Formato Entero Entero Entero Rango funcional 0-9, 30-39 10-19, 40-49 20-29, 50-59 Valor común 0 10 20

Parámetro Vector Arco variable Arco fijo

Diseño de carácter alterno
Comando de hpgl. CA

dca(); dc_a(vector,arco v, arco f);

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 Vector Arco variable Arco fijo Formato Entero Entero entero Rango funcional 0-9, 30-39 10-19, 40-49 20-29, 50-59 Valor común 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
73

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); Formato Texto Rango funcional -Valor común (0-10-20)

Parámetro Carácter

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); Formato Flotante Rango funcional -Valor común --

Parámetro Ancho, alto

Grafica carácter
Comando de hpgl. CP

grc();

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); Formato Flotante Flotante Valor común --74

Parámetro Espacio a lo ancho Espacio a lo alto

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); Formato Flotante Flotante Rango funcional --Valor común 1 0

Parámetro x(o cos θ ) y(o sin θ )

Cadena almacenada de la función texto
Comando de hpgl. BL USO: Cadena almacenada en buffer.

txal();

Nota: No se encontró más información de apoyo en los manuales utilizados. Sintáxis: txal(“c...c”); Formato Carácter Rango funcional -Valor común -Parámetro “c....c”

Ángulo de arco del carácter

CC

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

Modo selección de carácter Carácter copiable
DL

CM

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

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

Espacio extra
Comando de hpgl. ES

spc();

USO: Espacio que se ajusta entre caracteres y líneas de cadenas sin afectar el tamaño del carácter.
75

Sintáxis:
C

spc(); sp_c(c); Formato -Rango funcional -Valor común ---

Parámetro

Origen de la cadena
Comando de hpgl. LO

orx();

USO: Coloca la cadena relativa en el lugar donde se encuentra la pluma

Sintáxis:

orx(); or_x(x); Formato Entero Rango funcional 1 a 9 o 11 a 19 Valor común 1

Parámetro Posición

Longitud de salida de función texto
Comando de hpgl. OL USO: longitud de la cadena de salida

lg_x();

Nota: No se encontró mayor información en los manuales de apoyo.

Sintáxis:

lg_x();

Imprime el texto almacenado
Comando de hpgl. PB USO: imprime cadena almacenada

im_x();

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
76

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
Comando de hpgl. DC USO: Termina modo digital. Sintáxis: dglm();

dglm();

FUNCIONES DE ESTADO
77

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
Comando de hpgl. OS

eds();

USO: Escribe el valor decimal de los bytes de estado. Se usa eds() cuando este depurando un programa. Sintáxis: eds(); Respuesta Número Formato Entero Rango 0 a 255 Parámetro Ninguno

Lo siguiente describe los valores de estado del byte. Valor Decimal 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 Significado Número de Bit 0 1 2 3 4 5 6 7

Factor de salida
Comando de hpgl. OF

fcs();

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

Error de salida

errs();
78

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
Comando de hpgl. OA

pos();

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
Comando de hpgl. OC

opos();

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();
79

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
Comando de hpgl. OB

cjs();

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

Tecla de salida
Comando de hpgl. OK

tcls();

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 Establece corte de línea

EC EC1

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

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

Avance de marco (advance frame)

FR
80

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

FUNCIONES DE POLÍGONO Borde relativo del rectángulo
Comando de hpgl. ER USO: Define y obtiene las líneas de salida de un rectángulo usando coordenadas relativas

bdr();

Sintáxis:bdr(xarribader, yarribader) Parámetro Incrementos x, y Formato 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
Comando de hpgl. EW

bdw();

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 Radio Ángulo barrido Formato Milímetros Flotante / grados Flotante / grados Rango funcional -+-360 +-360

Llenar polígono llp();
81

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
Comando de hpgl. PM

mop(); mo_p(flota x);

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 Operación Formato Entero Rango funcional O(modo polígono) 1(cierra polígono) 2(sale modo polígono) 0 Valor común

Espesor de la pluma
Comando de hpgl. PT

esp(); es_p();

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);
Formato Milímetros Rango funcional -Valor común --

Parámetro Incrementos x, y

82

Llena tipo definido por el Usuario
Comando de hpgl. UF

lltu(x);

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 Intervalo Formato Flotante Rango funcional -Valor común --

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
83

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
84

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:”);
85

Parámetro

Formato

Rango

default

n

Entero

0A6

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(“@”);
86

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.
87

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
88

LISTA DE COMANDOS DE HPGL
COMANDOS DE INSTRUCCIONES DE CONFIGURACIÓN

Nombre
Inicializa Mascara de entrada Coloca valores por default Entrada de ventana Salida de ventana Entra p1 y p2 Sale p1 y p2 Escala Tolerancia No esta listo Sist.. Coordenadas de rotación Almacén de datos (buffer) Re-grafica

Comandos
IN; IM; DF; IW x,y,x2,y2; OW; IPX,Y; OP; SC x,y,x2,y2; CT; NR; RO; BF; RP;

COMANDOS DE LA PLUMA

Nombre
Pluma abajo Sube pluma automática Pluma arriba Selecciona pluma Trazo absoluto Trazo relativo Selecciona velocidad Velocidad adaptativa Velocidad normal Selecciona aceleración

Comandos
PD; PU; ó PU x,y; AP; SP; ó SP x; PA x,y; PR x,y; VS; VS x; VA; VN; AS; ó AS x;

89

COMANDOS DE LÍNEA

Nombre
Diseño de línea Longitud de marca Señal de eje x Señal de eje y

Comandos
LT; TL; XT; YT;

COMANDOS DE CURVA Nombre Circulo Arco absoluto Arco relativo

Comando
CI x,y; AA x,y,z; AR x,y,z;

COMANDOS DE CARÁCTER

Nombre
Diseño de carácter estandar Diseño alterno de carácter Selecciona carácter estandar Selecciona carácter alterno Define terminal de func.label Modo de símbolos Label Tamaño de carácter absoluto Tamaño de carácter relativo Carácter inclinado absoluto Gráfica carácter Dirección absoluta Dirección relativa Cadena almacenada func. Label

Comando
CS; ó CA; ó SS; SA; DT; ó DT x; SM; ó SM x; LB cadena SI; ó SR; ó SL; CP; ó DI; ó DR; CP x,y; DI x,y; DR x,y; SI x,y; SR x,y; CS x,y,z; CA x;

BL cadena
90

Ángulo de acuerdo al carácter Modo selección de carácter Carácter de sombra Diseña carácter en la ranura Espacio extra Invoca carácter Origen de la func. Label Long. de salida de func. Label Imprime lo almac.en label Carácter de entrada Escribe a la pantalla Dirección vertical DIGITALIZACIÓN DE COMANDOS

CC; CM; DS x,y; ES c; IV x; LO; ó OL; PB; IC x;

CC x; CM x;

DL; ó DL C; ó DL x,y,z;

LO x;

WD EOT; DV; ó DV x;

Nombre
Digitaliza un punto Digitaliza pto de salida Limpia modo digitalizar ESTADO DE COMANDOS

Comando
DP; OD; DC;

Nombre
Identificación de salida Estado de salida Factor de salida Error de salida Posición actual de salida Ordenando Posición de salida Opciones de salida Borde del limite de salida Tipo de salida carousel Dimensión caja carac.salida Tecla de salida

Comando
OI; OS; OF; OE; OA; OC; OO; OH; OT; OB; OK;
91

COMANDOS DE MAPEO

Nombre
Avance pagina completa Avanza la mitad de página Establece corte de línea Avance de marco (advance frame COMANDOS DE POLÍGONO

Comando
AF; ó PG; ó PGL; AH; AC; ó ECL; FR;

Nombre
Borde absoluto del rectángulo Borde relativo del rectángulo Borde del polígono Borde acuñado Llenar polígono Llenar tipo Modo polígono Espesor de la pluma Llenar rectángulo absoluto Llenar rectángulo relativo Llenar tipo definido por el Usuario Llenar acuñación

Comando
EA x,y; ER x,y; EP; EW x,y,z; FP; FT x,y,z; PM; ó PM x; PT; ó PT x; RA x,y; RR x, y; UF gap 1; WG(x,y,z);

92

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

carácter

Valor ASCII
032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063

carácter
blanco ! “ # $ % & ´ ( ) * + , . / 0 1 2 3 4 5 6 7 8 9 : ; < = > ?

Valor ASCII
064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095

carácter
@ A B C D E F G H I J K L M N O P Q R S T U V W X Y Z [ \ ] ^ _

Valor ASCII
096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 `

carácter

a b c d e f g h i j k l m n o p q r s t u v w x y z { | } ~ DEL

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

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) 5) Harvey M. Deitel, Operating Systems. Ed. Addison-Wesley Publishing Company 1990. Marc J. Rochkind ed. Prentice-Hall, inc. Advanced Unix Programming, Englewood Cliffs, New Jersey 07632. 6) 7) 8) Pajari George . Writing UNIX Device Drivers. Ed. Addison-Wesley Publishing Company, Inc.1992. Pérez Lezama Verónica . Guía de Operación del Graficador DMP-61, INAOE. 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

94