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!
David’s application:
(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.
Micks application:
(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)
Issues:
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’
Fantastic relationship
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.
Thanks all!
When I get the code packaged and some screen shots – I’ll post.