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

📄 wea2dlg(箭杆).cpp

📁 该程序实现的是一个在织布厂用的提花机程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
			}	
			g_running.OneLineToMap();  //   03/9/4

			return;
		}
*/		CSetupDlg dlg1;
		if((dlg1.DoModal()==IDOK) && (g_bHardwareReady==TRUE))
		{
			if(CheckIO(m_info) && g_bProgramReady && (bSendData==1))
			{
				g_running.StartRun();
				m_info.Format(IDS_READY+g_language);
			UpdateData(0);
			UpdateList(g_running.m_WritePointer.i._int);
			CWinThread* pT=AfxBeginThread(SendData,this,THREAD_PRIORITY_HIGHEST);//GetSafeHwnd());//,THREAD_PRIORITY_TIME_CRITICAL);  //启动一个线程
			}
			UpdateData(0);
			UpdateList(g_running.m_WritePointer.i._int);
				::PostMessage(hwnd,WM_SHOWLIST,0,0);
			return;
		}
		UpdateData(0);
		UpdateList(0);
				::PostMessage(hwnd,WM_SHOWLIST,0,0);
		
//	}
//	p=PC_INI_O;
//	d=0xaa;
//	_outp(p,d);
}

void CWea2Dlg::OnCancel() 
{
	int p=PC_INI_O;
	int d=0;
	_outp(p,d);
	
	g_bSendData=0;
	if(g_job.GetSize()>0)
		SaveIni(&g_job,&g_running);
	for(int i=0;i<5000;i++)
		g_running.Delay();
	CDialog::OnCancel();
}

void CWea2Dlg::UpdateList(int index)
{
	m_WeaList.DeleteAllItems();
	m_JobList.DeleteAllItems();
	CStringArray SA;
	CString info;
	int n=g_job.GetSize();
	if(index>=n)
		return;
	for(int i=0;i<n;i++)
	{
		SA.RemoveAll();
		CWea* pw=(CWea*)g_job.GetAt(i);
		int ci,cr;//current_i, current_repeat
		int si,ei,r;//start_i, end_i,repeat
		si=pw->m_StartPoint.y+1;
		ei=pw->m_StartPoint.y+pw->m_Size.cy;
		r=pw->m_nRepeat;
		if(i<m_index)
		{
			ci=ei;
			cr=r;
		}
		if(i==m_index)
		{
			ci=g_running.m_WritePointer.i._int+pw->m_StartPoint.y+1;
			cr=g_running.m_WritePointer.WeaRepeat._int;
		}
		else
		{
			ci=0;
			cr=0;
		}

//		info.Format("%s%s",pw->m_WeaPathName,pw->m_WeaFileName);
		info.Format("%s",pw->m_WeaFileName);
		SA.Add(info);
//		info.Format("%d, %d→%d",ci-1,si,ei); // sub 1 
		info.Format("%d, %d→%d",ci,si,ei);  
		SA.Add(info);
		info.Format("%d→%d",cr,r);
		SA.Add(info);
		InsertItemString(&m_WeaList,i, SA);
	}
	m_WeaList.SetItemState(index,LVIS_DROPHILITED ,LVIS_DROPHILITED );

	SA.RemoveAll();
 //	info.Format("%s%s",g_job.m_JobPathName,g_job.m_JobFileName);
	info.Format("%s",g_job.m_JobFileName);
	SA.Add(info);
	info.Format("%d→%d",g_running.m_WritePointer.JobRepeat,g_job.m_nRepeat);
	SA.Add(info);
	InsertItemString(&m_JobList,0, SA);
}

void CWea2Dlg::OnDrawItem(int nIDCtl, LPDRAWITEMSTRUCT lpDrawItemStruct) 
{
	// TODO: Add your message handler code here and/or call default
	
	CDialog::OnDrawItem(nIDCtl, lpDrawItemStruct);
}

LRESULT CWea2Dlg::OnShowList(WPARAM wParam,LPARAM lParam)
{
//		EnterCriticalSection(&g_cs);
		g_running.Delay();
		m_index=g_running.m_WritePointer.WeaIndex._int;
		UpdateList(m_index);
		m_bResponsed=1;
		UpdateData(0);
//		LeaveCriticalSection(&g_cs);
	return 0;
}

LRESULT CWea2Dlg::OnShowStatic(WPARAM wParam,LPARAM lParam)
{
//		EnterCriticalSection(&g_cs);
		g_running.Delay();
		if(lParam==0)
			m_info_num.Format("%d",g_running.m_WritePointer.i._int);
		m_info=m_info_error+m_info_num;
	m_bResponsed=1;
	UpdateData(0);
//		LeaveCriticalSection(&g_cs);
	return 0;
}

void CWea2Dlg::OnPickforward() 
{
/*	CWea* pw=(CWea*) g_job.GetAt(m_index);
	int ei=pw->m_StartPoint.y+pw->m_Size.cy;
	if(g_running.m_WritePointer.i>=ei-1)
		return;   */
	if(g_job.GetSize()==0)
		return;
	g_running.Forward1();
	m_index=g_running.m_WritePointer.WeaIndex._int;
	UpdateList(m_index);
}

void CWea2Dlg::OnPickbackward() 
{
/*	CWea* pw=(CWea*) g_job.GetAt(m_index);
	int si=pw->m_StartPoint.y+1;
	if(g_running.m_WritePointer.i<=si-1)
		return;    */
	if(g_job.GetSize()==0)
		return;
	g_running.Backward1();
	m_index=g_running.m_WritePointer.WeaIndex._int;
	UpdateList(m_index);
}

void CWea2Dlg::OnPicknumber() 
{
	if(g_job.GetSize()==0)
		return;
	CWea* pw=(CWea*) g_job.GetAt(m_index);
	int si=pw->m_StartPoint.y+1;
	int ei=pw->m_StartPoint.y+pw->m_Size.cy;  
	CString info;
	int x;
	int x1=g_running.m_WritePointer.i._int+pw->m_StartPoint.y+1;
	info.Format(IDS_PICKNUMBER+g_language);
	if(m_hDLL)
	{
		x=get_number(info,x1,g_language);
		if(x==x1)
			return;
		if(x>ei || x<si)
		{
			AfxMessageBox(IDS_ERROR_NUMBER+g_language);
			return;
		}
		g_running.m_WritePointer.i._int=x-pw->m_StartPoint.y-1;
		UpdateList(m_index);
	}
	/*	CNumDlg dlg;
	dlg.m_num=g_running.m_WritePointer.i._int+pw->m_StartPoint.y+1;
	dlg.m_info.Format(IDS_PICKNUMBER+g_language,si,ei);
	if(dlg.DoModal()==IDOK)
	{
		if(dlg.m_num>ei || dlg.m_num<si)
		{
			AfxMessageBox(IDS_ERROR_NUMBER+g_language);
			return;
		}
		g_running.m_WritePointer.i._int=dlg.m_num-pw->m_StartPoint.y-1;
		UpdateList(m_index);
	}
*/}

BOOL CWea2Dlg::CheckIO(CString& info)
{
	CString s;
	WEAI weai;
	MAPI mapi;
	g_bHardwareReady=FALSE;
	info.Format(IDS_READY+g_language);
		m_info=info;
	int p=MAP_I;
	mapi._byte=_inp(p);
	if((g_bSendData==1)&&(mapi._bit.no_data==1))
	{
		info.Format(IDS_NO_DATA+g_language);
		s.Format(IDS_READY_CLEAR+g_language);
		info=info+s;
		g_bHardwareReady=FALSE;
		g_running.Forward1();
		g_running.Forward1();
		m_info=info;
		return FALSE;
	}
    if(mapi._bit.ps==0)
	{
		m_power_count++;
		if(m_power_count>=2)
		{
			info.Format(IDS_POWER_ERROR+g_language);
//		info.Format("ERROR:   Power of MAP is not ready.\n");
			s.Format(IDS_READY_CLEAR+g_language);
			info=info+s;
			m_info=info;
			g_bHardwareReady=FALSE;
			m_power_count=0;
			return FALSE;
		}

/*
		CString info1;
		BOOL bLED_flash;
		g_test.m_errn=g_test.TestDataTrans(info1, bLED_flash);
		if(g_test.m_errn && bLED_flash)
		{
			if(g_bFlashLED==0)
				CWinThread* pT=AfxBeginThread(FlashLED,this,THREAD_PRIORITY_LOWEST);//启动一个线程
		}
		info=info+info1;
*/	
//		g_running.Forward1();
	}
	else
		m_power_count=0;
	
// ==============================following : protect===============
	p=WEAVER_I;
//	weai._byte=_inp(p)&0x30;
	weai._byte=_inp(p);
//	TRACE("weai=%d\n",weai._byte);
	if((weai._bit.fast==1) && (m_bSensor123==1) && (mapi._bit.sensor123==0))
	{
		if(m_timer==0)
		{
			m_timer=SetTimer(10,g_time*60000,NULL);  //  1 minute
		}
	}
	if((m_bSensor123==0) && (mapi._bit.sensor123==1))
	{
		p=PC_DISABLE_H_O;
		int d=1;
		_outp(p,d);
		if(m_timer)
			KillTimer(m_timer);
		m_timer=0;
	}
	m_bSensor123=mapi._bit.sensor123;
		
// ==============================above: protect===============
//	CString s;
	if(weai._byte!=0)
	{
		g_running.Delay();
		g_running.Delay();
		g_running.Delay();
		g_running.Delay();
//		weai._byte=_inp(WEAVER_I)&0x30;
		weai._byte=_inp(WEAVER_I);
	}
	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;
		m_info=info;
			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;
}
BOOL CWea2Dlg::CheckIO()
{
//	TRACE("\nCheckIO 0, %s",m_info);
	CString s;
	WEAI weai;
	MAPI mapi;
	g_bHardwareReady=FALSE;
	m_info_error.Format(IDS_READY+g_language);
	int p=MAP_I;
	mapi._byte=_inp(p);
	if(mapi._bit.no_data==1)
	{
		m_info_error.Format(IDS_NO_DATA+g_language);
		s.Format(IDS_READY_CLEAR+g_language);
		m_info=m_info+s;
		g_bHardwareReady=FALSE;
		g_running.Forward1();
		g_running.Forward1();
	TRACE("\nCheckIO 1, %s",m_info);
		return FALSE;
	}
    if(mapi._bit.ps==0)
	{
		m_info_error.Format(IDS_POWER_ERROR+g_language);
//		info.Format("ERROR:   Power of MAP is not ready.\n");
		s.Format(IDS_READY_CLEAR+g_language);
		m_info_error=m_info_error+s;
		g_bHardwareReady=FALSE;
/*
		CString info1;
		BOOL bLED_flash;
		g_test.m_errn=g_test.TestDataTrans(info1, bLED_flash);
		if(g_test.m_errn && bLED_flash)
		{
			if(g_bFlashLED==0)
				CWinThread* pT=AfxBeginThread(FlashLED,this,THREAD_PRIORITY_LOWEST);//启动一个线程
		}
		info=info+info1;
*/	
//		g_running.Forward1();
	TRACE("\nCheckIO 2, %s",m_info);
		return FALSE;
	}
	
// ==============================following : protect===============
	p=WEAVER_I;
//	weai._byte=_inp(p)&0x30;
	weai._byte=_inp(p);
//	TRACE("weai=%d\n",weai._byte);
	if((weai._bit.fast==1) && (m_bSensor123==1) && (mapi._bit.sensor123==0))
	{
		if(m_timer==0)
		{
			m_timer=SetTimer(10,g_time*60000,NULL);  //  1 minute
		}
	}
	if((m_bSensor123==0) && (mapi._bit.sensor123==1))
	{
		p=PC_DISABLE_H_O;
		int d=1;
		_outp(p,d);
		if(m_timer)
			KillTimer(m_timer);
		m_timer=0;
	}
	m_bSensor123=mapi._bit.sensor123;
		
// ==============================above: protect===============
//	CString s;
	if(weai._byte!=0)
	{
		g_running.Delay();
		g_running.Delay();
		g_running.Delay();
		g_running.Delay();
//		weai._byte=_inp(WEAVER_I)&0x30;
		weai._byte=_inp(WEAVER_I);
	}
	if(g_bWoofFinish==1)
	{
		g_bWoofFinish=0;
		if(g_bWoofLock==0)
		{
			m_info_error.Format(IDS_WOOF_BRK+g_language);
			s.Format(IDS_READY_RUN+g_language);
			m_info_error=m_info_error+s;
//			info.Format("ERROR: %x\nWoof break.\n Run when ready.",weai._byte);
			g_bHardwareReady=TRUE;
		}
		else
		{
			m_info_error.Format(IDS_WOOF_BRK+g_language);
			s.Format(IDS_READY_CLEAR+g_language);
			m_info_error=m_info_error+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;
		m_info.Format(IDS_WARP_BRK+g_language);
		s.Format(IDS_READY_RUN+g_language);
		m_info_error=m_info_error+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;
}/*
BOOL CWea2Dlg::CheckIO(CString *info)
{
	TRACE("\nCheckIO 0, %s",*info);
	CString s;
	WEAI weai;
	MAPI mapi;
	g_bHardwareReady=FALSE;
	info->Format(IDS_READY+g_language);
	int p=MAP_I;
	mapi._byte=_inp(p);
	if(mapi._bit.no_data==1)
	{
		info->Format(IDS_NO_DATA+g_language);
		s.Format(IDS_READY_CLEAR+g_language);
		*info=*info+s;
		g_bHardwareReady=FALSE;
		g_running.Forward1();
		g_running.Forward1();
	TRACE("\nCheckIO 1, %s",*info);
		return FALSE;
	}
    if(mapi._bit.ps==0)
	{
		info->Format(IDS_POWER_ERROR+g_language);
//		info.Format("ERROR:   Power of MAP is not ready.\n");
		s.Format(IDS_READY_CLEAR+g_language);
		*info=*info+s;
		g_bHardwareReady=FALSE;
//		g_running.Forward1();
	TRACE("\nCheckIO 2, %s",*info);
		return FALSE;
	}
	
// ==============================following : protect===============
	p=WEAVER_I;
//	weai._byte=_inp(p)&0x30;
	weai._byte=_inp(p);
//	TRACE("weai=%d\n",weai._byte);
	if((weai._bit.fast==1) && (m_bSensor123==1) && (mapi._bit.sensor123==0))
	{
		if(m_timer==0)
		{
			m_timer=SetTimer(10,g_time*60000,NULL);  //  1 minute
		}
	}
	if((m_bSensor123==0) && (mapi._bit.sensor123==1))
	{
		p=PC_DISABLE_H_O;
		int d=1;
		_outp(p,d);
		if(m_timer)
			KillTimer(m_timer);
		m_timer=0;
	}
	m_bSensor123=mapi._bit.sensor123;
		
// ==============================above: protect===============
//	CString s;
	if(weai._byte!=0)
	{
		g_running.Delay();
		g_running.Delay();
		g_running.Delay();
		g_running.Delay();
//		weai._byte=_inp(WEAVER_I)&0x30;
		weai._byte=_inp(WEAVER_I);
	}

⌨️ 快捷键说明

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