This product was developed for a technology company dealing in security systems hardware. They developed RFID readers and cards in-house and needed help to develop SDK to .Net platform as well as software for tracking assets through RFID cards.
The RFID readers connect to server over LAN (TCP/IP) and sent data received from cards. The devices gathered data and sent to server when requested or automatically as per configuration. Readers can be configured to set their internal polling frequency, the frequency at which it will send data to server and whether it will send data automatically or when requested as well as to set signal strength. They also had options to check memory status, to reset the device, turn it off, sleep/standby mode and get/set ID
The project started with these objectives:
- Understand data exchange protocol/format of RFID readers
- Process auto-polling data in real time
- Support multiple data formats for multiple readers
- Provide reader management GUI with all commands
- Define floor plans and location of readers
- Monitor status of readers
- Configuration of rules for tracking assets
- Generate alerts when asset is outside designated area
- Generate alerts when asset is taken out and not by authorized person
- Reporting on movement of assets
Though the objectives were pretty straight forward, the project had many challenges
- Readers in auto-polling mode can generate huge amount of data every sec – too much to process by a regular single threaded application
- Supporting multiple reader types and still maintain code well to avoid redundancy
- Identifying when assets are outside their designated bounds
- Match data of multiple cards for authorization
- Correctly simulating real time tracking in development and testing environment
Before development began, all communication between reader and SDK/server were clarified and charted out and necessary RFID readers and cards received from customer.
Initial development was done to create a simple win forms application to communicate with readers, receive data and send control commands through socket programming of which .Net framework provides excellent support.
SDK for the readers was designed using abstract factory patter to provide easy reuse of code and bring uniformity thereby making it more maintainable. The SDK provided all necessary functions needed to communicate with readers and provided necessary callbacks, delegates and events.
Development of the asset tracking software was done staggered to SDK so the latter can be tested thoroughly through the software.
A very high level of multithreading was used to process received data quickly. A total of 4 threads were created for each reader with each thread performing some specific operations and data.
The system was built on these technologies:
- .Net framework 4.0 with C#
- Win Forms application
- Socket programming
- SandCastle help file builder