using System; using System.Collections.Generic; using System.Text; using Microsoft.SensorServices.Rfid; using System.IO; using System.Security.AccessControl; using Microsoft.SensorServices.Rfid.Design; using Microsoft.SensorServices.Rfid.Utilities; namespace myEventHandlers { public class StampingEventHandler : RfidEventHandlerBase { string stamp; public override void Init(Dictionary parameters, RfidProcessContext container) { stamp = (string)parameters["stamp"]; } public static RfidEventHandlerMetadata GetEventHandlerMetadata(bool getVendorExtensionsAlso) { Dictionary metadata = new Dictionary(); metadata.Add("stamp", new RfidEventHandlerParameterMetadata(typeof(string), "The string to stamp each tag read", null, (bool)true)); return new RfidEventHandlerMetadata("", metadata); } [RfidEventHandlerMethod] public TagReadEvent StampTagRead(TagReadEvent tre) { if (!tre.VendorSpecificData.ContainsKey("stamp")) { tre.VendorSpecificData.Add("stamp", stamp); } else { tre.VendorSpecificData["stamp"] = (string)tre.VendorSpecificData["stamp"] + "," + stamp; } return tre; // Illustrate usage RfidEventContext.Current.Data // returning null filters the event } } public class PostingEventHandler : RfidEventHandlerBase { static string defaultFilename = "C:\\temp.log"; string filename = defaultFilename; public override void Init(Dictionary parameters, RfidProcessContext container) { filename = defaultFilename; if (parameters.ContainsKey("filename")) { filename = (string)parameters["filename"]; } } public static RfidEventHandlerMetadata GetEventHandlerMetadata(bool getVendorExtensionsAlso) { Dictionary metadata = new Dictionary(); metadata.Add("Filename", new RfidEventHandlerParameterMetadata(typeof(string), "File to post to", defaultFilename, (bool)false)); return new RfidEventHandlerMetadata("", metadata); } public static void Deploy(Dictionary parameters) { string processRuntimeUser = (string)parameters[ProcessBinding.ProcessRuntimeUserKey]; string filename = defaultFilename; if (parameters.ContainsKey("filename")) { filename = (string)parameters["filename"]; } File.Create(filename); /* Give write permissions to the filename to processruntimeuserkey */ FileSecurity fs = new FileSecurity(); fs.SetAccessRule(new FileSystemAccessRule(processRuntimeUser, FileSystemRights.Write, AccessControlType.Allow)); File.SetAccessControl(filename, fs); } [RfidEventHandlerMethod] public void PostToFile(TagReadEvent tre) { File.AppendAllText(filename, HexUtilities.HexEncode(tre.GetId()) + " " + tre.VendorSpecificData["stamp"]); } } }