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);
 
howto/writerequest.txt · Last modified: 2013/03/14 11:01 by 192.168.10.185
 
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki