亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mastercontroldlg.cpp

?? Source code for cnc controlling three dimentioal machine
?? CPP
?? 第 1 頁 / 共 5 頁
字號:
}

void CMasterControlDlg::DoPulse()
{
 
 double delay = 0;
 double delay1 = 0;
 if( ! (XPulse || ZPulse || YPulse) ) return;
    
 if( Simulate ) return;	   // go away if simulating

 if( Spindle ) cOutData = SpindleMask;			   // port data to zero
   else
	           cOutData = 0;

	if(IO48)
	{
	_outp( DA , IO48data & 0xff );
	_outp( DB , (IO48data >> 8) & 0xff );	  // for large table
	_outp( DC , (IO48data >> 16) & 0xff );
	}

	delay = 0;
	if( XPulse ) delay = XOverLap;
	if( YPulse ) delay = __max(	YOverLap , delay );
	if( ZPulse ) delay = __max( ZOverLap , delay );		 // get overlap delay


	if( XDir ) cOutData |=  XDirMask;
	if( YDir ) cOutData |=  YDirMask;		// for printer port	direction pulses
	if( ZDir ) cOutData |=  ZDirMask;

	// step one....send dir pulse

	int retval=DeviceIoControl(hDevice, PORTIO_SEND_BYTE_TO_PINS2_TO_9,
		                       &cOutData, sizeof(cOutData), NULL, 0, &hold, NULL);



	Delay( delay );									// Delay for overlap time with dir on.

	if( IO48 && ZPulse )
	{
		  IO48data &= 0x7fffff;
		   _outp( DC , (IO48data >> 16) & 0xff );	// set z-clock pulse ...negative for drive
	}

	delay1 = 0;
	if( XPulse)  delay1 = XWidth;
	if( YPulse ) delay1 = __max( YWidth , delay1 );
	if( ZPulse ) delay1 = __max( ZWidth , delay1 );

	if( XPulse ) cOutData |= XStepMask;
	if( YPulse ) cOutData |= YStepMask;			 // for printer port clock pulses
	if( ZPulse ) cOutData |= ZStepMask;
	retval=DeviceIoControl(hDevice, PORTIO_SEND_BYTE_TO_PINS2_TO_9,
		                       &cOutData, sizeof(cOutData), NULL, 0, &hold, NULL);
	
	Delay( delay1 );									// Delay for Width time





	if( IO48  &&  ZPulse )
	{
		IO48data |= 0x800000;
		_outp( DC, (IO48data >> 16) & 0xff );		// clear z clock ... positive for clear
	}

	if( XPulse ) cOutData &=  (XStepMask ^ 0xff );
	if( YPulse ) cOutData &=  (YStepMask ^ 0xff );			 // turn off the clock pulse
	if( ZPulse ) cOutData &=  (ZStepMask ^ 0xff );

	retval=DeviceIoControl(hDevice, PORTIO_SEND_BYTE_TO_PINS2_TO_9,
		                       &cOutData, sizeof(cOutData), NULL, 0, &hold, NULL);
	Delay( delay );									// Delay for overlap again;
	if( IO48 )
		IO48data |=  0x400000;						//set z-direction bit;

	if( XPulse ) cOutData &=  (XDirMask ^ 0xff);
	if( YPulse ) cOutData &=  (YDirMask ^ 0xff );			 // turn off the dir pulse
	if( ZPulse ) cOutData &=  (ZDirMask ^ 0xff );

	 
	retval=DeviceIoControl(hDevice, PORTIO_SEND_BYTE_TO_PINS2_TO_9,
		                       &cOutData, sizeof(cOutData), NULL, 0, &hold, NULL);






	XPulse = false; YPulse = false; ZPulse = false;	 // clear the semaphores
	YDir   = false;	XDir   = false; ZDir   = false;	 // for movement
    LimitsIn();
	if( EStop ) Emergency();
	
	
}

void CMasterControlDlg::Delay(double delay)
{
	static first = 0;

	LARGE_INTEGER  since,now;
    double sofar = 0;
	QueryPerformanceCounter( &since );
	
	while( sofar < delay)
	{
	QueryPerformanceCounter( &now );
	__int64 temp = (now.QuadPart - since.QuadPart);
    sofar = ((double)temp) / frequency.QuadPart;
	}

	if( first==0  ) { started = sofar; first = 1; }
	rightnow = sofar;
  

}

void CMasterControlDlg::GoToPos(double newx, double newy, double newz)
{
   if( !Enable ) return;
   cOutData = 0;
   int sArray;
   long int nx,ny,nz;
   nx = (long int)  (newx / (double)XRes);
   ny = (long int)  (newy / (double)YRes);
   nz = (long int)  (newz / (double)ZRes);
   
   int xinc = abs( XDigPos - (UINT)nx);
   int yinc = abs( YDigPos - (UINT)ny);
   int zinc = abs( ZDigPos - (UINT)nz);

   sArray = __max( xinc,yinc );
   sArray = __max( sArray, zinc );
   if( Movements ) { delete[] Movements; Movements = NULL; }
   if( sArray != 0)  Movements = (unsigned char*)	new char[sArray];
   int index = 0;
   Moves = sArray;

   double xcount = 0, ycount = 0, zcount = 0;

   while( nx != XDigPos || ny != YDigPos || nz != ZDigPos)
   {
	 Movements[index] = 0;
     xcount += xinc;
     ycount += yinc;
     zcount += zinc;
     if( nz != ZDigPos )
	 {
        if( zcount >= max( xinc,yinc))
		{ 
	      if ( nz < ZDigPos ) { ZDigPos --;	Movements[index] |= 0x44; }	// z-step and dir = false
          else                { ZDigPos ++; Movements[index] |= 0x04; } // just z-step for true
          zcount -= max( xinc,yinc );
		}
	 }
     if( ny != YDigPos )
	 {
        if( ycount >= max(xinc,zinc) )
		{
	       if ( ny < YDigPos)  { YDigPos--; Movements[index] |= 0x22; }
           else                { YDigPos++; Movements[index] |= 0x02; }
           ycount -= max( xinc,zinc );
		}
	 }
     if( nx != XDigPos )
	 {
        if( xcount >= max(yinc,zinc) )
		{
	       if (nx < XDigPos) { XDigPos--; Movements[index] |= 0x11; }
           else              { XDigPos++; Movements[index] |= 0x01; }
           xcount -= max( yinc,zinc );
		}    
	 }
     index++; 
   }
   CalcRamp();
   BurstOut();
                // set new current location;
   XCurrent = (double)XDigPos * XRes;
   YCurrent = (double)YDigPos * YRes;
   ZCurrent = (double)ZDigPos * ZRes;

   if(XCurrent == 0 )   m_LEDXHome.Depress( true ); else  m_LEDXHome.Depress( false );
   if(YCurrent == 0 )	m_LEDYHome.Depress( true ); else  m_LEDYHome.Depress( false );
   if(ZCurrent == 0 )	m_LEDZHome.Depress( true ); else  m_LEDZHome.Depress( false );

   if( DispOn ) DrawTo();


}

void CMasterControlDlg::OnXplus() 
{
	if( ! Enable )
   {
	   MessageBox( " --- Emergency Stop ---- " );
	   return;
   }
	GMode = 1;
	 UpdateData(TRUE);
	 GoToPos( XCurrent + m_JogDist, YCurrent, ZCurrent);
	 m_XLocVar = XCurrent;
	 m_YLocVar = YCurrent;
     m_ZLocVar = ZCurrent;
	 UpdateData(false);

}

void CMasterControlDlg::OnXminus() 
{
	if( ! Enable )
   {
	   MessageBox( " --- Emergency Stop ---- " );
	   return;
   }
	GMode = 1;
	UpdateData(TRUE);
	GoToPos( XCurrent - m_JogDist, YCurrent, ZCurrent);
	m_XLocVar = XCurrent;
	m_YLocVar = YCurrent;
    m_ZLocVar = ZCurrent;
	UpdateData(false);
}

void CMasterControlDlg::OnYminus() 
{
	if( ! Enable )
   {
	   MessageBox( " --- Emergency Stop ---- " );
	   return;
   }
	GMode = 1;
    UpdateData(TRUE);
	GoToPos( XCurrent , YCurrent - m_JogDist, ZCurrent);
	m_XLocVar = XCurrent; 
	m_YLocVar = YCurrent; 
    m_ZLocVar = ZCurrent; 
	UpdateData(false);
}

void CMasterControlDlg::OnYplus() 
{
	if( ! Enable )
   {
	   MessageBox( " --- Emergency Stop ---- " );
	   return;
   }
	GMode = 1;
    UpdateData(TRUE);
	GoToPos( XCurrent , YCurrent + m_JogDist, ZCurrent);
	m_XLocVar = XCurrent;  
	m_YLocVar = YCurrent;  
    m_ZLocVar = ZCurrent; 
	UpdateData(false);
}

void CMasterControlDlg::OnUp() 
{
	if( ! Enable )
   {
	   MessageBox( " --- Emergency Stop ---- " );
	   return;
   }
	GMode = 1;
	UpdateData(TRUE);
	GoToPos( XCurrent , YCurrent, ZCurrent+ m_JogDist);
	m_XLocVar = XCurrent; 
	m_YLocVar = YCurrent;  
    m_ZLocVar = ZCurrent;  
	UpdateData(false);
}

void CMasterControlDlg::OnDown() 
{
	if( ! Enable )
   {
	   MessageBox( " --- Emergency Stop ---- " );
	   return;
   }
	GMode = 1;
    UpdateData(TRUE);
	GoToPos( XCurrent , YCurrent, ZCurrent- m_JogDist);
	m_XLocVar = XCurrent; 
	m_YLocVar = YCurrent; 
    m_ZLocVar = ZCurrent; 
	UpdateData(false);
	
}

void CMasterControlDlg::CalcRamp()
{

   
  double cXIncAcc,cYIncAcc,cZIncAcc;
  double cXIncDec,cYIncDec,cZIncDec;

  if( GMode != 0 ) 
  { cXIncAcc  = XIncAccCut;
	cXIncDec  = XIncDecCut;
	cYIncAcc  = YIncAccCut;
	cYIncDec  = YIncDecCut;
	cZIncAcc  = ZIncAccCut;
	cZIncDec  = ZIncDecCut;
  }
  else
  {
   cXIncAcc  = XIncAcc;
   cXIncDec  = XIncDec;
   cYIncAcc  = YIncAcc;
   cYIncDec  = YIncDec;
   cZIncAcc  = ZIncAcc;
   cZIncDec  = ZIncDec;
  }

  int x;
  double hold;
  if( Times ) {delete[] Times; Times = NULL; }
  if( Moves == 0) return;
  Times = (double*) new double[Moves];
  for( x=0; x< Moves; x++)
  {
	 hold = 0;
	 if( Movements[x] & 0x01 ) hold = XMaxDelay;
	 if( Movements[x] & 0x02 ) hold = __max( hold, YMaxDelay );
	 if( Movements[x] & 0x04 ) hold = __max( hold, ZMaxDelay );
	 Times[ x ] = hold;
  }
  for( x= 0; x < Moves; x++)
  {
	 int y = x;
	 double temp = Times[ x];
	 while( Times[x++] == temp) if( x == Moves) break;
	 int len = (x-1) - y;
	 int ramp = 0;
	 if( temp == XMaxDelay && XRamp )
	 {
	    
	   if( len < 10) break;
	   int front = 0;
	   int back = 0;
	   if ( (len/2) > (int)(XAcc * XPpi)) front = (int)(XAcc*XPpi); else front = len/2;
	   if ( (len/2) > (int)(XDec * XPpi)) back =  (int)(XDec*XPpi); else back = len/2;
	   double holder = temp;
	   for( int z = 0; z < len; z++)
	   {
		   if( z < front)  holder -= cXIncAcc;
		   if( z > len - back ) holder += cXIncDec;
		   Times[ y + z ] = holder;
	   }
	 }
	 if( temp == YMaxDelay && YRamp )				// no ramp for autoZSlow
	 {
	    
	   if( len < 10) break;
	   int front = 0;
	   int back = 0;
	   if ( (len/2) > (int)(YAcc * YPpi)) front = (int)(YAcc*YPpi); else front = len/2;
	   if ( (len/2) > (int)(YDec * YPpi)) back =  (int)(YDec*YPpi); else back = len/2;
	   double holder = temp;
	   for( int z = 0; z < len; z++)
	   {
		   if( z < front)  holder -= cYIncAcc;
		   if( z > len - back ) holder += cYIncDec;
		   Times[ y + z ] = holder;
	   }
	 }
	 if( temp == ZMaxDelay && ZRamp )
	 {
	   if( len < 10) break;
	   int front = 0;
	   int back = 0;
	   if ( (len/2) > (int)(ZAcc * ZPpi)) front = (int)(ZAcc*ZPpi); else front = len/2;
	   if ( (len/2) > (int)(ZDec * ZPpi)) back =  (int)(ZDec*ZPpi); else back = len/2;
	   double holder = temp;
	   for( int z = 0; z < len; z++)
	   {
		   if( z < front)  holder -= cZIncAcc;
		   if( z > len - back ) holder += cZIncDec;
		   Times[ y + z ] = holder;
	   }
	 }


  }

}

void CMasterControlDlg::OnGo() 
{
   if( ! Enable )
   {
	   MessageBox( " --- Emergency Stop ---- " );
	   return;
   }
   GMode = 1;
   UpdateData( true );
   GoToPos( m_XGotoVar, m_YGotoVar,  m_ZGotoVar);
   m_XLocVar = XCurrent; 
   m_YLocVar = YCurrent; 
   m_ZLocVar = ZCurrent; 
   UpdateData(false);

}

BOOL CMasterControlDlg::DestroyWindow() 
{
   if(Movements) delete[] Movements;
   if(Times) delete[] Times;
	return CDialog::DestroyWindow();
}

void CMasterControlDlg::BurstOut()
{
  int x;
  unsigned char now;
  for( x = 0; x < Moves; x++)
  {
    now = Movements[x];
	if( now & 0x01 ) { if( now & 0x10 ) PulseX( true ); else PulseX( false ); }
	if( now & 0x02 ) { if( now & 0x20 ) PulseY( true ); else PulseY( false ); }
	if( now & 0x04 ) { if( now & 0x40 ) PulseZ( false ); else PulseZ( true ); }
	DoPulse();
	if( !Simulate )Delay( Times[ x ] );
	TimeEstimate += Times[ x ]+latency;
	if( !Enable) break;
  }
}



void CMasterControlDlg::OnHomeall() 
{
   if( ! Enable )
   {
	   MessageBox( " --- Emergency Stop ---- " );
	   return;
   }
   GoToPos(0,0,0);
   m_XLocVar = XCurrent; 
   m_YLocVar = YCurrent; 
   m_ZLocVar = ZCurrent; 
   UpdateData(false);
	
}

void CMasterControlDlg::OnHomex() 
{
	if( ! Enable )
   {
	   MessageBox( " --- Emergency Stop ---- " );
	   return;
   }
	GoToPos( 0, YCurrent, ZCurrent );
    m_XLocVar = XCurrent; 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美白人最猛性xxxxx69交| 另类小说综合欧美亚洲| 国产一区二区在线观看视频| 欧美老肥妇做.爰bbww| 亚洲精品免费一二三区| www.日韩av| 日韩一区在线看| 99久久国产免费看| 国产日产欧美一区二区三区| 粉嫩av一区二区三区在线播放 | 国产欧美日韩另类一区| 国产一区二区三区在线观看免费 | 日本欧美大码aⅴ在线播放| 欧美色图免费看| 亚洲成人资源网| 欧美日韩一区二区三区在线看| 亚洲图片欧美综合| 欧美日韩精品一二三区| 爽好多水快深点欧美视频| 91麻豆精品国产91久久久使用方法 | 免费成人在线网站| 久久综合久久综合久久综合| 国产美女一区二区三区| 国产精品乱码久久久久久 | 成人国产在线观看| 亚洲精品免费一二三区| 9191成人精品久久| 激情另类小说区图片区视频区| 久久五月婷婷丁香社区| 国产不卡一区视频| 亚洲专区一二三| 91精品国产91久久综合桃花| 国产一区在线精品| 亚洲人吸女人奶水| 91麻豆精品国产91久久久更新时间| 蜜乳av一区二区三区| 日本一区免费视频| 欧美日韩专区在线| 国产综合色视频| 亚洲欧美电影一区二区| 欧美一区二区在线视频| 成人av中文字幕| 日韩中文字幕91| 欧美激情在线看| 8v天堂国产在线一区二区| 国产福利91精品一区二区三区| 一区二区三区影院| 久久久三级国产网站| 色婷婷av一区二区| 国产综合久久久久影院| 亚洲精品菠萝久久久久久久| 欧美mv日韩mv国产网站| 91成人免费在线| 国产精品一二三四区| 视频一区视频二区在线观看| 中文字幕第一区| 日韩欧美在线1卡| 色婷婷综合久久久久中文| 国产麻豆视频一区二区| 亚洲va韩国va欧美va精品| 国产精品美日韩| 日韩亚洲欧美在线观看| 欧美日韩综合色| 91天堂素人约啪| 国产精品99久久久| 免费观看日韩av| 午夜在线电影亚洲一区| 自拍偷拍亚洲综合| 日本一区二区三区久久久久久久久不| 4438亚洲最大| 欧美色图片你懂的| 97精品久久久久中文字幕| 国产成人久久精品77777最新版本| 午夜精品久久久久久久| 亚洲精品少妇30p| 中文字幕一区二区三区蜜月| 精品盗摄一区二区三区| 欧美一区二区三区在线观看| 在线观看亚洲专区| 91麻豆成人久久精品二区三区| 国产福利91精品一区| 国精产品一区一区三区mba视频 | 蜜臀久久99精品久久久久久9| 亚洲在线视频一区| 中文字幕亚洲区| 亚洲欧洲日本在线| 国产精品视频yy9299一区| 日本一区二区三区在线不卡| 精品国产91乱码一区二区三区| 日韩视频中午一区| 日韩精品一区二区三区swag| 欧美一区二区网站| 日韩欧美一二三四区| 日韩欧美中文一区| 欧美哺乳videos| 精品播放一区二区| 国产丝袜美腿一区二区三区| 久久久久综合网| 欧美国产精品一区二区| 亚洲国产电影在线观看| 亚洲视频一区二区免费在线观看| 亚洲视频中文字幕| 亚洲激情av在线| 五月激情综合色| 精品一区二区在线播放| 国产一区二区三区不卡在线观看 | 欧美乱熟臀69xxxxxx| 91精品在线一区二区| 日韩欧美精品在线| 国产视频一区不卡| 亚洲人成网站在线| 午夜成人免费电影| 国产伦理精品不卡| 99精品1区2区| 欧美人牲a欧美精品| 日韩精品一区二区三区四区| 欧美高清在线一区二区| 亚洲精品免费在线播放| 青青草国产成人av片免费| 国产精品一区二区无线| 97成人超碰视| 日韩一本二本av| 日韩一区有码在线| 日韩精品一区第一页| 国产成人在线看| 欧美色综合网站| 久久麻豆一区二区| 一区二区久久久久| 国产一区二区三区四区五区美女| 99在线视频精品| 欧美一级二级在线观看| 国产精品久久影院| 天天影视色香欲综合网老头| 国产成人小视频| 欧美日韩一区二区三区视频| 久久精品亚洲国产奇米99| 夜夜精品视频一区二区| 激情偷乱视频一区二区三区| 一本大道av一区二区在线播放| 日韩欧美精品在线| 亚洲高清免费视频| 粉嫩av亚洲一区二区图片| 欧美日韩国产高清一区二区三区| 久久久久9999亚洲精品| 亚洲福利一区二区| 播五月开心婷婷综合| 日韩一级成人av| 亚洲激情一二三区| 国产精品18久久久久| 欧美精品自拍偷拍动漫精品| 综合欧美亚洲日本| 国内久久精品视频| 91.com在线观看| 一区av在线播放| 国产激情一区二区三区| 欧美一区二区三区在线电影| 伊人开心综合网| 成人黄页毛片网站| 337p粉嫩大胆色噜噜噜噜亚洲| 亚洲大片在线观看| 色综合久久久网| 亚洲欧洲国产专区| 成人午夜视频在线| 337p粉嫩大胆噜噜噜噜噜91av| 五月激情六月综合| 精品视频资源站| 一区二区三区久久| 一本一道波多野结衣一区二区 | 久久夜色精品国产噜噜av| 日韩激情在线观看| 欧美日韩亚洲国产综合| 亚洲综合一区二区| 色综合天天做天天爱| 亚洲精品水蜜桃| 高清beeg欧美| 国产视频一区二区在线观看| 久久精品国产亚洲高清剧情介绍| 91精品在线免费| 婷婷成人综合网| 在线成人av网站| 青娱乐精品在线视频| 91精品国产色综合久久不卡电影| 亚洲成人黄色小说| 欧美年轻男男videosbes| 亚洲18女电影在线观看| 欧美私模裸体表演在线观看| 一区二区三区在线视频免费观看| 91免费视频网址| 亚洲永久免费av| 欧美日韩电影在线| 日本一道高清亚洲日美韩| 制服丝袜亚洲网站| 久久精品国产免费| 精品国产乱码久久久久久夜甘婷婷| 极品美女销魂一区二区三区免费| 精品久久五月天| 国产成人综合在线| 最新欧美精品一区二区三区| 色噜噜狠狠一区二区三区果冻| 一区二区三区不卡在线观看|