char GetDatenRemoteFrame( char cID, char cDataByte ) { pdata stCAN_SWObj canTransmitObject; if( CAN_ubNewData(2) ) // Daten sind noch neu, wurden nicht ausgelesen { CAN_vReleaseObj(2); // NEWDATA auf 0 setzen, verherige Daten gehen verloren } CAN_vGetMsgObj(2, &canTransmitObject); // Altes Message Object laden canTransmitObject.ulID.ubDB[0] = 0x00; // ID in CAN Objekt laden canTransmitObject.ulID.ubDB[1] = 0x00; // ID in CAN Objekt laden canTransmitObject.ulID.ubDB[2] = 0x00; // ID in CAN Objekt laden canTransmitObject.ulID.ubDB[3] = cID; // ID in CAN Objekt laden CAN_vConfigMsgObj( 2, &canTransmitObject ); // CAN-Objekt in Message Object laden CAN_vTransmit(2); // Sende-Prozess starten while( CAN_ubNewData(2) == 0 ) // Auf Antwort warten (polling) { if(cID = 0x02) P3_DATA = 0x20; if(cID = 0x04) P3_DATA = 0x40; } CAN_vGetMsgObj(2, &canTransmitObject); // Daten aus ampfangen Message Object laden CAN_vReleaseObj(2); return canTransmitObject.ulDATAL.ubDB[cDataByte];// Empfangender Datenwert zurueck geben, evtl noch NEWDATA loeschen }