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

📄 wea2dlg(箭杆).cpp

📁 该程序实现的是一个在织布厂用的提花机程序
💻 CPP
📖 第 1 页 / 共 4 页
字号:
// wea2Dlg.cpp : implementation file
//
//////  =========   箭杆织机  ======== 
#include "stdafx.h"
#include "wea2.h"
//#include "biling.h" 
#include "wea2Dlg.h"
#include "setupdlg.h"
#include "keybdlg.h"
#include "TestDlg.h"
#include "jobdlg.h"
//#include <conio.h>
//#include "FileDlg.h"
//#include "weaeditDlg.h"
//#include "WeaColorDlg.h"

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

/////////////////////////////////////////////////////////////////////////////
// CAboutDlg dialog used for App About

class CAboutDlg : public CDialog
{
public:
	CAboutDlg();

// Dialog Data
	//{{AFX_DATA(CAboutDlg)
	enum { IDD = IDD_ABOUTBOX };
	//}}AFX_DATA

	// ClassWizard generated virtual function overrides
	//{{AFX_VIRTUAL(CAboutDlg)
	protected:
	virtual void DoDataExchange(CDataExchange* pDX);    // DDX/DDV support
	//}}AFX_VIRTUAL

// Implementation
protected:
	//{{AFX_MSG(CAboutDlg)
	//}}AFX_MSG
	DECLARE_MESSAGE_MAP()
};

CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
	//{{AFX_DATA_INIT(CAboutDlg)
	//}}AFX_DATA_INIT
}

void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CAboutDlg)
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
	//{{AFX_MSG_MAP(CAboutDlg)
		// No message handlers
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CWea2Dlg dialog  
 
CWea2Dlg::CWea2Dlg(CWnd* pParent /*=NULL*/)
	: CDialog(CWea2Dlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CWea2Dlg)
	m_info = _T("");
	//}}AFX_DATA_INIT
	// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
	m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}

void CWea2Dlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CWea2Dlg)
	DDX_Control(pDX, IDC_STATIC_INFO, m_static_info);
	DDX_Control(pDX, IDC_LIST_WEA, m_WeaList);
	DDX_Control(pDX, IDC_LIST_JOB, m_JobList);
	DDX_Text(pDX, IDC_STATIC_INFO, m_info);
	//}}AFX_DATA_MAP
}

BEGIN_MESSAGE_MAP(CWea2Dlg, CDialog)
	//{{AFX_MSG_MAP(CWea2Dlg)
	ON_WM_SYSCOMMAND()
	ON_WM_PAINT()
	ON_WM_QUERYDRAGICON()
	ON_BN_CLICKED(IDC_SETUP, OnSetup)
	ON_WM_DRAWITEM()
	ON_BN_CLICKED(IDC_PICKFORWARD, OnPickforward)
	ON_BN_CLICKED(IDC_PICKNUMBER, OnPicknumber)
	ON_BN_CLICKED(IDC_PICKBACKWARD, OnPickbackward)
	ON_BN_CLICKED(IDC_CLEAR, OnClear)
	ON_WM_TIMER()
	ON_BN_CLICKED(IDC_TEST, OnTest)
	ON_BN_CLICKED(IDC_FILEOP, OnFileop)
	ON_BN_CLICKED(IDC_CREATE_JOB, OnCreateJob)
	ON_WM_DESTROY()
	//}}AFX_MSG_MAP
	ON_MESSAGE(WM_SHOWLIST,OnShowList)
	ON_MESSAGE(WM_SHOWSTATIC,OnShowStatic)
	ON_MESSAGE(WM_LOCKBUTTON,OnLockButton)
	ON_MESSAGE(WM_ENABLEBUTTON,OnEnableButton)
	ON_MESSAGE(WM_LANGUAGE,OnLanguage)
	ON_MESSAGE(WM_UPDATEINFO,OnUpdateInfo)
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CWea2Dlg message handlers
LRESULT CWea2Dlg::OnUpdateInfo(WPARAM wParam,LPARAM lParam)
{
	if(g_running.m_ErrorMap>0)
	{
		m_info_error.Format(IDS_DATA_ERROR+g_language,g_running.m_ErrorMap);
	}
	CString s;
	int n=g_running.m_StopNum.GetSize();
	for(int i=0;i<n;i++)
	{
		s.Format("\nStop at number %d",g_running.m_StopNum.GetAt(i));
		m_info_error+=s;
	}
	m_info=m_info_error+m_info_num;
	g_running.m_StopNum.RemoveAll();
	UpdateData(0);
//	m_bResponsed=1;
	return 0;
}
LRESULT CWea2Dlg::OnLanguage(WPARAM wParam,LPARAM lParam)
{
	CBiling bil;
	bil.m_language=(LANGUAGE) wParam;
	UINT id[]={IDC_SETUP,IDC_CLEAR,IDC_FILEOP,IDC_CREATE_JOB,
		IDC_PICKNUMBER,IDC_PICKFORWARD,IDC_PICKBACKWARD,IDC_TEST,IDCANCEL};
	UINT str[]={IDS_SETUP,IDS_CLEAR,IDS_FILE_MANAGE,IDS_CREATE_JOB,
		IDS_PICKNUMBER,IDS_PICKFORWARD,IDS_PICKBACKWARD,IDS_TEST,IDS_EXIT};

	int num=sizeof(id)/sizeof(UINT);
	bil.m_StrID=str;
	bil.m_ResID=id;
	bil.Set(this,num);
	CStringArray SA;
	switch(wParam)
	{
	case 0:
		SA.Add("Wea Filename");
		SA.Add(" Pick Number ");
		SA.Add(" Repeat ");
//		ChangeListLanguage(&m_WeaList,SA);
		InitialList(&m_WeaList,SA);

		SA.RemoveAll();
		SA.Add("Job_List Filename");
		SA.Add("Job Repeat");
		InitialList(&m_JobList,SA);
		break;
	case 1:
	default:
		SA.Add("  花样文件  ");
		SA.Add("    纬线数      ");
		SA.Add("花样重复");
		InitialList(&m_WeaList,SA);

		SA.RemoveAll();
		SA.Add("工作单文件     ");
		SA.Add("工作单重复");
		InitialList(&m_JobList,SA);
	}
/*	CStringArray SA;
	UINT list_head_id1[]={IDS_WEAFILE,IDS_PICK_NUM,IDS_WEAREPEAT};
	num=sizeof(list_head_id1)/sizeof(UINT);
	CString  list_head;
	SA.RemoveAll();
	for(int i=0;i<num;i++)
	{
		list_head.Format(list_head_id1[i]+wParam);
		SA.Add(list_head);
	}
	InitialList(&m_WeaList,SA);
	SA.RemoveAll();
	UINT list_head_id2[]={IDS_JOBFILE,IDS_JOBREPEAT};
	num=sizeof(list_head_id2)/sizeof(UINT);
	for(i=0;i<num;i++)
	{
		list_head.Format(list_head_id2[i]+wParam);
		SA.Add(list_head);
	}

	InitialList(&m_JobList,SA);
*/	
	CWnd* pWnd=GetParent( );
	if(pWnd)
	{
		HWND hwnd=pWnd->GetSafeHwnd();
		::PostMessage(hwnd,WM_LANGUAGE,wParam,0);
	}
	return 0L;
}


BOOL CWea2Dlg::OnInitDialog()
{
	CDialog::OnInitDialog();

	// Add "About..." menu item to system menu.

	// IDM_ABOUTBOX must be in the system command range.
	ASSERT((IDM_ABOUTBOX & 0xFFF0) == IDM_ABOUTBOX);
	ASSERT(IDM_ABOUTBOX < 0xF000);

	CMenu* pSysMenu = GetSystemMenu(FALSE);
	if (pSysMenu != NULL)
	{
		CString strAboutMenu;
		strAboutMenu.LoadString(IDS_ABOUTBOX);
		if (!strAboutMenu.IsEmpty())
		{
			pSysMenu->AppendMenu(MF_SEPARATOR);
			pSysMenu->AppendMenu(MF_STRING, IDM_ABOUTBOX, strAboutMenu);
		}
	}

	// Set the icon for this dialog.  The framework does this automatically
	//  when the application's main window is not a dialog
	SetIcon(m_hIcon, TRUE);			// Set big icon
	SetIcon(m_hIcon, FALSE);		// Set small icon
	
	// TODO: Add extra initialization here
	// pc-enable=0
//CWeaColorDlg dlg;
//RGBQUAD rgb;
//	rgb.rgbRed=255;
//	rgb.rgbGreen=0;
//	rgb.rgbBlue=0;

//dlg.m_rgb=rgb;
//dlg.DoModal();
	int p=PC_ENABLE_L_O;
	int d=0;
	_outp(p,d);
	_outp(p,d);
	p=PC_DISABLE_H_O;
	_outp(p,d);
	_outp(p,d);
	p=PC_INI_O;
	d=0xaa;
	d=0xaa;
	_outp(p,d);

	p=SELF_TEST_SEL_O;
	d=0;
	_outp(p,d);
	_outp(p,d);

	m_bSensor123=0;

	g_bDataLock=1;
	g_bWoofLock=0;
//======================版本信息

	CCoverWnd::ShowSplashScreen(this,0);
	m_static_info.SetBkColor();
	//===================界面最大化
	RECT top;
	top.left=top.top=0;
	top.right=GetSystemMetrics(SM_CXSCREEN);
	top.bottom=GetSystemMetrics(SM_CYSCREEN);
	top.bottom-=20;
	UINT cont[]={IDC_SETUP,IDC_CLEAR,IDC_LIST_WEA,IDC_LIST_JOB,IDC_STATIC_INFO,
		IDC_PICKNUMBER,IDC_PICKFORWARD,IDC_PICKBACKWARD,IDC_TEST,IDC_FILEOP,IDCANCEL,IDC_CREATE_JOB};
	ReSize(this,top,cont,sizeof(cont)/sizeof(UINT));

	_outp(PC_CLEAR_FPGALOCK_O,1);
	m_bResponsed=1;

    m_power_count=0;
	

	m_hDLL=NULL;
	m_hDLL = LoadLibrary("KeyB");
	if (m_hDLL != NULL)
	{
		get_number=(GET_NUMBER)GetProcAddress(m_hDLL, "GetNumber");
	    if ( !get_number)
	    {
		    AfxMessageBox("Can't load dll function ---GetNumber ");
			FreeLibrary(m_hDLL);
			m_hDLL=NULL;
		}
	}
	else
		AfxMessageBox("Can't load  DLL");
	
	//=================  列表初始化
	if(g_language==E)
	{
		OnLanguage(0,0);
	}
	else
	{
		OnLanguage(1,0);
	}

	//  调入工作单
	g_job.RemoveAll();
	m_Warp_break=1;
	m_timer=0;
//	m_language=E;
	BOOL s=LoadIni(g_job,g_running);
	if(s)     //  调入工作单成功
	{	
		BOOL bCheckMapNumber=0;
		m_index=g_running.m_WritePointer.WeaIndex._int;
		UpdateList(m_index);
		g_job.ReArrange();
		g_running.Initialize(&g_job);
		g_bProgramReady=1;

//		BOOL bLED_flash;

		bCheckMapNumber=g_test.CheckMapNumber(m_info,g_job.m_Width/4);
		if(bCheckMapNumber && CheckIO())
		{
			CString s1,s2;
			s1.Format(IDS_MAPNUMBER+g_language,g_test.m_nMap);
			s2.Format(IDS_READY+g_language);
			m_info=s1+s2;
			UpdateData(0);
			g_running.StartRun();
			CWinThread* pT=AfxBeginThread(SendData,this,THREAD_PRIORITY_HIGHEST);//GetSafeHwnd());//,THREAD_PRIORITY_TIME_CRITICAL);  //启动一个线程
		}
		UpdateData(0);
	}
	else
	{
		m_index=0;                   //  调入工作单失败
		m_info.Format(IDS_JOB_FAILURE+g_language);
		CString info;
		if(CheckIO(info)==FALSE)
			m_info=m_info+info;
		UpdateData(0);
	}
//	g_event.SetEvent();	
	return TRUE;  // return TRUE  unless you set the focus to a control
}

BOOL  CWea2Dlg::LoadIni(CJobList& pj,CRunning& pr)
{
	char temp[100];
	GetPrivateProfileString( "Board Number", "board","",temp,100,"wea2.ini");
	sscanf(temp, "%d", &pj.m_Width );
	pj.m_Width*=4;
	GetPrivateProfileString( "Hole Number", "hole","",temp,100,"wea2.ini");
	sscanf(temp, "%d", &pj.m_Mode );
	GetPrivateProfileString( "Time", "time","",temp,100,"wea2.ini");
	sscanf(temp, "%d", &g_time );
	GetPrivateProfileString( "Job File", "Filename","",temp,100,"wea2.ini");
	if(pj.OpenDocument(temp)==FALSE)
	{
		g_job.RemoveAll();
		return FALSE;
	}
/*	int q;
	GetPrivateProfileString( "Job Repeat", "repeat","",temp,100,"wea2.ini");
	sscanf(temp, "%d", &q);
	pr.m_WritePointer.JobRepeat._int=q;
	GetPrivateProfileString( "Wea Index", "index","",temp,100,"wea2.ini");
	sscanf(temp, "%d", &q);
	pr.m_WritePointer.WeaIndex._int=q;
	GetPrivateProfileString( "Wea Repeat", "repeat","",temp,100,"wea2.ini");
	sscanf(temp, "%d", &q);
	pr.m_WritePointer.WeaRepeat._int=q;
	GetPrivateProfileString( "Wea Pick", "pick","",temp,100,"wea2.ini");
	sscanf(temp, "%d", &q);
	pr.m_WritePointer.i._int=q;
*/
	g_running.GetRecord();
	if((g_running.m_WritePointer.WeaIndex._int<0) ||
		(g_running.m_WritePointer.WeaIndex._int>=g_job.GetSize()))
	{
		g_running.m_WritePointer.ClearPointer();
		return TRUE;
	}
	CWea* pw=(CWea*) g_job.GetAt(g_running.m_WritePointer.WeaIndex._int);
	int n=pw->m_Size.cy;
	if((g_running.m_WritePointer.i._int<0) || 
		(g_running.m_WritePointer.i._int>=n))
	{
		g_running.m_WritePointer.ClearPointer();
		return TRUE;
	}
	if((g_running.m_WritePointer.WeaRepeat._int<0) || 
		((g_running.m_WritePointer.WeaRepeat._int>pw->m_nRepeat) 
		  && (pw->m_nRepeat!=0)))
	{
		g_running.m_WritePointer.ClearPointer();
		return TRUE;
	}
	if((g_running.m_WritePointer.JobRepeat._int<0) || 
		((g_running.m_WritePointer.JobRepeat._int>g_job.m_nRepeat)
		  && (g_job.m_nRepeat!=0)))
	{
		g_running.m_WritePointer.ClearPointer();
		return TRUE;
	}
	return TRUE;
}

void CWea2Dlg::OnSysCommand(UINT nID, LPARAM lParam)
{
	if ((nID & 0xFFF0) == IDM_ABOUTBOX)
	{
		CAboutDlg dlgAbout;
		dlgAbout.DoModal();
	}
	else
	{
		CDialog::OnSysCommand(nID, lParam);
	}
}

// If you add a minimize button to your dialog, you will need the code below
//  to draw the icon.  For MFC applications using the document/view model,
//  this is automatically done for you by the framework.

void CWea2Dlg::OnPaint() 
{
	UpdateList(m_index);
	if (IsIconic())
	{
		CPaintDC dc(this); // device context for painting

		SendMessage(WM_ICONERASEBKGND, (WPARAM) dc.GetSafeHdc(), 0);

		// Center icon in client rectangle
		int cxIcon = GetSystemMetrics(SM_CXICON);
		int cyIcon = GetSystemMetrics(SM_CYICON);
		CRect rect;
		GetClientRect(&rect);
		int x = (rect.Width() - cxIcon + 1) / 2;
		int y = (rect.Height() - cyIcon + 1) / 2;

		// Draw the icon
		dc.DrawIcon(x, y, m_hIcon);
	}
	else
	{
		CRect rect;
		CPaintDC dc(this);
		GetClientRect(rect);
//		dc.FillSolidRect(rect,RGB(52,120,52));   color bk of dialog
		CDialog::OnPaint();
	}
}

// The system calls this to obtain the cursor to display while the user drags
//  the minimized window.
HCURSOR CWea2Dlg::OnQueryDragIcon()
{
	return (HCURSOR) m_hIcon;
}

void CWea2Dlg::OnSetup() 
{
	BOOL bSendData=g_bSendData;
	g_bSendData=0;
	g_running.DelayMs(50);	

//	int p=PC_INI_O;
//	int d=0;
//	_outp(p,d);
	
//	char password1[100];
//	char password2[100];
//	GetPrivateProfileString( "Password", "Password","",password1,100,"wea2.ini");
//	CKeyBDlg dlg;
//	dlg.m_info.Format(IDS_PASSWORD+g_language);
//	dlg.m_bShow=0;
//	if(dlg.DoModal()==IDOK)
//	{
		HWND hwnd=GetSafeHwnd();
//		strcpy(password2,dlg.m_sEdit);
/*		if(strcmp(password1,password2))   
		{                                  // not passed
			g_bSendData=bSendData;   //   03/9/4
			p=PC_INI_O;
			d=0xaa;
			_outp(p,d);
			if(g_bSendData)//   03/9/4
			{
				g_running.StartRun();  //   03/9/4
				CWinThread* pT=AfxBeginThread(SendData,this,THREAD_PRIORITY_HIGHEST);//ABOVE_NORMAL  );//GetSafeHwnd());//,THREAD_PRIORITY_TIME_CRITICAL);  //启动一个线程

⌨️ 快捷键说明

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