calcyliposition.cpp

来自「工程機器人自主作業控制程序」· C++ 代码 · 共 268 行

CPP
268
字号
// CalCyliPosition.cpp : implementation file
//

#include "stdafx.h"
#include "ConRobot.h"
#include "CalCyliPosition.h"
#include "WBButton.h"
#include "channel.h"
#include "conio.h"
#include "stdio.h"
#include "ConRobotDlg.h"

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

extern unsigned short m_adbase,m_dabase;
/////////////////////////////////////////////////////////////////////////////
// CCalCyliPosition dialog

CCalCyliPosition::CCalCyliPosition(CWnd* pParent /*=NULL*/)
	: CDialog(CCalCyliPosition::IDD, pParent)
{

	//{{AFX_DATA_INIT(CCalCyliPosition)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CCalCyliPosition::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CCalCyliPosition)
	DDX_Control(pDX, IDOK, m_OK);
	DDX_Control(pDX, IDC_RESET, m_Reset);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CCalCyliPosition, CDialog)
	//{{AFX_MSG_MAP(CCalCyliPosition)
	ON_BN_CLICKED(IDC_RESET, OnReset)
	ON_WM_VSCROLL()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CCalCyliPosition message handlers


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

	m_Reset.LoadBitmaps (IDB_BUTTON,5, 5, 5, 5, 4 );
	m_OK.LoadBitmaps (IDB_BUTTON,5, 5, 5, 5, 4 );
	
	CString strText1;
	CScrollBar* pSB1 = (CScrollBar*) GetDlgItem(IDC_SCROLLBAR1);
	pSB1->SetScrollRange(nMin, nMax);
    pSB1->SetScrollPos(cy1);
	strText1.Format("%3.2f", pSB1->GetScrollPos()/50.0-5);
	SetDlgItemText(IDC_CYLINDER1, strText1);

	CString strText2;
	CScrollBar* pSB2 = (CScrollBar*) GetDlgItem(IDC_SCROLLBAR7);
	pSB2->SetScrollRange(nMin, nMax);
    pSB2->SetScrollPos(cy2);
	strText2.Format("%3.2f", pSB2->GetScrollPos()/50.0-5);
	SetDlgItemText(IDC_CYLINDER2, strText2);
	
	CString strText3;
	CScrollBar* pSB3 = (CScrollBar*) GetDlgItem(IDC_SCROLLBAR8);
	pSB3->SetScrollRange(nMin, nMax);
    pSB3->SetScrollPos(cy3);
	strText3.Format("%3.2f", pSB3->GetScrollPos()/50.0-5);
	SetDlgItemText(IDC_CYLINDER3, strText3);

	CString strText4;
	CScrollBar* pSB4 = (CScrollBar*) GetDlgItem(IDC_SCROLLBAR9);
	pSB4->SetScrollRange(nMin, nMax);
    pSB4->SetScrollPos(cy4);
	strText4.Format("%3.2f", pSB4->GetScrollPos()/50.0-5);
	SetDlgItemText(IDC_CYLINDER4, strText4);

///	W_726_DA(CONTROLA,1800);
//	W_726_DA(CONTROLB,2048);
//	W_726_DA(CONTROLC,2020);
//	W_726_DA(CONTROLD,2020);


	return  TRUE; // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CCalCyliPosition::OnReset() 
{
	// TODO: Add your control notification handler code here
	CScrollBar*	pSlide;
	CString strText=" 0.00";

	cy1=cy2=cy3=cy4=250;
	pSlide=(CScrollBar*) GetDlgItem(IDC_SCROLLBAR1);
	pSlide->SetScrollPos(cy1);
    SetDlgItemText(IDC_CYLINDER1, strText);
	pSlide=(CScrollBar*)GetDlgItem(IDC_SCROLLBAR7);
	pSlide->SetScrollPos(cy2);
    SetDlgItemText(IDC_CYLINDER2, strText);
	pSlide=(CScrollBar*)GetDlgItem(IDC_SCROLLBAR8);
	pSlide->SetScrollPos(cy3);
    SetDlgItemText(IDC_CYLINDER3, strText);
	pSlide=(CScrollBar*)GetDlgItem(IDC_SCROLLBAR9);
	pSlide->SetScrollPos(cy4);
    SetDlgItemText(IDC_CYLINDER4, strText);
}



void CCalCyliPosition::OnVScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	CString strText;
	double voltage=0;
	int outdata=0;
	int nTemp1, nTemp2=1;
	double m2=5.0;
    // Two trackbars are sending
    //  HSCROLL messages (different processing)
	nTemp1=pScrollBar->GetScrollPos();
    switch(pScrollBar->GetDlgCtrlID()) 
	{
    case IDC_SCROLLBAR1:
		    switch(nSBCode)
			{
			case SB_THUMBPOSITION:
				pScrollBar->SetScrollPos(nPos);
				nTemp1=nPos;	//唐新星改
				break;
			case SB_LINELEFT: // left arrow button
				if ((nTemp1 - nTemp2) > nMin) {
					nTemp1 -= nTemp2;
				}
				else {
					nTemp1 = nMin;
				}
				pScrollBar->SetScrollPos(nTemp1);
				break;

			case SB_LINERIGHT: // right arrow button
				if ((nTemp1 + nTemp2) < nMax) {
					nTemp1 += nTemp2;
				}
				else {
					nTemp1 = nMax;
				}
				pScrollBar->SetScrollPos(nTemp1);
				break;
			}
		voltage=pScrollBar->GetScrollPos()/50.0-5;

		outdata=(int)((-voltage+m2)*4095/10.0);
//		W_726_DA(CONTROLA,outdata);
        strText.Format("%3.2f",voltage);
        SetDlgItemText(IDC_CYLINDER1, strText);
        break;
    case IDC_SCROLLBAR7:
		    switch(nSBCode)
			{
			case SB_THUMBPOSITION:
				pScrollBar->SetScrollPos(nPos);
				nTemp1=nPos;	//唐新星改
				break;
			case SB_LINELEFT: // left arrow button
				if ((nTemp1 - nTemp2) > nMin) {
					nTemp1 -= nTemp2;
				}
				else {
					nTemp1 = nMin;
				}
				pScrollBar->SetScrollPos(nTemp1);
				break;
			case SB_LINERIGHT: // right arrow button
				if ((nTemp1 + nTemp2) < nMax) {
					nTemp1 += nTemp2;
				}
				else {
					nTemp1 = nMax;
				}
				pScrollBar->SetScrollPos(nTemp1);
				break;
			}
		voltage=pScrollBar->GetScrollPos()/50.0-5;
		outdata=(int)((voltage+m2)*4095/10.0);
//		W_726_DA(CONTROLB,outdata);
        strText.Format("%3.2f", voltage);
        SetDlgItemText(IDC_CYLINDER2, strText);
        break;
    case IDC_SCROLLBAR8:
		    switch(nSBCode)
			{
			case SB_THUMBPOSITION:
				pScrollBar->SetScrollPos(nPos);
				nTemp1=nPos;	//唐新星改v
				break;
			case SB_LINELEFT: // left arrow button
				if ((nTemp1 - nTemp2) > nMin) {
					nTemp1 -= nTemp2;
				}
				else {
					nTemp1 = nMin;
				}
				pScrollBar->SetScrollPos(nTemp1);
				break;
			case SB_LINERIGHT: // right arrow button
				if ((nTemp1 + nTemp2) < nMax) {
					nTemp1 += nTemp2;
				}
				else {
					nTemp1 = nMax;
				}
				pScrollBar->SetScrollPos(nTemp1);
				break;
			}
		voltage=pScrollBar->GetScrollPos()/50.0-5;
		outdata=(int)((-voltage+m2)*4095/10.0);
//		W_726_DA(CONTROLC,outdata);
        strText.Format("%3.2f", voltage);
        SetDlgItemText(IDC_CYLINDER3, strText);
        break;
    case IDC_SCROLLBAR9:
		    switch(nSBCode)
			{
			case SB_THUMBPOSITION:
				pScrollBar->SetScrollPos(nPos);
				nTemp1=nPos;	//唐新星改
				break;
			case SB_LINELEFT: // left arrow button
				if ((nTemp1 - nTemp2) > nMin) {
					nTemp1 -= nTemp2;
				}
				else {
					nTemp1 = nMin;
				}
				pScrollBar->SetScrollPos(nTemp1);
				break;
			case SB_LINERIGHT: // right arrow button
				if ((nTemp1 + nTemp2) < nMax) {
					nTemp1 += nTemp2;
				}
				else {
					nTemp1 = nMax;
				}
				pScrollBar->SetScrollPos(nTemp1);
				break;
			}
		voltage=pScrollBar->GetScrollPos()/50.0-5;
        strText.Format("%3.2f",voltage);
		outdata=(int)((voltage+m2)*4095/10.0);
//    	W_726_DA(CONTROLD,outdata);
        SetDlgItemText(IDC_CYLINDER4, strText);
        break;
    }
	CDialog::OnVScroll(nSBCode, nPos, pScrollBar);
}

⌨️ 快捷键说明

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