Esempio n. 1
0
 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;
        }