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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? myhostproxy.cpp

?? 用于開發(fā)Modbus工業(yè)級通信
?? CPP
字號:
// MyHostProxy.cpp : implementation file
//

#include "stdafx.h"
#include "mod_rssim.h"
#include "MyHostProxy.h"

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

extern CMOD_simDlg *pGlobalDialog;
extern CControllerMemory PLCMemory;


/////////////////////////////////////////////////////////////////////////////
// CMyHostProxy

IMPLEMENT_DYNCREATE(CMyHostProxy, CActiveScriptHost)

CMyHostProxy::CMyHostProxy()
{
	EnableAutomation();
}

CMyHostProxy::~CMyHostProxy()
{
}


void CMyHostProxy::OnFinalRelease()
{
	// When the last reference for an automation object is released
	// OnFinalRelease is called.  The base class will automatically
	// deletes the object.  Add additional cleanup required for your
	// object before calling the base class.

	CActiveScriptHost::OnFinalRelease();
}


BEGIN_MESSAGE_MAP(CMyHostProxy, CActiveScriptHost)
	//{{AFX_MSG_MAP(CMyHostProxy)
		// NOTE - the ClassWizard will add and remove mapping macros here.
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

BEGIN_DISPATCH_MAP(CMyHostProxy, CActiveScriptHost)
	//{{AFX_DISPATCH_MAP(CMyHostProxy)
	DISP_FUNCTION(CMyHostProxy, "GetRegisterValue", xGetRegisterValue, VT_I2, VTS_I4 VTS_I4)
	DISP_FUNCTION(CMyHostProxy, "EnableStation", xEnableStation, VT_EMPTY, VTS_I2)
	DISP_FUNCTION(CMyHostProxy, "DisableStation", xDisableStation, VT_EMPTY, VTS_I2)
	DISP_FUNCTION(CMyHostProxy, "DisplayAbout", xDisplayAbout, VT_EMPTY, VTS_NONE)
	DISP_FUNCTION(CMyHostProxy, "GetLastRunTime", xGetLastRunTime, VT_I4, VTS_NONE)
	DISP_FUNCTION(CMyHostProxy, "SetRegisterValue", xSetRegisterValue, VT_EMPTY, VTS_I4 VTS_I4 VTS_I4)
	DISP_FUNCTION(CMyHostProxy, "StationEnabled", xStationEnabled, VT_I4, VTS_I2)
	DISP_FUNCTION(CMyHostProxy, "ClearRegisters", xClearRegisters, VT_EMPTY, VTS_NONE)
	DISP_FUNCTION(CMyHostProxy, "TransmitRegisters", xTransmitRegisters, VT_I4, VTS_I2 VTS_I2 VTS_I4 VTS_I4 VTS_I4)
	DISP_FUNCTION(CMyHostProxy, "AddDebugString", xAddDebugString, VT_EMPTY, VTS_BSTR)
	DISP_FUNCTION(CMyHostProxy, "TransacationBusy", xMasterBusy, VT_I4, VTS_NONE)
	//}}AFX_DISPATCH_MAP
END_DISPATCH_MAP()

// Note: we add support for IID_IMyHostProxy to support typesafe binding
//  from VBA.  This IID must match the GUID that is attached to the 
//  dispinterface in the .ODL file.

// {8570A0E2-963E-4673-8404-0D5D685B5B23}
static const IID IID_IMyHostProxy =
{ 0x8570a0e2, 0x963e, 0x4673, { 0x84, 0x4, 0xd, 0x5d, 0x68, 0x5b, 0x5b, 0x23 } };

BEGIN_INTERFACE_MAP(CMyHostProxy, CActiveScriptHost)
	INTERFACE_PART(CMyHostProxy, IID_IMyHostProxy, Dispatch)
END_INTERFACE_MAP()
                          // not sure of this animal
static const GUID _tlid = 
{ 0xE662E9C0, 0x01DB, 0x4A0C, { 0x9A, 0xF9, 0x06, 0xF8, 0xFF, 0xB7, 0xAC, 0xBE } };

const WORD _wVerMajor = 1;
const WORD _wVerMinor = 0;

IMPLEMENT_OLETYPELIB(CMyHostProxy, _tlid, _wVerMajor, _wVerMinor)

BOOL CMyHostProxy::GetDispatchIID(IID* riid)
{
	*riid = IID_IMyHostProxy;
	return TRUE;
}


/////////////////////////////////////////////////////////////////////////////
// CMyHostProxy message handlers
//
// Here follow the objects members which are called from script.
//
//
//
/////////////////////////////////////////////////////////////////////////////



// --------------------------------- GetRegisterValue ------------------------
// Return a PLC register's value
// registertype is from 0-5, the PLC I/O type 0=input,1=output etc....
// registernumber 0-65535 (depends on app setings)
//
short CMyHostProxy::xGetRegisterValue(long registertype, long registernumber) 
{
DWORD  maximumOffset;

   // do all the range checking
   if (registertype >= pGlobalDialog->GetNumMemoryAreas())//>MAX_MOD_MEMTYPES)
   {
      MessageBeep(MB_ICONASTERISK);
      pGlobalDialog->AddCommsDebugString("Script attempt to read invalid register!");
      return 0;
   }

   maximumOffset = pGlobalDialog->GetPLCMemoryLimit(registertype);
   if ((DWORD)registernumber > maximumOffset)
   {
      pGlobalDialog->AddCommsDebugString("Script attempt to read invalid register!");
      MessageBeep(MB_ICONASTERISK);
      return 0;
   }

   // OK, return the VALUE
   return (short)(PLCMemory[registertype][registernumber]);
}

// ------------------------- EnableStation ------------------------------
void CMyHostProxy::xEnableStation(short stationid) 
{
   // do all the range checking
   if ((stationid <0) || (stationid > STATIONTICKBOXESMAX))
      return;

   // enable the control and the remembered state for scrolling and tooltips
   pGlobalDialog->EnablePLCStation(stationid, 1);
}

// ------------------------- DisableStation -------------------------------
void CMyHostProxy::xDisableStation(short stationid) 
{
   // range checking
   if ((stationid <0) || (stationid > STATIONTICKBOXESMAX))
      return;

   // dis-able the control and the remembered state for scrolling and tooltips
   pGlobalDialog->EnablePLCStation(stationid, 0);
}

// --------------------------- DisplayAbout ---------------------------------
// pop the "About..." window up
void CMyHostProxy::xDisplayAbout() 
{
	// TODO: Add your dispatch handler code here
   pGlobalDialog->OnAbout();
}

// ------------------------------ GetLastRunTime -----------------------------
// returns -1 if script has not yet run or last run failed
long CMyHostProxy::xGetLastRunTime() 
{
LONG time = pGlobalDialog->GetLastScriptRuntime();
//CString deb;
//   deb.Format("Runtime = %d ms\n", time);
//   OutputDebugString(deb);
	return time;
}

// --------------------------------- SetRegisterValue ------------------------
// Sets a PLC register's value
// registertype is from 0-5, the PLC I/O type 0=input,1=output etc....
// registernumber 0-65535 (depends on app setings)
// registervalue +- 32K
void CMyHostProxy::xSetRegisterValue(long registertype, long registernumber, long registervalue) 
{
CMemWriteLock lk(PLCMemory.GetMutex());
DWORD  maximumOffset;
int cols;

   // do all the range checking
   if (registertype >= pGlobalDialog->GetNumMemoryAreas()/*MAX_MOD_MEMTYPES*/)
   {
      MessageBeep(MB_ICONASTERISK);
      pGlobalDialog->AddCommsDebugString("Script attempt to write to invalid register!");
      return;
   }

   maximumOffset = pGlobalDialog->GetPLCMemoryLimit(registertype);
   if ((DWORD)registernumber > maximumOffset)
   {
      pGlobalDialog->AddCommsDebugString("Script attempt to write to invalid register!");
      MessageBeep(MB_ICONASTERISK);
      return;
   }

   // OK, do the SET
   PLCMemory.SetAt(registertype, registernumber, (int)registervalue);
   
   // refresh the display window
   cols = pGlobalDialog->GetListDisplayedWidth();
   pGlobalDialog->RedrawListItems(registertype, 
                                registernumber/(cols), 
                                registernumber/(cols)
                               ); // repaint only the needed rows
}

// -------------------------------- StationEnabled ----------------------------
long CMyHostProxy::xStationEnabled(short stationid) 
{
	// TODO: Add your dispatch handler code here
   return (int)(pGlobalDialog->m_microTicksEnableState[stationid]);
}

// -------------------------------- ClearRegisters ----------------------------
// clear all registers on next animation cycle
void CMyHostProxy::xClearRegisters() 
{
	// TODO: Add your dispatch handler code here
   pGlobalDialog->ZeroRegisterValues();
}

// ------------------------------- TransmitRegisters --------------------------
// SCRIPT FUNC NAME : TransmitRegisters
long CMyHostProxy::xTransmitRegisters(short sourceStation, 
                                      short destinationStation, 
                                      long file_areaNumber, 
                                      long startRegister, 
                                      long numRegisters) 
{
	// TODO: Add your dispatch handler code here
   return(pGlobalDialog->MasterTransmit(sourceStation, 
                                        destinationStation, 
                                        file_areaNumber, 
                                        startRegister, 
                                        numRegisters));
	//return 0;
}

// ---------------------------- AddDebugString -------------------------------
// SCRIPT FUNC NAME : AddDebugString
// add a message to the comms debugger
void CMyHostProxy::xAddDebugString(LPCTSTR text) 
{
	// TODO: Add your dispatch handler code here
  pGlobalDialog->AddCommsDebugString(text);
}

// ----------------------------- MasterBusy -----------------------------------
// SCRIPT FUNC NAME : TransactionBusy
// returns TRUE if the comms cycle/command is not yet completed
long CMyHostProxy::xMasterBusy() 
{
long ret;
	// TODO: Add your dispatch handler code here
   ret = pGlobalDialog->MasterBusy();
	return ret;
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品一区二区三区免费观看| 亚洲人精品午夜| 日本不卡高清视频| 欧美一区二区精美| 狂野欧美性猛交blacked| 欧美一区二区性放荡片| 免费成人深夜小野草| 欧美成人一区二区| 国产一区 二区 三区一级| 国产日韩欧美精品一区| 成人av一区二区三区| 一区二区三区在线观看网站| 欧美人体做爰大胆视频| 久久99精品久久久久久| 欧美国产亚洲另类动漫| 色综合久久综合网97色综合 | 久久这里只有精品6| 国产成人综合在线| 自拍视频在线观看一区二区| 欧美日韩电影一区| 国产一区91精品张津瑜| 日韩码欧中文字| 91精品国产综合久久香蕉麻豆| 精品无码三级在线观看视频| 亚洲欧洲成人精品av97| 欧美一级在线免费| 成人伦理片在线| 亚洲国产成人91porn| 久久人人97超碰com| 91香蕉视频污| 久久国产精品区| 伊人婷婷欧美激情| 久久久99精品久久| 在线不卡免费欧美| 成人福利视频在线看| 日韩成人免费电影| 亚洲视频一二三| 久久婷婷综合激情| 欧美精品123区| 97久久精品人人做人人爽50路| 日本不卡在线视频| 一区二区三区中文字幕精品精品 | 久久久久久久久久美女| 欧美性生交片4| 波多野结衣精品在线| 久久国产精品露脸对白| 一区二区三区精品在线观看| 国产拍欧美日韩视频二区 | 日韩欧美美女一区二区三区| 一本高清dvd不卡在线观看| 国产aⅴ综合色| 蜜臀av一级做a爰片久久| 亚洲与欧洲av电影| 国产女主播在线一区二区| 欧美一区二区精品| 6080yy午夜一二三区久久| 色嗨嗨av一区二区三区| 成人网页在线观看| 国产一区二区中文字幕| 免费人成精品欧美精品| 午夜成人在线视频| 亚洲一本大道在线| 悠悠色在线精品| 亚洲乱码一区二区三区在线观看| 亚洲国产精品高清| 国产欧美一区二区三区在线看蜜臀 | 综合久久久久久久| 欧美激情一区三区| 国产色婷婷亚洲99精品小说| 精品久久久久久综合日本欧美| 91麻豆精品国产无毒不卡在线观看| 欧美在线影院一区二区| 91黄色小视频| 在线观看日韩毛片| 在线观看av一区二区| 91麻豆123| 91免费在线视频观看| 91美女视频网站| 在线观看91精品国产入口| 精品污污网站免费看| 欧美日韩国产片| 欧美高清www午色夜在线视频| 欧美日韩国产欧美日美国产精品| 欧美亚洲丝袜传媒另类| 欧美系列一区二区| 91精品福利在线一区二区三区 | 91在线视频官网| 色综合欧美在线视频区| 91福利在线播放| 欧美男生操女生| 日韩欧美激情一区| 国产日韩欧美精品一区| 亚洲丝袜精品丝袜在线| 亚洲线精品一区二区三区| 午夜国产不卡在线观看视频| 蜜桃视频一区二区三区| 国产传媒日韩欧美成人| 色婷婷精品久久二区二区蜜臀av| 欧美午夜寂寞影院| 日韩欧美色综合网站| 中文无字幕一区二区三区| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 日韩美女精品在线| 午夜精品久久久久久久99水蜜桃 | 寂寞少妇一区二区三区| 成人ar影院免费观看视频| 欧美综合视频在线观看| 日韩精品一区二区在线| 国产精品视频看| 亚洲国产成人91porn| 国产在线不卡一区| 色综合天天综合狠狠| 91精品免费观看| 欧美国产精品中文字幕| 亚洲一区二区四区蜜桃| 国产剧情一区二区| 欧美最猛黑人xxxxx猛交| 精品动漫一区二区三区在线观看| 国产精品久久一级| 日本一不卡视频| av电影天堂一区二区在线观看| 日韩精品综合一本久道在线视频| 成人免费观看av| 国产suv一区二区三区88区| 风流少妇一区二区| 欧美网站一区二区| 久久亚洲欧美国产精品乐播 | 欧美大片一区二区| 国产精品久久久久一区| 蜜乳av一区二区三区| 欧美在线看片a免费观看| 日韩欧美卡一卡二| 亚洲3atv精品一区二区三区| 国产一区999| 555夜色666亚洲国产免| 日韩一区欧美小说| 韩日av一区二区| 欧美色综合天天久久综合精品| 久久久噜噜噜久久人人看| 五月婷婷欧美视频| 91麻豆6部合集magnet| 日本一区二区三区免费乱视频| 日韩精品一级二级| 日本精品视频一区二区| 欧美国产97人人爽人人喊| 美女免费视频一区| 欧美人狂配大交3d怪物一区| 最新高清无码专区| 国产不卡高清在线观看视频| 欧美不卡一区二区三区四区| 丝袜国产日韩另类美女| 色狠狠一区二区三区香蕉| 国产精品伦理一区二区| 国产在线一区二区综合免费视频| 91精品国产全国免费观看| 亚洲一卡二卡三卡四卡五卡| 91污片在线观看| 国产精品久久久久影院老司| 国产91精品久久久久久久网曝门| 精品国产乱码久久久久久闺蜜| 日韩成人精品在线| 欧美一区二区精品久久911| 亚洲成人免费电影| 欧美日韩色一区| 性做久久久久久| 欧美日韩不卡一区| 亚洲高清免费观看| 91精品欧美福利在线观看| 欧美aⅴ一区二区三区视频| 欧美精品久久久久久久多人混战 | 麻豆精品视频在线观看| 91精品国产黑色紧身裤美女| 日本成人中文字幕| 日韩精品一区二区三区视频播放| 麻豆一区二区三区| xfplay精品久久| 成熟亚洲日本毛茸茸凸凹| 亚洲婷婷在线视频| 91黄色免费观看| 午夜精品一区二区三区三上悠亚| 欧美日韩日日夜夜| 久久黄色级2电影| 久久精品人人做人人爽97| 成人免费不卡视频| 亚洲美女在线一区| 欧美日韩一区二区三区四区五区| 性久久久久久久久久久久| 日韩精品一区二| 成人一区二区三区视频| 亚洲美女区一区| 欧美精品一卡二卡| 精品一区二区三区在线播放| 国产亚洲一区字幕| 91久久精品国产91性色tv| 免费成人在线播放| 国产精品丝袜91| 欧美午夜一区二区三区| 麻豆精品国产91久久久久久| 国产精品私人影院| 欧美日韩精品一区二区三区四区 |