📄 beihangdlg.cpp
字号:
// beihangDlg.cpp : implementation file
//
#include "stdafx.h"
#include "test.h"
#include "beihangDlg.h"
#include "mainfrm.h"
#include "testview.h"
#include <afxtempl.h>
#include <ctype.h>
#include <afxcoll.h>
#include "GT400.h"
#include <math.h>
#pragma once
extern CString info;
extern CTestApp theApp;
extern SYSTEMTIME t1,t2;
int* pcuraxis;
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern int times;
extern int brun;
#ifndef dllfundef
#define dllfundef extern "C" __declspec(dllimport)
#endif
dllfundef bool DLL_Full_Initial(int Googol_Period, int ISR_Status,unsigned short LmtVolt
,unsigned int EncSense, int Total_Axes, int Pulse_Mode);
dllfundef DLL_Axis_OnOff(int Current_Axis, bool Axis_Status);
dllfundef bool DLL_Z_Run(double Z_Speed, double Z_Accel, double Z_ObjectPos,
double Z_Distance, double Z_Pulse, double Z_Period );
dllfundef bool DLL_SngAxis_Stop(unsigned short Curren_Axis);
dllfundef bool DLL_SngAxis_eStop(unsigned short Curren_Axis);
dllfundef bool DLL_R_Run(double R_Speed, double R_Accel, double R_ObjectPos,
double R_N, double R_Pulse, double R_Period );
dllfundef bool DLL_SelAxis(unsigned short Current_Axis);
dllfundef bool DLL_SetZero(unsigned short Current_Axis);
dllfundef bool DLL_Motion_Finish(unsigned short Current_Axis);
dllfundef bool DLL_GetSngPos(unsigned short Current_Axis,long * lpCurPos);
dllfundef bool DLL_SetMotionMode(int m_nMotionSerial, unsigned short Master_Axis,
unsigned short Slave_Axis, double Ratio_Axis);
dllfundef bool DLL_SngVelRun(unsigned short Current_Axis,double dblMaxVel, double MaxAcc);
#pragma comment(lib,"debug/Googol.lib")
CArray< int , int>arrButton;
int flag=0;
double arrSpeed[8];
char* runinfo[500];
char runinfolth[500];
int runinfocnt=2;
int m_nTwoConTimes=0;
int m_nZConTimes=0;
int m_nTwoNo=0;
extern int sign;
extern int line;
static double m_dblZEndCon;
time_t ltime;
CArray<double,double>nArrAxisR;
CArray<double,double>nArrAxisZ;
int RFinFlag=0;
int RRunFlag=0;
int ZFinFlag=0;
int ZRunFlag=0;
int fgfhf;
BGCOMMANDSET BgCmdSet;
const double maxerror=0.1;//mm
/////////////////////////////////////////////////////////////////////////////
// CBeihangDlg dialog
mechineparams* pparams;
CBeihangDlg::CBeihangDlg(CWnd* pParent /*=NULL*/)
: CDialog(CBeihangDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CBeihangDlg)
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32
curspeed=0;
m_dblRObjPos = 0.0;
m_dblRCurPos = 0.0;
m_nScanNumber = 1;
curaxis=1;
m_dblConRDistance = 360;
m_dblConRSpeed = 60;
m_dblConRStart = 0;
m_dblConZDis = 10;
m_dblConZSpeed = 2;
m_dblConZStart = 0;
m_dblConZStep = 2;
m_dblZCurPos = 0.0;
m_dblZEnd = 4;
m_ZObjPos = 0.0;
m_dblZSpeedCon = 2;
m_dblStart = 1;
pcuraxis=&curaxis;
pparams=¶ms;
m_ctlBtnRBack.index=1;
m_ctlBTNRFor.index=2;
m_ctlBTNZBack.index=3;
m_ctlBTNZFor.index=4;
tasknum=0;
bBreak=0;
m_dblRCurPos=0;
CMainFrame* p=(CMainFrame*)theApp.GetMainWnd();
pv=(CTestView*)p->GetActiveView();
bstop=1;
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CBeihangDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CBeihangDlg)
// DDX_Control(pDX, IDOK, m_IDOK);
// DDX_Control(pDX, IDCANCEL, m_IDCANCEL);
/* DDX_Control(pDX, IDC_STATIC1_Z_STEP_UNIT, m_ctlSA1_Z_STEP_UNIT);
DDX_Control(pDX, IDC_STATIC1_Z_STEP, m_ctlSA1_Z_STEP);
DDX_Control(pDX, IDC_STATIC1_Z_START_UNIT, m_ctlSA1_Z_START_UNIT);
DDX_Control(pDX, IDC_STATIC1_Z_SPEED_UNIT, m_ctlSA1_Z_SPEED_UNIT);
DDX_Control(pDX, IDC_STATIC1_Z_NUMBER_UNIT, m_ctlSA1_Z_NUMBER_UNIT);
DDX_Control(pDX, IDC_STATIC1_Z_NUMBER, m_ctlSA1_Z_NUMBER);
DDX_Control(pDX, IDC_STATIC1_Z_DISTANCE_UNIT, m_ctlSA1_Z_DISTANCE_UNIT);
DDX_Control(pDX, IDC_STATIC1_Z_AXIS, m_ctlSA1_Z_AXIS);
DDX_Control(pDX, IDC_STATIC1_START, m_ctlSA1_START);
DDX_Control(pDX, IDC_STATIC1_SPEED, m_ctlSA1_SPEED);
DDX_Control(pDX, IDC_STATIC1_R_START_UNIT, m_ctlSA1_R_START_UNIT);
DDX_Control(pDX, IDC_STATIC1_R_SPEED_UNIT, m_ctlSA1_R_SPEED_UNIT);
DDX_Control(pDX, IDC_STATIC1_R_DISTANCE_UNIT, m_ctlSA1_R_DISTANCE_UNIT);
DDX_Control(pDX, IDC_STATIC1_R_AXIS, m_ctlSA1_R_AXIS);
// DDX_Control(pDX, IDC_STATIC1_PARAMETER, m_ctlSA1_PARAMETER);
// DDX_Control(pDX, IDC_STATIC1_MOTION_PARA, m_ctlSA1_MOTION_PARA);
DDX_Control(pDX, IDC_STATIC1_DISTANCE, m_ctlSA1_DISTANCE);
// DDX_Control(pDX, IDC_STATIC1_CONSOLE, m_ctlSA1_CONSOLE);
DDX_Control(pDX, IDC_STATIC0_Z_UNIT, m_ctlSA0_Z_UNIT);
DDX_Control(pDX, IDC_STATIC0_Z_START_UNIT, m_ctlSA0_START_UNIT);
DDX_Control(pDX, IDC_STATIC0_Z_START, m_ctlSA0_Z_START);
DDX_Control(pDX, IDC_STATIC0_Z_SPEED, m_ctlSA0_Z_SPEED);
// DDX_Control(pDX, IDC_STATIC0_Z_SINGLE, m_ctlSA0_Z_SINGLE);
DDX_Control(pDX, IDC_STATIC0_Z_END, m_ctlSA0_Z_END);
// DDX_Control(pDX, IDC_STATIC0_Z_CONTINUOUS, m_ctlSA0_Z_CONTINUOUS);
DDX_Control(pDX, IDC_STATIC0_SPEED_UNIT, m_ctlSA0_SPEED_UNIT);
DDX_Control(pDX, IDC_STATIC0_R_UNIT, m_ctlSA0_R_UNIT);
// DDX_Control(pDX, IDC_STATIC0_R_SINGLE, m_ctlSA0_R_SINGLE);
DDX_Control(pDX, IDC_STATIC0_END_UNIT, m_ctlSA0_END_UNIT);*/
DDX_Control(pDX, IDC_EDIT_Z_STARTPOINT, m_ctlED_Z_STARTPOINT);
DDX_Control(pDX, IDC_EDIT_Z_SPEED_CON, m_ctlED_Z_SPEED_CON);
DDX_Control(pDX, IDC_EDIT_Z_OBJPOS, m_ctlED_Z_OBJPOS);
DDX_Control(pDX, IDC_EDIT_Z_ENDPOINT, m_ctlED_Z_ENDPOINT);
DDX_Control(pDX, IDC_EDIT_Z_CURPOS, m_ctlED_Z_CURPOS);
DDX_Control(pDX, IDC_EDIT_SCAN_Z_STEP, m_ctlED_SCAN_Z_STEP);
DDX_Control(pDX, IDC_EDIT_SCAN_Z_STARTPOINT, m_ctlED_SCAN_Z_STARTPOINT);
DDX_Control(pDX, IDC_EDIT_SCAN_Z_SPEED, m_ctlED_SCAN_Z_SPEED);
DDX_Control(pDX, IDC_EDIT_SCAN_Z_DISTANCE, m_ctlED_SCAN_Z_DISTANCE);
DDX_Control(pDX, IDC_EDIT_SCAN_R_STARTPOINT, m_ctlSCAN_R_STARTPOINT);
DDX_Control(pDX, IDC_EDIT_SCAN_R_SPEED, m_ctlED_SCAN_R_SPEED);
DDX_Control(pDX, IDC_EDIT_SCAN_R_DISTANCE, m_ctlED_SCAN_R_DISTANCE);
DDX_Control(pDX, IDC_EDIT_SCAN_NUMBER, m_ctlED_SCAN_NUMBER);
DDX_Control(pDX, IDC_EDIT_R_OBJPOS, m_ctlED_R_OBJPOS);
DDX_Control(pDX, IDC_EDIT_R_CURPOS, m_ctlED_R_CURPOS);
DDX_Control(pDX, IDC_COMBO_Z_SPEED, m_ctlCM_Z_SPEED);
DDX_Control(pDX, IDC_COMBO_R_SPEED, m_ctlCM_R_SPEED);
DDX_Text(pDX, IDC_EDIT_R_OBJPOS, m_dblRObjPos);
DDV_MinMaxInt(pDX, m_dblRObjPos, -360-m_dblRCurPos, 360-m_dblRCurPos);
DDX_Text(pDX, IDC_EDIT_R_CURPOS, m_dblRCurPos);
DDX_Text(pDX, IDC_EDIT_SCAN_NUMBER, m_nScanNumber);
DDV_MinMaxInt(pDX, m_nScanNumber, 0, 10000);
DDX_Text(pDX, IDC_EDIT_SCAN_R_DISTANCE, m_dblConRDistance);
DDX_Text(pDX, IDC_EDIT_SCAN_R_SPEED, m_dblConRSpeed);
DDV_MinMaxDouble(pDX, m_dblConRSpeed, 0., 60.);
DDX_Text(pDX, IDC_EDIT_SCAN_R_STARTPOINT, m_dblConRStart);
DDX_Text(pDX, IDC_EDIT_SCAN_Z_DISTANCE, m_dblConZDis);
DDX_Text(pDX, IDC_EDIT_SCAN_Z_SPEED, m_dblConZSpeed);
DDV_MinMaxDouble(pDX, m_dblConZSpeed, 0., 16.);
DDX_Text(pDX, IDC_EDIT_SCAN_Z_STARTPOINT, m_dblConZStart);
DDX_Text(pDX, IDC_EDIT_SCAN_Z_STEP, m_dblConZStep);
DDX_Text(pDX, IDC_EDIT_Z_CURPOS, m_dblZCurPos);
DDX_Text(pDX, IDC_EDIT_Z_ENDPOINT, m_dblZEnd);
DDX_Text(pDX, IDC_EDIT_Z_OBJPOS, m_ZObjPos);
DDV_MinMaxInt(pDX, m_ZObjPos, -360-m_dblZCurPos, 360-m_dblZCurPos);
DDX_Text(pDX, IDC_EDIT_Z_SPEED_CON, m_dblZSpeedCon);
if(m_dblZSpeedCon>16)
m_dblZSpeedCon=16;
// DDV_MinMaxInt(pDX, m_dblZSpeedCon,.1,16);
DDX_Text(pDX, IDC_EDIT_Z_STARTPOINT, m_dblStart);
DDX_Control(pDX, IDC_BTN_R_BACK, m_ctlBtnRBack);
DDX_Control(pDX, IDC_BTN_R_FOR, m_ctlBTNRFor);
DDX_Control(pDX, IDC_BTN_Z_BACK, m_ctlBTNZBack);
DDX_Control(pDX, IDC_BTN_Z_FOR, m_ctlBTNZFor);
DDX_Control(pDX, IDC_BUTTON2, btn);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CBeihangDlg, CDialog)
//{{AFX_MSG_MAP(CBeihangDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_BN_CLICKED(IDC_BUTTON_R_GOTO, OnButtonRGoto)
//ON_BN_CLICKED(IDC_BUTTON_Z_FORWARD, OnButtonZForward)
ON_BN_CLICKED(IDC_BUTTON_R_PAUSE, OnButtonRPause)
ON_BN_CLICKED(IDC_BUTTON_Z_GOTO, OnBtnZGoto)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_BUTTON_Z_PAUSE, OnButtonZPause)
ON_BN_CLICKED(IDC_BUTTON_Z_ZERO, OnButtonZZero)
ON_BN_CLICKED(IDC_BUTTON_R_ZERO, OnButtonRZero)
ON_BN_CLICKED(IDC_BUTTON_SCAN_START, OnButtonScanStart)
ON_BN_CLICKED(IDC_BUTTON_SCAN_END, OnButtonScanEnd)
ON_BN_CLICKED(IDC_BUTTON_SCANCON_END, OnButtonScanConEnd)
ON_BN_CLICKED(IDC_BUTTON_SCANCON_START, OnBtnScanconStart)
ON_BN_CLICKED(IDC_BUTTON_ZERO, OnButtonZero)
ON_BN_CLICKED(IDC_BUTTON_CLEAR, OnButtonClear)
ON_BN_CLICKED(IDC_BUTTON3, OnFailureStop)
ON_BN_CLICKED(IDOK, OnOK)
ON_BN_CLICKED(IDCANCEL, OnCANCEL)
ON_WM_CHAR()
ON_WM_KEYDOWN()
//ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CBeihangDlg message handlers
CTestView* pgv;
CBeihangDlg* pd;
BOOL CBeihangDlg::OnInitDialog()
{
CDialog::OnInitDialog();
pd=this;
// 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
/***************************************************************************/
/*代码功能:取界面高度为设计高度53% 日期:2006-01-20 */
/*开发公司:欧宁航宇 作者:陈利民 */
/***************************************************************************/
//m_ctlTAB_SCAN.SetTab(0);
CRect reWindow;
GetWindowRect (reWindow );
SetWindowPos (NULL,100,100,reWindow.Width(),
(int)(reWindow.Height()*.555), SWP_NOMOVE | SWP_NOZORDER );
/***************************************************************************/
/***************************************************************************/
/*函数功能:完成界面的初始化 日期:2006-01-20 */
/*开发公司:欧宁航宇 作者:陈利民 */
/***************************************************************************/
InitCtlArray();//给控件对象数组赋值
VisSwitch(0,true);//使“2轴扫查序列”界面的控件不可见
MoveTwoScan();//移动“2轴扫查序列”界面的控件到主界面位置
/***************************************************************************/
m_ctlCM_Z_SPEED.AddString("1—极低速—-1%-—");
m_ctlCM_Z_SPEED.AddString("2—超低速—-2%-—");
m_ctlCM_Z_SPEED.AddString("3—超低速—-5%-—");
m_ctlCM_Z_SPEED.AddString("4—低 速—10%-—");
m_ctlCM_Z_SPEED.AddString("5—慢 速—20%-—");
m_ctlCM_Z_SPEED.AddString("6—中 速—50%-—");
m_ctlCM_Z_SPEED.AddString("7—高 速—70%-—");
m_ctlCM_Z_SPEED.AddString("8—全 速—100%—");
m_ctlCM_Z_SPEED.SetCurSel(1);
m_ctlCM_R_SPEED.AddString("1—极低速—-1%-—");
m_ctlCM_R_SPEED.AddString("2—超低速—-2%-—");
m_ctlCM_R_SPEED.AddString("3—超低速—-5%-—");
m_ctlCM_R_SPEED.AddString("4—低 速—10%-—");
m_ctlCM_R_SPEED.AddString("5—慢 速—20%-—");
m_ctlCM_R_SPEED.AddString("6—中 速—50%-—");
m_ctlCM_R_SPEED.AddString("7—高 速—70%-—");
m_ctlCM_R_SPEED.AddString("8—全 速—100%—");
m_ctlCM_R_SPEED.SetCurSel(5);
arrSpeed[0]=0.01;
arrSpeed[1]=0.02;
arrSpeed[2]=0.05;
arrSpeed[3]=0.1;
arrSpeed[4]=0.2;
arrSpeed[5]=0.5;
arrSpeed[6]=0.7;
arrSpeed[7]=1;
// OnAxisMotion();//重定义中断
//OnInterTimer();//启动监测线程
SetGTTimer();
CMainFrame* pm=(CMainFrame*)theApp.GetMainWnd();
pv=(CTestView*)pm->GetActiveView();
pgv=pv;
return TRUE; // return TRUE unless you set the focus to a control
}
void CBeihangDlg::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 CBeihangDlg::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 CBeihangDlg::OnQueryDragIcon()
{
return (HCURSOR) m_hIcon;
}
/***************************************************************************/
/*函数名称:MoveTwoScan */
/*函数功能:移动“2轴扫查序列”界面的控件到主界面位置 */
/*开发人员:陈利民 */
/*开发日期:2006-01-20 */
/*调试日期:2006-01-20(1) */
/***************************************************************************/
bool CBeihangDlg::MoveTwoScan()
{
int nIndex,nCtls;
CWnd * pWnd;
CRect retControl;
static CRect rectdlg;
GetWindowRect(&rectdlg);
for(nIndex=33;nIndex<62;nIndex++)
{
nCtls=arrButton[nIndex]; //把控件ID赋给nCtls
pWnd=GetDlgItem(nCtls); //取得控件句柄
pWnd->GetWindowRect(retControl);
if(nIndex==33)
int c=0;
pWnd->MoveWindow(retControl.left-rectdlg.left,retControl.top-178-rectdlg.top, //移动控件
retControl.Width(), retControl.Height(),true);
}
return true;
}
/***************************************************************************/
/*函数名称:InitCtlArray */
/*函数功能:把所有控件添加到控件数组,便于操作 */
/*开发人员:陈利民 */
/*开发日期:2006-01-19 */
/*调试日期:2006-01-20 (1) */
/***************************************************************************/
bool CBeihangDlg::InitCtlArray()
{
arrButton.Add(1001);//用ID的Value代替ID,可以简化编程
arrButton.Add(1003);
arrButton.Add(IDC_STATIC0_Z_CONTINUOUS);
arrButton.Add(IDC_STATIC0_R_UNIT);
arrButton.Add(IDC_STATIC0_Z_UNIT);
arrButton.Add(IDC_STATIC0_Z_START);
arrButton.Add(IDC_STATIC0_Z_START_UNIT);
arrButton.Add(IDC_STATIC0_Z_END);
arrButton.Add(IDC_STATIC0_END_UNIT);
arrButton.Add(IDC_STATIC0_Z_SPEED);
arrButton.Add(IDC_STATIC0_SPEED_UNIT);
arrButton.Add(IDC_EDIT_R_CURPOS);
arrButton.Add(IDC_EDIT_R_OBJPOS);
arrButton.Add(IDC_EDIT_Z_CURPOS);
arrButton.Add(IDC_EDIT_Z_OBJPOS);
arrButton.Add(IDC_EDIT_Z_STARTPOINT);
arrButton.Add(IDC_EDIT_Z_ENDPOINT);
arrButton.Add(IDC_EDIT_Z_SPEED_CON);
arrButton.Add(IDC_BTN_R_BACK);
arrButton.Add(IDC_BUTTON_R_PAUSE);
arrButton.Add(IDC_BTN_R_FOR);
arrButton.Add(IDC_BUTTON_R_ZERO);
arrButton.Add(IDC_BUTTON_R_GOTO);
arrButton.Add(IDC_BTN_Z_BACK);
arrButton.Add(IDC_BUTTON_Z_PAUSE);
arrButton.Add(IDC_BTN_Z_FOR);
arrButton.Add(IDC_BUTTON_Z_ZERO);
arrButton.Add(IDC_BUTTON_Z_GOTO);
arrButton.Add(IDC_BUTTON_SCAN_START);
arrButton.Add(IDC_BUTTON_SCAN_END);
arrButton.Add(IDOK);
arrButton.Add(IDC_COMBO_R_SPEED);
arrButton.Add(IDC_COMBO_Z_SPEED);
arrButton.Add(IDC_STATIC1_PARAMETER);
arrButton.Add(IDC_STATIC1_MOTION_PARA);
arrButton.Add(IDC_STATIC1_CONSOLE);
arrButton.Add(IDC_STATIC1_START);
arrButton.Add(IDC_STATIC1_DISTANCE);
arrButton.Add(IDC_STATIC1_SPEED);
arrButton.Add(IDC_STATIC1_R_AXIS);
arrButton.Add(IDC_STATIC1_R_START_UNIT);
arrButton.Add(IDC_STATIC1_R_DISTANCE_UNIT);
arrButton.Add(IDC_STATIC1_R_SPEED_UNIT);
arrButton.Add(IDC_STATIC1_Z_AXIS);
arrButton.Add(IDC_STATIC1_Z_START_UNIT);
arrButton.Add(IDC_STATIC1_Z_DISTANCE_UNIT);
arrButton.Add(IDC_STATIC1_Z_SPEED_UNIT);
arrButton.Add(IDC_STATIC1_Z_STEP);
arrButton.Add(IDC_STATIC1_Z_STEP_UNIT);
arrButton.Add(IDC_STATIC1_Z_NUMBER);
arrButton.Add(IDC_STATIC1_Z_NUMBER_UNIT);
arrButton.Add(IDC_EDIT_SCAN_R_STARTPOINT);
arrButton.Add(IDC_EDIT_SCAN_R_DISTANCE);
arrButton.Add(IDC_EDIT_SCAN_R_SPEED);
arrButton.Add(IDC_EDIT_SCAN_Z_STARTPOINT);
arrButton.Add(IDC_EDIT_SCAN_Z_DISTANCE);
arrButton.Add(IDC_EDIT_SCAN_Z_SPEED);
arrButton.Add(IDC_EDIT_SCAN_Z_STEP);
arrButton.Add(IDC_EDIT_SCAN_NUMBER);
arrButton.Add(IDC_BUTTON_SCANCON_START);
arrButton.Add(IDC_BUTTON_SCANCON_END);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -