====== Write Request ====== * Tu je uvedenny sposob prace s write requestom ak sa pouziva priamy potomok EAppChipCard * Existuje aj iny sposob vytvarania requestu napr. TypListka (vytvoril ho T.Bruna) === Vytvorenie write request-u === EDataCollection writeCollection;// write request EDataCollection *collection = (EDataCollection*)instanceOfEAppChipCard->GetCollection();// make access to collection with readed data EAbstractCardData *data = (EAbstractCardData*)collection->GetClassByType(TYPE_COMMON_DATA); if (!data) return someError;//the problem could be that you didn't read TYPE_COMMON_DATA before writing data->NodeOut();// take the object out of received collection data->SetCardOperation(EAbstractCardData::OPERATION_WRITE); // now you have typecast the object to right one (ECommonCardDataEN*)data; implement here initialization of object writeCollection.InsertLast(data); writeCollection.SetRequestType(EDataCollection::RQ_WRITE); writeCollection.SetSNR(serialNumber);// set here serial number of readed card mClient->SendDataCollection(&writeCollection); == rozdiel oproti verzii 2.4 == * kolekcii ktoru posielam je potrebne nastavit typ requestu __**!!! Zapis !!!**__ * pre jednotlive aplikacne objekty je nutne urcit typ operacie __**!!! Zapis !!!**__. Metoda na to sluziaca "SetCardOperation" EDataCollection tmpCollection; tmpCollection.SetRequestType(EDataCollection::RQ_WRITE); tmpCollection.SetSNR(Aktualne seriove cislo karty); EAbstractCardData *tmpData = "Vytvorim data ktore chcem zapisovat"; tmpData->SetCardOperation(EAbstractCardData::OPERATION_WRITE); tmpCollection.InsertLast(tmpData); === Vytvorenie write request-u pre odjazdenie komercnej zlavy so zapisom (dekrementom) do ponazenky === * treba si vsimnut ze sa 3x nastavuje write * na makre ifdef QT_4 je vidiet novu cast kodu //get datacollection, we have it saved when the card was approached for reading EDataCollection *dataCollectionForSend = CopyDataCollection(d->mDataCollectionTemp);//copy datacollection ECommercialDiscounts *commercialDiscountsForSend = (ECommercialDiscounts*)dataCollectionForSend->GetClassByType(TYPE_COMMERCIAL_DISCOUNT); //vytiahnem nod z kolekcie commercialDiscountsForSend->NodeOut(); //create collection for write EDataCollection* dataCollection = new EDataCollection(); dataCollection->SetSNR(commonCardData->GetSNR()); //ktoru komecnu zlavu som zmenil aby bajvoc vedel co zapisat commercialDiscountsForSend->SetIndexToWrite(d->mKomercnaZlavaID); //create and set purse, prepare it for decrement EPurseData *purseData = new EPurseData(); purseData->SetSNR(commonCardData->GetSNR()); purseData->SetValue(commercialDiscountTemp->GetCena()); purseData->SetPurseChangeType(EPurseData::PURSE_DEC); #ifdef QT_4 //nastavim poziadavok na write commercialDiscountsForSend->SetCardOperation(EAbstractCardData::OPERATION_WRITE); //nastavim aj penazenky na write purseData->SetCardOperation(EAbstractCardData::OPERATION_WRITE); #endif commercialDiscountsForSend->SetPurseData(purseData);//nastav penazenku do komercnych zliav //vloz komercne zlavy do datacolection dataCollection->InsertLast(commercialDiscountsForSend); //wait for card approach to write data on card #ifdef QT_4 dataCollection->SetRequestType(EDataCollection::RQ_WRITE); EChipCard::GetInstance().SendAplRequestWrite(dataCollection); #else EBlCard::GetInstance()->GetEAppChipCard()->SendAplRequestWrite(dataCollection); #endif === Poslanie read request-u === PotomokEAppChipCard->SendDataCollection(&tmpCollection);