#include #include #include #include #include #include #include using namespace std; int main(void) { ifstream file("koordinaten.txt", ios::in | ios::binary); string line; if (!file) { cout << "Erreur: Impossible d´ouvrir le fichier en mode lecture" << endl; return 1; } // Ouverture du port COM (c'est votre code tel quel) HANDLE h = CreateFile("COM1", GENERIC_READ | GENERIC_WRITE, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); if (h == INVALID_HANDLE_VALUE) { cout << "Erreur: Impossible d´ouvrir le port série" << endl; return 1; } DCB dcb = { 0 }; BOOL dcbOk = GetCommState(h, &dcb); dcb.BaudRate = CBR_115200; dcb.ByteSize = 8; dcb.Parity = NOPARITY; dcb.StopBits = TWOSTOPBITS; dcb.fOutxCtsFlow = FALSE; // Pourquoi ça et puis ensuite un test manuel du CTS ? dcbOk = SetCommState(h, &dcb); // Lecture ligne par ligne while (getline(file, line)) { char x[10] ; // x, y du texte char y[10] ; int x1; int y1; int x_steps; // x, y en pas moteur int y_steps; stringstream input; // flux d'entrée (une ligne du texte) stringstream output_x; // flux de sortie (une paire de coordonnées) stringstream output_y; // Une ligne devient un flux d'entrée input.str(line); // Extraction du X et du Y. if (input.get() != 'X') continue; input >> x; cout << x << endl; if (input.get() != 'Y') continue; input >> y; //cout << y << endl ; // Les positions x et y du fichier sont en ASCii (string) // Conversion des positions x et y de ASCii en integer x1 = atoi(x); //cout << x1 << endl ; y1 = atoi(y); // Conversion des positions x et y de integer en pas moteur // J'ai rendu le calcul compatible avec le type int. (et je le trouve plus lisible) x_steps = (x1 * 127) / 500; //cout << x_steps << endl ; y_steps = (y1 * 127) / 500; // Envoi des coordonnées par le port série, à compléter car votre code ne permet pas de savoir ce que vous deviez réellement faire. DWORD written = 0; output_x << x_steps; // TODO: Ne manque-t-il pas un terminateur ou un cadrage ? WriteFile(h, output_x.str().c_str(), output_x.str().size(), &written, 0); output_y << y_steps; // TODO: Ne manque-t-il pas un terminateur ou un cadrage ? WriteFile(h, output_y.str().c_str(), output_y.str().size(), &written, 0); // TODO: Et là, il ne faut pas attendre un retour ? } CloseHandle(h); return 0; }