Autor Tema: Driver impresora matricial  (Leído 2411 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Kid_Bengala

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 490
Driver impresora matricial
« en: 09 de Abril de 2008, 19:31:33 »
hola

me veo con ganas de hacer un driver para una impresora matricial. Tengo un motor paso a paso con una correa y un cabezal matricial de 9 agujas, solo quiero imprimir un area de 10cms. Mas o menos se como hacerlo, que agujas debo accionar y mover un paso el cabezal, pero lo que quiero aprender es a como ahorrar codigo, reutilizar y hacerlo mejor. Por ejemplo para la letra B activo primero todas las agujas muevo un paso a la derecha y activo X ... Pero claro, si anido muchos if, etc... se me hace un programa muy largo y bastante malo.

Lo que queria era mas bien una orientacion a como hacer una funcion, matrices o lo que sea para tener todo como mas presentable. Haber si soy capaz, que se me ha metido en la cabeza hacer esto y con un poco de ayuda creo que podre jejeje. Muchas gracias.

saludos de antonio

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Driver impresora matricial
« Respuesta #1 en: 11 de Abril de 2008, 02:16:45 »
¿¡Con if anidados!?

Uff, creo que deberías buscar ejemplos de carteles con leds. En esencia lo que vas a hacer es lo mismo, aunque en vez de encender leds, empujarás agujas en el cabezal.
La base de tu programa será tener en un array la definición de todos los caracteres. Este array estará hecho de tal manera que sepas dónde apuntar en cada momento para imprimir una u otra letra.
A partir de ahí lo vas recorriendo cada vez que quieras imprimir una nueva letra.

Suerte.

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: Driver impresora matricial
« Respuesta #2 en: 11 de Abril de 2008, 11:23:51 »
Interesante, hace tiempo a lo mucho que encontré fue solo un diagrama de tiempo para imprimir caracteres y funcionó, pude enviarle un texto a la impresora y lo imprimió pero lo de graficos no profundizé en el tema, podras darnos alguna pagina web de referencia? te lo agradeceria y al mismo tiempo ayudarte en tu proyecto aunque por mi parte de C no "C" nada, pero si hablamos en asembler quizas algo.

Que te vaya bien en tu proyecto. Saludos.

Javicho

Desconectado Kid_Bengala

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 490
Re: Driver impresora matricial
« Respuesta #3 en: 11 de Abril de 2008, 16:00:57 »
Hola

La verdad es que estuve buscando y no encontre nada, pense algo tipo if anidados y similar, pero seria un codigo enorme. Estaba pensando en algun tipo de funcion matriz, vamos definir las pulsaciones y pasos de cada letra, luego seria implementar donde se quieren imprimir, etc; que vendria despues. ahora lo que veo complicado es como decirle el construir cada letra que de C lo justito que estoy empezando ahora

saludos de antonio

Desconectado Viko

  • PIC12
  • **
  • Mensajes: 69
Re: Driver impresora matricial
« Respuesta #4 en: 23 de Abril de 2008, 20:03:44 »
Una idea, solo que el programa será muy grade y se tendrá que ocupar una memoria extra, para que sea más fácil manejar la tabla tridimensional desde la dirección 0000 hasta la dirección 3FF si se manejan los 127 primeros caracteres ASCII o 0000-7FF todos los carácter ASCII.
Crear una matriz tridimensional.
1.   Basado el código ASCII. Numero de la letra a imprimir, tipo byte
2.   Dato binario de la fila, tipo byte
3.   Dato binario de la columna, tipo byte
 Carácter (código,fila,columna)
Considerando que el texto a imprimir es de 5*8, se podría generar 8*8

Datos de la tabla:
Dir_memo   Código   Fila   Columnas
520   65   1   0   1   1   1   0
521   65   2   1   0   0   0   1
522   65   3   1   0   0   0   1
523   65   4   1   1   1   1   1
524   65   5   1   0   0   0   1
525   65   6   1   0   0   0   1
526   65   7   1   0   0   0   1
527   65   8   1   0   0   0   1

Calculo:
Por cada letra a imprimir se 8 byte y son 127 caracteres ASCII , se necesita una memoria de 1KB
Lectura de la memoria:
Carácter ASCII “65”,
Dirección inicial: 65*8 = 520 hasta la 527, se contendrá el carácter “A”,
Lo demorado de esta solución es  generar la tabla pero con otro programa en “C” y ya esta :mrgreen:



Desconectado Kid_Bengala

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 490
Re: Driver impresora matricial
« Respuesta #5 en: 24 de Abril de 2008, 14:42:22 »
hola

yo habia pensando algo de tipo tal que asi, a ver, que c de pic no se y lo que sabia de PC lo tengo bastante olvidado:

letra_b={9,0,......}

por ejemplo, que el numero 9 active las 9 agujas (o las que sea), vamos, que sea el numero un valor de un rango de puerto (PORTA0,PORTA1,....), en binario active los distintos puertos poniendolos a 1)y el cero que mueva el carro un paso, otras agujas, cero para mover el carro. ¿seria viable?. Espero haberme explicado correctamente.

saludos de antonio

Desconectado Viko

  • PIC12
  • **
  • Mensajes: 69
Re: Driver impresora matricial
« Respuesta #6 en: 25 de Abril de 2008, 01:52:06 »
olaz  :-)

La secuencia seria algo asi:

Funcion:

Imprimirmatrix(byte text(20))// donde text es el texto a ser impreso debe ser maximo de 19 caracters.
   {
   Byte character;
   for (int i=0; i<20;i++)
      {
      character = texto(i);
      for (int cont=0,cont<8;cont++)
         {
         dir_matrix = (character * 8 ) + cont;// funcion de lectura de la columna de la letra a imprimir
         pcar = matrixcaracter(char dir_matrix);// llama a la funcion matriz caracter donde nos da la parte a enviar, donde car_ascii es la direccion de la memoria externa,
         port_matri(char pcar); // envia al puerto del cabezal de impresion matricial
         port_mov_car(1);//envia el numero de paso despues de la impresion por lo general un paso
         }
      port_mov_car(2); // dos o mas pasos para el siguinete caracter
      }
   port_mov_lin(1); // movimieno a la siguiente linea
   }

Desconectado Kid_Bengala

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 490
Re: Driver impresora matricial
« Respuesta #7 en: 05 de Mayo de 2008, 15:02:38 »
hola

a ver si para el mes que viene por fin tengo tiempo libre y me pongo a hacer las pruebas, las ire publicando segun las vaya haciendo. muchas gracias.

saludos de antonio