📄 test880dlg.cpp
字号:
// test880Dlg.cpp : implementation file
//
#include "stdafx.h"
#include "test880.h"
#include "test880Dlg.h"
#include "KPCI882.h"
#include "speed.h"
#include "songyun.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern ULONG kh;
extern UINT zh;
extern UINT ms;
extern UINT V;
extern unsigned short fx;
extern unsigned short m_v_sv;
extern unsigned short m_v_a;
extern unsigned short m_v_v;
extern unsigned long m_v_p;
int m_timer;
int x4=0;
int x3=0;
int x2=0;
int x1=0;
int y4=0;
int y3=0;
int y2=0;
int y1=0;
extern outputx;
extern outputy;
int shuju[1000];
int Intvalue;
/////////////////////////////////////////////////////////////////////////////
// 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()
/////////////////////////////////////////////////////////////////////////////
// CTest880Dlg dialog
CTest880Dlg::CTest880Dlg(CWnd* pParent /*=NULL*/)
: CDialog(CTest880Dlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CTest880Dlg)
m_mva = 0;
m_mvsv = 0;
m_mvv = 0;
m_p = 0;
m_rax = 0;
m_ray = 0;
m_rlx = 0;
m_rly = 0;
m_rvx = 0;
m_rvy = 0;
m_uxw = 0;
m_dxw = 0;
m_m = 1;
m_bits = 0;
m_readbyte = 0;
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CTest880Dlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CTest880Dlg)
DDX_Control(pDX, IDC_HLMT2, m_hlmt2);
DDX_Control(pDX, IDC_HLMT1, m_hlmt1);
DDX_Control(pDX, IDC_LMTMD1, m_lmtmd);
DDX_Control(pDX, IDC_DY9, m_y9);
DDX_Control(pDX, IDC_DY8, m_y8);
DDX_Control(pDX, IDC_DY7, m_y7);
DDX_Control(pDX, IDC_DY6, m_y6);
DDX_Control(pDX, IDC_DY4, m_y4);
DDX_Control(pDX, IDC_DY3, m_y3);
DDX_Control(pDX, IDC_DY2, m_y2);
DDX_Control(pDX, IDC_DY12, m_y12);
DDX_Control(pDX, IDC_DY11, m_y11);
DDX_Control(pDX, IDC_DY10, m_y10);
DDX_Control(pDX, IDC_DY1, m_y1);
DDX_Control(pDX, IDC_DX9, m_x9);
DDX_Control(pDX, IDC_DX8, m_x8);
DDX_Control(pDX, IDC_DX7, m_x7);
DDX_Control(pDX, IDC_DX6, m_x6);
DDX_Control(pDX, IDC_DX4, m_x4);
DDX_Control(pDX, IDC_DX3, m_x3);
DDX_Control(pDX, IDC_DX2, m_x2);
DDX_Control(pDX, IDC_DX12, m_x12);
DDX_Control(pDX, IDC_DX11, m_x11);
DDX_Control(pDX, IDC_DX10, m_x10);
DDX_Control(pDX, IDC_DSY6, m_dsy6);
DDX_Control(pDX, IDC_DSY5, m_dsy5);
DDX_Control(pDX, IDC_DSY4, m_dsy4);
DDX_Control(pDX, IDC_DSY3, m_dsy3);
DDX_Control(pDX, IDC_DSY2, m_dsy2);
DDX_Control(pDX, IDC_DSY1, m_dsy1);
DDX_Control(pDX, IDC_DSX6, m_dsx6);
DDX_Control(pDX, IDC_DSX5, m_dsx5);
DDX_Control(pDX, IDC_DSX4, m_dsx4);
DDX_Control(pDX, IDC_DSX3, m_dsx3);
DDX_Control(pDX, IDC_DSX2, m_dsx2);
DDX_Control(pDX, IDC_DSX1, m_dsx1);
DDX_Control(pDX, IDC_DX1, m_x1);
DDX_Control(pDX, IDC_LD, m_ld);
DDX_Control(pDX, IDC_MS, m_ms);
DDX_Control(pDX, IDC_ZH, m_zh);
DDX_Control(pDX, IDC_KH, m_kh);
DDX_Text(pDX, IDC_MVA, m_mva);
DDV_MinMaxLong(pDX, m_mva, 1, 8000);
DDX_Text(pDX, IDC_MVSV, m_mvsv);
DDV_MinMaxLong(pDX, m_mvsv, 1, 8000);
DDX_Text(pDX, IDC_MVV, m_mvv);
DDV_MinMaxLong(pDX, m_mvv, 1, 8000);
DDX_Text(pDX, IDC_P, m_p);
DDV_MinMaxLong(pDX, m_p, 0, 268435455);
DDX_Text(pDX, IDC_RAX, m_rax);
DDX_Text(pDX, IDC_RAY, m_ray);
DDX_Text(pDX, IDC_RLX, m_rlx);
DDX_Text(pDX, IDC_RLY, m_rly);
DDX_Text(pDX, IDC_RVX, m_rvx);
DDX_Text(pDX, IDC_RVY, m_rvy);
DDX_Text(pDX, IDC_UXW, m_uxw);
DDX_Text(pDX, IDC_DXW, m_dxw);
DDX_Text(pDX, IDC_M, m_m);
DDV_MinMaxInt(pDX, m_m, 1, 500);
DDX_Text(pDX, IDC_BITS, m_bits);
DDX_Text(pDX, IDC_READBYTE1, m_readbyte);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CTest880Dlg, CDialog)
//{{AFX_MSG_MAP(CTest880Dlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_SC, OnSc)
ON_BN_CLICKED(IDC_QD, OnQd)
ON_BN_CLICKED(IDC_BUTTON1, OnButton1)
ON_BN_CLICKED(IDC_BUTTON2, OnButton2)
ON_BN_CLICKED(IDC_STATE, OnState)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_TZH, OnTzh)
ON_BN_CLICKED(IDC_QL, OnQl)
ON_BN_CLICKED(IDC_DX1, OnDx1)
ON_BN_CLICKED(IDC_DX2, OnDx2)
ON_BN_CLICKED(IDC_DY1, OnDy1)
ON_BN_CLICKED(IDC_DY2, OnDy2)
ON_BN_CLICKED(IDC_XW, OnXw)
ON_BN_CLICKED(IDC_EXIT, OnExit)
ON_BN_CLICKED(IDC_JT, OnJt)
ON_BN_CLICKED(IDC_QX, OnQx)
ON_BN_CLICKED(IDC_SETM, OnSetm)
ON_BN_CLICKED(IDC_AUTODEC, OnAutodec)
ON_BN_CLICKED(IDC_BUTTON5, OnButton5)
ON_BN_CLICKED(IDC_READBYTE, OnReadbyte)
ON_BN_CLICKED(IDC_DVOUT, OnDvout)
ON_BN_CLICKED(IDC_STOPOUT, OnStopout)
ON_BN_CLICKED(IDC_LVOUT, OnLvout)
ON_BN_CLICKED(IDC_BUTTON4, OnButton4)
ON_BN_CLICKED(IDC_BUTTON6, OnButton6)
ON_BN_CLICKED(IDC_BUTTON7, OnButton7)
ON_BN_CLICKED(IDC_XIANWEIMOSHI, OnXianweimoshi)
ON_BN_CLICKED(IDC_INTENABLECOMP, OnIntenablecomp)
ON_BN_CLICKED(IDC_INTDISABLECOMP, OnIntdisablecomp)
ON_BN_CLICKED(IDC_365INABLE, On365inable)
ON_BN_CLICKED(IDC_365DISABLE, On365disable)
ON_BN_CLICKED(IDC_ISR, OnIsr)
ON_BN_CLICKED(IDC_INTPULSE, OnIntpulse)
ON_BN_CLICKED(IDC_BUTTON8, OnButton8)
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CTest880Dlg message handlers
BOOL CTest880Dlg::OnInitDialog()
{
m_mva=1000;
m_mvsv=1000;
m_mvv=1000;
m_p=10000;
m_rax=0;
m_rvx=0;
m_rlx=0;
m_ray=0;
m_rvy=0;
m_rly=0;
UpdateData(FALSE);
CDialog::OnInitDialog();
m_x1.LoadBitmaps(IDB_LOW);
m_x2.LoadBitmaps(IDB_LOW);
m_y1.LoadBitmaps(IDB_LOW);
m_y2.LoadBitmaps(IDB_LOW);
m_x3.LoadBitmaps(IDB_RED);
m_x4.LoadBitmaps(IDB_RED);
m_x6.LoadBitmaps(IDB_RED);
m_x7.LoadBitmaps(IDB_RED);
m_x8.LoadBitmaps(IDB_RED);
m_x9.LoadBitmaps(IDB_RED);
m_x10.LoadBitmaps(IDB_RED);
m_x11.LoadBitmaps(IDB_RED);
m_x12.LoadBitmaps(IDB_RED);
m_y3.LoadBitmaps(IDB_RED);
m_y4.LoadBitmaps(IDB_RED);
m_y6.LoadBitmaps(IDB_RED);
m_y7.LoadBitmaps(IDB_RED);
m_y8.LoadBitmaps(IDB_RED);
m_y9.LoadBitmaps(IDB_RED);
m_y10.LoadBitmaps(IDB_RED);
m_y11.LoadBitmaps(IDB_RED);
m_y12.LoadBitmaps(IDB_RED);
m_dsx1.LoadBitmaps(IDB_RED);
m_dsx2.LoadBitmaps(IDB_RED);
m_dsx3.LoadBitmaps(IDB_RED);
m_dsx4.LoadBitmaps(IDB_RED);
m_dsx5.LoadBitmaps(IDB_RED);
m_dsx6.LoadBitmaps(IDB_RED);
m_dsy1.LoadBitmaps(IDB_RED);
m_dsy2.LoadBitmaps(IDB_RED);
m_dsy3.LoadBitmaps(IDB_RED);
m_dsy4.LoadBitmaps(IDB_RED);
m_dsy5.LoadBitmaps(IDB_RED);
m_dsy6.LoadBitmaps(IDB_RED);
// 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
InterruptSet(0);
Int_Enable_Comp(0,1);
Sleep(100);
Int365_Disable(0);
// TODO: Add extra initialization here
return TRUE; // return TRUE unless you set the focus to a control
}
void CTest880Dlg::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 CTest880Dlg::OnPaint()
{
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
{
CDialog::OnPaint();
}
}
// The system calls this to obtain the cursor to display while the user drags
// the minimized window.
HCURSOR CTest880Dlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
void CTest880Dlg::OnSc()
{
UINT zh1=m_zh.GetCurSel();
::zh=zh1;
ms=m_ms.GetCurSel();
::ms=ms;
switch(zh)
{
case 0:
zh=4;
PulseOutMode(kh,zh,ms);
break;
case 1:
zh=1;
PulseOutMode(kh,zh,ms);
break;
case 2:
zh=2;
PulseOutMode(kh,zh,ms);
break;
case 3:
zh=3;
PulseOutMode(kh,zh,ms);
break;
case 4:
zh=5;
PulseOutMode(kh,1,ms);
PulseOutMode(kh,2,ms);
PulseOutMode(kh,3,ms);
PulseOutMode(kh,4,ms);
break;
}
}
void CTest880Dlg::OnQd()
{
UINT fx1 = GetCheckedRadioButton(IDC_FXZ,IDC_FXF);
UINT ld=m_ld.GetCurSel();
switch(fx1)
{
case IDC_FXZ:
::fx=1;
break;
case IDC_FXF:
::fx=0;
break;
}
UpdateData(true);
::m_v_sv=m_mvsv;
::m_v_a=m_mva;
::m_v_v=m_mvv;
::m_v_p=m_p;
switch(ld)
{
case 0:
Move_DV(kh,zh,m_v_a,m_v_sv,m_v_v,fx,m_v_p);
break;
case 1:
Move_LV(kh,zh,m_v_a,m_v_sv,m_v_v,fx);
break;
}
}
void CTest880Dlg::OnButton1()
{
DecStop(kh,zh);
}
void CTest880Dlg::OnButton2()
{
Reset(kh);
}
void CTest880Dlg::OnState()
{
m_timer=SetTimer(1,1,0);
}
void CTest880Dlg::OnTimer(UINT nIDEvent)
{
UpdateData(false);
m_rvx=ReadCV(kh,1);
m_rax=ReadCA(kh,1);
m_rlx=ReadLP(kh,1);
m_rvy=ReadCV(kh,2);
m_ray=ReadCA(kh,2);
m_rly=ReadLP(kh,2);
if(zh==1)
{
RendengX();
}
if(zh==2)
{
RendengY();
}
CDialog::OnTimer(nIDEvent);
}
void CTest880Dlg::RendengY()
{
int GetRR11[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int GetRR21[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
int GetRR41[16]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
unsigned short rr1,i,rr2,rr4;
int d15,flag;
//通用输入状态
int getbit[4]={0};
for(i=1;i<3;i++)
{
getbit[i]=ReadBIT(kh,2,i);
}
if(getbit[1]==0)
{
m_y3.LoadBitmaps(IDB_GREEEN);
m_y3.RedrawWindow();
}
else
{
m_y3.LoadBitmaps(IDB_RED);
m_y3.RedrawWindow();
}
if(getbit[2]==0)
{
m_y4.LoadBitmaps(IDB_GREEEN);
m_y4.RedrawWindow();
}
else
{
m_y4.LoadBitmaps(IDB_RED);
m_y4.RedrawWindow();
}
//通用点动状态
GetRR5(kh,&rr4);
for(i=0;i<16; i++)
{
flag=(rr4>>i)&1;
if(flag==1)
GetRR41[i]=1;
else
GetRR41[i]=0;
}
if(GetRR41[4]==0)
{
m_y6.LoadBitmaps(IDB_GREEEN);
m_y6.RedrawWindow();
}
else
{
m_y6.LoadBitmaps(IDB_RED);
m_y6.RedrawWindow();
}
if(GetRR41[5]==0)
{
m_y7.LoadBitmaps(IDB_GREEEN);
m_y7.RedrawWindow();
}
else
{
m_y7.LoadBitmaps(IDB_RED);
m_y7.RedrawWindow();
}
//读硬件限位
int getLMT=ReadLMT(kh,2);
if(getLMT==1)
{
m_dsy1.LoadBitmaps(IDB_GREEEN);
m_dsy1.RedrawWindow();
}
if(getLMT==2)
{
m_dsy2.LoadBitmaps(IDB_GREEEN);
m_dsy2.RedrawWindow();
}
if(getLMT==0)
{
m_dsy1.LoadBitmaps(IDB_RED);
m_dsy2.LoadBitmaps(IDB_RED);
m_dsy1.RedrawWindow();
m_dsy2.RedrawWindow();
}
//读紧急制动信号
GetRR2(kh,2,&rr2);
for(i=0;i<16;i++)
{
flag=(rr2>>i)&1;
if(flag==1)
GetRR21[i]=1;
else
GetRR21[i]=0;
}
if(GetRR21[5]==1)
{
m_dsy5.LoadBitmaps(IDB_GREEEN);
m_dsy5.RedrawWindow();
}
else
{
m_dsy5.LoadBitmaps(IDB_RED);
m_dsy5.RedrawWindow();
}
//读报警信号
if(GetRR21[4]==1)
{
m_dsy6.LoadBitmaps(IDB_GREEEN);
m_dsy6.RedrawWindow();
}
else
{
m_dsy6.LoadBitmaps(IDB_RED);
m_dsy6.RedrawWindow();
}
//读软限位
if(GetRR21[0]==1)
{
m_dsy3.LoadBitmaps(IDB_GREEEN);
m_dsy3.RedrawWindow();
}
else
{
m_dsy3.LoadBitmaps(IDB_RED);
m_dsy3.RedrawWindow();
}
if(GetRR21[1]==1)
{
m_dsy4.LoadBitmaps(IDB_GREEEN);
m_dsy4.RedrawWindow();
}
else
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -