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

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

?? trainingsimdlg.cpp

?? 用于開發Modbus工業級通信
?? 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一区二区三区免费野_久草精品视频
欧美日韩你懂的| 色狠狠色噜噜噜综合网| 国产精品久久久久桃色tv| 日本福利一区二区| 精品一二三四区| 中文字幕中文字幕中文字幕亚洲无线| 欧美日韩国产首页| 99久久精品国产毛片| 精品一区二区国语对白| 亚洲第一激情av| 一色屋精品亚洲香蕉网站| 26uuu色噜噜精品一区| 欧美在线不卡视频| 波多野结衣中文一区| 精品一区二区影视| 日av在线不卡| 亚洲国产va精品久久久不卡综合 | 成人激情小说乱人伦| 亚洲成人www| 国产精品久久夜| 日韩三级伦理片妻子的秘密按摩| jlzzjlzz欧美大全| 亚洲免费视频中文字幕| 日韩午夜在线影院| 精品一二三四在线| 亚洲永久精品国产| 国产精品视频yy9299一区| 欧美美女bb生活片| 91碰在线视频| 国产精品一区在线观看乱码| 午夜久久电影网| 亚洲日本在线a| 国产精品色在线观看| 精品国产乱码久久久久久1区2区 | 欧美午夜免费电影| 成a人片国产精品| 国产精品主播直播| 青青草原综合久久大伊人精品优势| 亚洲色图.com| 国产精品电影一区二区| 久久免费美女视频| 制服丝袜av成人在线看| 91久久线看在观草草青青| 成人va在线观看| 日本韩国欧美一区| 成人动漫一区二区在线| av电影天堂一区二区在线观看| 国产精品一级片在线观看| 日韩av电影免费观看高清完整版 | 日韩一区二区三区四区五区六区| 在线精品视频一区二区三四| 91热门视频在线观看| 成人av午夜影院| 成人污视频在线观看| 国产酒店精品激情| 美腿丝袜亚洲三区| 日韩av中文在线观看| 免费美女久久99| 免费观看91视频大全| 视频一区二区中文字幕| 亚洲午夜日本在线观看| 亚洲一区成人在线| 午夜精品视频一区| 日本少妇一区二区| 青青草视频一区| 蜜芽一区二区三区| 久久91精品久久久久久秒播| 久久精品噜噜噜成人av农村| 青青青伊人色综合久久| 久久99久国产精品黄毛片色诱| 激情丁香综合五月| 东方aⅴ免费观看久久av| 大胆亚洲人体视频| 91蝌蚪porny九色| 欧美视频在线一区二区三区| 9191精品国产综合久久久久久| 91精品国产91热久久久做人人 | 在线成人小视频| 日韩一二三四区| 久久久久久久久久久电影| 国产婷婷色一区二区三区在线| 国产精品国产三级国产普通话蜜臀 | 午夜视频一区在线观看| 喷水一区二区三区| 精品一区二区免费| av不卡一区二区三区| 成人av在线一区二区三区| 国产精品资源在线看| 91小视频免费观看| 欧美区在线观看| 久久久久久综合| 亚洲乱码国产乱码精品精小说 | 色婷婷精品大视频在线蜜桃视频 | 白白色亚洲国产精品| 91免费版在线| 欧美精品在欧美一区二区少妇| 欧美一区二区在线免费播放| 久久久久久影视| 亚洲一区二区在线视频| 亚洲第一久久影院| 国内精品久久久久影院薰衣草| 99这里都是精品| 在线观看www91| 久久九九99视频| 天堂午夜影视日韩欧美一区二区| 国内精品久久久久影院薰衣草| 色就色 综合激情| 精品国内二区三区| 夜夜嗨av一区二区三区四季av| 美女视频网站黄色亚洲| 91麻豆精品视频| 91精品久久久久久久91蜜桃| 国产网红主播福利一区二区| 亚洲高清不卡在线| 久草中文综合在线| 欧美无乱码久久久免费午夜一区| 国产亚洲短视频| 日本sm残虐另类| 91精品91久久久中77777| 久久久一区二区三区| 婷婷综合另类小说色区| av中文字幕不卡| 久久久久久久久久美女| 奇米影视在线99精品| 91成人国产精品| 国产精品免费免费| 精品亚洲国内自在自线福利| 欧美天天综合网| 国产亚洲一二三区| 亚洲日本欧美天堂| 97se亚洲国产综合自在线| 久久精品亚洲乱码伦伦中文 | 精品免费一区二区三区| 亚洲国产婷婷综合在线精品| 99精品一区二区三区| 久久精品日产第一区二区三区高清版| 日韩1区2区日韩1区2区| 在线观看一区二区精品视频| 亚洲四区在线观看| 成人久久视频在线观看| 欧美一区二区三区四区久久| 亚洲精品乱码久久久久久日本蜜臀| 免费观看久久久4p| 777久久久精品| 日韩精品欧美成人高清一区二区| 91麻豆视频网站| 亚洲精品videosex极品| 99久久精品免费看| 亚洲视频免费看| 色综合咪咪久久| 亚洲精品久久久蜜桃| 91在线精品秘密一区二区| 国产精品国产三级国产普通话三级| 国产精品一区在线观看你懂的| 日韩午夜在线播放| 奇米影视一区二区三区| 欧美一区三区二区| 久久精品国产久精国产爱| 日韩三级.com| 精久久久久久久久久久| 久久久噜噜噜久久中文字幕色伊伊| 国产乱淫av一区二区三区| 久久久久久久久97黄色工厂| 91丨国产丨九色丨pron| 亚洲视频一二三区| 在线观看一区日韩| 婷婷中文字幕综合| 日韩免费福利电影在线观看| 国产美女视频一区| ...av二区三区久久精品| 色综合久久88色综合天天免费| 亚洲国产精品人人做人人爽| 欧美一区午夜精品| 视频在线在亚洲| 国产欧美一区二区三区沐欲| av网站一区二区三区| 夜夜嗨av一区二区三区四季av| 67194成人在线观看| 国内精品国产三级国产a久久 | 亚洲品质自拍视频| 在线观看不卡视频| 亚洲午夜精品久久久久久久久| 欧美电影免费提供在线观看| 国产黄色精品网站| 一级精品视频在线观看宜春院| 56国语精品自产拍在线观看| 国产一区中文字幕| 中文av字幕一区| 欧美亚洲国产一区二区三区| 久久疯狂做爰流白浆xx| 国产精品欧美久久久久无广告| 91免费视频观看| 免费看欧美美女黄的网站| 欧美激情一区二区| 欧美久久久久中文字幕| 国产高清在线观看免费不卡| 亚洲激情欧美激情| 精品国产乱码久久| 欧美性大战久久久久久久蜜臀| 蜜臀va亚洲va欧美va天堂 |