public ResultSet ExecReadRequest(Pdu_ReadRequest myPdu) { Pdu wrt = ExchangePdu(myPdu); return new ResultSet(wrt.Param[1], wrt.Data.ToArray()); }
/*public int getMessage(IPDU p) { //Console.WriteLine(p); //return dc->iface->sendMessage(dc, p); return 0; }*/ /*public int getU8()//not realy - delete { return 0; }*/ //public int readBits(int area, int DBnum, int start, int len, byte[] buffer) // { // Pdu p1, p2; /* int res; #ifdef DEBUG_CALLS LOG7("daveReadBits(dc:%p area:%s area number:%d start address:%d byte count:%d buffer:%p)\n", dc, daveAreaName(area), DBnum, start,len,buffer); FLUSH; #endif dc->resultPointer=NULL; dc->_resultPointer=NULL; dc->AnswLen=0; p1.header=dc->msgOut+dc->PDUstartO; davePrepareReadRequest(dc, &p1); daveAddBitVarToReadRequest(&p1, area, DBnum, start, len); res=_daveExchange(dc, &p1); if (res!=daveResOK) return res; res=_daveSetupReceivedPDU(dc, &p2); if (daveDebug & daveDebugPDU) LOG3("_daveSetupReceivedPDU() returned: %d=%s\n", res,daveStrerror(res)); if (res!=daveResOK) return res; res=_daveTestReadResult(&p2); if (daveDebug & daveDebugPDU) LOG3("_daveTestReadResult() returned: %d=%s\n", res,daveStrerror(res)); if (res!=daveResOK) return res; if (daveDebug & daveDebugPDU) LOG2("got %d bytes of data\n", p2.udlen); if (p2.udlen==0) { return daveResCPUNoData; } if (buffer!=NULL) { if (daveDebug & daveDebugPDU) LOG2("copy %d bytes to buffer\n", p2.udlen); memcpy(buffer,p2.udata,p2.udlen); } dc->resultPointer=p2.udata; dc->_resultPointer=p2.udata; dc->AnswLen=p2.udlen; return res;*/ // return 0; //} public int readBytes(int area, int DBnum, int start, int len, byte[] buffer) { var p1 = new Pdu_ReadRequest(); Pdu p2; int res; AnswLen = 0; // 03/12/05 //dc->resultPointer=NULL; //dc->_resultPointer=NULL; //p1.header=dc->msgOut+dc->PDUstartO; //davePrepareReadRequest(ref p1); p1.addVarToReadRequest(area, DBnum, start, len); //res = _daveExchange(dc, &p1); p2 = ExchangePdu(p1); //if (res != daveResOK) return res; //res = _daveSetupReceivedPDU(dc, &p2); //if (res != daveResOK) return res; res = p2.testReadResult(); if (res != Connection.daveResOK) return res; if (p2.UData.Count == 0) { return Connection.daveResCPUNoData; } if (buffer != null) Array.Copy(p2.UData.ToArray(), 0, buffer, 0, p2.UData.Count);// memcpy(buffer, p2.udata, p2.udlen); //dc->resultPointer = p2.udata; //dc->_resultPointer = p2.udata; AnswLen = p2.UData.Count; return res; }