You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
338 lines
12 KiB
C++
338 lines
12 KiB
C++
// Start =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
// General information section.
|
|
// =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
// $Author:yongkiang$ User who last changed the file
|
|
// $Date:1/2/2013 12:16:36 PM$ Date and time of last check in
|
|
// $Revision:1.0$ Visual SourceSafe version number
|
|
// $Workfile:: MaintenancePage.h $ Filename
|
|
// End =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
|
|
// {{AFX_INCLUDES()
|
|
#include "MyTreeCtrl.h"
|
|
#include "structure.h"
|
|
#include "MyPropertyPage.h"
|
|
#include "ShadeButtonST.h"
|
|
#include <map>
|
|
// }}AFX_INCLUDES
|
|
#if !defined(AFX_MAINTENANCEPAGE_H__61C5CDF7_71EB_11D6_A7FC_005004C029CA__INCLUDED_)
|
|
#define AFX_MAINTENANCEPAGE_H__61C5CDF7_71EB_11D6_A7FC_005004C029CA__INCLUDED_
|
|
|
|
#if _MSC_VER > 1000
|
|
#pragma once
|
|
#endif // _MSC_VER > 1000
|
|
|
|
#ifdef BUILD_GUIDLL
|
|
#define DLLCLASS __declspec(dllexport)
|
|
#else
|
|
#define DLLCLASS __declspec(dllimport)
|
|
#endif
|
|
|
|
#include "MainSheet.h"
|
|
class CMotionController;
|
|
class CInputController;
|
|
class COutputController;
|
|
|
|
typedef std::map<CString, bool> CSTRING_BOOL_MAP;
|
|
|
|
// MaintenancePage.h : header file
|
|
//
|
|
/////////////////////////////////////////////////////////////////////////////
|
|
// CMaintenancePage dialog
|
|
|
|
class DLLCLASS CMaintenancePage : public CMyPropertyPage // public CPropertyPage
|
|
{
|
|
DECLARE_DYNCREATE(CMaintenancePage)
|
|
|
|
// Construction
|
|
public:
|
|
void ExpandMotorTree(bool bEnable = true);
|
|
virtual void CustomPageSettings();
|
|
CString GetModuleName();
|
|
// void SetModule(CModule *pModule);
|
|
// set the module to display and pass the module number to Maintenance module page
|
|
void SetModule(stModule *pModule, int iModuleNo);
|
|
CMaintenancePage();
|
|
~CMaintenancePage();
|
|
|
|
// Dialog Data
|
|
// {{AFX_DATA(CMaintenancePage)
|
|
enum {
|
|
IDD = IDD_MAINTENANCE_PAGE
|
|
};
|
|
CShadeButtonST m_nextpreBtn;
|
|
CShadeButtonST m_homeBtn;
|
|
CShadeButtonST m_mtronBtn;
|
|
CShadeButtonST m_mtroffBtn;
|
|
CShadeButtonST m_moveBtn;
|
|
CShadeButtonST m_stopBtn;
|
|
CShadeButtonST m_saveBtn;
|
|
CShadeButtonST m_output9Btn;
|
|
CShadeButtonST m_output8Btn;
|
|
CShadeButtonST m_output7Btn;
|
|
CShadeButtonST m_output6Btn;
|
|
CShadeButtonST m_output5Btn;
|
|
CShadeButtonST m_output4Btn;
|
|
CShadeButtonST m_output3Btn;
|
|
CShadeButtonST m_output2Btn;
|
|
CShadeButtonST m_output16Btn;
|
|
CShadeButtonST m_output15Btn;
|
|
CShadeButtonST m_output14Btn;
|
|
CShadeButtonST m_output12Btn;
|
|
CShadeButtonST m_output11Btn;
|
|
CShadeButtonST m_output10Btn;
|
|
CShadeButtonST m_output1Btn;
|
|
CShadeButtonST m_output13Btn;
|
|
CMyTreeCtrl m_treeCtrl;
|
|
double m_currStartSpeed;
|
|
double m_currMaxSpeed;
|
|
double m_currAccel;
|
|
double m_percentage;
|
|
double m_currDeccel;
|
|
// }}AFX_DATA
|
|
|
|
// Overrides
|
|
// ClassWizard generate virtual function overrides
|
|
// {{AFX_VIRTUAL(CMaintenancePage)
|
|
public:
|
|
virtual BOOL OnSetActive();
|
|
virtual BOOL OnKillActive();
|
|
virtual BOOL PreTranslateMessage(MSG* pMsg);
|
|
protected:
|
|
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support
|
|
// }}AFX_VIRTUAL
|
|
|
|
// Implementation
|
|
protected:
|
|
// Generated message map functions
|
|
// {{AFX_MSG(CMaintenancePage)
|
|
virtual BOOL OnInitDialog();
|
|
afx_msg void ShowNotification(LPNMHDR pnmhdr, LRESULT *pLResult);
|
|
afx_msg void OnTimer(UINT nIDEvent);
|
|
afx_msg void OnDestroy();
|
|
afx_msg void OnHomeButton();
|
|
afx_msg void OnMoveButton();
|
|
afx_msg void OnStopButton();
|
|
afx_msg void OnSaveButton();
|
|
afx_msg void OnNextPreButton();
|
|
afx_msg void OnMtrOffButton();
|
|
afx_msg void OnMtrOnButton();
|
|
// }}AFX_MSG
|
|
afx_msg void OnOutputButtonClick(UINT nID);
|
|
afx_msg void OnSpeedRadioButtonClick(UINT nID);
|
|
DECLARE_MESSAGE_MAP()
|
|
|
|
virtual void DisplayIn2ndLang();
|
|
|
|
private:
|
|
// bool IsCurrentFieldValid(CString csPath, CString csTableName, CString csFieldName);
|
|
bool IsOutputDisplayEnable(CDaoDatabase &db, CString csOutputName);
|
|
bool IsInputDisplayEnable(CDaoDatabase &db, CString csInputName);
|
|
void GetIODisplayData(CDaoDatabase &db);
|
|
bool GetMotorPosSaveTolerence(CDaoDatabase &db, CString csCurrPosName, double &dMaxOffset, double &dMinOffset, CString csCurrMotorName);
|
|
bool IsCheckTolerenceEnable(CDaoDatabase &db, CString csCurrPosName, CString csCurrMotorName);
|
|
bool CheckIfDisplayEnable(CDaoDatabase &db, CString csCurrPosName);
|
|
bool CheckIfTeachEnable(CDaoDatabase *pdb, CString csCurrPosName, CString csCurrMotorName);
|
|
void LockButtonsDuringMachineIsRunning();
|
|
bool UpdateCurrentModule(bool SavingSetting = true);
|
|
// void CheckSecurityLevel();
|
|
void DisplaySwitchToCurrentMotorItems(CDaoDatabase *pdb = NULL, CDaoDatabase *dbpkg = NULL);
|
|
void RefreshCurrentModuleMotorInputSignals();
|
|
void RefreshCurrentModuleDigitalOutputSignals();
|
|
void RefreshCurrentModuleDigitalInputSignals();
|
|
void GetCurrentMotorIndexId();
|
|
void GetCurrentMotorPosId();
|
|
void GetCurrentMotorId();
|
|
void SetCurrentMotorSpeedParameter();
|
|
void SetCurrentModuleMotorItems(CDaoDatabase &db);
|
|
void SetCurrentModuleDigitalOutputTexts();
|
|
void SetCurrentModuleDigitalInputTexts();
|
|
void InitMotorTree(CDaoDatabase &db);
|
|
void InitIconButtons();
|
|
void LoadLedBitmap();
|
|
void CreateTemporaryMotorBuffer();
|
|
void CreateMotorTreeImageList();
|
|
void CheckRecipeSelected(); // Enable or disable controls base on Recipe Selected
|
|
void EnableDisableSaveButton(); // enable save button if recipe is selected and teach current motor is enable
|
|
void CheckUserLevel(); // Enable or disable controls base on User level
|
|
|
|
void initMaintenanceIOModules(); // Init Maintenance Input/Output Modules attribtes
|
|
void HideExtraInputItems(); // Hide extra Input Items
|
|
void HideExtraOutputItems(); // Hide extra Output Items
|
|
void InitPage1MaintIpAttributes(); // init page 1 maintenance input attributes
|
|
void CalNoOfInputModule(); // calculate number of input modules
|
|
void InitPage1MaintOpAttributes(); // init page 1 maintenance output attributes
|
|
void CalNoOfOutputModule(); // calculate number of output modules
|
|
void SaveMotorPos(CDaoDatabase &db, CString csPackageName, bool bGoldenData = false); // save motor pos
|
|
void SaveMotorSpeedParameter(CDaoDatabase &dbMtrSpeed, CString csPackageName, bool bGoldenData = false); // save motor speed setting
|
|
void GetMotorPos(CString csPackageName, CDaoDatabase *pdb); // get motor pos and update to text box
|
|
void GetMotorSpeedParameter(CString csPackageName, CDaoDatabase *pdb = NULL); // get motor speed setting and update to text box
|
|
bool IsMachineRunning(); // check if machine is running
|
|
void ProcessMaintMsg(); // process Maintenance Message and print to text box
|
|
|
|
// Indicate that output has been moved before
|
|
void SetMvOpFlag();
|
|
|
|
// Indicate that motor has been moved before
|
|
void SetMvMtrFlag();
|
|
|
|
// Set all motor input signal to off when there is no motor in current module
|
|
void OffAllMtrInputSignals();
|
|
|
|
// Display motor final position and return final motor position
|
|
double DisplayFinalMtrPos();
|
|
|
|
// clear all motor text when module has no motor
|
|
void ClearAllMtrText();
|
|
|
|
int GetSubField(CDaoDatabase &db, CString csPosName, std::map<int, CString> &strItem);
|
|
// Get sub Motor Position and update to control
|
|
void GetSubFieldPosValue(CDaoDatabase &db);
|
|
|
|
// enable motor button
|
|
void EnableMotorButton();
|
|
|
|
// Disable motor button
|
|
void DisableMotorButton();
|
|
|
|
// initialised speed radio button
|
|
void InitSpdRadioBtn(CDaoDatabase &dbMtrSpeed);
|
|
|
|
CImageList* m_pImageList;
|
|
CString m_csCurrMotorName;
|
|
CString m_csCurrPosName;
|
|
CString m_csCurrIndexName;
|
|
CString m_csSubPosName;
|
|
|
|
// Gary 22Dec10, V1.23.02, support multilanguage display
|
|
CString m_csDisplayCurrMotorName;
|
|
CString m_csDisplayCurrPosName;
|
|
CString m_csDisplaySubPosName;
|
|
|
|
int m_currMotor, m_currPos, m_currIndex, m_currSpeedMode;
|
|
int m_iPrevSelectedPos;
|
|
int m_iPrevSelectedMotor;
|
|
int * m_pCurrUserLevel;
|
|
int m_mcState;
|
|
CBitmap m_ledOnBtm;
|
|
CBitmap m_ledOffBtm;
|
|
|
|
typedef struct {
|
|
double m_startSpeed;
|
|
double m_maxSpeed;
|
|
double m_accel;
|
|
double m_percentage;
|
|
}MOTOR_SPEED_ELEMENT;
|
|
|
|
typedef struct {
|
|
double m_calculated;
|
|
double m_offset;
|
|
double m_total;
|
|
}MOTOR_POS_ELEMENT;
|
|
|
|
#define MAX_POS 8;
|
|
#define NUM_SPEED_MODE 8;
|
|
|
|
typedef struct {
|
|
MOTOR_POS_ELEMENT m_pos[8];
|
|
MOTOR_SPEED_ELEMENT m_speed[8];
|
|
}MOTOR_PARAMETER_SETTING;
|
|
|
|
stModule *m_stCurrentModule;
|
|
CInputController *m_inputController;
|
|
COutputController *m_outputController;
|
|
CMotionController *m_motionController;
|
|
|
|
int m_iModuleNo; // to store whiich module
|
|
|
|
// Maintenance Input/Output Modules attribtes
|
|
int m_iInputStartNo; // input module start number for UI
|
|
int m_iInputStopNo; // input module stop number for UI
|
|
int m_iLastInputModuleNo; // last input module number for UI
|
|
|
|
int m_iOutputStartNo; // output module start number for UI
|
|
int m_iOutputStopNo; // output module stop number for UI
|
|
int m_iLastOutputModuleNo; // last output module number for UI
|
|
|
|
/// 0 = Use MotorPos Table else 1 = Use MotorPosition Table
|
|
bool m_bUseMotorPosTable;
|
|
|
|
bool m_bReceiveMaintMes; // flag to indicate received message
|
|
|
|
enum MTR_POS_CAL_VALUES
|
|
{
|
|
CALCULATED_VALUE,
|
|
OFFSET_VALUE,
|
|
SPEED_CUTOFF_DISTANCE,
|
|
MAX_MTR_POS_CAL_VALUES,
|
|
};
|
|
|
|
enum MTR_SPEED_VALUES
|
|
{
|
|
START_SPEED,
|
|
MAX_SPEED,
|
|
ACC_RATE,
|
|
DEC_RATE,
|
|
PERCENTAGE,
|
|
MAX_SPEED_VALUES,
|
|
};
|
|
|
|
enum SPEED_SETTING
|
|
{
|
|
SLOW_SPEED,
|
|
NORMAL_SPEED,
|
|
MAX_SPEED_SETTING,
|
|
};
|
|
|
|
enum
|
|
{
|
|
MAX_MTR_STATUS_LED = 6,
|
|
};
|
|
|
|
bool m_bBlink; // blink maintenance message flag
|
|
bool m_bMvMtr; // flag to remember home or move motor
|
|
|
|
// true = save normal or slow speed profile in mitpkg.mdb in MotorSpeed table
|
|
bool m_bSaveSpdProfile;
|
|
|
|
CString m_csMaintMes; // maintenance message string
|
|
|
|
CString m_csMotorPos[MAX_MTR_POS_CAL_VALUES];
|
|
CString m_csMotorSpeed[MAX_SPEED_VALUES];
|
|
CString m_csSpeedSetting[MAX_SPEED_SETTING];
|
|
CString m_csMotionStatus[MAX_MOTION_STATUS];
|
|
|
|
CImageList m_imageListSmall; // image list for list box
|
|
|
|
const static char* MANUAL_POS;
|
|
|
|
bool *m_bInputDisplayStates;
|
|
int *m_nEnumIndexForDisplayedInput;
|
|
|
|
bool *m_bOutputDisplayStates;
|
|
int *m_nEnumIndexForDisplayedOutput;
|
|
|
|
int m_nNoOfInputDisplay;
|
|
int m_nNoOfOutputDisplay;
|
|
|
|
double m_dSelectedMtrCalPosn;
|
|
double m_dSelectedMtrOffsetPosn;
|
|
|
|
int m_nSelectedMtrSpeedMode;
|
|
double m_dSelectedMtrSpeedPercentage;
|
|
|
|
// Gary 7Sep09, added option to hide motor positions.
|
|
bool m_bHideMotorPosition;
|
|
|
|
// Gary 12May10, cater customize page settings
|
|
bool m_bExpandMotorTree;
|
|
|
|
// true = Off Motor Disable Home and Move Button
|
|
bool m_bOffMtrDisableHmMvBtn;
|
|
|
|
std::map<CString, CSTRING_BOOL_MAP> m_mapMtrNamPosName;
|
|
};
|
|
|
|
// {{AFX_INSERT_LOCATION}}
|
|
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
|
|
|
|
#endif // !defined(AFX_MAINTENANCEPAGE_H__61C5CDF7_71EB_11D6_A7FC_005004C029CA__INCLUDED_)
|