⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 scanmirror.cpp

📁 封装了固高的GT800型板卡的振镜驱动的缓冲模式下的驱动程序,类名为CScanMirror,只要以后在调用的时候只要简单的调用MoveMirror()函数就可以了,ChangeScanMotor()用
💻 CPP
字号:
// ScanMirror.cpp: implementation of the CScanMirror class.
//
//////////////////////////////////////////////////////////////////////

#include "stdafx.h"
#include "DemoGT400.h"
#include "ScanMirror.h"

#ifdef _DEBUG
#undef THIS_FILE
static char THIS_FILE[]=__FILE__;
#define new DEBUG_NEW
#endif

//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////

CScanMirror::CScanMirror()
{		
	bIsNeedStartList = FALSE;
	bIsRuning = FALSE;
}
CScanMirror::~CScanMirror()
{
}
void CScanMirror::InitialScanMirror(unsigned short jumpdelay,
									unsigned short markdelay,
									double jumpValue)
{
	GT_ScanSetScannerDelay(jumpdelay,markdelay,0);
	GT_ScanStrtList();
	bIsRuning = TRUE;
	bIsNeedStartList =TRUE;
	GT_ScanSetLaserTimingList(100,50,3);
	GT_ScanSetJumpVel(jumpValue);
	GT_ScanSetMarkVel(jumpValue);
}
void CScanMirror::EndScanMirror()
{
	if(bIsRuning)
	{
		short rtn;
		if(bIsNeedStartList)
		{		
			//启动缓冲区运动
			rtn = GT_ScanStrtMtn();  
			//等待缓冲区运动完成
		}
		//关闭缓冲区
		rtn = GT_ScanEndList();		
		WaitFinished();
		bIsNeedStartList = FALSE;
	}	
}
void CScanMirror::WaitFinished()
{		
	if(global_scan_motor==0)
	{
		short rtn;
		do 
		{
			rtn = GT_ScanGetCrdSts(&crdsts);
		} while(!(crdsts&0x1));
	}
	bIsRuning = FALSE;
}
void CScanMirror::StartList()
{
	short rtn;
	if(bIsNeedStartList)
	{
		rtn = GT_ScanStrtMtn(); //启动缓冲区运动
		bIsNeedStartList = FALSE;
	}
}
BOOL CScanMirror::GotoMirror(double x,double y,BOOL bLaserOn)
{	
	m_dig_x = (short)((x/10.0)*32767);
	/*
	if(globalScrimPara.bMirrorX)	
		m_dig_x = 0-m_dig_x;	*/
	m_dig_y = (short)((y/10.0)*32767);	
	/*
	if(globalScrimPara.bMirrorY)	
		m_dig_y = 0-m_dig_y;	*/
	/////////////////////////////////////////
	short rtn;
	do
	{
		rtn = GT_ScanGetListSpace(&space);	
	}while(rtn!=0);
	
	if(space<=5)	
	{
		return FALSE;	
	}
	do
	{		
		rtn = GT_ScanJump(m_dig_x,m_dig_y);	
	}while(rtn!=0);	

	if(bLaserOn)
	{
		do
		{
			rtn = GT_ScanLaserOnList();	
		}while(rtn!=0);
		do
		{
			rtn = GT_ScanTimeJump(m_dig_x,m_dig_y,1);	
		}while(rtn!=0);		
		do
		{
			rtn = GT_ScanLaserOffList();
		}while(rtn!=0);	
		
		do
		{
			rtn = GT_ScanTimeJump(m_dig_x,m_dig_y,5);
		}while(rtn!=0);
	}
	return TRUE;
}

void CScanMirror::MoveMirror(double x,double y,BOOL bLaserOn)
{		
	if(!bIsNeedStartList && !bIsRuning)
	{
		unsigned short jumpdelay = 30;//变换成微秒
	    unsigned short markdelay = 30;//变换成微秒
		double jumpspeed = 100;
		InitialScanMirror(jumpdelay,markdelay,jumpspeed);
	}

	BOOL bIsSendCmd;
	do
	{
		bIsSendCmd = GotoMirror(x,y,bLaserOn);
		if(!bIsSendCmd && bIsNeedStartList)	
		{
			StartList();		
		}
	}while(!bIsSendCmd);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -