예제 #1
0
LPCSTR CDataFactory::GetItemNums2String(DWORD dwDataIndex)
{
	ASSERT(!m_bIsCurData);	// 必须是初始数据
    
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return "";
	}
	
	if(lpDataItem->btData[0] == MAXBYTE)
	{
		return "";	// 只有试机号的一期
	}
	
	m_pNumbers->SetItemData(0, lpDataItem->btData);
	LPCSTR lpszItemString = m_pNumbers->GetItemString(0);
    
	// 查询区段分隔符“+”所在位置
	int nPos = -1, nLen = strlen(lpszItemString);
	for(int i=0; i<nLen; i++)
	{
		if(lpszItemString[i] == '+')
		{
			nPos = i;
			break;
		}
	}
    
	if(nPos == -1)
	{
		return lpszItemString;	// 没有找到,则只有一个区
	}
    
	if(g_pIData->GetCurrentSectionIndex() == 0) // 返回第二区段文本串
	{
		// 去除前面的空格
		nPos ++;
		while(lpszItemString[nPos] == ' ')
			nPos ++;
        
		strcpy(m_szTempBuf, &lpszItemString[nPos]);
	}
	else	// 返回第一区段文本串
	{
		memcpy(m_szTempBuf, lpszItemString, nPos);
		m_szTempBuf[nPos] = 0;
		// 去除后面的空格
		nPos --;
		while(m_szTempBuf[nPos] == ' ')
		{
			m_szTempBuf[nPos] = 0;
			nPos --;
		}
	}
    
	return m_szTempBuf;
}
예제 #2
0
DWORD CDataFactory::GetItemIssue(DWORD dwDataIndex)
{
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return 0;
	}
    
	return lpDataItem->dwIssue;
}
예제 #3
0
BYTE CDataFactory::GetItemMachineIndex(DWORD dwDataIndex)
{
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return 0;
	}
	
	// 目前只有3D有机器信息
	return lpDataItem->btData[3];
}
예제 #4
0
BYTE CDataFactory::GetItemBallIndex(DWORD dwDataIndex)
{
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return 0;
	}
	
	// 目前只有3D有球信息
	return lpDataItem->btData[4];
}
예제 #5
0
파일: MR.cpp 프로젝트: tcrutt/tuxeip-1
int _GetMRReplySize(Encap_Header *header)
{	Eip_Item *dataitem=_GetDataItem(header);
	if (dataitem==NULL) return(0);
	switch (dataitem->Type_Id)
	{
		case ItemId_UCM:return(dataitem->Length);
		case ItemId_ConnectedTP:return(dataitem->Length-sizeof(CIP_INT)); // size of packet id
		case ItemId_OTSocketInfo:return(dataitem->Length-sizeof(Eip_SII));
		default:return(dataitem->Length);
	}
}
예제 #6
0
파일: MR.cpp 프로젝트: tcrutt/tuxeip-1
MR_Reply *_GetMRReply(Encap_Header *header)
{ Eip_Item *dataitem=_GetDataItem(header);
	if (dataitem==NULL) return(NULL);
	switch (dataitem->Type_Id)
	{
		case ItemId_UCM:return((MR_Reply*)((char*)dataitem+sizeof(Eip_UDI)));
		case ItemId_ConnectedTP:return((MR_Reply*)((char*)dataitem+sizeof(Eip_CDI)));
		case ItemId_OTSocketInfo:return((MR_Reply*)((char*)dataitem+sizeof(Eip_SII)));
		default:return((MR_Reply*)((char*)dataitem+sizeof(Eip_Item)));
	}
}
예제 #7
0
DWORD CDataFactory::GetItemTime(DWORD dwDataIndex)
{
	ASSERT(!m_bIsCurData);	// 必须是初始数据
	
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return 0;
	}
	
	return lpDataItem->dwDataTime % 10000;
}
예제 #8
0
DWORD CDataFactory::GetCount(BOOL bIgnoreOnlyTest)
{
	if(m_bIsCurData && bIgnoreOnlyTest)	// 当前数据并且忽略只含有试机号的数据
	{
		if(m_dwCurUsedDataItemCount > 0 && _GetDataItem(DATA_INDEX_ONLYTESTNUMS) != NULL)
		{
			return m_dwCurUsedDataItemCount - 1;	// 最后一期只有试机号没有开奖号
		}
	}
    
	return m_dwCurUsedDataItemCount;
}
예제 #9
0
DWORD CDataFactory::GetItemInitIndex(DWORD dwDataIndex)
{
	ASSERT(m_bIsCurData);	// 必须是当前数据
    
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return 0;
	}
	
	return lpDataItem->dwInitIndex;
}
예제 #10
0
DWORD CDataFactory::GetItemDataTimeAndIssue(DWORD dwDataIndex, DWORD &dwIssue)
{
	ASSERT(!m_bIsCurData);	// 必须是初始数据
    
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return 0;
	}
    
	dwIssue = lpDataItem->dwIssue;
	return lpDataItem->dwDataTime;
}
예제 #11
0
BOOL CDataFactory::IsTestNumsItem(DWORD dwDataIndex)
{
	if(dwDataIndex == DATA_INDEX_INVALID)
		dwDataIndex = DATA_INDEX_ONLYTESTNUMS;
	
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return FALSE;
	}
	
	return (lpDataItem->dwFlag & DATAITEM_FLAG_TESTNUM) ? TRUE : FALSE;
}
예제 #12
0
파일: Ethernet_IP.c 프로젝트: Lor88/TuxPLC
Eip_CDI *_ConnectedSend( Eip_Session *session,Eip_Connection *connection,
                    void *request,int size)
{ Eip_CAI adressitem;
	Eip_CDI dataitem;
	Eip_CDI *result=NULL;
	Encap_Header *reply=NULL;

	LogCip(LogTrace,"->Entering ConnectedSend \n");

	// adressitem
	adressitem.Type_Id=ItemId_ConnectionBased;
	adressitem.Length=0;
	adressitem.CID=connection->OT_ConnID;

	// dataitem
	dataitem.Type_Id=ItemId_ConnectedTP;
	dataitem.Packet=++(connection->packet);
	dataitem.Length=size;

	reply=_SendData_WaitReply(session,EIP_SENDUNITDATA,(void*)&adressitem,NULL,(void*)&dataitem,request);
	if (reply!=NULL)
		{
			Eip_CDI *respdataitem =(Eip_CDI *)_GetDataItem(reply);
			if (respdataitem==NULL)
			{
				CIPERROR(EIP_Error,reply->Status,0);
				free(reply);
				LogCip(LogTrace,"!Exiting ConnectedSend with error : %s\n",_cip_err_msg);
				return(NULL);
			}
			if ((reply->Command!=EIP_SENDUNITDATA)||(respdataitem->Packet!=connection->packet))
				{
					CIPERROR(Internal_Error,E_UnsolicitedMsg,0);
					free(reply);
					LogCip(LogTrace,"!Exiting ConnectedSend with error : %s\n",_cip_err_msg);
					return(NULL);
				}
			/* Result is OK */
      CIPERROR(EIP_Error,reply->Status,0);
			result=malloc(sizeof(Eip_CDI)+respdataitem->Length);
			memcpy(result,respdataitem,sizeof(Eip_Item)+respdataitem->Length);
			LogCip(LogTrace,"<-Exiting ConnectedSend : size=%d (%p)\n",sizeof(Eip_Item)+respdataitem->Length,respdataitem);
			free(reply);
			return(result);
		}
		else
		{
			LogCip(LogTrace,"!Exiting ConnectedSend with no response\n");
			return(NULL);
		}
}
예제 #13
0
LPCSTR CDataFactory::GetItemIssueString(DWORD dwDataIndex)
{
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return "";
	}
    
	sprintf(m_szTempIssueStringBuf, "%0*lu", g_pIData->GetIssueLen(), lpDataItem->dwIssue);
    
	CHECK_STRING_STACK(m_szTempIssueStringBuf);
    
	return m_szTempIssueStringBuf;
}
예제 #14
0
LPBYTE CDataFactory::GetItemTestNums(DWORD dwDataIndex)
{
	if(dwDataIndex == DATA_INDEX_INVALID)
		dwDataIndex = DATA_INDEX_ONLYTESTNUMS;
    
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return NULL;
	}
	
	// 目前只有3D有试机号信息
	return &(lpDataItem->btData[5]);
}
예제 #15
0
DWORD CDataFactory::GetItemTestNumsValue(DWORD dwDataIndex)
{
	if(dwDataIndex == DATA_INDEX_INVALID)
		dwDataIndex = DATA_INDEX_ONLYTESTNUMS;
	
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return 0;
	}
	
	// 目前只有3D有试机号信息
	m_pNumbers->SetItemData(0, &(lpDataItem->btData[5]));
	return m_pNumbers->GetItemValue(0);
}
예제 #16
0
LPBYTE CDataFactory::GetItemNums(DWORD dwDataIndex)
{
	LPDATAITEM lpItem = _GetDataItem(dwDataIndex);
	if(lpItem == NULL)
	{
		return NULL;
	}
    
	if(m_bIsCurData && lpItem->btData[0] == MAXBYTE)
	{
		return NULL;	// 只有试机号的一期
	}
    
	return lpItem->btData;
}
예제 #17
0
void CDataFactory::GetItemDateTime(DWORD dwDataIndex, CTime &tmDateTime)
{
	ASSERT(!m_bIsCurData);	// 必须是初始数据
    
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return ;
	}
	
	DWORD dwDateTime = lpDataItem->dwDataTime;
    
	tmDateTime = CTime(2000 + dwDateTime / 100000000, (dwDateTime / 1000000) % 100, (dwDateTime / 10000) % 100, 
                       (dwDateTime / 100) % 100, dwDateTime % 100, 0);
}
예제 #18
0
int CDataFactory::GetItemDayOfWeek(DWORD dwDataIndex)
{
	ASSERT(!m_bIsCurData);	// 必须是初始数据
	
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return 0;
	}
	
	DWORD dwDateTime = lpDataItem->dwDataTime;
	
	CTime tmDateTime = CTime(2000 + dwDateTime / 100000000, (dwDateTime / 1000000) % 100, (dwDateTime / 10000) % 100, 0, 0, 0);
    
	return tmDateTime.GetDayOfWeek() - 1;
}
예제 #19
0
LPCSTR CDataFactory::GetItemTimeString(DWORD dwDataIndex)
{
	ASSERT(!m_bIsCurData);	// 必须是初始数据
	
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return "";
	}
	
	DWORD dwDateTime = lpDataItem->dwDataTime % 10000;
	sprintf(m_szTempTimeStringBuf, "%02lu:%02lu", dwDateTime / 100, dwDateTime % 100);
    
	CHECK_STRING_STACK(m_szTempTimeStringBuf);
	
	return m_szTempTimeStringBuf;
}
예제 #20
0
void CDataFactory::SetForecastNums(LPBYTE lpData)
{
	if(lpData == NULL)	// 清除预测行号码
	{
		ZeroMemory(&m_stForcastItem, sizeof(m_stForcastItem));
	}
	else	// 设置预测行号码
	{
		memcpy(m_stForcastItem.btData, lpData, MAX_NUMBER_COUNT);
		
		LPDATAITEM lpItem = _GetDataItem(DATA_INDEX_ONLYTESTNUMS);
		if(lpItem != NULL)
		{
			// 设置当期试机号数据,目前只有3D有
			memcpy(&m_stForcastItem.btData[3], &lpItem->btData[3], 5);
		}
		m_stForcastItem.dwIssue = 1;	// 只需不为0即可
	}
}
예제 #21
0
LPBYTE CDataFactory::GetItem2Nums(DWORD dwDataIndex)
{
	ASSERT(!m_bIsCurData);	// 必须是初始数据
    
	LPDATAITEM lpDataItem = _GetDataItem(dwDataIndex);
	if(lpDataItem == NULL)
	{
		return NULL;
	}
    
	if(lpDataItem->btData[0] == MAXBYTE)
	{
		return NULL;	// 只有试机号的一期
	}
    
	if(g_pIData->GetCurrentSectionIndex() == 0)
		return &lpDataItem->btData[g_pIData->GetNumberCount(DATA_SOURCE_INIT)];	// 返回第二区段
	else
		return lpDataItem->btData;			// 返回第一区段
}