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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? balltracecommand.cpp

?? 關于機器人的手臂程序
?? CPP
字號:

// File: BallTraceCommand.cpp
// Purpose: 
// Created: 01-DEC-2005  by Grandar
//
// Comments:
// General comments go here, for example:
// - command line options
// - file formats
// - rules and conventions
// - descriptions of the main data structures
//
// Revisions:
// 01-DEC-2005 Jiang
// Added ... 
//

//

#include "stdafx.h"
#include "BallTraceCommand.h"
#include "sduDemo.h"
#include "IASRImageProcess.h"
#include "sduDemoDlg.h"

HERROR  __stdcall CBallTraceCommand::Execute(LPVOID pParam)
{ 
	CSduDemoDlg*	pWnd = (CSduDemoDlg*)::AfxGetMainWnd();
	if(m_pImageProcess == NULL)
	{
		m_pImageProcess = pWnd->GetImageProcess();
	}

	if(m_pImage == NULL)
	{
		m_pImage = pWnd->GetImage();
	}

	if(m_pMotion == NULL)
	{	
		m_pMotion = pWnd->GetMotion();
	
		//m_pMotion->Init();
	   // m_pMotion->Start();
		
	}
	COLOR_INFO info;
	COLOR_DESC  desc = {COLOR_RED,60,250};
	m_pImageProcess->GetColorInfo(desc,info);
	TraceDecide(info.nArea,info.nX,info.nY);
	m_pImageProcess->FilterKeyColor(desc);  
	CWnd* pWndpic;
	pWndpic = (CWnd*)(pWnd->GetDlgItem(IDC_PROCESS));
	m_pImage->PaintDib(pWndpic->GetSafeHwnd());

	TRACE("%10d%10d%10d\n",info.nArea,info.nX,info.nY);
	
	Sleep(0);
	
	return TRUE;
}

CBallTraceCommand::CBallTraceCommand()
{
	allCodeRight=0;
	allCodeLeft=0;
	m_pImageProcess = NULL;
	m_pMotion = NULL;
	m_pImage=NULL;
	m_Step=0;
	bMove=FALSE;
	memset(&m_TraceParam,0,sizeof(m_TraceParam));
	m_TraceParam.nBaseSpeed = 500;
	m_TraceParam.nLastSpeed = 0;
	m_TraceParam.nAddSpeed  = 100;
	m_TraceParam.nDiffSpeed = 100;
	m_TraceParam.nState = UNKNOWN;
	speedLeft=-600;
	speedRight=-600;
}

CBallTraceCommand::~CBallTraceCommand()
{
}

void 	CBallTraceCommand::TraceDecide(int nArea,int x,int y)
{
	if(NULL == m_pMotion||!(((CSduDemoDlg*)AfxGetMainWnd())->bStart))
	{
		return;
	}

	//static int nNum = 0;
	CUR_STATE	curState = UNKNOWN;
	int	nLeftPWM =  m_TraceParam.nBaseSpeed;//+m_TraceParam.nDiffPWM;
	int	nRightPWM = m_TraceParam.nBaseSpeed;

    if(nArea>500)
	{
		//m_pMotion->SetSpeed(WHEEL_LEFT,nLeftPWM);
		//m_pMotion->SetSpeed(WHEEL_RIGHT,nRightPWM);
		if( x<X1 )
		{
			curState |= HORZ_LEFT;
		}
		else if(x>X2) 
		{
			curState |= HORZ_RIGHT;
		}
		else
		{
			curState |= HORZ_MIDDLE;
		}
		
		if(y<Y1)
		{
			curState |= VERT_FOR;
		}
		else if(y>Y2)
		{
			curState |= VERT_BACK;
		}
		else
		{
			curState |= VERT_MIDDLE;
		}
	}
	else
	{
		curState = OUTSIGHT;
	}


	if((curState&VERT_MIDDLE)&&(m_Step==0))
	{
		 /*if(curState&HORZ_MIDDLE)
		 {
			//keep state
			TRACE("Keep\n");
			m_pMotion->Move(WHEEL_LEFT,0);
			m_pMotion->Move(WHEEL_RIGHT,0);
		 }
		 else if(curState&HORZ_LEFT)
		 {
			TRACE("MIDDLE AND LEFT\n");
			m_pMotion->Move(WHEEL_LEFT,-0.8*nLeftSpeed);
			m_pMotion->Move(WHEEL_RIGHT,0.8*nRightSpeed);
		 }
		 else if(curState&HORZ_RIGHT)
		 {
			TRACE("MIDDLE AND RIGHT\n");
			//nLeftPWM += m_TraceParam.nAddPWM;
			m_pMotion->Move(WHEEL_LEFT,0.8*nLeftSpeed);
			m_pMotion->Move(WHEEL_RIGHT,-0.8*nRightSpeed);
	}*/
		m_pMotion->SetSpeed(WHEEL_LEFT,nLeftPWM);
		m_pMotion->SetSpeed(WHEEL_RIGHT,nRightPWM);
		((CSduDemoDlg*)AfxGetMainWnd())->SetDlgItemText(IDC_EDITINFO,"發現目標");
		
	}
	else if((curState&VERT_FOR)&&(m_Step==0))
	{
		/*if(curState&HORZ_MIDDLE)
		{
			TRACE("FOR and MIDDLE\n");
			m_pMotion->Move(WHEEL_LEFT,nLeftPWM);
			m_pMotion->Move(WHEEL_RIGHT,nRightPWM);
		}
		else if(curState&HORZ_LEFT)
		{
			TRACE("FOR and LEFT\n");
			nLeftPWM -= m_TraceParam.nAddPWM;
			m_pMotion->Move(WHEEL_LEFT,nLeftSpeed);
			m_pMotion->Move(WHEEL_RIGHT,nRightSpeed);
		}
		else if(curState&HORZ_RIGHT)
		{
			TRACE("FOR and RIGHT\n");
			//nRightPWM -= m_TraceParam.nAddPWM;
			m_pMotion->Move(WHEEL_LEFT,nLeftSpeed);
			m_pMotion->Move(WHEEL_RIGHT,nRightSpeed);
		}*/
		m_pMotion->SetSpeed(WHEEL_LEFT,nLeftPWM);
		m_pMotion->SetSpeed(WHEEL_RIGHT,nRightPWM);
		((CSduDemoDlg*)AfxGetMainWnd())->SetDlgItemText(IDC_EDITINFO,"發現目標");
	}
	else if((curState&VERT_BACK)&&m_Step==0)
	{
	/*	if(curState&HORZ_MIDDLE)
		{
			TRACE("BACK and MIDDLE\n");
			m_pMotion->Move(WHEEL_LEFT,-nLeftSpeed);
			m_pMotion->Move(WHEEL_RIGHT,-nRightSpeed);
		}
		else if(curState&HORZ_LEFT)
		{
			TRACE("BACK and LEFT\n");
			nLeftPWM += m_TraceParam.nAddPWM;
			m_pMotion->Move(WHEEL_LEFT,-nLeftSpeed);
			m_pMotion->Move(WHEEL_RIGHT,-nRightSpeed);
		}
		else if(curState&HORZ_RIGHT)
		{
			TRACE("BACK and RIGHT\n");
			nRightPWM += m_TraceParam.nAddPWM;
			m_pMotion->Move(WHEEL_LEFT,-nLeftSpeed);
			m_pMotion->Move(WHEEL_RIGHT,-nRightSpeed);
		}
		*/
		//m_pMotion->SetSpeed(WHEEL_LEFT,0);
		//m_pMotion->SetSpeed(WHEEL_RIGHT,0);
		/*long tempL=0,tempR=0;
		speedLeft=nLeftPWM;
		
		for(;;)
		{
			if(0>speedLeft)
			{
				tempL=speedLeft+10;
				if(tempL>0)
					tempL=0;
			}
			else if(0<speedLeft)
			{
				tempL=speedLeft-10;
				if(tempL<0)
					tempL=0;
			}
			
			if(0>speedRight)
			{
				tempR=speedRight+10;
				if(tempR>0)
					tempR=0;
			}
			else if(0<speedRight)
			{
				tempR=speedRight-10;
				if(tempR<0)
					tempR=0;
			}
			speedLeft=tempL;
			speedRight=tempR;
			
			m_pMotion->SetSpeed(WHEEL_LEFT,tempL);
			m_pMotion->SetSpeed(WHEEL_RIGHT,tempR);
			
			
			if(tempL==0 && tempR==0)
				break;
			
			Sleep(10);
		}*/
		m_pMotion->End();
		m_Step+=1;
		((CSduDemoDlg*)AfxGetMainWnd())->SetDlgItemText(IDC_EDITINFO,"到達目標");
	}
	else
	{
		Work();
	}
/*	else if(curState == OUTSIGHT) 
	{
		/*if(m_TraceParam.nState & HORZ_LEFT)
		{
			TRACE("OUT to clock\n");
			m_pMotion->Move(WHEEL_LEFT,-nLeftSpeed+150);
			m_pMotion->Move(WHEEL_RIGHT,nRightSpeed-150);
		}
		else if(m_TraceParam.nState & HORZ_RIGHT)
		{
			TRACE("OUT to unclock\n");
			m_pMotion->Move(WHEEL_LEFT,nLeftSpeed-150);
			m_pMotion->Move(WHEEL_RIGHT,-nRightSpeed+150);
		}
		else
		{
			TRACE("Still OUT\n");//停下來
		}
		//m_pMotion->SetSpeed(WHEEL_LEFT,nLeftPWM);
		//m_pMotion->SetSpeed(WHEEL_RIGHT,nRightPWM);
	}*/

	m_TraceParam.nState = curState;
}

void CBallTraceCommand::Work()
{
	static int icount=0;
	int DeviceID=((CSduDemoDlg*)AfxGetMainWnd())->DeviceID;
	int numOfModules=((CSduDemoDlg*)AfxGetMainWnd())->numOfModules;
	for(int i=0;i<numOfModules;i++)
	{
		ID[i]=((CSduDemoDlg*)AfxGetMainWnd())->LogicIdMap[i];
	}
	
	if(m_Step==1)
	{
		m_Step+=1;
		PCube_homeAll(DeviceID);
	    PCube_waitForHomeEndAll(DeviceID,30000);
		
	}
	else if(m_Step==2)
	{
		m_Step+=1;

		PCube_setRampAcc( 0, ID[0], 1.0);
		PCube_moveStep( 0, ID[0], 1.57, 10000);
		
		PCube_setRampAcc( 0, ID[1], 1.0);
		PCube_moveStep( 0, ID[1], 1.57, 10000);
		
		PCube_setRampAcc( 0, ID[2], 1.0);
		PCube_moveStep( 0, ID[2], 1.57, 10000);

		PCube_setRampAcc( 0, ID[3], 1.0);
		PCube_moveStep( 0, ID[3], 0.02, 10000);

		PCube_waitForMotionEndAll(DeviceID,30000);
		((CSduDemoDlg*)AfxGetMainWnd())->SetDlgItemText(IDC_EDITINFO,"抓取目標");
	}
	else if(m_Step==3)
	{
		m_Step+=1;
		//PCube_setRampAcc( 0, ID[0], 1.0);
		//PCube_moveStep( 0, ID[0], -1.57, 10000);
		
		PCube_setRampAcc( 0, ID[1], 1.0);
		PCube_moveStep( 0, ID[1], 0, 10000);
		
		//PCube_setRampAcc( 0, ID[2], 1.0);
		//PCube_moveStep( 0, ID[2], 1.57, 10000);
		PCube_waitForMotionEndAll(DeviceID,30000);
		((CSduDemoDlg*)AfxGetMainWnd())->SetDlgItemText(IDC_EDITINFO,"返回起點");
	} 
	else if(m_Step==4)
	{
		if(!bMove)
		{
			m_pMotion->Init();
		
			//m_pMotion->Start();
			
			m_pMotion->SetSpeed(WHEEL_LEFT,speedLeft);
			m_pMotion->SetSpeed(WHEEL_RIGHT,speedRight);
			bMove=TRUE;
			
		}
		icount++;
		if(icount>=50)
		{
		
			long tempL=speedLeft/30*(80-icount),tempR=speedRight/30*(80-icount);
			
				m_pMotion->SetSpeed(WHEEL_LEFT,tempL);
				m_pMotion->SetSpeed(WHEEL_RIGHT,tempR);
			//m_pMotion->End();
			//m_pMotion->SetSpeed(WHEEL_LEFT);
			//m_pMotion->SetSpeed(WHEEL_RIGHT);
					
		}
		if(icount==80)
		{
			m_pMotion->SetSpeed(WHEEL_LEFT,0);
			m_pMotion->SetSpeed(WHEEL_RIGHT,0);
			m_Step+=1;
			((CSduDemoDlg*)AfxGetMainWnd())->SetDlgItemText(IDC_EDITINFO,"放下物體");
		}
	}

	else if(m_Step==5)
	{
		m_Step+=1;
		PCube_setRampAcc( 0, ID[0], 1.0);
		PCube_moveStep( 0, ID[0], 1.57, 10000);
		
		PCube_setRampAcc( 0, ID[1], 1.0);
		PCube_moveStep( 0, ID[1], 1.57, 10000);

		PCube_setRampAcc( 0, ID[2], 1.0);
		PCube_moveStep( 0, ID[2], 1.57, 10000);

		PCube_setRampAcc( 0, ID[3], 1.0);
		PCube_moveStep( 0, ID[3], 0.05, 10000);
		
		PCube_waitForMotionEndAll(DeviceID,30000);
		((CSduDemoDlg*)AfxGetMainWnd())->SetDlgItemText(IDC_EDITINFO,"手臂復位");
	}

	else if(m_Step==6)
	{
		PCube_homeAll(DeviceID);
		PCube_waitForMotionEndAll(DeviceID,30000);
		((CSduDemoDlg*)AfxGetMainWnd())->SetDlgItemText(IDC_EDITINFO,"完成動作序列");
		m_Step++;
	}

	else
	{
		Sleep(0);
		if(m_Step==7&&((CSduDemoDlg*)AfxGetMainWnd())->bStart)
		{
			m_Step=0;
			bMove=false;
			icount=0;
			((CSduDemoDlg*)AfxGetMainWnd())->bStart=false;
			(((CSduDemoDlg*)AfxGetMainWnd())->GetDlgItem(IDC_START))->EnableWindow(true);
		}
	}
}
/*unsigned	__stdcall CBallTraceCommand::CounterProc(LONG nOwner,void* pResult)
{
	COUNTER_DATA* pValue = (COUNTER_DATA*)pResult;
	CBallTraceCommand*  pThis = (CBallTraceCommand*)nOwner;
	
	//pThis->ProcessCode(pValue->lCounter[WHEEL_LEFT],pValue->lCounter[WHEEL_RIGHT],pValue->lCounter[AXIS_EXTEND]);
	//這三個參數為一個周期內編碼器差數數。
	
	if(pThis->bMove)
	{
		pThis->allCodeLeft+=pValue->lCounter[WHEEL_LEFT];
		pThis->allCodeRight+=pValue->lCounter[WHEEL_RIGHT];
	}
	return 0;
}*/
/*void CMotionPage::ProcessCode(long dcodeleft, long dcoderight, long dcodeextern)
{
	
	m_CodeLeft+=dcodeleft;
	m_CodeRight+=dcoderight;
	m_CodeExtern+=dcodeextern;
	
	
	m_CodeLeft=m_CodeLeft%66000;
	
	m_CodeRight=m_CodeRight%66000;
	m_CodeExtern=m_CodeExtern%66000;
	
	m_CodeSecondLeft=(double)dcodeleft/(double)m_T*60000/66000;
	m_CodeSecondRight=(double)dcoderight/(double)m_T*60000/66000;
	m_CodeSecondExtern=(double)dcodeextern/(double)m_T*60000/66000;
	
	static int iMotionTime=0;
	iMotionTime++;
	if(iMotionTime*m_T>=50)
	{
		if(fabs(m_CodeSecondLeft)>0 || fabs(m_CodeSecondRight)>0)
		{
			m_StaticLine.AddData(0,fabs((long)m_CodeSecondLeft));
			m_StaticLine.AddData(1,fabs((long)m_CodeSecondRight));
			m_StaticLine.DrawLine();
			iMotionTime=0;
		}
	}
	
	m_SpeedLeft=GetSpeedFromDCode(dcodeleft);
	m_SpeedRight=GetSpeedFromDCode(dcoderight);
	m_SpeedExtern=GetSpeedFromDCode(dcodeextern);
	
	PostMessage(WM_MSG_MOTION_UPDATEDATA);
}*/






























































?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩一区二区三区性色av| 石原莉奈在线亚洲二区| 精品成人免费观看| 欧美日韩国产精选| 欧美在线不卡一区| 欧美乱熟臀69xxxxxx| 欧美日韩国产乱码电影| 国产欧美va欧美不卡在线| 日韩免费观看高清完整版| 精品久久人人做人人爱| 久久视频一区二区| 国产精品久久福利| 亚洲美女视频在线观看| 亚洲成人www| 国产在线一区观看| 成人美女视频在线看| 一本色道亚洲精品aⅴ| 91精品国产一区二区三区| 日韩欧美激情在线| 亚洲欧洲精品成人久久奇米网 | 婷婷激情综合网| 青草av.久久免费一区| 国产乱码精品1区2区3区| 成人免费av资源| 精品视频一区 二区 三区| 日韩久久久久久| 国产精品福利电影一区二区三区四区| 一区二区在线免费| 日韩av电影天堂| 成人精品视频.| 欧美美女视频在线观看| 国产视频一区不卡| 亚洲成av人在线观看| 国产精选一区二区三区| 色哟哟一区二区| 欧美精品一区二区久久婷婷| 亚洲女人的天堂| 久久精品99国产国产精| 97精品国产97久久久久久久久久久久 | 日韩激情在线观看| 成人av网站大全| 精品少妇一区二区三区日产乱码 | 国产福利91精品| 在线观看不卡视频| 国产欧美精品一区二区三区四区| 亚洲一区二区精品视频| 成人综合婷婷国产精品久久蜜臀| 欧美一区二区在线免费观看| 亚洲色图视频免费播放| 国内精品视频666| 91精品国产综合久久精品图片 | 成人美女视频在线观看18| 91精品国产aⅴ一区二区| 亚洲欧洲成人精品av97| 国产麻豆精品theporn| 欧美精品在线视频| 亚洲国产毛片aaaaa无费看 | 欧美激情在线看| 国产综合色在线视频区| 欧美精品在线一区二区三区| 亚洲综合久久久久| 91视频.com| 中文字幕欧美一区| 国产成人av福利| 久久综合色天天久久综合图片| 午夜精品视频在线观看| 欧美理论片在线| 亚洲一区二区欧美日韩| 欧美怡红院视频| 亚洲国产综合在线| 欧美日韩久久不卡| 日韩不卡免费视频| 精品美女在线播放| 国产一区二区三区观看| 国产亚洲精品bt天堂精选| 国产伦精品一区二区三区免费 | 国产精品视频一二三区| 懂色av一区二区三区蜜臀| 久久一区二区三区四区| 国产成人免费视频网站| 国产精品久久午夜夜伦鲁鲁| 91在线国产观看| 亚洲乱码中文字幕| 欧美日韩一级视频| 蜜桃精品在线观看| 久久色视频免费观看| 粉嫩13p一区二区三区| 亚洲天天做日日做天天谢日日欢| 一本色道久久综合亚洲91| 亚洲一区二区三区四区五区中文| 欧美二区在线观看| 国产又黄又大久久| 最新日韩在线视频| 欧美日韩aaaaaa| 国产精品一区二区在线观看不卡| 国产精品大尺度| 欧美日韩aaa| 懂色中文一区二区在线播放| 亚洲欧美一区二区三区极速播放 | 久久久久久久综合色一本| 成人高清av在线| 亚洲国产欧美另类丝袜| 精品国产电影一区二区| 91视频com| 韩国女主播一区| 一区二区三区四区高清精品免费观看 | 国产精品一区在线观看你懂的| 国产精品天美传媒沈樵| 欧美日韩一区二区三区四区五区| 狠狠色综合色综合网络| 亚洲男人的天堂一区二区| 日韩免费在线观看| 色综合久久中文综合久久牛| 精品一区二区三区香蕉蜜桃| 国产精品夫妻自拍| 欧美va亚洲va| 欧美午夜不卡在线观看免费| 国产精品一区一区三区| 偷窥国产亚洲免费视频| 综合中文字幕亚洲| 久久毛片高清国产| 91精品国产手机| 欧美性猛交xxxx乱大交退制版| 国产在线一区二区综合免费视频| 亚洲靠逼com| 国产欧美综合色| 欧美电影免费观看高清完整版在线 | 国产欧美精品在线观看| 欧美一区二区三区思思人| 欧洲一区在线观看| av亚洲精华国产精华| 国产麻豆成人精品| 久久不见久久见免费视频1 | 日韩欧美一区电影| 欧美午夜一区二区三区免费大片| 不卡的av网站| 国产不卡一区视频| 国产夫妻精品视频| 国产精品一区二区久久不卡| 免费日韩伦理电影| 五月天激情综合网| 亚洲妇女屁股眼交7| 一区二区国产视频| 亚洲精品视频在线观看网站| 国产亚洲欧美色| 久久美女高清视频| 国产婷婷色一区二区三区| 欧美精品一区二区不卡| 欧美精品一区二区三区在线播放| 91精品国产福利在线观看 | 国产福利精品导航| 国产.欧美.日韩| 国产在线精品一区二区不卡了| 久久精工是国产品牌吗| 麻豆久久一区二区| 久久激情综合网| 蜜桃视频在线一区| 国产麻豆精品在线| 成人av在线电影| 91国偷自产一区二区使用方法| 色欧美日韩亚洲| 欧美性欧美巨大黑白大战| 91精品国产综合久久久蜜臀粉嫩 | 视频在线观看一区二区三区| 日韩电影免费在线观看网站| 欧美aaaaa成人免费观看视频| 蜜桃免费网站一区二区三区| 国产精品自拍网站| 91香蕉视频黄| 6080国产精品一区二区| 欧美大度的电影原声| 国产欧美日韩亚州综合| 亚洲免费色视频| 青草av.久久免费一区| 国产不卡视频在线播放| www.日韩av| 欧美久久久影院| 欧美激情资源网| 香蕉久久夜色精品国产使用方法| 久久电影国产免费久久电影| 成人毛片视频在线观看| 欧美丝袜丝nylons| 久久久久久麻豆| 天天色天天操综合| 成人深夜在线观看| 欧美精三区欧美精三区| 国产精品久久久久久久久搜平片 | 欧美一卡2卡三卡4卡5免费| 国产日韩三级在线| 亚洲午夜久久久久久久久电影院| 狠狠色丁香婷综合久久| 91国偷自产一区二区开放时间| 精品成人一区二区三区四区| 亚洲一区自拍偷拍| 懂色av一区二区夜夜嗨| 日韩一区二区免费电影| 亚洲欧美日韩一区二区| 国产在线精品一区二区| 制服丝袜在线91| 亚洲高清三级视频|