一般會使用狀態機switch case 來處理, 例如下面Run運行后...
void Run(void)
{
....
switch( step )
{ 
    case 0: 
        if( IsRunning() ) break;           //檢測所有運動結束,否則繼續檢測 
        MoveXYZ( data[I].x, data[I].y, data[I].z …… ); 
        Step ++; 
        Break; 
    Case 1: 
        If( IsRunning() ) break;          // 同上 
        I++;                                        // 準備下一段數據,之所以放在此處,是需要考慮在運行過程中,有外部的暫停和繼續操作。 
        Step = 0;                               // 準備運行新的數據 
        Break; 
} 
...
}