Decodificador fichero
Una vez hemos sido capaces de leer el fichero, es hora de decodificar la información y transformarla en operaciones concretas, como encender la maquina o movernos a una posición concreta. Para ello utilizaremos la siguiente tabla para saber el significado de cada comando.
Evidentemente hay muchos mas códigos pero de momento usaremos estos. Después, añadir códigos nuevos es realmente sencillo.Nuestro código de prueba:
%
M48
M72
T01C0.0320
%
T01
X5600Y11600
X11600Y11600
X13100Y10100
X13100Y4100
M30
%
M48
M72
T01C0.0320
%
T01
X5600Y11600
X11600Y11600
X13100Y10100
X13100Y4100
M30
He creado una estructura global para almacenar las variables del sistema, como la posicion X,Y,Z la posicion Objetivo , el sistema de coordenadas etc.
struct System_CNC{
int X,Y,Z; //Cordenadas actuales
int Xo,Yo,Zo; //Cordenadas objetivo
int Unidades;//Metrico o Imperial
int Herramienta;//Herramienta
int estado;//Estado de la maquina ON,OFF,ESPERA.
};
struct System_CNC Sistema;
struct System_CNC{
int X,Y,Z; //Cordenadas actuales
int Xo,Yo,Zo; //Cordenadas objetivo
int Unidades;//Metrico o Imperial
int Herramienta;//Herramienta
int estado;//Estado de la maquina ON,OFF,ESPERA.
};
struct System_CNC Sistema;
He realizado una función para decodificar cada código, en ella se busca el cabezal del código que es la letra M o T o X, etc. Una vez echo esto miramos el parámetro numérico que se encuentra delante suyo.
Con un switch decodificamos cada Comando, en el caso de los comandos M y G como cada uno tiene un significado he creado otra función para decodificarlos, simplemente es otro switch.
Aquí adjunto el código del programa con los archivos y el proyecto de codeblocks. También esta el .exe en bin por si queréis ejecutarlo en Windows, el fichero que uséis debe estar en la misma carpeta que el proyecto.
Aquí adjunto el código del programa con los archivos y el proyecto de codeblocks. También esta el .exe en bin por si queréis ejecutarlo en Windows, el fichero que uséis debe estar en la misma carpeta que el proyecto.

cnc_121214.zip | |
File Size: | 23 kb |
File Type: | zip |
También podéis pasar el proyecto entero a la raspberry y ejecutar el archivo .cbp que es el que contiene la información del proyecto. Pero para poder usarlo en la raspberry tenéis que darle a rebuild (flechas azules) en vez de a compilar, para que os elimine todo lo que tenga que ver con Windows. Obviamente la raspberry tarda bastante mas en compilar y también en ejecutar el programa.
Ahora vamos a probar otro archivo diferente a resistencias.drd, en este caso un cuadrado con los bordes de una placa.

borde.dim | |
File Size: | 0 kb |
File Type: | dim |
Su código es el siguiente:
G75*
G70*
%OFA0B0*%
%FSLAX24Y24*%
%IPPOS*%
%LPD*%
%AMOC8*
5,1,8,0,0,1.08239X$1,22.5*
%
%ADD10C,0.0160*%
D10*
X000180Y000180D02*
X000180Y019680D01*
X025180Y019680D01*
X025180Y000180D01*
X000180Y000180D01*
M02*
G75*
G70*
%OFA0B0*%
%FSLAX24Y24*%
%IPPOS*%
%LPD*%
%AMOC8*
5,1,8,0,0,1.08239X$1,22.5*
%
%ADD10C,0.0160*%
D10*
X000180Y000180D02*
X000180Y019680D01*
X025180Y019680D01*
X025180Y000180D01*
X000180Y000180D01*
M02*