Browse Source

changement des indices pour les limites des lignes

Jackbot 3 years ago
parent
commit
408e275a36
1 changed files with 21 additions and 5 deletions
  1. 21 5
      bmp2gcode.cc

+ 21 - 5
bmp2gcode.cc

@@ -122,6 +122,9 @@ int BMP2Gcode::entete()
 	BMP_offset(*(int*)&entete[10]);
 	BMP_profondeur(*(short*)&entete[28]);
 
+	std::cout << "largeur BMP : " << BMP_largeur << std::endl;
+	std::cout << "hauteur BMP : " << BMP_hauteur << std::endl;
+	
 	delete[] entete;
 	fichier.close();
 
@@ -171,12 +174,13 @@ int BMP2Gcode::sortie()
 	fichier_sortie.open (nom_fichier_gcode);
 
 	/****************************CONDITIONS INITIALES****************************/
-	double taille_pixel = (double)(conf_taille_image)/(double)(BMP_largeur), position_Y = 0;
+	double taille_pixel = (double)(conf_taille_image)/(double)(BMP_largeur), position_Y = 0, verif = 0;
 
-	int sens = 1, indice = 0, ligne = 1;
+	int sens = 1;
+	unsigned int indice = 0, ligne = 1;
 
 	//on arrondi la taille du pixel au dixième de mm
-	taille_pixel = round(10.0*taille_pixel)/10.0;
+	//taille_pixel = round(10.0*taille_pixel)/10.0;
 
 	std::cout << "***SORTIE***" << std::endl;
 	std::cout << "largeur = " << conf_taille_image << " mm" << std::endl;
@@ -198,14 +202,20 @@ int BMP2Gcode::sortie()
 		{
 			int nbr_pixels = 0;
 			//traitement d'une ligne
-			while(nbr_pixels < BMP_largeur)
+			
+			unsigned int indice_max = ligne * BMP_largeur - 1, indice_min = indice_max - BMP_largeur + 1;
+// 			std::cout << "indice_min = " << indice_min << std::endl;
+// 			std::cout << "indice_max = " << indice_max << std::endl;
+			
+			while(indice < indice_max && indice >= indice_min)
 			{
+				//on détermine la puissance associé au pixel indice
 				unsigned int puissance = conversion(255 - tab_donnees[indice], conf_puissance_min, conf_puissance_max);
 
 				//on détermine le nombre de pixels successifs pour lesquels la puissance du laser sera la même
 				int nbr = 1;
 				while( puissance == conversion(255 - tab_donnees[indice + nbr], conf_puissance_min, conf_puissance_max)
-					&& indice + nbr < BMP_largeur)
+					&& indice + nbr < indice_max && indice + nbr > indice_min)
 				{nbr ++;}
 
 				fichier_sortie << "M106 P1 S" << puissance << std::endl;
@@ -220,6 +230,9 @@ int BMP2Gcode::sortie()
 				//et on se déplace dans le tableau selon le sens
 				indice += sens * nbr;
 			}
+			
+// 			std::cout << "sens : " << sens << std::endl;
+// 			std::cout << "verif : " << verif << std::endl;
 
 			//une fois que la ligne est finie, on décale d'une taille de laser sur l'axe Y
 			fichier_sortie << "G1 Y" << conf_taille_laser << std::endl;
@@ -242,6 +255,9 @@ int BMP2Gcode::sortie()
 	//il ne faut pas oublier d'éteindre le laser à la fini
 	fichier_sortie << "M106 P1 S0" << std::endl;
 
+	std::cout << "position_Y : " << position_Y << std::endl;
+	std::cout << "fermeture fichier" << std::endl;
+
 	fichier_sortie.close();
 
 	return 0;