Ejemplo n.º 1
0
 int _WriteLgxData(Eip_Session *session,Eip_Connection *connection,
                            char *adress,LGX_Data_Type datatype,void *data,
                            /*int datasize,*/CIP_UINT number)
{ int requestsize;
	CommonDataService_Reply *rep=NULL;
	int datasize=number*_GetLGXDataSize(datatype);
	WriteDataService_Request *request=_BuildLgxWriteDataRequest(adress,datatype,data,datasize,number,&requestsize);
	Eip_CDI *DataItem=_ConnectedSend(session,connection,request,requestsize);
	free(request);
	if (DataItem==NULL) return(Error);
	rep=_GetService_Reply((Eip_Item*)DataItem,0);
	if (rep==NULL) return(Error);
	if (rep->Status!=0)
	{
		CIPERROR(AB_Error,rep->Status,_GetExtendedStatus(rep));
		free(DataItem);
		return(Error);
	}	else
	{
		int result=_GetService_ReplyNumber((Eip_Item*)DataItem);
		free(DataItem);
		return(result);
	}
	//return(DataItem->Length);
}
Ejemplo n.º 2
0
Archivo: LGX.c Proyecto: rarias/tuxeip
LGX_Read *_ReadLgxData( Eip_Session *session,Eip_Connection *connection,
                            char *adress,CIP_UINT number)
{ int requestsize;
	ReadDataService_Request *request=_BuildLgxReadDataRequest(adress,number,&requestsize);
	Eip_CDI *DataItem=_ConnectedSend(session,connection,request,requestsize);
	free(request);
	if (DataItem==NULL) return(NULL);
	CommonDataService_Reply *rep=_GetService_Reply((Eip_Item*)DataItem,0);
	if (rep==NULL) return(NULL);
	if (rep->Status!=0) 
	{
		CIPERROR(AB_Error,rep->Status,_GetExtendedStatus(rep));
		free(DataItem);
		return(NULL);
	}	else
	{	
		LGX_Read *result=_DecodeLGX(rep,DataItem->Length-sizeof(DataItem->Packet));
		free(DataItem);
		return(result);
	}
}