亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? trainingsimdlg.cpp

?? modbus PLC 模擬程序
?? CPP
字號:
// TrainingSimDlg.cpp : implementation file
//

#include "stdafx.h"
#include "resource.h"

#include "mod_rssim.h"
#include "TrainingSimDlg.h"

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

// ------------------------------ FillCharCBoxS ----------------------
// fill a combo-box control from a string array. the user-Data in the 
// combo is filled from an array of DWORDs.
void FillCharCBoxS(CComboBox * cBox, 
                  char ** strTable,
                  WORD tableLen, 
                  DWORD currentsetting)
{
DWORD count;
CHAR ** strTablePtr = strTable;

   cBox->ResetContent();
   for (count = 0; count < tableLen; count++)
   {
      cBox->AddString(strTablePtr[count]);
      cBox->SetItemData(count,  count);
      if (count == currentsetting)
         cBox->SetCurSel(count);
   }
} // FillCharCBoxS


/////////////////////////////////////////////////////////////////////////////
// CTrainingSimDlg dialog


CTrainingSimDlg::CTrainingSimDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CTrainingSimDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CTrainingSimDlg)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
   m_numDisabledControls = 0;

   m_topic.SetHelpTopic("Animation");
}


void CTrainingSimDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CTrainingSimDlg)
	DDX_Control(pDX, IDC_CBREGISTERNAMES, m_registerNames);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CTrainingSimDlg, CDialog)
	//{{AFX_MSG_MAP(CTrainingSimDlg)
	ON_BN_CLICKED(IDC_SET, OnSet)
	ON_WM_TIMER()
	ON_CBN_SELCHANGE(IDC_CBREGISTERNAMES, OnSelchangeCbregisternames)
	ON_BN_CLICKED(IDC_CHECK1, OnCheck1)
	ON_BN_CLICKED(IDC_CHECK2, OnCheck2)
	ON_BN_CLICKED(IDC_CHECK3, OnCheck3)
	ON_BN_CLICKED(IDC_CHECK4, OnCheck4)
	ON_BN_CLICKED(IDC_CHECK5, OnCheck5)
	ON_BN_CLICKED(IDC_CHECK6, OnCheck6)
	ON_BN_CLICKED(IDC_CHECK7, OnCheck7)
	ON_BN_CLICKED(IDC_CHECK8, OnCheck8)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CTrainingSimDlg message handlers

BOOL CTrainingSimDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	FillCharCBoxS(&m_registerNames, plantSim_registerNames, PS_LASTREGISTER+1, 0);
   m_selectedRegister = 0;

   OnSelchangeCbregisternames();

   //TOOLTIPS START                                          
   
   // handle tooltip for disabled controls too...
   // (call this code again if U enable/disable any controls on the fly.)
   CWnd *pChildFirst,*pChild;

   m_numDisabledControls = 0;
   pChildFirst = GetWindow(GW_CHILD);
   pChild = pChildFirst;
   // enumerate all controls in this window 
   while (TRUE)
   {
      if (!pChild->IsWindowEnabled())
      { // add control to our list
         m_pDisabledControls[m_numDisabledControls] = pChild;
         m_numDisabledControls++;
      }
      pChild = pChild->GetNextWindow(GW_HWNDNEXT);
      if ((pChildFirst == pChild)||(NULL==pChild))
         break;
   }

   m_ToolTip.Create (this);                                  
   m_ToolTip.Activate (TRUE);                                
                                                             
   CWnd*    pWnd = GetWindow (GW_CHILD);                     
   while (pWnd)                                              
   {                                                         
       int nID = pWnd->GetDlgCtrlID ();                      
       if (nID != -1)                                        
       {                                                     
           m_ToolTip.AddTool (pWnd, pWnd->GetDlgCtrlID ());  
       }                                                     
       pWnd = pWnd->GetWindow (GW_HWNDNEXT);                 
   }                                                         
   //TOOLTIPS END                                            

   SetTimer(0, 250, NULL);
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

// ---------------------------- OnSet ---------------------------------
// "SET" register value button clicked
void CTrainingSimDlg::OnSet() 
{
int val;

   // lock memory for writting
   CMemWriteLock lk(PLCMemory.GetMutex());

   val = GetDlgItemInt(IDC_REGVALUESET);
   PLCMemory.SetAt(MODBUS_MEM_REGISTERS, m_selectedRegister, (WORD)val);
	// [m_selectedRegister];
}

// -------------------------------- OnTimer -----------------------------
void CTrainingSimDlg::OnTimer(UINT nIDEvent) 
{
WORD val, controlVal;
CString statusText;

	// Fill all controls values (except the SET edit control)

   // status line  text
   if (pGlobalDialog->InPlantSimulation())
   {
      if (strlen(pGlobalDialog->GetAnimationScriptFile()))
         statusText.Format("Run script file '%s' (%d ms) %s", 
                  pGlobalDialog->GetAnimationScriptFile(),
                  pGlobalDialog->GetLastScriptRuntime(),
                  (pGlobalDialog->ScriptIsRunning()?"RUN":"IDLE")
                          );
      else
         statusText = "Build-in Tranining animation running...";
   }
   else
   {
      statusText = "Animation disabled";
   }
   SetDlgItemText(IDC_STATUSLINE, statusText);

   // handle PLC register values

   // drop-list register
   val = PLCMemory[MODBUS_MEM_REGISTERS][m_selectedRegister];
   SetDlgItemInt(IDC_REGVALUE, val);

   // digitals
   val = PLCMemory[MODBUS_MEM_REGISTERS][PS_FEEDBACKBITS];
   controlVal = PLCMemory[MODBUS_MEM_REGISTERS][PS_CONTROLBITS];
   
   CheckDlgButton(IDC_CHECK1, controlVal & PS_MASK_INPUT1  );
   CheckDlgButton(IDC_CHECK2, controlVal & PS_MASK_INPUT2  );
   CheckDlgButton(IDC_CHECK3, controlVal & PS_MASK_DRAIN   );
   CheckDlgButton(IDC_CHECK4, controlVal & PS_MASK_HEATER  );
   CheckDlgButton(IDC_CHECK5, controlVal & PS_MASK_RESET   );
   CheckDlgButton(IDC_CHECK6, controlVal & PS_MASK_LOWLEVEL);
   CheckDlgButton(IDC_CHECK7, controlVal & PS_MASK_AUTO    );
   CheckDlgButton(IDC_CHECK8, controlVal & PS_STIRRER_START);

   CheckDlgButton(IDC_CHECK9, val & PS_MASK_INPUT1  );
   CheckDlgButton(IDC_CHECK10,val & PS_MASK_INPUT2  );
   CheckDlgButton(IDC_CHECK11,val & PS_MASK_DRAIN   );
   CheckDlgButton(IDC_CHECK12,val & PS_MASK_HEATER  );
   CheckDlgButton(IDC_CHECK13,val & PS_MASK_RESET   );
   CheckDlgButton(IDC_CHECK14,val & PS_MASK_LOWLEVEL);
   CheckDlgButton(IDC_CHECK15,val & PS_MASK_AUTO    );
   CheckDlgButton(IDC_CHECK16,val & PS_STIRRER_START);


   CDialog::OnTimer(nIDEvent);
}

// ------------------------------ OnSelchangeCbregisternames ----------------
// register selection drop-list changed
void CTrainingSimDlg::OnSelchangeCbregisternames() 
{
WORD val;
   m_selectedRegister = m_registerNames.GetCurSel();
   // TODO: Add your control notification handler code here
   val = PLCMemory[MODBUS_MEM_REGISTERS][m_selectedRegister];
   SetDlgItemInt(IDC_REGVALUE, val);
   SetDlgItemInt(IDC_REGVALUESET, val);
   // [m_selectedRegister];
}

// -------------------------- ToggleCheckOnItem --------------------------
// toggle a bit
void CTrainingSimDlg::ToggleCheckOnItem(int checkID, int bitNum)
{
// lock memory for writting
CMemWriteLock lk(PLCMemory.GetMutex());
WORD val;
	
   val = PLCMemory[MODBUS_MEM_REGISTERS][PS_CONTROLBITS];
   if (IsDlgButtonChecked(checkID))
      val |= bitNum;
   else
      val &= (~bitNum);
   PLCMemory.SetAt(MODBUS_MEM_REGISTERS, PS_CONTROLBITS, val);

}

// user clicked on a tick-box
void CTrainingSimDlg::OnCheck1() 
{
   ToggleCheckOnItem(IDC_CHECK1, PS_MASK_INPUT1);
}

void CTrainingSimDlg::OnCheck2() 
{
   ToggleCheckOnItem(IDC_CHECK2, PS_MASK_INPUT2);
}

void CTrainingSimDlg::OnCheck3() 
{
   ToggleCheckOnItem(IDC_CHECK3, PS_MASK_DRAIN);
}

void CTrainingSimDlg::OnCheck4() 
{
   ToggleCheckOnItem(IDC_CHECK4, PS_MASK_HEATER);
}

void CTrainingSimDlg::OnCheck5() 
{
   ToggleCheckOnItem(IDC_CHECK5, PS_MASK_RESET);
}

void CTrainingSimDlg::OnCheck6() 
{
   ToggleCheckOnItem(IDC_CHECK6, PS_MASK_LOWLEVEL);
}

void CTrainingSimDlg::OnCheck7() 
{
   ToggleCheckOnItem(IDC_CHECK7, PS_MASK_AUTO);
}

void CTrainingSimDlg::OnCheck8() 
{
   ToggleCheckOnItem(IDC_CHECK8, PS_STIRRER_START);
}

BOOL CTrainingSimDlg::PreTranslateMessage(MSG* pMsg) 
{
	// TODO: Add your specialized code here and/or call the base class
    // TOOLTIPS START                                      
    if (m_hWnd)                                               
    {  
      // catter for disabled controls too      
      HandleTooltipsActivation(pMsg, this, m_pDisabledControls, m_numDisabledControls, &m_ToolTip);
      //m_ToolTip.RelayEvent (pMsg);                       
      return CDialog::PreTranslateMessage(pMsg);         
    }                                                      
    return (FALSE);                                        
    // TOOLTIPS END                                        
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
韩国欧美一区二区| 日韩一级精品视频在线观看| 久久久亚洲精品石原莉奈| 久草精品在线观看| 亚洲午夜日本在线观看| 久久这里只有精品视频网| 欧美色中文字幕| 99久久婷婷国产综合精品电影| 视频一区视频二区中文| 亚洲少妇最新在线视频| 欧美私模裸体表演在线观看| 亚洲黄色小说网站| 91理论电影在线观看| 亚洲精品高清视频在线观看| 色综合久久天天| 亚洲国产精品嫩草影院| 色婷婷综合在线| 午夜精品久久久久久久蜜桃app| 久久99久久99| 亚洲国产岛国毛片在线| 99re这里只有精品视频首页| 国产欧美一区二区三区沐欲| 国产一区高清在线| 一区二区三区四区高清精品免费观看 | 成人国产精品免费观看| 亚洲激情六月丁香| 久久一区二区视频| 色综合久久久久网| 国产在线精品一区二区夜色| 国产三级一区二区| 欧美一级视频精品观看| 国产成人精品免费看| 亚洲电影第三页| 亚洲毛片av在线| 国产一区二区三区免费观看| 最近日韩中文字幕| 精品成人一区二区三区四区| 99久久久久久| 精品国产一区二区三区四区四| 不卡的看片网站| 免费不卡在线观看| 最新高清无码专区| 视频一区二区国产| 99视频有精品| 亚洲欧美日韩国产中文在线| 日韩精品一级中文字幕精品视频免费观看 | 亚洲成a人在线观看| 久久久久国产成人精品亚洲午夜| 亚洲精品国产成人久久av盗摄 | 成人久久18免费网站麻豆| 日韩—二三区免费观看av| 视频一区二区不卡| 欧美精品一卡两卡| 亚洲国产另类av| 欧美性大战久久久久久久蜜臀 | 欧美在线视频你懂得| 国产亚洲美州欧州综合国| 午夜电影网亚洲视频| 在线播放中文一区| 日韩vs国产vs欧美| 欧美不卡在线视频| 成人动漫av在线| 欧美日韩一区二区电影| 亚洲激情中文1区| 欧美日韩精品一区二区天天拍小说 | 国产在线精品国自产拍免费| 久久蜜桃av一区精品变态类天堂| 国产精品一区在线| 中文字幕在线一区免费| 欧美日韩精品三区| 欧美国产丝袜视频| 91一区一区三区| 日韩专区欧美专区| 国产精品久久久久四虎| 在线观看日韩毛片| 国产在线一区二区| 亚洲欧美二区三区| 久久一夜天堂av一区二区三区| 亚洲第一主播视频| 久久综合久久综合亚洲| 91久久精品一区二区三| 午夜视频在线观看一区二区| 在线看一区二区| 丁香桃色午夜亚洲一区二区三区| 国产成人午夜99999| 欧美v国产在线一区二区三区| 欧美日本在线一区| 精品国产百合女同互慰| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 欧美撒尿777hd撒尿| 97se亚洲国产综合在线| 五月天激情综合| 亚洲精品你懂的| 激情偷乱视频一区二区三区| 亚洲精品免费视频| 成人做爰69片免费看网站| 亚洲精品国产a| 欧美手机在线视频| 成人深夜福利app| 夜夜亚洲天天久久| 香蕉久久夜色精品国产使用方法| 三级精品在线观看| 国产一区二区精品久久99| 日本欧洲一区二区| 美女高潮久久久| 老司机精品视频导航| 激情都市一区二区| 99久久婷婷国产精品综合| 国产成人免费视频一区| 国产成人综合在线播放| 国产在线观看免费一区| 97久久精品人人澡人人爽| 色国产精品一区在线观看| 日韩精品中午字幕| 日韩毛片视频在线看| 国产人伦精品一区二区| 91精品欧美综合在线观看最新| 欧美无砖砖区免费| 成人免费毛片app| 日本欧美在线看| 国产成a人亚洲精| 欧美色图第一页| 欧美国产欧美综合| 久久精品国产亚洲5555| 色综合久久66| 久久久精品欧美丰满| 亚洲乱码国产乱码精品精可以看| 国产一区二区福利| 欧美一区二区三区在线视频| 一区二区三区中文字幕电影| 国产一区二区三区在线观看免费视频 | 日韩亚洲欧美综合| 三级欧美在线一区| 欧美性色aⅴ视频一区日韩精品| 欧美国产日韩在线观看| 污片在线观看一区二区| 69精品人人人人| 久久99国产精品成人| 亚洲高清免费一级二级三级| 丰满亚洲少妇av| 久久先锋影音av鲁色资源网| 午夜免费久久看| 91在线云播放| 久久夜色精品国产欧美乱极品| 欧美国产一区视频在线观看| 亚洲线精品一区二区三区八戒| 一本色道久久综合精品竹菊| 99re热视频精品| 亚洲高清免费在线| 欧美电影一区二区| 美女国产一区二区| 国产无一区二区| 欧美日韩精品一区二区| 中文字幕一区二区三区四区不卡| 丁香一区二区三区| 国产欧美精品国产国产专区| 99久久国产免费看| 亚洲成人在线网站| 精品国产凹凸成av人导航| 国产尤物一区二区| 亚洲欧洲成人自拍| 日韩精品一区二区三区视频在线观看 | 国产精品水嫩水嫩| 91麻豆精品一区二区三区| 亚洲日本乱码在线观看| 色美美综合视频| 精品一区二区国语对白| 国产精品久久久久一区| 欧美一区二区免费视频| 久久成人久久爱| 依依成人精品视频| 国产农村妇女毛片精品久久麻豆| 色婷婷久久久久swag精品| 精品亚洲porn| 亚洲免费在线视频一区 二区| 中文字幕一区二区三| 日韩欧美一区二区不卡| 欧美系列在线观看| 91 com成人网| 日韩一区二区三区观看| 亚洲成人激情综合网| 精品噜噜噜噜久久久久久久久试看| 秋霞电影一区二区| 一本大道av一区二区在线播放| 亚洲午夜精品一区二区三区他趣| 国产精品色婷婷| 成人丝袜18视频在线观看| 成人免费va视频| 国产成人免费视| 高清国产一区二区| 日本精品视频一区二区三区| 亚洲午夜久久久| 欧美变态tickle挠乳网站| 国产成人啪免费观看软件 | 国产精品热久久久久夜色精品三区| 老司机精品视频导航| 午夜国产精品一区| 一区二区三区四区精品在线视频| 久久亚洲免费视频| 91精品麻豆日日躁夜夜躁|