NDEFMessage.cs CampusAppWP8::Utility::NDEF::NDEFMessage CampusAppWP8::Utility::NDEF //----------------------------------------------------------------------- //<copyrightfile="NDEFMessage.cs"company="BTU/IIT"> //Companycopyrighttag. //</copyright> //<author>stubbfel</author> //<sience>21.08.2013</sience> //---------------------------------------------------------------------- namespaceCampusAppWP8.Utility.NDEF { usingSystem.Collections.Generic; usingSystem.IO; publicclassNDEFMessage { #regionMembers privateList<NDEFRecord>records; #endregion #regionconstructors publicNDEFMessage(stringcontent,TYPEVALtype,NDEFRecord.TNFVALtnf=NDEFRecord.TNFVAL.WKT) { this.records=newList<NDEFRecord>(); floatrecordsCount=(float)content.Length/NDEFRecord.MaxRecordPayLoad; NDEFRecordtmpRecord=null; stringpraefix=NDEFMessage.GetPraefix(type); for(inti=0;recordsCount>0;i++) { tmpRecord=newNDEFShortRecord(); tmpRecord.Type=type; tmpRecord.TNF=tnf; tmpRecord.PayloadPraefix=praefix; intrecordsize=255; if(content.Length<(i+1)*recordsize) { recordsize=content.Length-(i*recordsize); } tmpRecord.Payload=content.Substring(i*255,recordsize); if(i==0) { tmpRecord.MB=NDEFRecord.NDEFFlags.MBSET; } this.records.Add(tmpRecord); recordsCount--; } this.records[this.records.IndexOf(tmpRecord)].ME=NDEFRecord.NDEFFlags.MESET; } publicNDEFMessage(byte[]array) { this.records=newList<NDEFRecord>(); NDEFRecordtmpRecord=null; for(inti=0;i<array.Length;i+=tmpRecord.RecordSize) { tmpRecord=newNDEFShortRecord(array,i); this.records.Add(tmpRecord); } } #endregion #regionenum publicenumTYPEVAL { EMPTY=0x00, URL=0x55, TEXT=0x54, } #endregion #regionMethods publicstaticstringGetPraefix(TYPEVALtype) { stringpraefix=string.Empty; switch(type) { caseTYPEVAL.TEXT: praefix="\x02"+"de"; break; caseTYPEVAL.URL: praefix="\x01"; break; default: break; } returnpraefix; } publicstringGetContent() { stringresult=string.Empty; foreach(NDEFRecordrecordinthis.records) { result+=record.Payload; } returnresult; } publicbyte[]ToByteArray() { MemoryStreamms=newMemoryStream(); foreach(NDEFRecordrecordinthis.records) { ms.Write(record.ToByteArray(),0,record.RecordSize); } returnms.ToArray(); } #endregion } }