|
@@ -106,17 +106,17 @@ int BMP2Gcode::entete()
|
|
|
std::cout << "Bitmap windows" << std::endl;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
/*Pour récupérer les informations on va utiliser l'astuce suivante :
|
|
|
pour la valeur commençant à entete[indice] on va commencer par prendre l'adresse :
|
|
|
&entete[indice]
|
|
|
puis on va caster ça dans le type qui correspond bien, int * si c'est sur 4 octets,
|
|
|
short * si c'est sur 2 octets.
|
|
|
-
|
|
|
+
|
|
|
(int *)&entete[indice] correspond donc à un pointeur de type int *, il suffit alors
|
|
|
de prendre sa valeur en faisant : *(int *)entete[indice]
|
|
|
*/
|
|
|
-
|
|
|
+
|
|
|
BMP_larg(*(int*)&entete[18]);
|
|
|
BMP_haut(*(int*)&entete[22]);
|
|
|
BMP_offset(*(int*)&entete[10]);
|
|
@@ -124,7 +124,7 @@ int BMP2Gcode::entete()
|
|
|
|
|
|
delete[] entete;
|
|
|
fichier.close();
|
|
|
-
|
|
|
+
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
@@ -139,12 +139,12 @@ int BMP2Gcode::donnees()
|
|
|
std::cerr << "impossible d'ouvrir le fichier" << std::endl;
|
|
|
return 1;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
if(BMP_off == 0)
|
|
|
{entete();}
|
|
|
-
|
|
|
+
|
|
|
int limite = BMP_larg()*BMP_haut() * BMP_profondeur()/8 + BMP_offset();
|
|
|
-
|
|
|
+
|
|
|
char *donnees = new char [ limite ];
|
|
|
fichier.read(donnees, limite);
|
|
|
|
|
@@ -155,7 +155,7 @@ int BMP2Gcode::donnees()
|
|
|
else
|
|
|
{tab_donnees.push_back((int)donnees[i]);}
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
delete[] donnees;
|
|
|
fichier.close();
|
|
|
|
|
@@ -182,16 +182,15 @@ int BMP2Gcode::sortie()
|
|
|
std::cout << "largeur = " << conf_taille_image << " mm" << std::endl;
|
|
|
std::cout << "hauteur = " << BMP_hauteur * conf_taille_image/BMP_largeur << " mm" << std::endl;
|
|
|
std::cout << "taille pixel = " << taille_pixel << " mm" << std::endl;
|
|
|
-
|
|
|
+
|
|
|
//On passe en mode relatif
|
|
|
fichier_sortie << "G91" << std::endl;
|
|
|
-
|
|
|
+
|
|
|
//on s'assure que le laser est éteint
|
|
|
fichier_sortie << "M106 P1 S0" << std::endl;
|
|
|
-
|
|
|
+
|
|
|
//on défini la vitesse
|
|
|
fichier_sortie << "G1 F" << conf_vitesse << std::endl;
|
|
|
- double verif = 0;
|
|
|
while(ligne <= BMP_hauteur)
|
|
|
{
|
|
|
//pour graver une ligne on fera des aller-retour tant que :
|
|
@@ -232,8 +231,6 @@ int BMP2Gcode::sortie()
|
|
|
//on change de sens
|
|
|
sens *= -1;
|
|
|
}
|
|
|
-
|
|
|
- std::cout << "verif = " << verif << std::endl;
|
|
|
|
|
|
//une fois qu'une ligne de pixel est gravée on incrémente le nombre de ligne
|
|
|
ligne ++;
|
|
@@ -241,14 +238,14 @@ int BMP2Gcode::sortie()
|
|
|
|
|
|
fichier_sortie << ";ligne numéro " << ligne << std::endl;
|
|
|
}
|
|
|
-
|
|
|
+
|
|
|
//il ne faut pas oublier d'éteindre le laser à la fini
|
|
|
fichier_sortie << "M106 P1 S0" << std::endl;
|
|
|
|
|
|
fichier_sortie.close();
|
|
|
|
|
|
return 0;
|
|
|
-}
|
|
|
+}
|
|
|
|
|
|
void BMP2Gcode::BMP_larg(unsigned int nbr)
|
|
|
{
|
|
@@ -287,7 +284,7 @@ void BMP2Gcode::fichier_conf()
|
|
|
{
|
|
|
//On regarde si le fichier de configuration existe déjà
|
|
|
std::ifstream fichier_conf("laser.conf");
|
|
|
-
|
|
|
+
|
|
|
//s'il n'existe pas
|
|
|
if(!fichier_conf)
|
|
|
{
|
|
@@ -306,7 +303,7 @@ void BMP2Gcode::fichier_conf()
|
|
|
std::cout << "Pour les connaitre il est nécessaire dutiliser" <<std::endl;
|
|
|
std::cout << "les scripts d'étalonnage" <<std::endl;
|
|
|
std::cout << "*************************************************" <<std::endl;
|
|
|
-
|
|
|
+
|
|
|
conf_taille_laser = 0.2;
|
|
|
conf_puissance_min = 0;
|
|
|
conf_puissance_max = 255;
|