Página de inicio Mi Correo






   » Foro
   » Nuevo Foro
   » Mi Correo
   » Mis Actividades...


--- Novedades ---



    
  » Proyectos » Bitácoras de un proyecto (3 de 5)   

.: Día 2.

Me hice un lío...!!!

Fui en busca de un tutorial de impresoras, y conseguí mas o menos lo que estaba buscando, no recuerdo de donde salió el tutorial, creo que www.mundopc.net y me di con lo que se conoce como dato rasterizado, así que se me ocurrió hacer eso justamente, rasterizar los datos creados por el archivo exportado.

Estuve haciendo las primeras pruebas con Visual Basic, pero me resultó más cómodo pensar en una matriz de 84 puntos por 118, blanquearla (ponerla a cero), luego leer los datos del archivo (ya decodificado) y poner a uno el elemento indicado por las coordenadas leídas.

.: Esta es una parte del código
Dim Mat_Drill(118, 84) As Integer
---------------------------------
Public Sub limpiarmatriz()	  ' Esta función limpia la matriz
For i = 0 To 117		  ' todas las filas
    For j = 0 To 83	  ' y cada elemento de las mismas
        Mat_Drill(i, j) = 0	  ' se pone a cero
    Next	
Next	
End Sub	
---------------------------------

Este trozo de código podría ser utilizado para limpiar la matriz, cada vez que se desee decodificar un nuevo archivo *.drl y cargar las nuevas coordenadas.

Bien, ya tengo la matriz donde cargaré las coordenadas para hacer las perforaciones, pero como hago para decodificar una línea de ese archivo...???.

Con que decodifique una línea ya me sentiré feliz...!!!, después me arreglo con lo demás...

Lo que se me ocurrió es lo siguiente...

.: Decodificación de una línea del archivo *.drill
----------------------------------
Private Sub cmdDeco_Click()		' Aquí se decodifica una línea
Dim codigo As String		' de código
Dim longitud As String
Dim numFila As Integer
Dim numColumna As Integer

codigo = Trim(txtEntrada.Text)	' elimino espacios
codigo = Replace(codigo, "+", "")	' borro +
codigo = Replace(codigo, "X", "")	' borro X
codigo = Replace(codigo, "Y", "")	' borro Y
numColumna = Left(codigo, 5) / 100	' lee columna (1er. quinteto)
numFila = Right(codigo, 5) / 100	' lee fila (2do. quinteto)
				' con /100 se quitan los 2 ceros que 
				' no se usan
txtVertical.Text = numFila		' muestra nº fila
txtHorizontal.Text = numColumna	' muestra nº columna
Call matriz(numFila, numColumna)	' pasa fila y columna a la matriz
End Sub
----------------------------------

Ya tengo una línea decodificada, lo que me falta ahora es cargar ese código en la matriz que cree anteriormente, y la llamada a la función matriz haría lo que se ve en este trozo de código.

Public Sub matriz(fil As Integer, col As Integer)
     Mat_Drill(fil, col) = 1	' le asigna uno al elemento de la matriz
End Sub				' recibido como parámetro

Me pregunto si será cierto lo que hice hasta ahora, para saberlo decidí utilizar un cuadro de texto que muestre el contenido de la primer fila de la matriz, al cual lo llamé txtVector, lo que viene, es el código para ver el contenido de esa primera línea de la matriz.

Private Sub cmdVervector_Click()
' desde aquí se ve el contenido del vector 0
' asignándole "1" si el elemento de la matriz contiene uno
' o cero "0" si contiene cero
Dim fila As String
fila = ""
    For i = 0 To 83
        If Mat_Drill(0, i) = 1 Then
            fila = fila + "1"
        Else
            fila = fila + "0"
        End If
    Next
    txtVector.Text = fila
End Sub

Bien, lo que estoy haciendo aquí, es concatenar los unos y ceros, por eso están como caracteres, y finalmente mostrarlos en el cuadro de texto llamado txtVector

Bueno, esta es una imagen del primer programita.

OK, el código que se ingresa en el primer cuadro de texto se decodifica al presionar el botón Decodificar, el resultado de la decodificación se muestra en las coordenadas (y) para saber de que fila se trata, y en la coordenada (x) para saber que elemento de esa fila está en uno (punto a perforar).

Al presionar el botón Ver vector, se muestra en el cuadro de texto todos los puntos de la primer fila de la hoja en ceros, salvo aquellos que corresponden a los puntos a perforar, los cuales deben mostrar un uno.

Finalmente al presionar el botón Limpiar Matriz, blanquea toda la matriz, es decir, la pone a cero, tal que si se presiona nuevamente el botón Ver Vector, sólo se verán ceros.

Bien, ahora sí..., ya se como decodificar una línea de código, se como pasarla a la matriz, también como limpiar la matriz o como vaciarla, pero ahora tengo OTRO PROBLEMA...

Me pregunto, cómo se hace para abrir un archivo...???, y para leer una línea de código de ese archivo...???, lo peor es que luego de leerlo deberé pasarlo a la matriz y crear un archivo con ella, también debería tener la posibilidad de guardarlo por si llego a necesitarlo en otro momento.

Bueno, supongamos que ya está, que ya tengo el archivo rasterizado en una matriz, ahora me toca ver que es lo que debo hacer después.

.: Lógica de funcionamiento de mi cacharro...

Suponiendo que parto de que la matriz está cargada con los valores correspondientes a cada perforación...

.: 1) PRIMER CHEQUEO:

El programa deberá tomar la primer fila de las 118, revisar cada elemento de esa fila en busca de un UNO, si lo hay, tomar el número de la fila (eje_y) y cargarlo en una variable, luego, llamar a una función "CARRO", en donde se realiza el desplazamiento del carro principal hasta la fila indicada a través del eje y. Si no hay un UNO en esta fila, deberá pasar a la siguiente, hasta que encuentre una...

NOTA: Primera llamada a la cual se debe retornar

Una vez se retorna de las perforaciones hechas a la fila indicada, se continúa chequeando hasta encontrar otra, y si no hubiera más, se envía un mensaje a la PC, de fin de perforación.

.: 2) FUNCIÓN "CARRO":

Recibe la posición de la fila donde debe desplazarse el carro principal, eso significa, que con ese parámetro deberá mover los motores que desplazan al carro, una vez lo haya hecho, llamará a una segunda función para saber cual será el desplazamiento del cabezal, así que crearemos una función llamada "CABEZAL". El programa también deberá pasarle el valor de la fila en que se encuentra.

.: 3) FUNCIÓN "CABEZAL":

Lo que me toca hacer aquí, es chequear cada uno de los elementos de la fila que recibe como parámetro, partiendo de "0" hasta "83". Si alguno de los elementos está en UNO llamar a una función que desplace el cabezal (a esta función la llamaré "TALADRO"), el parámetro que necesita esta función, es una de las 84 columnas a donde debe dirigirse.

NOTA: segunda llamada a la cual retornar.

Si se terminaron de hacer todas las perforaciones, REGRESO DE LA PRIMER LLAMADA.

.: 4) FUNCIÓN "TALADRO":

Teniendo la posición de la columna, el programa deberá desplazar el cabezal hasta esa posición, encender el taladro, activar el motor de descenso de la broca y perforar, la perforación termina cuando se activa un sensor (sensor_1), el cual indica que la placa ya fue atravesada, en ese caso el motor de descenso del taladro lo eleva, hasta activar otro sensor (sensor_2), que detiene el taladro y envía una señal de perforación terminada. REGRESO DE LA SEGUNDA LLAMADA.

Espero que para la próxima actualización ya esté todo hecho...

En fín, te gustaría probar el programa anterior...???. Ok, bájalo si lo deseas...

Evidentemente me falta bastante, necesito abrir un archivoooooo...!!!

Bueno, tendré que consultar con el Master en programación...

Ayudame Marquitoooooooooo...!!!



<-- Anterior    Siguiente -->
1 | 2 | 3 | 4 | 5



.: Listado de Proyectos.
   » Fuente de Tensión regulada a 5V.
   » Secuenciador de 5 Canales y 2 efectos.
   » Grabador de microcontroladores PICs's.
   » Secuenciador de 8 canales y 16 efectos (controlado por el pic 16f84).
   » Secuenciador de 32 canales controlado por PC.
   » Secuenciador de 8 canales y 4 efectos.
   » Bitácoras de un proyecto.
   » Entrenador para el PIC16F84.
   » Emisor y Receptor Infrarrojo.


R-Luis...



    
--| |--