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); }
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); } }