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

📄 wea2dlg(箭杆).cpp

📁 该程序实现的是一个在织布厂用的提花机程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	if(g_bWoofFinish==1)
	{
		g_bWoofFinish=0;
		if(g_bWoofLock==0)
		{
			info->Format(IDS_WOOF_BRK+g_language);
			s.Format(IDS_READY_RUN+g_language);
			*info=*info+s;
//			info.Format("ERROR: %x\nWoof break.\n Run when ready.",weai._byte);
			g_bHardwareReady=TRUE;
		}
		else
		{
			info->Format(IDS_WOOF_BRK+g_language);
			s.Format(IDS_READY_CLEAR+g_language);
			*info=*info+s;
	//		info.Format("ERROR: %x\nWoof break.\n Press Clear when ready.",weai._byte);
			g_bHardwareReady=FALSE;
			return FALSE;
		}
	}
	if((weai._bit.wa_brk==0) && (m_Warp_break==1))
	{
		m_Warp_break=0;
		info->Format(IDS_WARP_BRK+g_language);
		s.Format(IDS_READY_RUN+g_language);
		*info=*info+s;
//		info.Format("ERROR: %x\nWarp break.\nRun when ready.",weai._byte);
		g_bHardwareReady=TRUE;
	}
	m_Warp_break=weai._bit.wa_brk;
//	for(int i=0;i<4;i++)
//		g_running.Delay();
	g_bHardwareReady=TRUE;
	return TRUE;
}
*/  
void CWea2Dlg::OnClear()   
{
	// TODO: Add your control notification handler code here
//	if(g_bSendData)
//		return;

/*	while(1)
	{
		g_running.OneLineToMap();
		g_running.SendControl(1,1);
		g_running.Forward1();
	}
*/	m_info.Empty();
	_outp(PC_CLEAR_FPGALOCK_O,1);
//	if(g_bHardwareReady==FALSE)  //03_12_27删此条件,
//	{
/*		if(g_test.CheckMapNumber(m_info,g_job.m_Width/4)==FALSE)
		{
			UpdateData(0);
			g_running.StopRun(); //03_12_27 加   04_5_5删
			return;
		}*/
//	}

	g_bHardwareReady=CheckIO(m_info);
	if((g_bHardwareReady==TRUE) && (g_bProgramReady==TRUE))
	{
		m_info.Format(IDS_READY+g_language);
		UpdateData(0);
		g_running.StartRun();
//		g_running.Forward1();
//		g_running.Forward1();
//		g_running.SendControl();
//		g_running.Backward1();
//		g_running.Backward1();
		if(g_bSendData==0)
			CWinThread* pT=AfxBeginThread(SendData,this,THREAD_PRIORITY_HIGHEST);//GetSafeHwnd());//,THREAD_PRIORITY_TIME_CRITICAL);  //启动一个线程
		return;
	}


	if(g_bProgramReady==0)
	{
		CString info;
		info.Format(IDS_NO_JOB); 
		m_info=m_info+info;
		UpdateData(0);
	}
	
}

LRESULT CWea2Dlg::OnLockButton(WPARAM wParam,LPARAM lParam)
{
	UINT id[]={IDC_SETUP,IDC_TEST,IDC_CLEAR,IDC_PICKNUMBER,
		IDC_PICKFORWARD,IDC_PICKBACKWARD,IDCANCEL,IDC_FILEOP,IDC_CREATE_JOB};
	for(int i=0;i<9;i++)
	{
		CWnd* pb=GetDlgItem(id[i]);
		if(pb==NULL)
			continue;
		pb->EnableWindow(0);
	}
	return 0;
}

LRESULT CWea2Dlg::OnEnableButton(WPARAM wParam,LPARAM lParam)
{
	UINT id[]={IDC_SETUP,IDC_TEST,IDC_CLEAR,IDC_PICKNUMBER,
		IDC_PICKFORWARD,IDC_PICKBACKWARD,IDCANCEL,IDC_FILEOP,IDC_CREATE_JOB};
	for(int i=0;i<9;i++)
	{
		CWnd* pb=GetDlgItem(id[i]);
		if(pb==NULL)
			continue;
		pb->EnableWindow(1);
	}
	return 0;
}

/*
UINT SendData(LPVOID pParam)
{
	CWea2Dlg* pWnd=(CWea2Dlg*)pParam;
	HWND hwnd=pWnd->GetSafeHwnd();
	g_bSendData=1;

	int p=MAP_O;
	MAPO map;
	map._bit.sdata=1;
	map._bit.sclk=1;
	map._bit.latch=1;
	_outp(p,map._byte);

	g_running.StartRun();

	BOOL bEnable_h,bBackwd_h,bShutle_h,Wo_brk,fast;
	BOOL bShutleFlag,bFirstEnable,bToMap,bSensor123;
	int b1stForwd,b1stBackwd;
	WEAI weai;
	MAPI mapi;
	p=MAP_I;
	mapi._byte=_inp(p);
	bSensor123=mapi._bit.sensor123;
	p=WEAVER_I;
	UINT timer=0;
	weai._byte=_inp(p);

	bEnable_h=weai._bit.enable;
	bBackwd_h=weai._bit.backwd;
	bShutle_h=weai._bit.shutle;
	Wo_brk=weai._bit.wo_brk;
	fast=1;
	bFirstEnable=1;
	bShutleFlag=0;
	b1stForwd=0;
	b1stBackwd=0;
	BOOL bCheckOK;

	while(g_bSendData)
	{

		bToMap=0;
		for(int k=0;k<10;k++)
			g_running.Delay();
		if(pWnd->CheckIO(pWnd->m_info)==FALSE)  // check hardware
		{
			g_bSendData=0;
			g_running.StopRun();
			TRACE("Power error\n");
			continue;
//			if(timer==0)
//				timer=pWnd->SetTimer(10,20000,NULL);
		}

		BOOL bFinish=0;
		CString info;

		p=MAP_I;
		mapi._byte=_inp(p);
		if((bSensor123==1) && (mapi._bit.sensor123==0))
		{
			if(timer==0)
				timer=pWnd->SetTimer(10,60000,NULL);  //  1 minute
		}
		if((bSensor123==0) && (mapi._bit.sensor123==1))
		{
			int p=PC_DISABLE_H_O;
			int d=1;
			_outp(p,d);
			if(timer)
				pWnd->KillTimer(timer);
			timer=0;
		}

		bSensor123=mapi._bit.sensor123;

		weai._byte=_inp(p);       //  read weai port
		if(weai._bit.backwd==0)
			b1stForwd=0;
		if(weai._bit.fast==0)
			b1stBackwd=0;
		if((bEnable_h==1) && (weai._bit.enable==0))//  enable falling_dedge;
		{
			if(weai._bit.backwd==1)
			{
				if(b1stForwd<2)
				{
					b1stForwd++;
					TRACE("\nFirstForwd=%d",b1stForwd);
				}
			}
			if(weai._bit.backwd==0)
			{
				if(b1stBackwd<2)
					b1stBackwd++;
			}
			bToMap=1;
			if((weai._bit.shutle==1) && (weai._bit.backwd==1) && (weai._bit.wo_brk==1)) //case 1
			{
	//			if(b1stForwd!=1)
				{
					bFinish=g_running.Forward1();            //case 1
					bCheckOK=g_running.OneLineToMapCheck();
					TRACE("\ncase 1");
				}
				if(bFinish)
				{
					pWnd->m_info.Format("Job_List has been finished");
					g_bSendData=0;
				}
			}
			if((weai._bit.shutle==1) && (weai._bit.backwd==0) && (weai._bit.wo_brk==1)) //case 2
			{
				{
					g_running.Backward1();                 // case 2
					g_running.Backward1();                 // case 2
					TRACE("\ncase 2");
				}
				bCheckOK=g_running.OneLineToMapCheck();
			}
			if((weai._bit.shutle==0) && (weai._bit.backwd==0) && (weai._bit.wo_brk==1)) //case 3
			{
				g_running.Backward1();                 // case 3
				bCheckOK=g_running.OneLineToMapCheck();
				TRACE("\ncase 3");
			}
			if((weai._bit.shutle==0) && (weai._bit.backwd==0) && (weai._bit.wo_brk==0)) //case 4
			{
				g_running.Backward1();                // case 4
//				g_running.Backward1();
				bCheckOK=g_running.OneLineToMapCheck();
				TRACE("\ncase 4");
			}
			if((weai._bit.shutle==1) && (weai._bit.backwd==0) && (weai._bit.wo_brk==0)) //case 5,6
			{
				if(bFirstEnable)         // case 5
				{
//					g_running.Backward1();
					g_running.Backward1();
					bCheckOK=g_running.OneLineToMapCheck();
				TRACE("\ncase 5");
					bFirstEnable=0;
				}
				else                     // case 6
				{
					g_running.Backward1();
					bCheckOK=g_running.OneLineToMapCheck();
					bFirstEnable=1;
				TRACE("\ncase 6");
				}
			}
			if((weai._bit.forwd==0) && (weai._bit.shutle==1)  && (weai._bit.backwd==1) && (weai._bit.wo_brk==0))
			{
				g_running.Forward1();                // case 13
				bCheckOK=g_running.OneLineToMapCheck();
				TRACE("\ncase 13");
			}
		}
		if((bBackwd_h==1) && (weai._bit.backwd==0))//  backward falling_dedge;
		{
			bToMap=1;
			if(weai._bit.shutle==1)       // case 7
			{
				g_running.Backward1();
				g_running.Backward1();
				g_running.Backward1();
				TRACE("\ncase 7");
				bCheckOK=g_running.OneLineToMapCheck();
			}
			else                         // case 8
			{
				g_running.Backward1();
				g_running.Backward1();
				bCheckOK=g_running.OneLineToMapCheck(1);
				TRACE("\ncase 8");
			}
		}
		if((bShutle_h==1) && (weai._bit.shutle==0))//  shutle falling_dedge;
		{
			bToMap=1;
			bShutleFlag=1;
			if((weai._bit.backwd==0) && (weai._bit.wo_brk==0))  //case 9
			{
				g_running.Forward1();
				bCheckOK=g_running.OneLineToMapCheck(1);
				TRACE("\ncase 9");
			}
		}
		if((bBackwd_h==0) && (weai._bit.backwd==1))//  backward rising_dedge;
		{
			bToMap=1;
			if(bShutleFlag==0)  
			{
				if(weai._bit.wo_brk==1)
				{
					g_running.Forward1();//case 10
					g_running.Forward1();
					g_running.Forward1();
					g_running.Forward1();          ////////  try
					bCheckOK=g_running.OneLineToMapCheck();
					TRACE("\ncase 10");
				}
				else
				{
					g_running.Forward1();//case 14
					g_running.Forward1();
					g_running.Forward1();
					bCheckOK=g_running.OneLineToMapCheck();
					TRACE("\ncase 14");
				}
			}
			else
				if(weai._bit.wo_brk==1)  //case 11
				{
					g_running.Forward1();
					g_running.Forward1();
					bCheckOK=g_running.OneLineToMapCheck();
				TRACE("\ncase 11");
				}
				else                     // case 12
				{
					g_running.Forward1();
					g_running.Forward1();
					bCheckOK=g_running.OneLineToMapCheck();
				TRACE("\ncase 12");
				}
		}
		if(bShutleFlag==1)  //clear bShutleFlag, if needed
		{
			if((weai._bit.forwd==0) || (weai._bit.fast==0)  || (weai._bit.slow==0))
				bShutleFlag=0;
		}

		if(bCheckOK==FALSE)
		{
			pWnd->m_info.Format("\nData transmission error in running\
				     \n Press Clear when ready.");
	//		pWnd->UpdateData(0);
			g_bSendData=0;
		}
		else
		{
			if((bToMap==1) && (pWnd->m_bResponsed))
			{
				pWnd->m_bResponsed=0;
				::PostMessage(hwnd,WM_SHOWLIST,0,0);
			}
		}
		bEnable_h=weai._bit.enable;
		bBackwd_h=weai._bit.backwd;
		bShutle_h=weai._bit.shutle;
		Wo_brk=weai._bit.wo_brk;

//		EnterCriticalSection(&g_cs);
//		LeaveCriticalSection(&g_cs);

		g_running.Delay();
	}
	g_running.StopRun();
	::PostMessage(hwnd,WM_SHOWLIST,0,0);

	if(timer)
		pWnd->KillTimer(timer);
//	if(bCheckOK==FALSE)
//		AfxMessageBox("Data check error");
	return 0;
}
*/

UINT SendData(LPVOID pParam)//(jian gan)
{
	CWea2Dlg* pWnd=(CWea2Dlg*)pParam;
	HWND hwnd=pWnd->GetSafeHwnd();
	g_bSendData=1;
	g_running.OneLineToMap();
/*	int p=MAP_O;
	MAPO map;
	map._bit.sdata=1;
	map._bit.sclk=1;
	map._bit.latch=1;
	_outp(p,map._byte);
*/
	g_running.StartRun();

	BOOL bEnable_h,bBackwd_h,bWobrk_h,bShutle_h;//,fast;
	BOOL bFirstBack,bToMap;
	BOOL bButtonLocked=0;
	BOOL bDataErr=0;
	WEAI weai;
	int p=WEAVER_I;
	weai._byte=_inp(p);
	bEnable_h=weai._bit.enable;
	bBackwd_h=weai._bit.backwd;
	bWobrk_h=weai._bit.wo_brk;
	bShutle_h=weai._bit.shutle;
//	fast=0;
	bFirstBack=0;
	BOOL bCheckOK;
	int flag=0;
	int err1=-1;
	g_running.m_ErrorMap=-1;
	g_bWoofFinish=0;
	g_running.m_StopNum.RemoveAll();
	
	while(g_bSendData)
	{
		bCheckOK=1;
		bToMap=0;
		for(int k=0;k<10;k++)
			g_running.Delay();

		if(pWnd->CheckIO()==FALSE)  // check hardware
		{
			g_bSendData=0;
			g_running.StopRun();
			::PostMessage(hwnd,WM_ENABLEBUTTON,0,0);
			g_running.DelayMs(100);
			bButtonLocked=0;
			continue;
		}

		BOOL bFinish=0;
		CString info;
		weai._byte=_inp(p);       //  read weai port

//		BOOL bNoSensor=0;
		switch(flag)
		{
		case 0:
// for fast run
			while((weai._bit.fast==0) && (g_bSendData==1))
			{
				if((bEnable_h==1) && (weai._bit.enable==0))  // enable falling_edge
				{
					bToMap=1;
					bFinish=g_running.Forward1();            //case 1
					bCheckOK=g_running.OneLineToMapCheck();
					TRACE("\ncase 1");
					bFirstBack=1;
					if(bButtonLocked==0)
					{
						bButtonLocked=1;
						::PostMessage(hwnd,WM_LOCKBUTTON,0,0);
					}
					if(bFinish)
					{
						pWnd->m_info.Format("Job_List has been finished");
						g_bSendData=0;
					}
				}
				bEnable_h=weai._bit.enable;
				weai._byte=_inp(p);       //  read weai port
				if(pWnd->CheckIO()==FALSE)  // check hardware
				{
					g_bSendData=0;
//					bNoSensor=1;
					g_running.StopRun();
					g_running.Forward1();  //     ============ 8/26 pm
					g_running.Forward1();  //

//					::PostMessage(hwnd,WM_ENABLEBUTTON,0,0);
					g_running.DelayMs(100);
//					::PostMessage(hwnd,WM_SHOWSTATIC,0,1);
					bButtonLocked=0;
						break;
				}
				if((bCheckOK==FALSE) && (g_bDataLock==1))
				{ 
//					if(err1==g_running.m_ErrorMap)
//					{
					g_bSendData=0;
					g_running.Forward1();
					g_bSendData=0;
					g_running.StopRun();
			pWnd->m_info.Format("\nData transmission error in running\
			     \n Map No. %d ?\n  Press Clear when ready.\n",g_running.m_ErrorMap);
					break;
//					}
//					else
//					{
//						err1=g_running.m_ErrorMap;
//						bCheckOK=TRUE;
//					}

⌨️ 快捷键说明

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