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.
mitlib.pub/MITLIB/GuiDLL/MaintenancePage.h

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_)