David McGhee and I were tasked with giving a RFID session at the recent Microsoft SOA Conference here in Sydney.
How hard can it be I thought?.....David got it all under control......me....I'll stick my hand up for the 'demo dolly' and give a 15-20min demo (or that's what I thought)
Enter the world of RFID readers (it can write to the tags as well...so dont be mislead by the 'reader')
We needed tags! So the UMD folks in Melbourne responded fantastically given the phone call in the afternoon, we had tags in our hot little hands the following morning - well done guys!!!
Armed with my trusty Intermec RFID mobile Reader (IP4) and 30MB worth of install files for their SDK - I thought I'm armed and dangerous.
"What to give a demo on?"
David & I chatted about this and came up with:
(a) delegate registers at 9am on the day (we were still 'writing' peoples IDs at 8.45am that morning - talk about cutting it fine )
(b) when they walk into sessions/halls etc.up on the screen flashes their name somehow and says 'welcome'
(c) for a 'lucky' door prize - as the person walks past the reader for the session, it randomly writes back to the tag to indicate they were a winner (this is the optional extension - just in case I couldnt sleep)
So David decided to built the 'welcome' up on the screen component.
Were are both a big fan of MSMQ so......a simple queue with the persons details in the message was cool for David to flash up on the screen. I always believe a picture tells 1000 words and people arent really going to be too interested in what happens at the back end.....colours, lights action is where it's at.
David joined me in the sleep deprivation stakes (we both have little ones at home...reality hits home).
We had a dodgy 'ad-hoc' wireless network coming off my laptop, RFID Services running as a virtual image on my laptop, a mobile RFID PPC reader that wanted to connect to any wireless network going and David's MS Corp policy locked down Vista laptop - saying "here's a public workgroup mode MSMQ......sure you can send to it )
What a receipe!!! Did we pull it off......oh yeah!
(a) was written in XAML, WPF
(b) Said 'Welcome' in not just English, but 32 different languages - EVEN Japanese! Little squiggle characters etc. (I just took his word for it that it said 'Welcome')
(c) looked great!
(d) had a whole stack of animations and bubble paths that floated showing each persons details for 6 seconds. Max of 4 bubbles on the screen at any one time.
(e) listened to a local private MSMQ.
(a) wrote a PPC application that did nearly all the functions (took 1 week) with the RFID reader - using the Intermec BRI apis.
(b) plugged the Intermec IP4 reader into Microsoft RFID Services (Sept CTP) and grabbed the provider from Rob (Intermec US based developer - sensational help from those guys) - did what I did in (a) in around 30 mins.
(c) Wrote a 'process event handler' to process each of the tags coming through and obtain the corresponding delegate details. Finally wrote to MSMQ ready for the UI. (I want to move some of this into the BizTalk Rules Engine that ships with RFID services)
The bits I was using were all pretty rough and ready - the provider, rfid services etc. Quite frequently things would have some pretty major exceptions - due to what I was trying to do, through to not all the expected data being present during a tag read.
Whenever an Exception occured it usually meant that the reader needed to be 'warm booted'
There are so many ways to setup RFID Services with readers, from the readers being pretty 'dumb' to have a serious amount of intelligence on the reader and RFID services just goes off what the reader 'says'.
I decided to go for the latter and here's why
(1) When we read tags on mass, this is usually done via Async RFID Reads (from the perspective of RFID Services). During this mode, our Reader was constantly checking if a tag was in the area, so no write back to the tag was possible as the reader was saying 'I'm reading, go away'.
(2) We could set this reader up to Poll - every 5secs or so, shoot out a pulse and say "who's there?" - problem this was still an Async read.
(3) Rob helped out greatly here - when I decided to let my Pocket PC App do the 'reading' and send back 'READ Tag notifications' to RFID Services. This allowed me to during the event processing (c.f. a biztalk pipeline) - open up a connection back to the reader (through Intermec APIs) and tell the Reader to Write a tag! (I actually didnt get this part done, but we're close)
All in all - what an experience. Learnt alot in the area of hardware, jiggles, and tweaking cables to get things 'just right'
And I've got to say I've had some wonderful help from Anush (MS RFID Services Product manager), Matt and Rob (from Intermec) - really refreshing to get such good and responsive help.
Grab the Slide Deck - The_ecoSystem_for_RFID_in_BizTalk.zip (3.23 MB)
Grab the RFID Applications - RFID Apps.zip (634.05 KB)