Diciamo che non č troppo difficile.. forse l'introduzione lo faceva sembrare chissā cosa..Originariamente inviato da Michele Facchin
Non ho capito se il quesito č troppo facile o č troppo difficile..ci fai un esempio?
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);


Rispondi quotando