Originariamente inviato da Michele Facchin
Non ho capito se il quesito č troppo facile o č troppo difficile..ci fai un esempio?
Diciamo che non č troppo difficile.. forse l'introduzione lo faceva sembrare chissā cosa..

Questo č il ciclo.. diciamo che il quesito č se a un certo numero di volte che eseguo questo ciclo mi fermo ad esempio al secondo step io devo memorizzarmi ad esempio in una variabile dove sono arrivato.. e la volta prossima che entro nel ciclo ripartire dallo stesso punto da dove mi sono fermato.. questo perchč altrimenti se parto dall'inizio il motore nelle prime sequenze rimmarrebbe fermo e introdurrebbe degli errori di gradi nella var current_degrees.. e questo non č bene! Avete qualche brillante idea? Io pensavo di introdurre dei goto.. ma ripeto che forse non č affatto la soluzione migliore!

codice:
 do{
		w_data[0] = 0xC;		//1100  primo step
		// DAQmxBaseWriteDigitalU8(taskHandle, numSampsPerChan, autoStart, timeout, dataLayout, writeArray, sampsPerChanWritten, Nothing)
		DAQmxErrChk (DAQmxBaseWriteDigitalU8(taskHandle,1,1,10.0,DAQmx_Val_GroupByChannel,w_data,&written,NULL));		
		
		
		current_degrees += step_value;
		//la funzione qui sopra fa uscire 1100 sui canali della scheda
		if (current_degrees >= degrees) break; //se siamo a posto usciamo

		Sleep(SLEEP_TIME); //mezzo sec di attesa

		w_data[0] = 0x6;		//0110  secondo step
		DAQmxErrChk (DAQmxBaseWriteDigitalU8(taskHandle,1,1,10.0,DAQmx_Val_GroupByChannel,w_data,&written,NULL));		
		//la funzione qui sopra fa uscire 0110 sui canali della scheda
		
		current_degrees += step_value;
		if (current_degrees >= degrees) break; //se siamo a posto usciamo

		Sleep(SLEEP_TIME); //mezzo sec di attesa

		w_data[0] = 0x3;		//0011  terzo step
		DAQmxErrChk (DAQmxBaseWriteDigitalU8(taskHandle,1,1,10.0,DAQmx_Val_GroupByChannel,w_data,&written,NULL));		
		//la funzione qui sopra fa uscire 0011 sui canali della scheda
		
		current_degrees += step_value;
		if (current_degrees >= degrees) break; //se siamo a posto usciamo

		Sleep(SLEEP_TIME); //mezzo sec di attesa

		w_data[0] = 0x9;		//1001  quarto step
		

		DAQmxErrChk (DAQmxBaseWriteDigitalU8(taskHandle,1,1,10.0,DAQmx_Val_GroupByChannel,w_data,&written,NULL));		
		//la funzione qui sopra fa uscire 1001 sui canali della scheda

		current_degrees += step_value;
		if (current_degrees >= degrees) break; //se siamo a posto usciamo
	
		Sleep(SLEEP_TIME);

	}while(1);