当前位置: 首页>>代码示例>>C++>>正文


C++ CContext::iGetCurrentSize方法代码示例

本文整理汇总了C++中CContext::iGetCurrentSize方法的典型用法代码示例。如果您正苦于以下问题:C++ CContext::iGetCurrentSize方法的具体用法?C++ CContext::iGetCurrentSize怎么用?C++ CContext::iGetCurrentSize使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CContext的用法示例。


在下文中一共展示了CContext::iGetCurrentSize方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: bExecuteNumExchange

BOOL CElemCycleStep::bExecuteNumExchange(int iNum,CElemList *pListExchange, BOOL bCanRead, BOOL bCanWrite,CEnumInterface &EnumInterface)
{
	BOOL bReturn = TRUE;
	CElemExchangeJbus *pElem = NULL;
	BYTE aBuffer[10240];
	CContext Context;
	int iNbrTrame;
	long iSizeToWrite;
	long iSizeToRead;
	int iNbrRetry = NBR_RETRY_EXCHANGE;
	CThreadInterface *pInterface = NULL;

	iNbrTrame = pListExchange->iGetCount();

	if ((iNum < iNbrTrame) && (iNum > -1))
	{
		if (pElem = (CElemExchangeJbus*)pListExchange->pGetAt(iNum))
		{
			if (pElem->m_pTrameJbusRQ && pElem->m_pTrameJbusRP)
			{
				if (pElem->m_pTrameJbusRQ->bAccessAllowed(bCanRead,bCanWrite))
				{

					if (pInterface = EnumInterface.pGetSelectedInterface(pElem->m_pTrameJbusRQ->ucGetNumDest()))
					{
						iNbrRetry = NBR_RETRY_EXCHANGE;
						do
						{
							Context.Reset(TRUE,NULL,aBuffer,sizeof(aBuffer),pInterface->bGetModeInteger(),FALSE);
							iSizeToWrite = pElem->m_pTrameJbusRQ->iGetStreamSize(Context);
							if (iSizeToWrite < sizeof(aBuffer))
							{
								if (bReturn = pElem->m_pTrameJbusRQ->bSerialize(Context))
								{
									iSizeToWrite = Context.iGetCurrentSize();
									iSizeToRead = pElem->m_pTrameJbusRP->iGetStreamSize(Context);
									if (iSizeToRead < Context.m_iSize)
									{
										
										if (bReturn = pInterface->bWriteAndRead(iNum,Context.m_pBuffStart,iSizeToWrite,aBuffer,iSizeToRead,Context.m_iSize, &iSizeToRead,FALSE))
										{
											bReturn = pElem->m_pTrameJbusRP->bUpdateData(aBuffer,iSizeToRead,Context.m_bModeInteger);
											if (!bReturn) 
											{
												TRACE_DEBUG(eDebug,eCycle,_T(__FILE__),_T(__FUNCTION__),__LINE__,_T("Error bUpdateData: %s"),szGetLabel());
											}
											

										}
										Sleep(DW_DELAI_INTER_TRAME);// delai inter-trame
										
									}
									else
									{
										TRACE_DEBUG(eDebug,eConfig,_T(__FILE__),_T(__FUNCTION__),__LINE__,_T("taille buffer d'échange trop petit, taille buffer = %d, taille trame = %d"),Context.m_iSize,iSizeToRead);
									}
								}
							}
						}
						while (!bReturn && (iNbrRetry-- > 0));
					}
				}
			}

		}
	}
	else
		TRACE_LOG_MSG(_T("(iNum < iNbrTrame) && (iNum > -1)"));

	if (!bReturn) 
	{
		TRACE_DEBUG(eError,eCycle,_T(__FILE__),_T(__FUNCTION__),__LINE__,_T("Erreur de com avec la carte n°%u"), (pElem)?pElem->m_pTrameJbusRQ->ucGetNumDest():99);
	}
	return bReturn;
}
开发者ID:benoitk,项目名称:cristal,代码行数:75,代码来源:Cycle.cpp


注:本文中的CContext::iGetCurrentSize方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。