kevincurran.org · web viewradio frequency identification (rfid) is mainly used in close...
TRANSCRIPT
An Investigation into the
Reachability of Radio Frequency
Identification (RFID) Technologies
in Adverse Conditions
Christopher Laughlin (B00347135)
BSc. (Hons) Computer Science
Supervisor : Dr. Kevin Curran
Acknowledgements
I would like to thank my project supervisor, Dr. Kevin Curran, for his support, advice and
guidance throughout the project’s development.
I would also like to thank my family and friends for their continued support over the course
of this project. I would also like to thank the Northern Ireland fire service for their time and
information.
3
Abbreviations
AC Alternating current
AIDC Automation Identification and Data Capture
CCTV Close Circuit Television
CGPM Coference Generate des Poids et Measures
CPS Cycles Per Second
GPS Global Positioning System
GSM Global System for Mobiles
HCI Human Computer Interaction
Hz Hertz
ID Identification
IEC International Electro technical Commission
IEEE Institute of Electrical and Electronic Engineers
RO Read Only
RW Read Write
RAM Random Access Memory
RS Recommended Standard
RFID Radio Frequency Identification
RF Radio Frequency
UML Unified Model Language
UK United Kingdom
WORM Write Once Read Many
4
WPAN Wireless Personal Area Network
ISO International Organisation for Standards
USB Universal Serial Bus
5
Table of Contents
Contents
Acknowledgements....................................................................................................................2
Abbreviations.............................................................................................................................3
Table of Contents.......................................................................................................................5
List of Figures............................................................................................................................9
List of Tables............................................................................................................................11
Abstract....................................................................................................................................12
1 Introduction.......................................................................................................................14
1.2 Aims............................................................................................................................16
2 Location Determination Technology...............................................................................19
2.1 RFID History...............................................................................................................19
2.2 GPS (Global Positioning System)...............................................................................22
2.3 Mobile Cellular Systems............................................................................................23
2.4 Bluetooth........................................................................................................................24
2.5 ZigBee............................................................................................................................25
2.6 Wi-Fi..............................................................................................................................25
2.7 Infrared...........................................................................................................................26
3 RFID Technology..............................................................................................................27
3.1 RFID Tags...................................................................................................................27
3.2 Antennas......................................................................................................................30
3.3 Readers.......................................................................................................................31
3.4 Operating Frequencies...................................................................................................36
3 .5 Reader and Tag Communication...................................................................................37
6
3 .6 Host and Software System............................................................................................38
3 .7 Standards.......................................................................................................................39
4 Requirements Specification and Analysis........................................................................41
4.1 Problem Specification................................................................................................41
4.2 Objectives of System..................................................................................................41
4.2.1 Fire Service scenario...............................................................................................42
4.2.2 Other Application....................................................................................................43
4.3 Design Methodology.................................................................................................43
4.3.2 Iterative / Incremental........................................................................................45
4.3.3 Design Methodology Selection...........................................................................45
4.4 Requirements Specification.......................................................................................46
4.4.1 Functional Requirements....................................................................................46
4.4.1.1 User....................................................................................................................46
4.4.1.2 System................................................................................................................46
4.4.2 Non-Functional Requirements............................................................................47
4.4.3 Software Requirements......................................................................................47
4.4.4 Hardware Requirements.....................................................................................48
5 Design Phase.....................................................................................................................49
5.1 Hardware Components...............................................................................................49
5.1.1 Laptop / Desktop Computer...............................................................................49
5.1.2 Trolley Scan RFID-Radar system....................................................................50
5.2 Software Components................................................................................................51
5.2.1 Microsoft Visual Studio 2008.............................................................................51
5.3 Design considerations....................................................................................................51
5.3.1 User Interface..........................................................................................................52
5.4 HCI Considerations........................................................................................................54
7
5.6 User Cases......................................................................................................................55
5.7 State Diagrams...............................................................................................................59
6 Implementation.................................................................................................................61
6.1 Equipment Connection...................................................................................................61
6.2 Testing............................................................................................................................63
6.3 Scenario Solution Application.......................................................................................67
6.3.1 Program GUI...........................................................................................................67
6.4 Database.........................................................................................................................71
6.4.1 Engine Table...........................................................................................................71
6.4.2 Equipment Table.....................................................................................................72
6.4.3 Station Table...........................................................................................................73
6.4.4 UserDetails Table....................................................................................................74
7 Testing................................................................................................................................76
7.1 Test cases.......................................................................................................................76
7.1.1 Test Case 4 Active and Passive...............................................................................76
7.1.3 Test Case 10 Active /Passive..................................................................................79
7.1.4 Test Case 16.00 – 16.02 Active and Passive...........................................................79
8 Evaluation.........................................................................................................................81
8.1 RFID and its environment..............................................................................................81
8.2 Proposed System Requirements.................................................................................83
8.3 Future Work...............................................................................................................85
9 Conclusion.........................................................................................................................87
10 References.......................................................................................................................89
Appendix A: Test Cases – Active Tags...................................................................................90
Appendix B: Test Cases – Passive tags....................................................................................92
Appendix C: Test Case 4 Map.................................................................................................94
8
Appendix D: Source code........................................................................................................95
9
List of Figures
Figure 1 GPS System...............................................................................................................22
Figure 2 Mobile Phone Tracking System ................................................................................23
Figure 3 Bluetooth Tracking System ......................................................................................25
Figure 4 Active RFID Tag ......................................................................................................27
Figure 5 Passive RFID Tag .....................................................................................................28
Figure 6 Semi-passive RFID tag .............................................................................................29
Figure 7 Serial Port .................................................................................................................34
Figure 8 Stationary RFID Reader ...........................................................................................35
Figure 9 Handheld RFID Reader ............................................................................................36
Figure 10 Modulated Backscatter............................................................................................38
Figure 11 WaterFall Method ...................................................................................................44
Figure 12 Iterative Development Model .................................................................................45
Figure 13 Acer Aspire 5600 with RS232-to-USB Adapter ....................................................49
Figure 14 Trolley Scan RFID-Radar System ..........................................................................50
Figure 15 5uW Stick Tag and 200uW Ecochip Tag................................................................51
Figure 16 RFID System for Fire Service.................................................................................52
Figure 17 Log In Screen...........................................................................................................52
Figure 18 Status Screen............................................................................................................53
Figure 19 Tag Management Screen.........................................................................................54
Figure 20 Case Diagram for Proposed System........................................................................55
Figure 21 State Diagram: User Logging into System..............................................................59
Figure 22 State Diagram: Update Status Screen......................................................................59
Figure 23 State Diagram: Managing Tags...............................................................................60
Figure 24 State Diagram: Setting Application Options...........................................................60
10
Figure 25 Ideal Radio Setup.....................................................................................................61
Figure 26 Testing Application UI............................................................................................64
Figure 27 Main UI Screen: Before User Login........................................................................67
Figure 28 LogIn Screen............................................................................................................68
Figure 29 Main Screen: After Login........................................................................................68
Figure 30 Main Screen: Manage Tags Tab..............................................................................69
Figure 31 Add Tag Dialog.......................................................................................................70
Figure 32 Database Relationships............................................................................................75
Figure 33 Tags Mounted to Cardboard Box............................................................................76
Figure 34 Test Case 10: Water bottle with tag attached..........................................................79
Figure 35 Test Case 16: Active Tag on Foil............................................................................80
Figure 36 Test Case 16: Passive Tag on Foil...........................................................................80
Figure 37 Test Case 16: Tag Wrapped in Foil.........................................................................80
Figure 38 RFID Radar Lab Setup............................................................................................81
11
List of Tables
Table 1 RFID ISO Standards...................................................................................................40
Table 2 Use Case: Open User Interface...................................................................................56
Table 3 Use Case: Add Tag.....................................................................................................56
Table 4 Use Case: Edit Tag.....................................................................................................57
Table 5 Use Case: Remove Tag...............................................................................................57
Table 6 Use Case: Search Tag.................................................................................................58
Table 7 Serial Port Methods.....................................................................................................62
Table 8 Testing application UI details.....................................................................................64
Table 9 Main Screen UI Elements...........................................................................................69
Table 10 Main Screen: Manage Tags Tab UI Elements..........................................................70
Table 11 Engine Database Table..............................................................................................72
Table 12 Equipment Database Table.......................................................................................73
Table 13 Station Database Table..............................................................................................74
Table 14 UserDetails Database table.......................................................................................74
Table 15 Test Case 8: Tag location Details.............................................................................78
Table 16 User Requirements Evaluation..................................................................................84
Table 17 System requirements Evaluation...............................................................................84
Table 18 Non-Functional Requirements Evaluation................................................................85
12
Abstract
Location tracking technology has been around for many years now, and it is advancing all the
time. In the modern world we live in tracking software is everywhere, in some cases the
technology is not even used primary for tracking but can be used to track the movement of a
person or an object. The use of location tracking technology can be applied to industry to
improve many areas such as security, safety and the supply chain. The main reason that
location tracking systems have not be applied across many applications is due to the number
of limitations that restrict the technology. The current limitations that affect location tracking
technologies include accuracy, cost and feasibility.
This report explores the use of RFID technology for location tracked however the most
comply used and most popular location technology is the Global Positioning System (GPS),
this technology has been used worldwide and many devices used some type of GPS
technology as part of their functionality such as mobile phones and portable computers.
Although GPS is the most comply used it also has limitations associated with it, such as not
being able to work at well when indoors.
Radio Frequency Identification (RFID) is mainly used in close proximity identification such
as entering a building using an RFID enabled swipe card. The technology uses readers and
tags to communicate data. Tags come in two types active and passive. Active RFID and
passive RFID tags can be used for tracking goods or people within indoor or outdoor
environments. The accuracy varies from system to system and there are many factors which
influence the accuracy such as doors and electromagnetic interference. The technology works
on the use of modulated radio signals that can transfer data back and forth. RFID has already
been used in many applications such as supply chains and security access, however the
possibilities are endless.
This report investigates the accuracy of one leading RFID indoor tracking system. The first
set of chapter’s investigates the history and background to location technology, how it works
and the limitations of each different technology. The report also explores the suggested
13
scenario of the Northern Ireland fire service, the scenario describes the inventory
management system of the fire service and the issues that affect the current paper based
system. In later chapters a solution for the scenario is described and the different stages of the
design and implantation of the proposed system and any issues that where faced during these
stages is explored in detail.
The final three chapters explore the limitations of the RFID technology and the system that
was developed for the scenario including detail on a number of tests carried out on the
system. Also an evaluation of the system as a whole is provided with a conclusion to give an
overall view of the project and the report.
14
1 Introduction
Location tracking technology has been around for many years now, and it is advancing all the
time. In the modern world we live in tracking software is everywhere, in some cases the
technology is not even used primary for tracking but can be used to track the movement of a
person or an object. Tracking technology can range from Global Position System (GPS)
which is mainly used in navigation systems for cars, phones, boats, planes etc. The GPS
system works perfectly in an outdoors location as it needs direct view with a satellite to get a
signal and give the most accurate information, this can cause issues when tracking is needed
indoors. Another widely known technology is Radio Frequency Identification (RFID) this is
mainly used on small scale tracking. RFID is mainly used for tacking people or items inside
buildings or small areas linked together with a number of buildings. In all probability the
most primitive tracking technology is the use of Closed-circuit television (CCTV). This is the
use of many strategically placed cameras that monitor an area and can track the movement of
people and items in different areas.
In many cases a location tracking system will be installed to track the moment of employees,
stock in a warehouse, patients in a hospital, children in a school, delivery trucks in transit,
taxies in a city, boats at sea, planes in the sky and many more. The evolution of tracking
systems has made it cheap and easy to install a tracking system in a small to large scale
operation. This means it’s that easy that if you wanted you could track you pets in your house
with a simple and cheap system.
Tracking systems on a small scale are being more widely accepted and used in modern day
life. Systems are already in place in many work places where employees must swipe an ID
badge or card before they can enter a room this keeps a track on where they are in a building.
This type of system uses the RFID technology, RFID systems fundamentally consist of four
elements: the RFID tags themselves, the RFID readers, the antennas and choice of radio
characteristics, and the computer network (if any) that is used to connect the readers
15
(Grafinkel and Rosenberg, 2006). The system is relatively easy to set up and has little to
almost no maintenance, the details of RFID systems will be expanded upon in later sections.
RFID tracking technology can be used in many different application, some scenarios include
the tracking of animals. The tracking of animals is most done in the farming industry when
cattle and sheep need to be identified by the framer. Another instance when RFID can be
used is in the manufacturing industry, tags can be attached to items that are moving through
the factory on conveyer belts or being moved around by staff on trucks or forklifts. As the
tags move around the factory floor or the warehouse they pass by readers and the tags can be
then tracked using a database or a similar data storage system. RFID systems are also used in
almost everyone’s day to day life, anyone who works in a secure office, goes to university,
drives a car with an immobiliser, parks in a secure car park, etc. The list of applications that
we use every day and are unaware of is endless. Anyone who works in an office that requires
them to swipe an ID badge or smart card to gain access into areas is using a RFID system.
The tag is in the badge or the card and the readers are the boxes in from of the doors. Once
the tag is read by the reader is determines if the tag has the correct level of permissions
needed to access the area in question. If the tag is gained permission the door, gate, etc will
open. Almost every university uses a student card system where each student carries a student
card and this can enable them access to different resources, in almost every instance the card
contains a RFID chip which is used to grant access to the resources. This student card works
on the same principle as the smart card in the office. The same applies to most of the other
applications in the case of the car; all cars that have a built in immobiliser have a special key
that must be used to start the car’s engine. This key contains an RFID chip and the lock for
the ignition contains a reader, the correct chip must be placed next to the reader in the
ignition before the car engine will start.
The scenario that this report will cover is the fire service and the tracking of the different
pieces of equipment that they use. The scenario is that the fire service is called to out and an
engine is dispatched with all the appropriate equipment for the type of call that they have
received. Examples of calls could be a fire meaning that they would have to bring equipments
to stop a fire such as fire retardant suits, water hose, ladders, axes etc. Sometimes the call
could be a rescue call meaning that the equipment needed would be climbing materials,
ladders, tools for lifting rubble if a building has clasped and tools for removing people from
vehicles. The main problem is that there is so much equipment for each type of call, in some
cases different fire teams are called to the one incident meaning that there is equipment
16
belonging to different stations in the one area and mix over’s can occur in many cases one
team takes back other teams equipment. As much of the equipment that is used is very
expensive it is very hard to replace the equipment.
This is a wide spread issue that affects many different organisations, most affected are “on
call” services such as roadside repair companies or on call mechanics. The problem is that the
main part of the organisation is called out of the office/warehouse/factory/garage and must
take the necessary equipment and return with all the equipment. If items go missing on each
instance they must be replaced, this cost can build up over a period of time and affect the
organisations profits.
1.2 Aims
The main aim of this project is explore and demonstrate location tracking systems in relation
to RFID tag tacking. For the purpose of tracking items on a small scale (i.e. tracking
equipment in a building) a RFID system is the best solution. The main objective of the
project is to create and implement a system that can be used to track fire fighter equipment.
The proposed solution is to create a general purpose system that can be used for the tracking
of the different pieces of equipment that the organisation uses when on call, for this scenario
it will be the different equipment used by the fire service as previously discussed. The
system will be able to identify a number of tags as they pass by the sensor, this will be
implemented in the fire station as a set of RFID reader placed at the main door way in which
the fire engine enters and leaves the station. Each item of equipment will be tagged and the
tag information will be stored on a database or appropriate data storage option. The system
will be able to display to the user the current location of the items e.g. “in” or “out”; this is
then used to ascertain if items have been lost during a call.
The system will be platform independent making sure that the system will run on most
available operating systems, the system will also be organisation independent making sure
that the system will be quickly and easily deployed to any organisation weather is the fire
service, a roadside recovery service or any other call out service provider.
17
The next aim of the project is to test the factors that affect a RFID system, what factors can
interfere with the readers and tags of the system. This aim will test the following properties of
the RFID system under a number of circumstances and environments:
Range
Strength
Reliability
Usability
Performance
Each of the previously mentioned factors will be tested under controlled and managed
environments to insure the highest standard of results. These results will then be used to
improve the current system; this process will be repeated until the system has reached
optimum performance or until the process becomes redundant. This will happen only if the
changes needed to the system are not possible, such as upgrading the equipment or modifying
parts of the scenario that cannot be changed.
1.2 Thesis Overview
Chapter 2 gives an overview of location determination technologies, describing how they
work and their advantages and disadvantages and describes the history of RFID.
Chapter 3 discusses in detail the main components of the RFID technology.
Chapter 4 gives the problem specification and objectives of the system. It also identifies the
functional, non-functional, hardware and software requirements, as well as the design
methodology chosen for this project.
Chapter 5 examines the design phase of the system by discussing the hardware and software
components in detail, the design constraints, HCI guidelines and system architecture. The
chapter also provides UML diagrams to model the system’s main processes.
Chapter 6 describes the implementation phase of the project, how the proposed system was
developed and how the developed system works. The systems interface is discussed and how
18
directions on how to use the system are given. Details on how the system database is
structured and how the database integrates with the application are given.
Chapter 7 describes and documents the different test cases carried out on the RFID system.
Chapter 8 gives a overview of the testing and the progress of the report with evaluations of
the system and the test that were carried out on the system.
Chapter 9 concludes the report and the project with a summary of the data acquired during
the testing.
19
2 Location Determination Technology
There are many reasons that location tracking systems have become a large part of our lives
two of the main reasons are security and safety. Security is the reasoning behind introducing
CCTV into almost every public place in the UK and Ireland. “There are up to 4.2m CCTV
cameras in Britain - about one for every 14 people.” (BBC news, 2006). This shows how the
insecurity of human nature has scared people into trying to track and watch everything
around them. Security has also started a trend in the work place, ID badges and cards can be
seen on almost every office employee in all small to large offices. These are all used for
tracking who is in the office and where they are in the office. The safety aspect to the location
tracking systems are when systems are used to track patients in a hospital, each patient is
fitted with a RFID tag and when they enter an area where patients are prohibited an alarm
will sound. Location tracking software can also be used for the safety of animals in the wild
and also give important information about animals. Some animals are fitted with GPS tags
and these can be used to track them throughout the world, this allows conservationists to
track the animal and prevent them from coming in contact with danger areas. Also the
information from the GPS tracking logs can be used to show animal migration patterns. This
project will mainly use the RFID technology for tracking; however details of GPS and other
location tracking technologies will be described in later section.
2.1 RFID History
Radar was the precursor to RFID, some people who were responsible for the development of
radar where, Heinrich Hertz who was a German physicist who clarified and expanded the
electromagnetic theory of light, he also was awarded with the SI unit hertz (Hz) being
established in his honour by the International Electrotechnical Commission (IEC) in 1930 for
frequency, a measurement of the number of times that a repeated event occurs per unit of
time (also called "cycles per sec" (cps)). It was adopted by the Conférence générale des poids
et mesures (CGPM) in 1964. Heinrich identified and studied the wave –based nature of radio.
One result of the research carried out by Heinrich, was that some radio waves where able to
pass through solid objects while others where reflected by the object. As a result of this
Heinrich was able to develop a technology that could measure the distance the waves had
20
travelled thus giving the distance between him and the object. It wasn’t until the Second
World War before Radar was used on a larger scale. It was during the war that countries
worried about invading army’s travelling at night time or during foggy conditions when they
would not be seen, radar systems where deployed to act as early detection systems. These
systems where implemented by the United States, the United Kingdom, Germany, France,
USSR, Italy and Japan. This technology then leads into the days of RFID.
RFID is part of automated identification and data collection (AIDC) technology that has
become so wildly used in past and modern society. This technology is everywhere in the
scanner at the checkout in a supermarket that reads the barcode from an item and can retrieve
more information on the product that the actual product packaging can give. The magnetic
strip on a credit card or bank card is also an example as it can give information with only a
swipe and even the tags that are attached to electronic items in shops that alert security if the
item has left the store without the tag being deactivated. Any item of technology that
automatically retrieves information or performs an automated process can be classed as an
AIDC technology.
AIDC technologies date back to the 1930’s and 1940’s other types of AIDC technologies
include optical character recognition (ORC) and magnetic ink character recognition (MICR)
however MICR and RFID have become the most popular (Waldner, 2008). RFID technology
has its roots in early military identification systems in the early 1940’s. It was the British that
pioneered RFID during the Second World War; they used the technology to identify their
own aircraft as they flew above. The problem that the British military faced was that the
current radar system that was in use could only detect incoming aircraft however could not
detect if it was a friendly aircraft. The new transponders in the Royal Air Force (RAF) planes
could be used to determine if the plane was allied or enemy. At the same time the Soviet
Union was also developing there AIDC technologies, a Russian inventor Léon Theremin,
developed a covert listing device that retransmitted incident radio waves with audio
information. These radio waves where then put though a diaphragm which altered the shape
of the resonator which modulated the reflected radio frequency. This however was not a
tracking device but was still an evolution on the ACID technology and one step closer to
RFID technology. The next development in RFID technology was in 1948 a white paper was
21
released by Harry Stockman, titled "Communication by Means of Reflected Power". This
white paper delved into the development of RFID technology and how much work would
have to be carried out to get the technology to the stage where it could be easily used. In the
late 1960’s the American government used RFID technology to tag nuclear and other
dangerous martial and monitor its location.
RFID technology has grown to be part of normal life for many people and some without
knowing about it. The toll system that Cardullo proposed has been implemented in many
states in America and in many European countries. It has come under many different names
such as “Etoll” and “E-Z pass” but they all perform the same basic function as the car passes
on the road a camera photographs the car including the registration plate and the RFID reader
scans the tag mounted to the car. The tag is normally mounted to the windscreen or the dash
board. The reader reads the tag information and verifies the registration matches the photo of
the car then bills the appropriate account for the amount of the toll, if the account is not active
or the car was not fitted with a tag the registration is used to bill the driver for the price of the
toll. This system speeds up travel times as there is no need for a toll booth and for drivers to
stop and manually pay a toll. Tags can be read from distances up to 20 meters and at speeds
up to 80km/h (kilometre per hour) this prevents drivers having to slow down and causing
delays in traffic (E-Z pass, 2009). Other applications of RFID technology is the use of smart
cards, or ID cards. These are cards that contain an RFID tag and usually some information on
the front such as a photo and name of the holder. The RFID tag is programmed with their
details and when this is passed by a reader it will validate the details with the system details,
e.g. if a door is locked it will only open for valid tags or for a small array of selected tags.
There are thousands of examples of RFID applications, anywhere were a process needs to be
automated or information needs to be retrieved quickly RFID technology can be used.
22
2.2 GPS (Global Positioning System)
GPS systems are just as popular and widely used as RFID systems. However GSP can be
used for a larger scale tracking system. GPS uses satellites that orbit the earth to provide the
location of a GPS device. This service can be reliably provided in all weather, at any time of
the day and in any position in the world. The GPS system is composed of three major parts
(GPS, 2009):
1. Satellites orbiting the earth
2. Control and monitoring stations on earth
3. GPS receivers
The first part is made up of between 20 and 30 satellites that orbit around the world. There
are a number of control and monitor stations on earth that are placed around the world. The
last part is the receiver this is the device that the user uses to access the GSP signal, this could
be an in car navigation system, mobile phone or a purpose build handheld GSP device for
navigation. The device that user has sends and receives signals from the orbiting satellites
that provide the user with a three-dimensional location (latitude, longitude and altitude) and
in many cases time. This is shown in Figure 1:
GPS has become widely used for many different applications such as navigation for people
and vehicles it is also used for the creation of maps and for surveying of land. The time
function is used in scientific experiments when an accurate time is needed such as earthquake
23
Figure 1 GPS System
studies. Some other uses include disaster relief when people are stranded they can send a GPS
location to the emergency services and this will aid in the rescue.
2.3 Mobile Cellular Systems
Location tracking can also be done with a simple mobile phone, this is done without the use
of a built in GPS receiver. All that is needed from the phone is the ability to send a roaming
signal to the nearest antenna tower. This roaming signal is used in Global System for Mobile
(GSM) systems that can determine the location of the phone using multilateration. This is
when the time taken for the signal to travel between the phone and the antenna is used to give
an estimated location of the phone, thus tracking the user. Figure 2 shows how the mobile
phone system works:
Figure 2 Mobile Phone Tracking System ①
There are three components of the mobile tracking system.
1. The phone signal from the mobile phone, this is sent to the nearest antenna. Signals
are bounced back and forward during a call.
2. The system uses triangulation calculations on the information retrieved from
multilateration.
① http://news.bbc.co.uk/1/hi/technology/4738219.stm
24
3. The last part is when the system uses the results from the triangulation and plots the
geographical location of the mobile phone.
In 2005, this technology was used to track and capture the man responsible for the suicide
bombings in London in earlier that year. The police were able to track him every time he
made a call using the GSM tracking technology. This technology can also be used for
security there are a number of companies that provide tracking solution that involve mobile
phone tracking these include Child Locate② and Mobile Locate③, these companies offer
services where you can use their real time tracking software to track mobile phones.
2.4 Bluetooth Bluetooth location tracking technology is a relatively easy and simple technology that could
be used by any user, as most people have mobile phones all of which come with Bluetooth as
standard. The simplest process of tracking a person or object is turning on your mobile phone
and searching for Bluetooth devices. This will display the devices in close range in most
cases 10 meters. An example if you knew a friend’s mobile phone’s Bluetooth name you
could search for their device using your phone and following them using this as a guide.
Creating a network of sensors would improve this system; this would involve setting up a
network of Bluetooth devices that are constantly searching for Bluetooth devices in range.
The sensors would be places strategically so that the entire area is covered, each sensor then
tracks any discoverable Bluetooth device and records all of the tracked devices and sends the
information back to a central server or machine. The following explains how the tracking
would be implemented. The scenario is of a street 100 meters long in which people needed to
be tracked. As each Bluetooth sensor is just a standard Bluetooth reader and the range of
which is 20 meters five sensors will be needed to cover the street. This means that every 20
meters there will be a new sensor (How Stuff Works, 2009). This type of system was set up
in September of 2007 by a Dutch man who noticed that when he turned on the Bluetooth
adaptor for his PC that he was discovering a lot of Bluetooth devices. He then set out to try
and track these devices by using friends and family he positioned Bluetooth devices in their
homes and connected them to small machines running Linux theses machines would use the
internet to report the data on the devices that were discovered. The set up is illustrated in
Figure 3.
② http://www.childlocate.co.uk③ http://www.mobilelocate.co.uk
25
Figure 3 Bluetooth Tracking System ④
This system is fully implemented and currently up and running, the statistics of the devices
and the sensors can be accessed at http://www.bluetoothtracking.org/.
2.5 ZigBeeZigBee is a specification for a high level set of communication protocols that use low
powered digital radios. This is based on the Institute of Electrical and Electronics Engineers
(IEEE) 802.15.4-2003 standard for wireless networks for personal use, examples of this are
devices in the home that communicate with each other on a short range radio such as wireless
headphones that connect to a speaker or a mobile device, these networks are called wireless
personal area networks (WPANs) the ZigBee technology is designed to be more simpler and
less costly than normal WPANs an example of which was previously mentioned in the last
section on Bluetooth tracking. The ZigBee solution is aimed at RF systems with low amounts
of data(ZigBee Alliance, 2009).
Typical applications for ZigBee technologies are; home entertainment and control systems
such as smart lighting, temperature control, movies and music etc. Home awareness such as
water sensors, energy monitoring, smoke and fire detectors and industrial plants such as
process control, environment management, energy management and industrial device control.
2.6 Wi-Fi Wi-Fi or wireless as its commonly called, is everywhere in most schools, universities, shops
and even town centres it is not surprising that this technology can be used to track object and
people. Every laptop manufactured today has a wireless card installed and is able to connect
to a 802.11 a/b/g/n network, which are plentiful in large cities. The Wi-Fi tacking works on
the same bases of the Bluetooth tracking, every device sends out signals that broadcast its
details. This is normal for the device to connect to a network however in this instance the
signal is received by a special wireless receiver which records the details of the device and
④ http://www.bluetoothtracking.org/
26
the location of the receiver this then can be used for the tracking of the device as it moves
from each Wi-Fi network. Another method of tracking by using Wi-Fi that resembles the
method used in GSM tracking is triangulation, this involves measuring the time that is take
for signals to be sent and revived between three different wireless receivers and the wireless
device. The times are calculated into the distance. The three distances are triangulated which
will then give the position of the wireless device.
2.7 InfraredAnother very basic tracking technology is infrared; this is mainly used for motion detection
and not large or small scale tracking of objects. “Infrared radiation exists in the
electromagnetic spectrum at a wavelength that is longer than visible light. It cannot be seen
but it can be detected.” (Global, 2009). It is this technology that is used for the motion
detection, as objects that generate head also generate infrared radiation. The infrared sensor
sends out a signal that will be blocked by the other object of infrared light, from this the item
can be located and when the item moves the beam of infrared is broken in different sections
this detects the movement. One of the most famous applications of this is in the Nintendo
Wii games console that using this technology to capture the motion of the controllers that are
used for playing games.
27
3 RFID Technology
RFID systems consist of four elements which are the RFID tags that will be tracked, RFID
readers that will detect the tags, antennas and radio and the Computer network used to
connect the readers. Each RFID tag consist of the following items, an antenna, small silicon
chip including a radio receiver, radio modulator that can send signals back to the reader,
internal memory normally a very small amount and most importantly a power supply system
unless the tag is a passive tag. Tags can be active, passive or semi-passive.
3.1 RFID TagsAn active tag is a tag that contains a power supply system that is powered by a battery this
type of tag is shown in Figure 4. The main advantages to having an active tag are the reading
range of the tags. With the power of the battery and a powerful antenna the tag can be read
from up to a distance of 30 meters. The battery power also means that the tag will not need to
constantly be accessing reader and will give a more reliable reading, the most common
application for theses tags are in warehouses where the tag is fitted to pallets and tracked
through the warehouse, the tags are also used in cars for toll systems as the reader in toll
systems are usually at a distance from the car. The disadvantages to active tags are that the
tag can be more bulky after the battery has been fitted.
Figure 4 Active RFID Tag ⑤
⑤ http://electronicdesign.com/Files/29/12208/Figure_02.jpg
28
A passive tag is a tag that does not contain a battery to power it; this type of tag is shown in
Figure 5 in the form of a product label with the RFID chip integrated into the sticker. Instead
it uses the electrical field generated by the reader. The advantages to passive tags are that the
tag can be fitted to smaller object or woven into clothes, in many cases passive tags are used
for smart cards and they can put the tag inside the card without making it thicker
(Finkenzeller, 1999). The absence of the battery as a power source means that the tag will be
cheaper to produce and purchase compared with active tags. The life time of the tag is also
longer than an active tag as the life time of an active tag is dependent on its battery which
will only last a few years before having to be replaced. Passive tags could be used for decades
after being produced. The only disadvantage of using passive tags is the read range, as the tag
has no power supply it cannot be read from a distance. This means that the tag must be close
approximately 2-3 inches from the reader before it will be read. However there are some
applications this can be an advantage as sometime the tag will be in a close range of the read
but the user will only want the tag to be read when they intend the tag to be read. In cases that
a tag is used to pay for petrol at the petrol pump, if the user is close to another pump while
someone else is using the pump they do not want the reader detecting their tag and thus being
charged.
Figure 5 Passive RFID Tag ⑥
In the middle ground between active and passive tags are semi-passive tags (Figure 6). The
semi-passive tags incorporates the advantages from both tags, similar to the active tag the
semi-passive tag contains a battery as a power source however also uses the magnetic field
generated by the reader to send signals back, this is called backscatter. This means that the
readability of the tag will be as reliable as an active tag however be relatively the same size of
a passive tag and will have a longer life as a normal active tag. ⑥ http://www.harlandsimon.co.uk/Images/tagInLabel.jpg
29
Figure 6 Semi-passive RFID tag ⑦
Read Once (RO) tags are single use tags, which can only be writing to once in their life time
(Lahiri, 2005). The data is burned onto the tag at the manufacturing stage in the factory. This
type is also known as factory programmed, the process of programming the tag is done by
burring the fuses on the microchip using a fine-pointed laser beam. This type of tag is only
useful for small applications that do not need the tag customised for their use as this would
not be possible.
A Write Once, Read Many (WORM) tag can be written to once similar to the RO tag;
however the writing process is not carried out by the manufacture. The WORM tag is also
known as a field programmed tag; this is because the tag is programmed by the user when
they need the tag. However the process of writing the tag is very buggy it can be possible to
re-write the tag, though if the tag is written repeatedly then it can be permanently damaged.
“This type of tag offers a good price-to-performance ratio with reasonable data security and is
the most prevalent type of tag used in business today.” (Lahiri, 2005). A read write (RW) tag
can be programmed a large number of times; this is normally in the range of 10,000 and
100,000. The great advantage to using this type of tag is that the data can be written to the tag
for an almost endless number of times by the reader and in the case of an active tag the tag
can re-write itself. The tag can do this by using the flash or Ferroelectric RAM (FRAM)
memory that is fixed to the chip. The flash memory or FRAM is used to store the data every
time the tag is re-written. The main issue with this type of tags is securing the information on
the tag and the cost of producing the tag. This means that this type of tag is not as widely
used as the other tags previously discussed.
⑦ http://www.scienceprog.com/wp-content/uploads/2007i/RFID/active_RFID_tags.jpg
30
The range of sizes of RFID tags is changing all the time and the tags can range from large
security chips and cards to small micro chips. “The smallest tag that has ever been produced
is the Hitachi mu-chip, which is less than 0.4 millimetres (mm) on a side” (Grafinkel,
Rosenberg, 2006). This tag was created for the purpose of being embedded into a piece of
paper and used for tacking documents, the tag can only be read from a distance of a few
centimetres (cm). However if a longer antenna was used with this tag the read range would be
increased however this would increase the size and thus not make it feasible to embed. There
are also other types of smaller tags such as implantable tags which can be the size of a grain
of rice, which are implanted under skin. Like the mu-chip the read range of the implant tag is
very limited however the proposed application of these chips does not call for a long read
range. They are intended to be implanted under the skin of humans; for identification
proposes in high security level areas and could also be used in hospitals for identifying
patient as mix up could be fatal. Is the tag is under the skin it cannot be easily shared or
switched meaning that the identification system would be almost 100% reliable.
3.2 Antennas All tags have an antenna, the antenna is the tags means of acquiring energy from the RFID
reads signal. The antenna is strongly related to the tags ability to operate, without the antenna
the tag would not be able to communicate with the RFID reader. The antenna is attached
directly to the chip. There are endless number types of antennas that can be used with RFID
tags. “The antenna length is directly proportional to the tag’s operating wave length” (Lahiri
2005). Some examples of antennas are:
Dipole: was created by Heinrich Rudolph Hertz 1886 the dipole antenna consists of a
straight electrical conductor such as copper that is broken up at the centre. The total
length of the dipole evaluates to half the wavelength of the used frequency. This is to
optimise the energy transfer between the reader and the tag.
Dual dipole: consists of two dipoles which increases the read orientation of the tag,
meaning that the tag can be placed at different orientations and still have an optimised
read range.
31
Folded dipole: the folded dipole is consisted of multiple conductors where the tips of
the straight conductor are folded back until they are close to the feedpoint of the
antenna. This increases the bandwidth of the standard dipole.
The antenna will always be longer that the length of the tag’s microchip, this means that the
size of the antenna will determine the size of the resulting tag. This is why smaller tags have
a shorter read range than a much larger tags, as the antenna for small tags are short and have a
shorter wavelength. The antenna is one of the most fragile parts of the tag, if the antenna is
bent or cut this can detune or even break the antenna rendering the tag useless. However there
are also ways of modifying existing tag’s antenna to increase the read range.
Antenna are currently made from small thin metal strips normally copper or aluminium
however it has been predicted that advances will be made that will allow antennas to be
printed into the tag itself. The antenna will be printed using an ink containing a light metal
such as copper, carbon or nickel, research has also gone into developing ways to print the
microchip in the same way as the antenna thus being able to print tags just as easily as
printing a barcode onto packaging. This would decrease the time and effort taken to create a
normal tag, and would work out cheaper as there would be little to none parts to be used.
3.3 Readers
The RFID reader can read and write to appropriate RFID tags. The reader is also known as an
interrogator. (Lahiri, 2005) the reader doubles up as a writer as it can modify the data on the
chip. For the reader to be used in the system the tags must first be commissioned, this
involves creating a tag and uniquely associating it with an object. The process of
disassociating the tag is called decommission. Once a tag has been commissioned the reader
can send a radio frequency (RF) energy signal to the tag, to be able read the tag. This process
is called the duty cycle this is repeated many times however it is governed by an international
legal limit.
32
Each reader is built up of the following components:
Transmitter
Receiver
Microprocessor
Memory
Controller (in some instances a external component)
Communication interface
Power
Input/output channel for external sensors, actuators and annunciators (non-
compulsory)
The tags in range of the reader receive their clock cycles and alternating current (AC) power
from the transmitter on the reader this sends both of theses to the antenna of all the tags in the
read range. This is all done in what is called the transceiver unit of the reader, each antenna
on the reader is connected through the transceiver unit some readers can have multiple
antennas. This component also belongs to the transceiver unit of the reader; this component
receives the analogue signal from the tag. The received data is then sent to the reader
microprocessor where is it converted into digital (Finkenzeller, 1999).
It is in the microprocessor component that the reader protocol is implemented to interact with
any tags in the read range. The following processes are carried out in the microprocessor:
Decoding of the analogue signal sent from the receiver
Error checking of the analogue signal sent from the receiver
There also might be custom logic that can carry out filtering or processing of the data from
the receiver. The memory on the reader is used as a backup mechanism, the data stored on the
memory normal consists of the reader’s configuration and a list of all the tag reads that have
been carried out. Meaning that if the connection between the reader and the system is broken
not all the information will be lost. The memory works in a queue like way, it will store the
reads as they happen however once a certain amount have been stored (this will vary between
readers depending on memory size) it will delete the first ones and store the new ones. Just
like the queue the first in will be the first out (deleted) and the last in will be stored. When the
reader is connected to the system each item of tag data will be sent to the system as it read
meaning that the limit will not have any effect over the data reaching the system. However if
33
the connection is lost and the reader continues to read tags the memory limit might be
reached and this means that the first in the queue will pushed out and new data will over write
the tag data. This means that not all the reads will be accessible to the system when the
connection is restored.
The controller component is the connection between the reader and the user or the system.
The controller allows control of the reader’s functions, often the manufacture of the reader
will include this as firmware but in other cases the controller can be packaged as a separate
hardware or software component.
The Communication interface is the component that gives the communication instructions to
the reader, these instructions allow the reader to interact with external entities via a controller,
to transfer its stored data and accept commands and send back the matching response (Lahiri ,
2005). This component can either be situated between a controller and its external entities or
it can be part of the controller. The communication interface of the reader could be a serial as
well as a network interface. The serial interface is the most widespread type of reader
interface, however there are readers that come with network interfaces as standard and can
offer advanced feature such as automatic discovery by an application and built in web servers
that allow the reader to accept commands and display the data from the reader through the
user’s web browser.
Readers can acquire their power from a standard power source from a power cord that is
attached to an appropriate external electrical socket. Similar to tags readers can also be
classified by using criteria, in the case of the reader there are two criteria that the readers can
be sorted by, the first is the communication interface. Using these criteria the reader can be
classified as below:
Serial
Network
The serial reader uses a serial connection for its interface this is done through a serial port
(Figure 7) on the reader, the connection between the reader and the computer is achieved
through either a Recommended Standard 232 (RS-232) or Recommended Standard 485 (RS-
485) connection cable. The cables have a maximum length; RS-232 can only be 50 feet (RS-
232 Specification) in length and the RS-485 can be approximately 4000 feet (RS-485
Specification) in length because of the different voltage that is used with this cable. The
advantages of the serial reader outweigh the cable length issue, the reliability of the serial
34
connection compared with a network connection is far greater and in many cases it is
recommended to use a serial connection as it rules out any dependency on communication
channels or any issues with connection dropping or being broken. However there are also
disadvantages associated with this type of connection. These include the limit on the cable
length as this could be an issue if the system is being used on a large scale on a multi story
building etc. The number of serial ports on host machines is normally limited and this will
mean that a large number of host machines will be needed to connect all the readers.
Firmware updates and maintenance can also be an issue as if there are a large number of host
machines the maintenance team will have to update and maintain each machine. The data-
transmission rate is much lower on the serial connection compared to the network connection
this means that there will be a significant decrease in the performance of the system.
Figure 7 Serial Port ⑧
In the network connection there can be either a wired connection or a wireless connection
between the reader and the computer. In simple terms the reader is a network device and can
be connected to the network like any other device such as a computer. The one advantage to
this type of reader is that there is no limit to the length of the cable that connects the reader to
the computer. This means that the number of host machines will be lower compared to the
serial approach. This also affects the maintenance of the readers as the firmware and other
components can be accessed remotely across the network and they can be updated or changed
remotely. The main disadvantage to this approach is that the connection is not a reliable as
the serial connection, if the connection is broken the back end of the reader cannot be
accessed as a result the system could come to a stop, even if the reader has its internal
memory this will only last for a short network outage, after this short period of time data will
be lost.
⑧ Serial port (http://ergocanada.com/ergo/tips/serial_port.jpg)
35
The next classification type is based on mobility:
Stationary
Handheld
Stationary readers also know as fixed readers, are normally mounted to a wall, portal, or
some appropriate structure in the area where tags will need to be read. The name stationary
does not mean that the reader has to be completely stationary as in some cases the structure
that the reader is attached to could be mobile, such as attaching the reader to a truck or crane.
Stationary reader require external antennas to read tags, in most cases the reader can support
up-to four antennas. The cost of stationary readers is lower than handheld, a model of the
stationary reader is shown in Figure 8, and this type of reader could be mounted to any type
of surface in or outdoors (Finkenzeller, 1999).
Figure 8 Stationary RFID Reader ⑨
The handheld RFID reader is a mobile version of the stationary reader. The reader is operated
through a handheld device, which normally has a built-in antenna. This type of reader is more
expensive and thus not as widely used however as the RFID technology advances more and
more the price of producing these types of reader is becoming lower. An example of a
handheld reader is shown in Figure 9.
⑨ http://www.allproducts.com/manufacture2/pongee/rfid-reader-l.jpg
36
Figure 9 Handheld RFID Reader ⑩
Input/output Channel for External Sensors, Actuators and Annunciators are mainly used for
optimising the performance of the reader, as the reader will not be reading tags constantly. In
most applications tags will only come in contact with the reader at specific times, thus if the
reader was constantly on then it would be a waste of energy. This component provides a
means of turning the reader on or off in reaction to external events, such as attaching a light
or motion sensor to the tag and once the sensor is triggered the reader is set to read any tags
in range.
3.4 Operating Frequencies
The tag and the reader both operate within distinct frequency ranges, each range is associated
with a different application e.g. low-frequency (30 to 300 KHz) devices are typically found in
passive tags and used in short-range applications such as livestock identification. High-
frequencies (3 to 30 KHz) are used most commonly in smart card systems. RFID system
normally operate in the range of 13.56 MHz (Shepard, 2005)
Very high-frequency devices (300 MHz to 2 GHz) are most used in the E-toll systems, these
system normally operate at 900MHz in the US or 2.45GHz in Europe and in some other
places across the world they operate at 5.8GHz.
The pros and cons for the two frequency boundaries and varied but equally matched, the low
frequency systems can operate with minimal power consumption and are inexpensive and
also can read through metallic overlays. However they are sensitive to noise and can only
⑩ http://support.simplyrfid.com/_/rsrc/1232573584034/noxvault/NoxVault-Long-Range-Handheld-RFID-Reader.jpg
37
read at short range. Higher frequency systems require more power especially systems that run
at 1MHz or higher, however can read at a much further distance and are not orientation
sensitive. They can handle larger data transfer however cannot penetrate metal surfaces.
3 .5 Reader and Tag Communication
The communication between the tag and reader depends on the type of tag; the type of
communication could be anyone of the following:
Modulated Backscatter
Transmitter Type
Transponder Type
Modulated backscatter is common between tag and reader and is used with both passive and
semi-active tags. For the process of modulated backscatter the reader sends a continuous
wave (CW) of a RF signal, this signal contains both AC power and clock signal. The wave is
sent to the tag in what is called the carrier frequency, this is the operating frequency of the
reader and the corresponding tag. The next process to take place is called coupling, this is the
process of powering the tag through the RF signal being sent by the reader. The antennas of
both become coils and create a magnetic field, this field then induces a current in the coil of
the tag and the tag is powered (Grafinkel and Rosenberg, 2006).
This process is carried out between the tag and the reader through what is called physical
coupling the power is supplied to the microchip around 1.2 volts are needed to fully energize
the chip in the tag and to be able to read the data stored on the chip. For the process of writing
to the tag the chip needs 2.2 volts from the reader (Lahiri, 2005). The microchip on the tag
modulates the signal into a sequence then into a pattern that represents the data that it is
sending, after modulating the signal it sends it back to the reader. The reader receives the
modulated signal it then decodes the pattern and retrieves the tag data. The main conventions
of the modulated backscatter is that the tag cannot communicate until the reader has sent out
a signal, thus in this method the tag is totally dependent on the reader. Figure 10 is a diagram
showing the process of modulated backscatter; it shows the signal going from the receiver to
the tag and being modulated and then the modulated signal being sent back for decoding.
38
Figure 10 Modulated Backscatter⑪
In transmitter type communication the tag that is used is the active tag, the tag broadcasts its
message to the surrounding environment. This is done regardless if there is a reader in the
area. In this case the tag will always communicate first; as the tag is active it does not require
the power from the receiver and can communicate first.
For transponder type communication a special type of active tag is used, this tag is called a
transponder. This tag acts the same as an active tag is every way bar one, normally the tag is
a in a sleep mode. The tag lies sleeping and at set intervals sends a signal to check if a reader
is trying to access the tag. If no readers are trying to access the tag the tag continues to sleep
and repeats the previous step. If a reader is discovered that is trying to read the data on the tag
the tags wakes up and copies the previously motioned connection type of transmitting its
message to the surroundings environment.
3 .6 Host and Software System
The host and software system is the term used for the software and hardware that is separate
for the RFID system (tags, reader etc). This host and software system is composed of the
following:
Edge interface/system
Middleware
Enterprise back-end interface
Enterprise back end
Edge interface/systems is called this as it is seen to be at the edge of the host and software
system as it is the first part of connection with the RFID system. This component’s main task
is to get the data from the readers and control the readers’ behaviour and control any attached ⑪ http://i.cmpnet.com/rfid-world/2008/07/DobkinFig15.gif
39
actuators and annunciators. This component is where all the details of the interaction with the
reader are kept; this builds a layer of abstraction between the host and software system and
the reader. Meaning that the host and software system can be reused with other supported
reader, this is cost effective as it would be very costly to develop a new system for every type
of reader and RFID system. One way of looking at the component is as it was a super
controller that can be used to interact with any support controller.
The middleware is seen to be everything between the edge interface and the enterprise back-
end interface (Lahiri, 2005). This component provides the core functionality of the system
this includes the following:
Data sharing both inside and outside of an enterprise
Management of the large amount of data produced from the RFID system
Provide the basic components that can be used for implementing the business specific
logic for the system
An open standard that is compatible with a wide range of software systems
A week coupling between the edge interface and the back-end meaning that if a
change is made to one, this will cause minimal effect to the other
The middleware component is integrated with the enterprise back-end through the enterprise
back-end interface; it is this component that contains all the business process integration. As
the middleware is a generic component it needs a customer interface to integrate it with the
enterprise back-end. The enterprise back-end is the complete set of applications that are
needed for the system. The enterprise back-end comprises of the data repository and the
business process engine, in the case of a RFID system this contains the data of all the tagged
objects and this is all send to the middleware.
3 .7 Standards
RFID like most technologies is governed by a number of standards, it important to have
standards for RFID applications as in some cases the data that it being used with the RFID
system is sensitive or very important. Over the last decade work has been carried out to
develop standards for RFID. There are currently standards for the air interface protocol, data
content, conformance and applications of the RFID system. One standards governing body
40
has created standards for the tracking of cattle; this was the International Organization for
Standardisation (IOS). The standards are shown in table 1 (RFID Journal, 2009)
ISO Standard Description
ISO 11784 How the data should be structured on tags used for the tracking of
cattle
ISO 11785 Defines the air interface protocol for RFID systems
ISO 14443 Defines the air interface protocol for payment systems and contactless
smart cards
ISO 15693 Defines the air interface protocol for vicinity cards
ISO 18047 For testing the conformance of RFID tags and readers to a standard
ISO 18046 For testing the performance of RFID tags and readers
Table 1 RFID ISO Standards
41
4 Requirements Specification and Analysis
In this chapter of the Report the project aims that were previously discussed in chapter 1 will
be discussed in detail. This chapter will also describe in detail the objectives of the system
and its functionality. The design methodology that the project will follow is also described
and other suitable methodologies will be discussed. The requirements of the system including
hardware and software that will be used during the development and implementation process
will be defined.
4.1 Problem Specification
For the wired range of location tracking technologies that have been defined in chapter 3
many can be implemented for this current scenario however not all would be the most suited
or most efficient.
Such technologies as GPS and GSM are perfect for large scale outdoors applications such as
tracking vehicles in a city or boats at sea or in the case of GSM tracking people across a
country. These can be perfectly implemented in the large scale applications that they are
already implemented in however they can suffer when used in small scale applications such
as tracking people in a building or tracking objects in a warehouse.
The previously mentioned was the main consideration for proposing RFID tracking to be
used for the current scenario. The RFID system that is proposed meets all the needs of the
needed solution, it must work well in a small scale, it must be low cost for implementation
and maintenance, and it must work in multiple applications and must be user friendly.
4.2 Objectives of System
The objective of this project is to develop a system that demonstrates the use of RFID in the
area of accurate real-time location determination over a small area.
42
4.2.1 Fire Service scenario
The main scenario that the project is addressing is of the Northern Ireland fire service, the
current issue is that the tracking of equipment across the fire server in Northern Ireland can
be very problematic. The current system in place is a written system that involves a member
of staff that is in charge of a fire engine to manually check that all the necessary equipment
needed for each job is present on the engine before it leaves the station. When the engine
returns to the station the member of staff must then manually check that all the equipment
that left the station on the engine is still present on the engine when it returned.
The process of checking the equipment involves looking at equipment and checking if the
serial number (if the item has one) matches with the number that the engine should have, or if
no serial number is present then as piece of coloured tape will be present on the item (each
station uses a different colour). The main issue with this is that the serial numbers can easily
wear away from regular use and in some cases two stations can use the same colour tape
and/or the tape could fall off the item. This means the item cannot be identified, and the
relation between station and item cannot be made.
The exchange or borrowing of equipment is very common in the fire service as some stations
do not stock all the needed items for more rare jobs. This means that equipment will be
passing through other stations and be used on other fire engines regularly. Without a solid
system to identify each item of equipment and the relationship between station and item, mix
ups can happen far too often.
The Northern Ireland fire service is broken down into 4 operational commands area (north,
south, east and west). There are a total of 68 stations across the 4 areas, each of these stations
network together and share services and equipment. The proposed system will need to allow
the networking of all these stations and the sharing of data.
43
The system will be placed at the main entrance and exit of the fire station, the system will
scan each time as fire engine leaves or enters the station. This will detect all the equipment
that is on the engine and will add this information to a database of all the currently tracked
equipment that is associated with the fire engine. The user interface of the system will be a
fully accessible interface that will provide the user with a method of adding tagged items to
the database, editing tagged items on the database and removing tagged items from the
database. The interface will also provide an up-to-date status of each item on the database e.g.
“in” or “out”. There will also be an ability to search for items in the database thus being able
to view the search items details and location status. If items have been flagged as “out” when
an engine has left and not flagged as “in” when the engine returns, this item will be flagged
as missing and a notice will be displayed to the user to draw this to their attention. The
unique ID of each available RFID tag will also be stored in the database and the tag will be
given to one of the tracked subjects. The tag is assigned to that individual in the application.
The tags will be detected by the Trolley Scan system, which will send the location data of any
tags in the monitored area to the system. The system on will be written in C# and will run on
any modern Windows operating system with the .NET 2.0 Framework or higher.
4.2.2 Other Application
The fire service scenario is a common problem in industry, is many large companies’ time,
money and effort can be wasted trying to manage inventory or stock. In many cases the stock
management is done manually which is highly susceptible to human error. The solution of
using RFID tags to track stock could save large amounts of money and time as the system
could be fully automated.
4.3 Design Methodology
Design methodologies are ways of developing a system for a unique situation. This is one of
the fundamentals of software engineering. It accompanies requirement specification
processes, analysis processes, implementation processes and testing processes. The waterfall
and incremental design methodologies are covered in this chapter.
44
4.3.1 Waterfall Methodology
The waterfall model is a software development process that is sequential, as each process
must be complete before the next can be started. The model has its roots in the manufacturing
industry as it was a very reliable model that is easy to follow. Figure 11 shows the seven
stages of the model.
System requirements
Software requirements
Analysis
Program design
Coding
Testing
Operations
Figure 11 WaterFall Method ⑫
The waterfall methodology’s advantage is that it is extremely disciplined. Its specifications
are strongly defined and must be strictly followed if the end product is to be produced to the
highest standard.
⑫ http://www.maxwideman.com/papers/plc-models/1990s.htm
45
The disadvantage of the waterfall model that there can be time delays in the project time line
as one part cannot be started until the previous is finished, in some cases this can mean that
members in the project are left with no work while they wait on other parts of the project
which is a waste of resources.
4.3.2 Iterative / Incremental
The iterative methodology is a software development model that addresses weaknesses of the
waterfall method. In this model the different parts of the project are developed separately and
then integrated during the project timeline. Part of the project time line is designated for
improvements; this is done as mistakes can be built upon as the development was first carried
out Figure 12 shows the cyclical nature of the development model.
Figure 12 Iterative Development Model ⑬
4.3.3 Design Methodology Selection
The development of the project system will follow the waterfall method mainly however will
also integrate some aspects from the iterative method. The requirements specification,
analysis and initial design will be carried using the waterfall model, resulting in detailed
documentation which will be relied upon later in the implantation process. The
implementation and testing phases will follow the iterative method, as any design bugs will
be caught and can be re-designed without having to start from the beginning up.
⑬ http://www.answers.com/topic/iterative-and-incremental-development
46
4.4 Requirements Specification
The requirements for this project are split into two separate areas: functional requirements
and non-functional requirements.
4.4.1 Functional Requirements
The following defines the functional requirements into two classes; requirements for the user
and requirements for the system.
4.4.1.1 User
After loading the program, the user should be able to:
Quit the program
Access the status screen
View a list of tags being tracked by the system
Search for a tag that is being tracked
Add new tags to track
Assign tags to equipment
View and edit information on each tag
Calibrate the RFID reader for the area
View the software help at any time
4.4.1.2 System
The system should:
Run on any machine using the Windows operating system
Track the position of tags in the monitored area using location data provided by the
TrolleyScan system
47
Store information, accessible at any time, on equipment in a database
Associate tag IDs from the RFID-Radar system with tag IDs assigned to objects
4.4.2 Non-Functional Requirements
Accessibility – Each component of the software must be readily accessible and easy
enough to use with minimal training and experience
Time Constraints – The project is to be completed within two semesters (24 Weeks)
Reliability – The system should load at any time and provide reliable information.
Any errors will be handed by the system and not affect the user experience
Performance – The system must load and warn the user if tags have not returned. The
retrieval of information about tags should be instantaneous, if there is a delay then the
system will display a message to the user thus to improve the user experience
Extensibility – The software should be written in such a way as to allow extra
functionality to be added in the future, at any time add-ons and or extensions can be
added to the system to accommodate for different scenarios
Maintainability – Software code must be well-structured, readable and well-
commented to allow for the implementation of extra functionality. This system will
also use external configuration files to insure that no information is hard coded
Scalability – The number of tags tracked by the system within the monitored area
should be limited only by the reader’s input and output capabilities
Efficiency – The software should use as little resources as possible to perform at an
acceptable level
The user interface must conform to HCI standards
4.4.3 Software Requirements
Microsoft Visual Studio 2008/Visual C# Express edition
48
4.4.4 Hardware Requirements
Trolley Scan RFID-Radar System (Reader and Antenna)
RFID Tags
Desktop or Laptop Computer
RS-232 to USB cable
49
5 Design Phase
This chapter discusses the design phase of the project. The functions of each component in
the system, the hardware and software will be outlined.
5.1 Hardware ComponentsThe hardware utilised in the implementation of the system include a laptop/desktop
computer, RFID reader and RFID tags.
5.1.1 Laptop / Desktop Computer
Any laptop or desktop computer running Windows XP or Windows Vista can be used in the
hardware configuration for this system. The machine must have an RS232 (serial) port to
allow the RFID reader to be connected or a USB port if the RS-232 to USB adaptor is used.
A laptop using an RS232-to-USB Adapter, as shown in Figure 13, or a desktop PC will be
used for this system.
Figure 13 Acer Aspire 5600 with RS232-to-USB Adapter ⑭
⑭ http://www.acer-euro.com/
50
5.1.2 Trolley Scan RFID-Radar system
Figure 14 Trolley Scan RFID-Radar System ⑮
The Trolley Scan RFID-Radar system, shown in 14, consists of the following components:
Reader – The reader connects to the computer via an RS232 port. It measures the
signals travelling from transponders and provides an energy field to power the passive
tags. The reader’s processor operational frequency can be set anywhere in the range of
860MHz to 960MHz.
Tags/Transponders – The tags are passive backscatter Ecotag UHF transponders. The
credit-card-sized 200uW EcochipTags have a range of ten metres, while the 5uW
stick tags have a maximum operating range of forty metres. Figure 15 shows these
tags in more detail.
Antenna Array – The antenna array contains one transmit antenna for energising the
passive transponders and one antenna for each receiver, giving a total of three
antennas in the array.
⑮ http://www.rfid-radar.com/introduc.html
51
Antenna
Reader
5uW Stick Tags
200uW EcochipTags
Serial Cable
Coaxial Cables
Figure 15 5uW Stick Tag and 200uW Ecochip Tag
5.2 Software Components
The major software component, running on the either the Microsoft Windows XP or Vista
operating systems, used in the project’s design and implementation is Microsoft Visual
Studio 2008.
5.2.1 Microsoft Visual Studio 2008
Microsoft Visual Studio is a software development tool used for the creation of software
applications on any platform supporting Microsoft’s .NET Framework. Visual Studio 2008
allows development of the four main development languages: Visual C#, Visual Basic.Net,
Visual J# and Visual C++. This project created using the Visual C# language. It uses the
extensive class library made available by Microsoft’s .NET 3.0 Framework to add many
types of functionality, such as networking, graphics and methods to interact with the
Windows operating system.
5.3 Design considerations
When designing the system there is many factors that need to be considered these include the
positioning of the system to obtain maximum performance. For the scenario that this report
addresses the system will need to be placed at the main entrance/exit of the building for the
fire engine.
52
Figure 16 RFID System for Fire Service
Figure 16 shows the layout of the proposed system, the RFID reader will be at each side of
the main entrance/exit and will have the set of three antennas previously mentioned attached
to the reader. Both readers will then attach to a local machine that will be used by the staff in
the station to check the tagged items.
5.3.1 User Interface
The user interface will use tabs for ease of browsing through the different screens. Each tab
will give the user a number of different options and varied information from the database.
There will be three main tabs that the user will be provided with, once they have successfully
logged into the system. The log in screen will follow the design showed in Figure 17.
Figure 17 Log In Screen
53
After the user logs into the system using their personal username and password, they will be
directed to the main system screen. This will contain the company logo which can be changed
using the accompanying configuration files instructions on how to change this will be
supplied in the system manual. The main screen will also contain the tab control; this will
have three following tabs however there will be the ability to add more tabs later if the user
decides to expand the system.
Status
Tags
Settings
The status tab will contain an up-to-date status of the tags that are being monitored by the
system. There will be a section that will show the list of vehicles and their status e.g. “in” or
“out”. There will also be a section that will show a list of tags that have not returned but their
associated vehicle has returned. These tags will be considered missing, along the bottom of
the screen there will be buttons provided options for each section. The user options will
include an update button that will update all the information on the screen; this will also be
done at 10 minute intervals (the reason for the interval is to save on process power as each
update will take up process power). An example of the status screen is shown in Figure 18.
Figure 18 Status Screen
The tag screen will allow the user to add, edit, remove and search for a tag each of these
options will display the tags information. The user can navigate to this screen by clicking on
the tab called “Tags” the user will also be directed here from the status tab if the “View Tag”
button is selected. An example of the tags screen is shown in Figure 19.
54
Figure 19 Tag Management Screen
The last tab is the setting tab this will contain all the options for the user and will allow them
to change many factors of the system such as the time interval for updating the system, the
look and feel of the system, add users to the system etc. They user will also have the ability to
set constrains on the system such as limit the number of tags that can be on the system or
limit the users that can access the system. The options in this screen will reflect the setting
stored on the applications accompanying configuration files. As setting are changed on this
screen the configuration file will be updated thus saving the setting for the next time the
application is started. This screen will be defined later in the design process as many of the
features that will be on this screen will change over the duration of the development process.
The system will use neutral colours such as white and grey, this will help to improve the user
experience for colour blind users or users of vision disabilities.
5.4 HCI Considerations
The proposed system will meet the standard HCI guidelines; the following is the list of the
guidelines that will be followed.
Consistency – The user interface will be consistent across all screens in the system.
There will always be a main menu across the top of the screen and there will always
be a help button that will provide the user with help and the instructions on how to use
the system.
User Experience - The user will not have to navigate through more than three screens
to perform any tasks. All buttons, labels, group boxes, menu items and message boxes
will be clear and understandable by all levels of users.
55
Look and Feel – The user interface will have a consistent theme of colour throughout
the application, this will be a neutral greys and white. The organisation that acquires
the system can request a custom theme/colour scheme. The colour of the system will
be customisable from the settings screen; this will also include the ability to add a
custom image to the application for the organisation logo.
Feedback – The user will receive feedback for every action performed
Error Prevention – The system will validate all user input and disable any inactive
form controls.
5.6 User Cases
The following section defines the user cases/scenarios for the system, these are the different
cases that the user will be faced with or that the user can carry out. All the user cases are
defined in the use case diagram; this is a Unified Modelling Language (UML) diagram that is
a standard across the software engineering discipline. The use case diagram is shown in
Figure 20.
Figure 20 Case Diagram for Proposed System
56
The following are the use case descriptions for the use case diagram in Figure 20.
Use Case Name Open User Interface
Primary Actor User
Data Username/Password
Description The user starts up the application and logins
into the system.
Preconditions None
Post Conditions The application loads and displays the main
screen to the user.
Table 2 Use Case: Open User Interface
Use Case Name Add Tag
Primary Actor User
Data Tag ID, Equipment description, equipment
location
Description The user adds the new tag to the database and
associates the tag with a piece of equipment.
Preconditions The user has loaded the main application can
selected the menu item for adding a new tag.
Post Conditions The new tag and its associated information is
added to the system database and the details
are displayed to the user for verification.
Table 3 Use Case: Add Tag
Use Case Name Edit Tag
Primary Actor User
Data Tag ID or Equipment description
Description The user enterers either the tag ID or the
equipment and is displayed with the tag
information or a list of matching tags if the
description is used. The user then can edit
each item of information that is stored on the
57
tag.
Preconditions The user has loaded the main application can
selected the menu item for editing a tag.
Post Conditions The updated tag information is saved to the
database and the information is displayed to
the user for verification.
Table 4 Use Case: Edit Tag
Use Case Name Remove Tag
Primary Actor User
Data Tag ID or Equipment description
Description The user enters the tag ID or equipment
description and is displayed with information
on the tag or a list of matching tags of the
descriptions is used. The user then can
remove the tag from the database.
Preconditions The user has loaded the main application can
selected the menu item for removing a tag.
Post Conditions The tag and its associated information is
displayed to the user before it is removed
permanently.
Table 5 Use Case: Remove Tag
Use Case Name Search Tag
Primary Actor User
Data Tag ID or Equipment description
Description The user enters the tag ID of equipment
description. The user is then displayed with
the tag information or a list of matches if the
equipment description is used. The user is
then displayed with the following options;
58
edit or remove the tag.
Preconditions The user has loaded the main application can
selected the menu item for searching for a
tag.
Post Conditions The tag and its associated information is
displayed to the user for verification.
Table 6 Use Case: Search Tag
59
5.7 State Diagrams
The following section illustrates the interaction between the user and the system through state
diagrams, state diagrams are a well know UML diagram used to illustrate the processes of the
system.
Figure 21 State Diagram: User Logging into System
Figure 22 State Diagram: Update Status Screen
60
6 Implementation In this chapter the implementation stage of the application described in chapter 5. This
chapter will also describe the process of setting up the equipment needed for the application.
6.1 Equipment ConnectionThe first stage when connecting the equipment is to choose the correct location to set up the
RFID Radar equipment. The perfect location for any RFID radar system is to have the
antenna high above the ground, with no obstacle in the radio path of the antenna. Figure 25
shows the ideal position of the antenna.
Figure 25 Ideal Radio Setup
In Figure 25, the antenna is set at a height so that the radio waves have a long path before
they reach an obstruction. This will provide the RFID radar with strong signals and give
accurate readings. Once the antenna is in the optimum place for the location that tags will be
tracked the next step is to set up the antenna with the reader to retrieve data. The first stage is
to connect the reader with a computer. In this case a standard laptop was used to connect with
the reader. The input and output port on the reader is a RS-232 (serial) port. As mentioned in
chapter 5 a standard laptop does not have a RS-232 port thus a USB-to-RS-232 cable must be
used to mimic the RS-232 port on the laptop. Once the connection is made between the
reader and the laptop the reader will shown on the device manager as a “COM” port, the
software that was supplied with the reader using the COM port to communicate with the
reader.
62
One issue that was discovered with the supplied software was that the supplied software for
reading data from the radar assumed that the radar was connected to COM1, as there can a
number of different devices connected to the computer through serial ports there is a large
number of COM ports that the computer can handle. In some cases other devices where
connected to the computer and thus COM1 was taken when the reader connected to the
computer and the reader was given a different port name. This meant that the supplied
software would not work in some cases. This issue was taken into consideration when the
application was developed to interact with the reader.
Once the reader was set to COM1 the supplied software was used to test that the radar was
working and that the data could be retrieved, once this was verified and working a testing
application was developed. The testing application was a simple C# .NET Windows forms
application that used a serial connection to interact with the reader, the serial connection was
established using the SerialPort⑯ class which is part of the System.IO.Ports namespace in
the .Net framework. This class contains a number of different objects and methods that can
be used for the sending and receiving of data from a serial port
Method/Property Implementation
Open(); Opens the port for input and output communication.
Close(); Closes the port.
IsOpen; Boolean value returns true if the port is open, used to
prevent the open command being preformed if the port is
already open.
DataReceived; Event triggered when the program receives data from the
serial port.
ReadExisting(); Reads the data currently held in the port’s received-data
buffer.
WriteLine(String
text);
Sends a String to the equipment connected to the serial
port.
Table 7 Serial Port Methods
⑯ http://msdn.microsoft.com/en-us/library/system.io.ports.serialport.aspx
63
In table 7 the common serial port methods are shown, the most used methods are the open
and close methods as these are used to access the data from the reader. The IsOpen variable is
used to prevent open call to be made on the port when it has already been opened. The
DataReceived event is used in conjunction with a custom event handler to read the data from
the reader, every time the reader obtains data it sends it through the port and the DataRecived
event is triggered. This then triggers the custom event handler that will carry out and action
with the, with the help of the ReadExisting() method. The last method is the WriteLine(String
text) method. This is used to pass information to the reader; the reader being used is set up to
operate different actions some of these commands are shown below:
“ON” – Turns the energising field on and the reader starts to receive data if tags are
present.
“OFF” – Stops the reader from receiving data and turns off the energising field.
“CRN=<x>” – Sets the distance that the radar will use for calibration where x is the
distance in centimetres.
“CALIBRATE” – Calibrates the radar to the predefined distance or if no distance has
been defined then the calibration is carried out to a distance of 9 meters.
These are the most common commands that are used, the majority of the time no commands
will be passed to the radar.
6.2 Testing For the purpose of testing the radar a simple Windows form application was created that
could connect to the COM port, start receiving data, stop receiving data and send data to the
reader. This simple application was used to carry out the test cases that will be defined in
more detail in a later chapter, the application user interface (UI) is shown in Figure 26.
64
6
Figure 26 Testing Application UI
Each of the items highlighted in Figure 26are described in more detail in table 8.
No. Description
1 Allows the user to enter the COM port
number that the reader is currently using.
E.g. “COM2”
2 Allows the user to define the test name, this
will be the name that the test log file will be
saved as.
3 Shows the currently read tags.
4 Shows the currently read tags distance in a
large font to help the user with using from a
distance.
5 Allows the user to input text and send this
text to the radar at any time, e.g. send
commands to the radar.
6 Allows the user to turn the radar on/off
Table 8 Testing application UI details
The code that allows the application to communicate with the serial port is a standard code
used to connect to any device connected on a serial port. To connect the application with the
serial port the port must be defined by creating a serial port object and then defining the port
details the following code illustrates this.
65
Tag IDDistance Angle
private SerialPort _port;
_port = new SerialPort("COM1", 19200, Parity.None, 8, StopBits.One);
The second line of the code shows how the port details are defined the first parameter is the
port name in this case it is COM1 however this could be COM1-256 as total number of COM
ports for most operating systems is 256. The second parameter is the baud rate which is the
number of singling changes or pulses per second of the radar; this is specified in the technical
documentation that came with the radar. The third parameter is the parity this is used as a
error check on the data, ensures that the number of bits with the value one in a set of bits is
even or odd. The forth parameter is the data bits this is range of the data that will be
communicate through the port. The last parameter is the stop bits, this is a character in the
transfer that lets the receiver know that the byte being sent has finished. After the port
connection has been created and defined the next stage is to define the event handler that will
handle the received data. This is done with the help of a customer event handler that is
assigned to the DataReceived event; the code following code shows this.
_port.DataReceived += PortDataReceived;
The code for the customer event handler can be place in the same code file as the declaration
of the serial port. The following code shows the event handler that captures the incoming
data from the reader. private void PortDataReceived(object sender, SerialDataReceivedEventArgs e) { try { _data.Append(_port.ReadExisting()); } catch (Exception ex) { MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK); }
}
The main part of the event handler is that try catch statement, this tries to append the data
from the port to a previously created StringBuilder object. When creating the event handler
the first version called a method that would process the data received however errors
occurred when the code tried to use the data as it was received it would only arrive in slots of
8 bits and not when the radar had complete a read operation on a tag. The data needed to be
in the following format to make it usable:
BBBFL3060^ 60.01 000.0
66
However as the data was appended to the StringBuilder it would only be in 8 bits at a time
e.g. BBBFL306 and the distance and angle data would come in with the second read. The
solution to this was to create a timer that would tick every second (as this was the standard
interval for radio signals from the radar) and on the tick would check if the data in the
StringBuilder was the data for a full read and if it resembled the previous data example. If the
StringBuilder did contain the data for a full read then the data was processed. The following
code shows the validation carried out on the StringBuilder.
private void _timerCheckData_Tick(object sender, EventArgs e) { If(_data.ToString().EndsWith("\n\r"))
The code checks if the StringBuilder ends with “\n\r” as the end of each full read ends with
this. If the data contained in the StringBuilder conforms to this it will then continue on to be
processed and displayed to the user.
When the testing application is used it will print the results from the reader to the screen,
showing the tags being read and the distance and angle of the tags. The application will also
print the information to a text file that will be saved to the user local machine. An example
text file with the application output is shown below:
Test Starting
19/04/2010 13:38:57:
19/04/2010 13:38:58:
19/04/2010 13:38:59:
19/04/2010 13:39:00:
19/04/2010 13:39:01: BBBFL3060^ 60.01 000.0
19/04/2010 13:39:01:
19/04/2010 13:39:02: BBBFL3060^ 59.97 000.0
19/04/2010 13:39:02:
19/04/2010 13:39:03: BBBFL3060^ 60.02 000.0
19/04/2010 13:39:03:
Test Ending
The only change made to the data when it is printed to the file is that the time and date is
appended to start of each read. This is to help with the reading of the data as each second is a
single read from the radar.
67
6.3 Scenario Solution Application
The scenario that is described in pervious chapters is of an automated inventory system, that
can track the status of equipment and engines that belong to the fire service. The final
application was created with C# .NET and used the same principles as the testing application
in respect to connecting to the radar.
6.3.1 Program GUI
The user interface of the application was designed to be very user friendly and easy to
navigate around. There are no sharp colours or bright flashing graphics thus not causing
issues to user with sight disabilities. The system can be used fully with only a keyboard
meaning that the system will conform to accessibility software for physically disabled users.
The main screen that the user is presented with when the system is started is shown in Figure
27.
Figure 27 Main UI Screen: Before User Login
This screen will shown when the user starts the system and has not logged in yet and the UI
elements will not be usable until the user logs in. Once the user selects the “Log In” button
they will be presented with the log in screen shown in Figure 28.
68
Figure 28 LogIn Screen
The user will then enter their allocated username and pass, in the scenario each station is
given one username and password meaning that one the user logs on they are logged in as the
station. Once the user has successful logged in they will be presented with the main screen
with all the UI elements available for use, this is shown in Figure 29.
Figure 29 Main Screen: After Login
Each of the items highlighted in Figure 29 are explained in more detail in Table 9.
No. Description
1 Navigation tags used for navigating through
the different UI tabs of the system
2 ON/OFF button used to turn on/off the radar
3 Alerts list displays any items that have been
flagged as an issue⑰
4 Live radar view shows all the tags that are
currently being read by the radar
5 Logout button allows the user to logout of the
system and thus disabling the UI elements on
⑰ The different alerts and what makes and item become an issue will be covered in detail in later chapters
69
1
3
2
4
5
6
7
the screen
6 Close button allows the user to exit the
application
7 The current station name of the user logged
into the system
Table 9 Main Screen UI Elements
The user will be able to view the current tags being passed through the range radar and also
see any issues with tags from this screen. If there is an issue with a tag or the user needs to
edit, add or remove a tag they can do so from the “Manage Tags” tab. This screen is shown in
Figure 30.
Figure 30 Main Screen: Manage Tags Tab
The items highlighted in Figure 30 are explained in more detail in Table 10.
No. Description
1 Search box that allows the user to search by
item name or tag ID
2 Check box that allows the user to enable the
advanced search options
3 Advanced search options that allow the user
to filter the search by the location, status and
engine No.
4 Data view that displays the search results the
70
1
2
4
35
can select the different records and use the
edit and delete buttons on the selected record
5 Add, edit and delete buttons that allows the
user to add, edit or remove records from the
database. The add and edit buttons will open
a new dialog to perform the task or adding or
editing.
Table 10 Main Screen: Manage Tags Tab UI Elements
If the user selects the add button they will be presented with the add dialog this is shown in
Figure 31. The user will be able to fill out all the needed details on the tag such as:
Name
Tag ID
Station
Status (IN/OUT)
Engine No.
Description (this is not mandatory)
Figure 31 Add Tag Dialog
Once all the mandatory details have been added to the form the user will be able to save the
details to the database. The edit button on the main screen will also open the same dialog
however the details of the tag will be in the provided slots in the form and the user will be
able to edit each of these. Some validation rules have been applied to the form, such as if the
user changes the station of the tag the engine drop down will update to display only the
engines that belong to that station.
71
6.4 Database When the user adds edits or removes tags in the application the changes are written directly to
the database that the application uses. Even when the user starts the radar application the
database is used to check the users login credentials before the can be successfully logged
into the system. The database is made up of the following tables:
Engine
Equipment
Station
User Details
6.4.1 Engine Table
The engine table holds the data on each engine across all the stations, the data that is held is
shown in Table 11.
Name Data
Type
Length Comment
Tag ID Text 9 The RFID tag ID of
the engine
Location Text 20 The current station
that the engine is
located in
RegNumber Text 8 The registration
number of the engine
Status Text 3 The status of the
engine either
IN/OUT
Station Text 7 The station that the
engine belongs to
LastStatusChange Text N/A The last time the
status of the engine
was changed this is
72
used for the
application to stop
errors in the status
updates
Table 11 Engine Database Table
6.4.2 Equipment Table
The equipment table holds information on all the items of equipment across all the engines
and all the stations. The data that is held on the equipment is shown in Table 12
Name Data
Type
Length Comment
Name Text 20 The name of the item
TagID Text 9 The RFID Tag ID of
the item
CurrentLocation Text 7 The current station the
item is located at
Status Text 3 The status of the item
(IN/OUT)
LastStatusChange Date/
Time
N/A The last time the status
of the item was
changed this is used
for the application to
73
stop errors in the status
updates
Description Text 255 A short description of
the item
Engine Text 8 The registration
number of the engine
that the item belongs to
Station Text 7 The station that the
item belongs to
Table 12 Equipment Database Table
6.4.3 Station Table
The station table holds all the information on the different stations that make up the fire
service. The information that the table holds on each is shown in Table 13.
74
Name Data Type Length Comment
StationName Text 20 The name of the station
ReferanceNo Text 7 The reference number of the station
Street Text 20 The street the station is located on
City Text 20 The city the station is located in
Postcode Text 7 The postcode of the station
Tel Text 11 The Telephone number of the station
Email Text 20 The main contact email for the station
Table 13 Station Database Table
6.4.4 UserDetails Table
The UserDetails holds all the details on the different user accounts for the system. The
information that is held on the user account is shown in Table 14.
Name Data Type Length Comment
Username Text 20 The name that the user will use to log into the system
normally the same as the station name
Password Text 20 A password chosen by the manager of the station that
must be greater than 8 character and have at least one
number
Station Text 7 The reference number of the station
Table 14 UserDetails Database table
Each table in the database links together with a foreign key relationship. The relationships are
shown in Figure 32.
75
7 Testing In the chapter the testing phase of the project is discussed in detail and the planning of the
testing is outlined. Test cases that were carried out on the system are outlined and the results
are given. The tests were carried out to see how the RFID radar and RFID tags perform under
different environments and how the equipment would perform in a real world scenario.
7.1 Test cases Test cases were created that would test the radar and tags to their limit and expose factors that
can cause the system to fail or lower the performance of the system. The list of test cases for
both passive and active tags are shown in appendix A and B, the next sections will explore
some of the test cases and give more information on how the tag and the radar were affected
by the conditions and how the conditions affected the tag and radar.
7.1.1 Test Case 4 Active and Passive
Test case 4 involves grouping the tags both passive and active together and check if the radar
can read all the tags at the same time. This test tries to discover if the radar can handle stress
by over loading the read area with a large number of tags. For the test to be carried out the
tags where all mounted to a cardboard box, the box would not reflect the radio signal thus
making it the perfect mount. In total 11 tags were used 9 active tags and 2 passive, the tags
are shown in Figure 33.
Figure 33 Tags Mounted to Cardboard Box
77
This box was then moved into range of the radar and the results were logged. The following
is a section of the log.
Test Starting
01/04/2010 12:53:53: BCBBB4685^P 60.08 000.0
01/04/2010 12:53:53: BBBFL3175^ 59.95 024.8
01/04/2010 12:53:53: BBBFL3060^ 59.79 -001.8
01/04/2010 12:53:53: BCBBB4677^P 60.13 000.0
01/04/2010 12:53:53: BCBBB4686^P 59.85 000.0
01/04/2010 12:53:53: BCBBB4684^P 59.99 000.0
01/04/2010 12:53:53: BCBBB4678^P 60.04 000.0
01/04/2010 12:53:53: BCBBB4688^P 60.05 000.0
01/04/2010 12:53:53: BCBBB4680^P 59.94 000.0
01/04/2010 12:53:53: BCBBB4691^ 17.81 010.7
01/04/2010 12:53:53: BCBBB4686^P 59.98 000.0
#### all 11 showing up
01/04/2010 12:53:53: BCBBB4677^P 11.12 000.0
01/04/2010 12:53:53: BCBBB4678^P 03.02 000.0
01/04/2010 12:53:53: BCBBB4688^P 60.07 000.0
01/04/2010 12:53:53: BCBBB4684^ 00.35 020.3
01/04/2010 12:53:53: BCBBB4680^P 00.0 000.0
01/04/2010 12:53:53: BCBBB4682^ 00.10 019.2
01/04/2010 12:53:53:
When the test started all 11 tags where detected and showed on the radars range however as
the test continued some tags dropped out of range. The reason that some of the tags had
dropped out of range could be due to a number of environment factors that will be discussed
in more detail on chapter 8.
7.1.2 Test Case 8 Active
In this test case the active tags where place in different locations in the testing room, some
were placed on desks, chairs, boxes, on the floors and on the roof. The map of the room and
the location of each tag are shown in appendix C. Details of each tag and information on the
tag location is shown in Table 15.
78
No. Tag ID Distance from Radar
(m)
High from the
floor(cm)
1 BCBBB4686 4 74
2 BCBBB4680 6.2 48
3 BCBBB4684 4 70
4 BBBFL3175 1.3 15
5 BBBFL3060 1.3 15
6 BCBBB4691 3.11 74
7 BCBBB4678 5.69 74
8 BCBBB4677 6 74
9 BCBBB4688 4.53 0
10 BCBBB4686 3.20 250
11 BCBBB4682 5.32 70
Table 15 Test Case 8: Tag location Details
The first ten seconds of this test log is checked to see which of the tags are most read. In the
first ten seconds of the test the only tags that had been read were:
BCBBB4684 – 10 reads
BCBBB4691 – 10 reads
BCBBB4688 – 10 reads
BBBFL6030 – 8 reads
BCBBB4682 – 10 reads
During the rest of the test other tags such as BBBFL3175 are read although not to as a high
degree as the previously mentioned tags, as the time progresses the most read tags are
79
BCBBB4691 with the most reads, BCBBB4688 with the second most and BCBBB4684 as
the third most. Using this data an imaginary read zone can be formed, this zone is a place that
tags can be read with the best radio signal.
7.1.3 Test Case 10 Active /Passive
In this test case the tag is attached to a bottle of water, the bottle is opaque however the water
is clear. The bottle with the tag attached is shown in Figure 34. The bottle was then held at a
level height as the radar approx 174cm high from the floor and moved slowly away from the
radar.
Figure 34 Test Case 10: Water bottle with tag attached
In this case the tag was facing away from the radar thus making the radio signal have to travel
through the bottle and the water to reach the tag. The tag was detect by the radar however the
radio signal was very weak and at a distance of 2 meters the tag could no longer be read as
the signal was too weak. The test was also repeated using a clear bottle with and without
paper covering it. When the same test was carried out using a passive tag the results were
very similar results in both cases the signal was very weak and in both cases the signal
dropped.
7.1.4 Test Case 16.00 – 16.02 Active and Passive
80
In the test cases of 16.00 till 16.02 the tags and the radar are testing against the signal
blocking ability of aluminium foil. For the tests the tags active and passive are placed in front
of foil with the matt side facing the radar and again with the shiny side of the foil facing the
radar. The last test carried out was to place the tag inside the foil with the shiny side facing
out. The three test sets are shown in Figure 35, Figure 36 and Figure 37.
Figure 35 Test Case 16: Active
Tag on Foil
Figure 36 Test Case 16: Passive
Tag on Foil
Figure 37 Test Case 16: Tag
Wrapped in Foil
The results of the tests show that when the foil is used as an obstruction between the radar
and the tag with the matt side facing, the radar that the tag can still be read (active/passive)
with a weak signal of up to 4 meters. However if the foil is used with the shiny side facing
the radar the results are different, for the active tag the tag could be read but with a very weak
signal and the tag could not be read at a distance of 30cm. For the passive the signal was very
weak again but still getting reads however the tag could not be read at a distance of 15cm.
The final test with the foil was to place the tag inside the foil with the shiny side facing out.
For both active and passive the results were the same, the tag could not be read no matter
what the distance was from the radar.
81
8 Evaluation
This chapter will bring together all the information gathered from the tests explained in the
previous chapter. The information will be used to discuss how the RFID radar and tags can be
effect by their environment and how this affects the overall RFID system. The proposed
software for the previously mentioned scenario will also be evaluated to see whether it met
the functional and non-functional requirements set out in chapter 4.
8.1 RFID and its environment
For the purpose of testing the RFID equipment was set up in a lab, which caused a number of
issues with the equipment. As the lab was an ideal location for a close indoor RFID
application the equipment in use was very sensitive and worked at optimum performance in a
wide open space with either the radar mounted very high above the ground or the ground to
be a soft area such as a field or grass area. The main reason the equipment worked better in a
wide open space was that the radio waves would not have any hard obstacles in their path and
could have a long strong wave to gather accurate data. Due to weather constraints it was not
possible to test the equipment in an area as previously described. This meant that the radar
was set up in a lab as shown in Figure 38.
Figure 38 RFID Radar Lab Setup
82
As the equipment was not in the ideal location some of the results in the testing chapter and
the test case appendix A and B. Cannot be 100% accurate however the fact that the
equipment is still in what can be classes as a real life scenario location the results are still
credible.
In test case 4 the environment variables that can affect the RFID equipment was first tested
and during the test a number of tags dropped in and out of read, this may have been due to the
placement of the radars antenna. As the location with solid floors and walls close by could
have caused the miss reads on the radar. Although the 11 tags showed on the log at the start
some of the tags had the “^P” at the end, meaning that the reader was predicting the location
and reading of the tag based on previous readings. This is a standard practice for the reader
being used when the signal is weak, the reader will predict the location and reading of tags.
The fact that some tags had weak readings showed, that the radar in its current environments
found it hard to detect a large number of tags. This could be due the number of factors such
as the radio signal bouncing off the walls in close proximity and the hard floor and roof. It
could also be caused by the interference of other tags in close proximity each tag had a
distance of 8 centimetres around it.
In test case 8 the tags where placed in different location, however five tags where the most
common read tags. The similarities between the five previously mentioned tags have to be
taken into consideration, the height of BCBBB4684, BCBBB4691 and BCBBB4682 are
close as two are 70cm and one 74cm, this shows that tags at this height have a higher chance
of being read. However this could be contradicted by the BBBFL6030 and BCBBB4688 tags
as they are close to the floor, with one being at floor level and the other at only 15cm high.
The factors that might affect the radio signal can give more information on the findings, the
tags close to the floor did not have hard reflective object in the radio path giving a good
strong radio signal. The same applies to the other tags on a higher level; the two tags at 70cm
high were placed on top of cardboard boxes which don’t reflect radio signal giving a good
radio path and a good radio signal. The only irregularity is with tag BCBBB4691as it was
placed onto of a hard wood table that would be a strong radio reflector however as the tag
was placed at the edge of the table the signal did not have to travel across the table which
would have caused radio path issues.
83
One other environmentally factor that was tested against the radar was water. In test cases 10,
11 and 11.01 the tag was placed on the other side of a water bottle when the clear bottle was
used the radar could get a good strong signal and be able to read the tag at all distances. This
shows that water alone does not disturb the radio wave, however when the radio wave has to
travel through and object that is not transparent the radio signal is affected. This is also
shown in the test with the bottle covered in paper as the radio signal was weak and lost read
at 2 meters. The results of the test when carried out using passives were very similar. This
shows that the water can affect the signal for passive tags, passive tags use the signal from the
radar thus if the signal from the radar has to pass through more obstacles then the signal is
going to be very weak.
The last and most powerful factor tested on the radar was the use of aluminium foil, as this is
widely used to prevent the read of RFID tags. The foil was most effective when used with the
shiny side facing towards the radar, as this will give the most amount of radio wave
reflection. When the tag was placed inside the foil the radar could not read the tag no matter
how close the tag was to the radar. This was due to the foil reflecting all the radio waves back
towards the radar.
8.2 Proposed System Requirements During the development of the proposed system the different system requirements had to be
followed. The goal of the development of the system was to show that system could be
developed that would automate the stock management system for a fire station. The system
had to be easy to use by any member of staff and give better performance and a high standard
of performance than the current system. Table 16, Table 17 and Table 18 all show the system
requirements and that they were satisfied during the development of the system.
84
Requirement Satisfied
Quit the program Yes
Access the status screen Yes
View a list of tags being tracked by the
system
Yes
Search for a tag that is being tracked Yes
Add new tags to track Yes
Assign tags to equipment Yes
View and edit information on each tag Yes
Calibrate the RFID reader for the area Yes
View the software help at any time Yes
Table 16 User Requirements Evaluation
Requirement Satisfie
d
Run on any machine using the Windows operating system Yes
Track the position of tags in the monitored area using location data
provided by the TrolleyScan system
Yes
Store information, accessible at any time, on equipment in a database Yes
Associate tag IDs from the RFID-Radar system with tag IDs assigned
to objects
Yes
Table 17 System requirements Evaluation
Requirement Satisfi
ed
Accessibility – Each component of the software must be readily accessible
and easy enough to use with minimal training and experience
Yes
Time Constraints – The project is to be completed within two semesters (24
Weeks)
Yes
Reliability – The system should load at any time and provide reliable
information. Any errors will be handed by the system and not affect the user
Yes
85
experience
Performance – The system must load and warn the user if tags have not
returned. The retrieval of information about tags should be instantaneous, if
there is a delay then the system will display a message to the user thus to
improve the user experience
Yes
Extensibility – The software should be written in such a way as to allow
extra functionality to be added in the future, at any time add-ons and or
extensions can be added to the system to accommodate for different
scenarios
Yes
Maintainability – Software code must be well-structured, readable and well-
commented to allow for the implementation of extra functionality. This
system will also use external configuration files to insure that no information
is hard coded
Yes
Scalability – The number of tags tracked by the system within the monitored
area should be limited only by the reader’s input and output capabilities
Yes
Efficiency – The software should use as little resources as possible to
perform at an acceptable level
Yes
The user interface must conform to HCI standards Yes
Table 18 Non-Functional Requirements Evaluation
8.3 Future Work
Due to time constraints the created system only contains a small number of features however
these are the essential features. Extra futures could have been added if more time was
allocated for the development stage, such as allowing the user edit the systems configuration
directly from the system UI. This would mean that the user would not have to manually edit
the configuration files that accompany the system. A mailing system that would send the user
email updates on equipment that needed to tested or equipment that was flagged as an issue
could have been added, the main issue with is was developing the notification system to
manage the mail that was sent to the user.
Due to weather conditions it was not possible to test the radar system in a outdoor location
meaning that the system was unable to get a 100% accurate calibration, other locations could
86
have been tested also such as testing the radar system on location in a fire station or in
different types of rooms.
The system could also be adapted in the future to fit the application of any company by
allowing the user to specify the rules for the alerts and the layout of the tag database. This
means that the system could be deployed to any scenario.
87
9 Conclusion It has been discussed that location determination can be carried out with the aid of many
different technologies, across a number of scenarios. Many of the most popular and easy to
use technologies have proved to have major flaws in the scalability, reliability and accuracy.
All of these factors prove to be the main reasons for choosing a tracking technology, with the
recent incline of advancements in RFID technologies and the ever increasing implementation
of RFID system. There is no doubt that RFID is one of the fastest growing technologies not
only in the location determination industry but in other industries such as the vehicle toll and
identification industry.
This project aimed to investigate the use and implementation of RFID systems in small and
large scale operations. Also the ability to meet the needs of the scenario discussed in chapter
1 using the system proposed in chapter 4 and 5.the scenario was of the inventory management
system of a fire service. In the process of creating, implementing and testing the proposed
RFID system, the system was able to demonstrate how RFID systems can expose the
limitations of RFID for location determination.
The proposed system was required to interface with the RFID radar and reader to give data on
the location of RFID tags. The system then worked with a database to provide more
information on each tag that was detected by the RFID radar. The application also tracked
multiple tags and how some tags related to each other.
The database and application structure were defined in the design phase with the use of UML
diagrams, which defined how each component would integrate together. The system
requirements including the user, functional, non-functional, software and hardware
requirements, where also defined in the design phase.
The development phase was documented in chapter 6 with descriptions of the systems UI and
how the system worked with code abstracts taking from the application. The following
chapter discussed the testing phase. This was the longest phase as implications with the RFID
reader and reader surfaced in the form of calibration issues and radio signal strength. The test
88
carried out exposed the strengths and weaknesses of the RFID radar and reader to give a
deeper view into the inner workings of RFID radio technology.
During the test it was discovered that the RFID equipment cannot work efficiently in
environments with large amounts of metal objects that could block radio signals. This means
that the system would not be able to meet the needs of a fire service as the tags what would
be needed to track would all be inside of a fire engine. A standard fire engine has a thick
metal shell which would block all RFID radio signals. The test also found that large bodies of
water with opaque containers can affect the readability of RFID tags, this would also applied
to the fire server scenario as the fire engine would be carrying large bodies of water.
To conclude the project had been a success in investigating factors that affect the readability
of RFID tags and the different environmental factors of RFID radio signals, also the
successful production of a prototype application that met the needs of the specific scenario.
Although the testing has shown that RFID technology is not the best for location detection in
area with a high number metal and water obstructions. RFID technology is growing faster
everyday and more advancements are being made with the technology and maybe in the
future RDIF technology will be able to overcome the issues found in the testing of the system
and could someday be deployed as a low cost location detection system.
89
10 References
Grafinkel.S, Rosenberg.B (2006) RFID Applications, Security, and Privacy, Pearson
Education Inc, ISBN 0-321-29096-8
BBC news (Thursday, 2 November 2006), Britain is 'surveillance society’, Available at:
http://news.bbc.co.uk/1/hi/uk/6108496.stm
Google Patent Search TRANSPONDER APPARATUS AND SYSTEM Available at:
http://www.google.com/patents?vid=3713148
Ubisense (2009), Available at: http://www.ubisense.net/en
Lahiri.S (2005) RFID Sourcebook, Pearson IBM Press, ISBN 0-13-185137-3
Global (2009), How Inferred Works, Available at:
http://www.glolab.com/pirparts/infrared.html
How Stuff works (2009), How Bluetooth Surveillance Works, Available at:
http://electronics.howstuffworks.com/bluetooth-surveillance2.htm
ZigBee Alliance (2009), Available at: http://www.zigbee.org/
RS-232 Specification (2009), Available at: http://www.lammertbies.nl/comm/info/RS-
232_specs.html
RS-485 Tech Info (2009), Available at: http://www.arcelect.com/RS485_info_Tutorial.html
RFID Journal (2009), A Summary of RFID Standards, Available at:
http://www.rfidjournal.com/article/articleview/1335/1/129/
Waldner.J (2008), Nanocomputers and Swarm Intelligence, London: ISTE John Wiley &
Sons. pp. 205–214. ISBN 1847040020.
E-Z pass (2009), Available at: http://www.ezpass.com/static/faq/index.shtml
Global Positioning System (GPS) (2009), Available at: http://www.gps.gov/
Finkenzeller.K (1999), RFID handbook : radio-frequency identification fundamentals and
application, Chichester, ISBN 0471988510
90
Appendix A: Test Cases – Active Tags No. Test Result
1 pass tag through radar range
Tags appeared on the screen as they reached the range of the radar
2 pass tag into range and turn radar off
Tags appeared on the screen and when the radar was turned off they did not show anymore
3 Place tag in the range of the radar then turn radar on
Tags appeared on the screen as soon as the radar is turned on
4 pass all the tags through the radar range
Each tag showed on the screen when they were in range of the radar
5 pass all the tags into range of the radar and turn off the radar
Each tag showed on the screen until the radar was turned off
6 Place all tags in range of the radar then turn the radar on
Each tag showed on screen when the radar was turned on
7 pass a tag in range of the radar turn off the radar do not move tag then turn the radar back on
Tags appeared on the screen until the radar was turned off and the tags reappeared once the radar was turned off
8 pass all tags in range of radar and place in different locations do not move tags. reboot radar
Tags in closer locations showed more on screen than the tags that where further away from the radar
9 place a metal obstruction in front of the tag
Tags where not able to be read while behind the metal
10 place a opaque bottle of water in front of the tag
Tags appeared on screen but with a weak reading from the radar and after a distance of 2 meters the tags could not be read
11 place a clear bottle in front of the tag
Tags appeared on the screen at all distances
11.01
place a clear bottle in front of the tag wrapped with paper
Tags appeared on screen but with a weak reading from the radar and after a distance of 2 meters the tags could not be read
12 place a thick piece of fabric in front of the tag
Tags appeared on screen but with a weak reading from the radar and as the distance between the tag and the radar increased the signal got weaker
12.01
place the tag into a coat pocket
Tags appeared on screen but with a weak reading from the radar and as the distance between the tag and the radar increased the signal got weaker
13 place the tag behind a piece of wood
Tags appeared on screen at all distance
14 place a piece of plastic in front of the tag
Tags appeared on screen but with a weak reading from the radar and as the distance between the tag and the radar increased the signal got weaker
15 place a piece of plastic coved with paper in front of the tag
Tags appeared on screen but with a weak reading from the radar and as the distance between the tag and the radar increased the signal got weaker
91
16 place a piece of tinfoil in front of the tag (non-shiny side)
Tags appeared on screen with a weak signal from the radar, the tags not being read at 4 meters distance between the radar and the tag
16.01
place a piece of tinfoil in front of the tag (shiny side)
Tags appeared on screen with a extremely week signal and the tags could not be read at a distance of 30 centimetres
16.02
warp the tag in tinfoil (shiny side out)
Tags could not be read at any distance
17 place a tag in a anti-static bag
Tags appeared on screen with a weak signal and could not be read at a distance of 2 meters
18 place a tag behind glass (window of the test room)
Tags appeared on screen with strong signal
19 place the tag on a wall outside the room
Tags appeared on screen with a weak signal
20 place the tag behind a person
Tags appeared on screen with a weak signal
92
Appendix B: Test Cases – Passive tagsNo. Test Result
1 Turn radar on and pass tag through radar range Tags appeared on the screen as they reached the range of the radar
2 Turn radar on pass tag into range and turn radar off
Tags appeared on the screen and when the radar was turned off they did not show anymore
3 Place tag in the range of the radar then turn radar on
Tags appeared on the screen as soon as the radar is turned on
4 Turn radar on and pass all the tags through the radar range
Each tag showed on the screen when they were in range of the radar
5 Turn radar on and pass all the tags into range of the radar and turn off the radar
Each tag showed on the screen until the radar was turned off
6 Place all tags in range of the radar then turn the radar on
Each tag showed on screen when the radar was turned on
7 Turn on radar and pass a tag in range of the radar turn off the radar do not move tag then turn the radar back on
Tags appeared on the screen until the radar was turned off and the tags reappeared once the radar was turned off
8 Turn on radar and pass all tags in range of the radar and place in different locations do not move tags and turn off radar then turn the radar back on
Tags in closer locations showed more on screen than the tags that where further away from the radar
9 turn on the radar and place a metal obstruction in front of the tag
Tags where not able to be read while behind the metal
10 Turn on the radar and place a opaque bottle of water in front of the tag
Tags appeared on screen but with a weak reading from the radar and after a distance of 2 meters the tags could not be read
11 Turn on the radar and place a clear bottle in front of the tag
Tags appeared on the screen with weak signal and tags could not be read at 2 meters
12 Turn on the radar and place a thick piece of fabric in front of the tag
Tags appeared on screen but with a weak reading from the radar and as the distance between the tag and the radar increased the signal got weaker
12.01
Turn the radar on a place the tag into a coat pocket
Tags appeared on screen but with a weak reading from the radar and as the distance between the tag and the radar increased the signal got weaker tags could not be read at 2 meters
13 Turn on the radar and place the tag behind a piece of wood
Tags appeared on screen at all distance
14 Turn the radar on and place a piece of plastic in front of the tag
Tags appeared on screen but with a weak reading from the radar and as the distance between the tag and the radar increased the signal got weaker
15 Turn the radar on and place a piece of plastic coved with paper in front of the tag
Tags appeared on screen but with a weak reading from the radar and as the distance between the tag and the radar increased the signal got weaker
93
16 Turn the radar on a place a piece of tinfoil in front of the tag (non-shiny side)
Tags appeared on screen with a weak signal from the radar, the tags not being read at 4 meters distance between the radar and the tag
16.01
Turn the radar on a place a piece of tinfoil in front of the tag (shiny side)
Tags appeared on screen with a extremely week signal and the tags could not be read at a distance of 15 centimetres
16.02
Turn the radar on and warp the tag in tinfoil (shiny side out)
Tags could not be read at any distance
17 Turn the radar on place a tag in a anti-static bag Tags could not be read 18 Turn on the radar and place a tag behind glass
(window of the test room) Tags appeared on screen with strong signal
19 Turn on the radar and place the tag on a wall outside the room
Tags appeared on screen with a weak signal
20 Turn on the radar and place the tag behind a person
Tags could not be read
94
Appendix C: Test Case 4 Map
95
Radar Antenna
Cardboard Box
Desk
Desk
Desk
Cardboard Box
Cardboard Box
Chair
Appendix D: Source code
MainForm.cs
using System;using System.Collections.Generic;using System.Data.OleDb;using System.IO.Ports;using System.Text;using System.Windows.Forms;using System.Configuration;
namespace Radar{ public partial class MainForm : Form { // Connection to Databse located in the install folder private OleDbConnection _connection = new OleDbConnection(ConfigurationManager.ConnectionStrings["DataBaseConnectionString"].ConnectionString); private SerialPort _port = new SerialPort("COM5", 19200, Parity.None, 8, StopBits.One); private StringBuilder _data = new StringBuilder(); private List<Tag> _tags = new List<Tag>(); private string _station; private List<Alert> _alerts = new List<Alert>();
public MainForm() { InitializeComponent();
// create event handler for data recided through com port _port.DataReceived += PortDataReceived; _port.ReadTimeout = -1; _listManageTags.Columns.Add("Name", 120, HorizontalAlignment.Left); _listManageTags.Columns.Add("Tag ID", 100, HorizontalAlignment.Left); _listManageTags.Columns.Add("Current Location", 120, HorizontalAlignment.Left); _listManageTags.Columns.Add("Status", 50, HorizontalAlignment.Left); _listManageTags.Columns.Add("Last Changed", 150, HorizontalAlignment.Left); _listManageTags.Columns.Add("Engine No", 70, HorizontalAlignment.Left); _listManageTags.Columns.Add("Description", 500, HorizontalAlignment.Left);
_listAlerts.Columns.Add("Name", 120, HorizontalAlignment.Left); _listAlerts.Columns.Add("TagID", 120, HorizontalAlignment.Left); _listAlerts.Columns.Add("Alert Sent", 120, HorizontalAlignment.Left); _listAlerts.Columns.Add("Reason", 120, HorizontalAlignment.Left);
}
# region ############# Event handlers ###################
private void StatusChangedTag(object sender, EventArgs e) { //update database to reflect the status change Tag tag = (Tag) sender; RadarHelper.OpenConnection(); switch (tag.ItemEngine) { case "item": RadarHelper.AddEditRecords("UPDATE Equipment SET Status='" + tag.Status + "' WHERE TagID='" + tag.Id + "'"); RadarHelper.AddEditRecords("UPDATE Equipment SET LastStatusChange='" + DateTime.Now.ToString() + "' WHERE TagID='" + tag.Id + "'"); break; case "engine": RadarHelper.AddEditRecords("UPDATE Engine SET Status='" + tag.Status + "' WHERE TagID='" + tag.Id + "'"); RadarHelper.AddEditRecords("UPDATE Engine SET LastStatusChange='" + DateTime.Now.ToString() +
97
"' WHERE TagID='" + tag.Id + "'"); break; }
RadarHelper.CloseConnection(); }
private void RangeChangedTag(object sender, EventArgs e) { Tag tag = (Tag)sender; DateTime fiveMinFromNow = DateTime.Now.AddMinutes(-1); if (tag.OldRange && tag.InRange == false && tag.LastStatusChange <= fiveMinFromNow) { switch (tag.Status) { case "IN": tag.Status = "OUT"; tag.LastStatusChange = DateTime.Now; break; case "OUT": tag.Status = "IN"; tag.LastStatusChange = DateTime.Now; break; } } }
private void _txtBasicSearch_KeyPress(object sender, KeyPressEventArgs e) { //check is the enter key has been pressed if (e.KeyChar == (char)Keys.Return) { _btnBasicSearch_Click(sender, e); } }
private void _chbAdvancedSearchOnOff_CheckedChanged(object sender, EventArgs e) { if (_chbAdvancedSearchOnOff.Checked) { _gboAdvancedSearch.Enabled = true; PopulateLocationSearchcbo(); PopulateStatusSearchcbo(); PopulateEngineSearchcbo();
} else { _gboAdvancedSearch.Enabled = false; } }
/// <summary> /// Event handler for the comport /// </summary> private void PortDataReceived(object sender, SerialDataReceivedEventArgs e) { try { _data.Append(_port.ReadExisting()); } catch (Exception ex) { MessageBox.Show(ex.Message, "ERROR", MessageBoxButtons.OK); } }
# endregion
#region ############# Timers ##################
private void _timerRangeChnage_Tick(object sender, EventArgs e) { if (_lboRadarLiveFeed.Items.Count != 0) {
98
foreach (Tag tag in _tags) { int temp = 0; for (int i = 0; i < _lboRadarLiveFeed.Items.Count; i++) { if (_lboRadarLiveFeed.Items[i].ToString().Contains(tag.Id)) { tag.InRange = true; temp = 1; } } if (temp == 0) tag.InRange = false; } } else { foreach (Tag tag in _tags) { tag.InRange = false; } } }
private void _timerCheckData_Tick(object sender, EventArgs e) { if (_data.ToString().EndsWith("\n\r")) { _lboRadarLiveFeed.Items.Clear();
string[] splitter = { "\r\n", "\n\r" }; string[] tagArray = _data.ToString().Split(splitter, StringSplitOptions.None);
foreach (string s in tagArray) { if (s.StartsWith("B")) { Tag tag = RadarHelper.GetTag(s.Substring(0, 9)); _lboRadarLiveFeed.Items.Add(s + "\t " + tag.Name); if (!_tags.Contains(tag)) { tag.RangeChanged += RangeChangedTag; tag.StatusChanged += StatusChangedTag; _tags.Add(tag); }
} }
_data = new StringBuilder(); } else if (_data.Length == 0) { _lboRadarLiveFeed.Items.Clear(); } }
#endregion
# region ############ Update methods #################
private void UpdateManageTagsList(OleDbDataReader reader) {
if (reader.HasRows) { _listManageTags.Items.Clear(); while (reader.Read()) { ListViewItem item = new ListViewItem(reader.GetString(0)); // Name item.SubItems.Add(reader.GetString(1)); // TagID item.SubItems.Add(RadarHelper.GetStationName(reader.GetString(2))); // Current location item.SubItems.Add(reader.GetString(3)); // Status item.SubItems.Add(reader.GetDateTime(4).ToString()); // last Changed item.SubItems.Add(reader.GetString(6)); // engine No.
99
item.SubItems.Add(reader.GetString(5)); // add the item to the listview _listManageTags.Items.Add(item); } } else { MessageBox.Show("ERROR no results where could for that search, please try again", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } }
# endregion
# region ########### Populating combo boxes ###########
/// <summary> /// populates the Engines avable for searching /// </summary> private void PopulateEngineSearchcbo() { _cboEngineSearch.Items.Clear(); _cboEngineSearch.Items.Add("Any");
RadarHelper.OpenConnection(); OleDbDataReader reader = RadarHelper.QueryDb("SELECT RegNumber FROM Engine"); List<String> engines = new List<string>();
while (reader.Read()) { _cboEngineSearch.Items.Add(reader.GetString(0)); }
RadarHelper.CloseConnection();
_cboEngineSearch.SelectedIndex = 0; }
private void PopulateEngineSearchcbo(string station) { _cboEngineSearch.Items.Clear(); _cboEngineSearch.Items.Add("Any"); RadarHelper.OpenConnection(); OleDbDataReader reader = RadarHelper.QueryDb("SELECT RegNumber FROM Engine WHERE Station='" + RadarHelper.GetStationRefNumber(station) + "'"); while (reader.Read()) { _cboEngineSearch.Items.Add(reader.GetString(0)); }
RadarHelper.CloseConnection();
_cboEngineSearch.SelectedIndex = 0; }
/// <summary> /// populates the Statu's avable for searching /// </summary> private void PopulateStatusSearchcbo() { _cboStatusSearch.Items.Add("Any"); _cboStatusSearch.Items.Add("OUT"); _cboStatusSearch.Items.Add("IN");
_cboStatusSearch.SelectedIndex = 0;
}
/// <summary> /// populates the locations avable for searching /// </summary> private void PopulateLocationSearchcbo() { _cboLocationSearch.Items.Add("Any");
RadarHelper.OpenConnection();
100
OleDbDataReader reader = RadarHelper.QueryDb("SELECT StationName FROM Station");
List<String> locations = new List<string>();
while (reader.Read()) { _cboLocationSearch.Items.Add(reader.GetString(0)); }
RadarHelper.CloseConnection();
_cboLocationSearch.SelectedIndex = 0; }
private void _cboLocationSearch_SelectedIndexChanged(object sender, EventArgs e) { if (_cboLocationSearch.SelectedItem.ToString() == "Any" || _cboLocationSearch.SelectedIndex == -1) { PopulateEngineSearchcbo(); } else { PopulateEngineSearchcbo(_cboLocationSearch.SelectedItem.ToString()); } }
# endregion
# region ########### Buttons ###########
/// <summary> /// turn the radar on and off also turn on/off timmers /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void _btnRadarOnOff_Click(object sender, EventArgs e) { try { if (!_port.IsOpen && _btnRadarOnOff.Text == "ON") { _port.Open(); _btnRadarOnOff.Text = "OFF"; _timerCheckData.Start(); _timerRangeChnage.Start(); } else if (_port.IsOpen && _btnRadarOnOff.Text == "OFF") { _port.Close(); _btnRadarOnOff.Text = "ON"; _timerCheckData.Stop(); _timerRangeChnage.Stop(); } } catch (Exception) { DialogResult messageResult = MessageBox.Show( "Error occoured when trying to connect to the radar, check that the radar is connected", "Connection ERROR", MessageBoxButtons.RetryCancel);
// if retry id selected then try the port again if (messageResult == DialogResult.Retry) { _btnRadarOnOff_Click(sender, e); } }
}
private void _btnTest_Click(object sender, EventArgs e) {
AddEditTagForm add = new AddEditTagForm(); add.ShowDialog();
101
}
private void _btnBasicSearch_Click(object sender, EventArgs e) { RadarHelper.OpenConnection(); OleDbDataReader readerName = RadarHelper.QueryDb("SELECT * FROM Equipment WHERE Name='" + _txtBasicSearch.Text + "'"); OleDbDataReader readerTagId = RadarHelper.QueryDb("SELECT * FROM Equipment WHERE TagID='" + _txtBasicSearch.Text + "'");
if (!readerName.HasRows) { if (!readerTagId.HasRows) { MessageBox.Show("Error no results could be found, please try again", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); RadarHelper.CloseConnection(); _txtBasicSearch.Focus(); return; }
UpdateManageTagsList(readerTagId); } else { UpdateManageTagsList(readerName); }
RadarHelper.CloseConnection();
}
private void _btnAdvacnedSearch_Click(object sender, EventArgs e) { RadarHelper.OpenConnection(); string query; if (_cboLocationSearch.SelectedItem.ToString() == "Any") { if (_cboStatusSearch.SelectedItem.ToString() == "Any") { if (_cboEngineSearch.SelectedItem.ToString() == "Any") { query = "SELECT * FROM Equipment"; } else { query = "SELECT * FROM Equipment WHERE Engine='" + _cboEngineSearch.SelectedItem + "'";
} } else if (_cboEngineSearch.SelectedItem.ToString() == "Any") { query = "SELECT * FROM Equipment WHERE Status='" + _cboStatusSearch.SelectedItem + "'"; } else { query = "SELECT * FROM Equipment WHERE Status='" + _cboStatusSearch.SelectedItem + "'" + " AND Engine='" + _cboEngineSearch.SelectedItem + "'"; } } else if (_cboStatusSearch.SelectedItem.ToString() == "Any") { if (_cboEngineSearch.SelectedItem.ToString() == "Any") { query = "SELECT * FROM Equipment WHERE CurrentLocation='" + RadarHelper.GetStationRefNumber(_cboLocationSearch.SelectedItem.ToString()) + "'";
} else {
102
query = "SELECT * FROM Equipment WHERE CurrentLocation='" + RadarHelper.GetStationRefNumber(_cboLocationSearch.SelectedItem.ToString()) + "' AND Engine='" + _cboEngineSearch.SelectedItem + "'"; } } else { if (_cboEngineSearch.SelectedItem.ToString() == "Any") { query = "SELECT * FROM Equipment WHERE CurrentLocation='" + RadarHelper.GetStationRefNumber(_cboLocationSearch.SelectedItem.ToString()) + "' AND Status='" + _cboStatusSearch.SelectedItem + "'"; } else { query = "SELECT * FROM Equipment WHERE CurrentLocation='" + RadarHelper.GetStationRefNumber(_cboLocationSearch.SelectedItem.ToString()) + "' AND Engine='" + _cboEngineSearch.SelectedItem + "'" + " AND Status='" + _cboStatusSearch.SelectedItem + "'"; } }
OleDbDataReader reader = RadarHelper.QueryDb(query); UpdateManageTagsList(reader); RadarHelper.CloseConnection();
}
private void _btnAddManageTags_Click(object sender, EventArgs e) { AddEditTagForm addTag = new AddEditTagForm(); addTag.ShowDialog(); addTag.Dispose(); }
private void _btnEditManagetags_Click(object sender, EventArgs e) { switch (_listManageTags.SelectedItems.Count) { case 0: MessageBox.Show("ERROR: No tag was slected please try again", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; default: {
RadarHelper.OpenConnection(); OleDbDataReader reader = RadarHelper.QueryDb("SELECT Station FROM Engine WHERE RegNumber='" +
_listManageTags.SelectedItems[0].SubItems[5].Text + "'"); string station = string.Empty; while (reader.Read()) { station = reader.GetString(0); } RadarHelper.CloseConnection(); if (_station == station) { AddEditTagForm editTagForm = new AddEditTagForm(_listManageTags.SelectedItems[0].SubItems[1].Text); editTagForm.ShowDialog(); } else { MessageBox.Show("ERROR: You can only edit items from your own station", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); } } break; } }
103
private void _btnDeleteManageTags_Click(object sender, EventArgs e) { switch (_listManageTags.SelectedItems.Count) { case 0: MessageBox.Show("ERROR: No tag was slected please try again", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); return; default: if (MessageBox.Show("Are you sure you want to delete the selected item?", "WARING", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes) { RadarHelper.AddEditRecords("DELETE FROM Equipment WHERE TagID='" + _listManageTags.SelectedItems[0].SubItems[1].Text + "'"); MessageBox.Show("Item has been removed from the database", "ITEM REMOVED", MessageBoxButtons.OK, MessageBoxIcon.Information); } else { return; } break; } }
private void _btnLogInOut_Click(object sender, EventArgs e) { switch (_btnLogInOut.Text) { case "Log In": LogIn logIn = new LogIn(); logIn.ShowDialog(); if (logIn.Station() != string.Empty) { _station = logIn.Station(); _btnLogInOut.Text = "Log Out"; _tbMainTab.Enabled = true; RadarHelper.OpenConnection(); _lblCurrentStation.Text = RadarHelper.GetStationName(_station); RadarHelper.CloseConnection(); _timerAlerts.Start(); _timerPopulateAlertList.Start(); } break; case "Log Out": _station = string.Empty; _btnLogInOut.Text = "Log In"; _tbMainTab.Enabled = false; _lblCurrentStation.Text = string.Empty; _timerAlerts.Stop(); _timerPopulateAlertList.Stop(); break; } }
private void _btnClose_Click(object sender, EventArgs e) { Close(); }
private void _ckbShowAllEquip_CheckedChanged(object sender, EventArgs e) { if (_ckbShowAllEquip.Checked) { _cboEngineSearch.Enabled = false; _cboLocationSearch.Enabled = false; _cboStatusSearch.Enabled = false;
RadarHelper.OpenConnection(); OleDbDataReader reader = RadarHelper.QueryDb("SELECT * FROM Equipment"); UpdateManageTagsList(reader);
RadarHelper.CloseConnection(); }
104
else { _cboEngineSearch.Enabled = true; _cboLocationSearch.Enabled = true; _cboStatusSearch.Enabled = true; _listManageTags.Items.Clear(); }
}
# endregion
private void _timerAlerts_Tick(object sender, EventArgs e) { List<Engine> engines = RadarHelper.LoadEngines(_station); _alerts.Clear(); // check is the alert rules have been broken /* 1. If an Engine is IN all the items for that engine should be IN * 2. If an Engine is OUT all the items for that engine should be OUT * 3. The location of the Engine should match the Station that the engine belongs to * 4. The current location of an item should match the station the itme belongs to */
// 1. If an Engine is IN all the items for that engine should be IN foreach (Engine engine in engines) { foreach (Tag tag in engine.Tags) { if (engine.Status == "IN" && tag.Status == "OUT")// 1. If an Engine is IN all the items for that engine should be IN { _alerts.Add(new Alert(tag.Name, tag.Id, "The item is logged as OUT However the engine that the item belongs to is logged as IN")); } if (engine.Status == "OUT" && tag.Status == "IN") // 2. If an Engine is OUT all the items for that engine should be OUT { _alerts.Add(new Alert(tag.Name, tag.Id, "The item is logged as IN However the engine that the item belongs to is logged as OUT")); } if (tag.CurrentLocation != tag.Station) // 4. The current location of an item should match the station the itme belongs to { _alerts.Add(new Alert(tag.Name, tag.Id, "The item is logged as been logged at a different station to its home station")); } }
if (!string.Equals(engine.Location, engine.Station)) // 3. The location of the Engine should match the Station that the engine belongs to { _alerts.Add(new Alert(engine.RegNumber, engine.TagID, "The engine is logged at a different station to its home station")); } }
//foreach (Alert alert in _alerts) //{ // alert.LogAlert(); //}
}
private void _timerPopulateAlertList_Tick(object sender, EventArgs e) { _listAlerts.Clear(); foreach (Alert alert in _alerts) { ListViewItem item = alert.List(); _listAlerts.Items.Add(item); } }
}
105
RadarHelper.cs
using System;using System.Collections.Generic;using System.Configuration;using System.Data.OleDb;
namespace Radar{
class RadarHelper { // Connection to Databse located in the install folder private static OleDbConnection _connection = new OleDbConnection(ConfigurationManager.ConnectionStrings["DataBaseConnectionString"].ConnectionString);
public static void OpenConnection() { try { _connection.Open(); } catch (Exception) { _connection.Close(); _connection.Open(); } }
public static void CloseConnection() { _connection.Close(); }
public static string GetStationName(string s) { //OpenConnection(); OleDbDataReader reader = QueryDb("SELECT StationName FROM Station WHERE ReferanceNo='" + s + "'"); string stationName = string.Empty; while (reader.Read()) { stationName = reader.GetString(0); } //CloseConnection(); return stationName; }
public static string GetStationRefNumber(string s) { //OpenConnection(); OleDbDataReader reader = QueryDb("SELECT ReferanceNo FROM Station WHERE StationName='" + s + "'"); while (reader.Read()) { s = reader.GetString(0); } //CloseConnection(); return s; }
public static Tag GetTag(string tagID) { OpenConnection(); OleDbDataReader itemReader = QueryDb("SELECT * FROM Equipment WHERE TagID='" + tagID + "'"); OleDbDataReader engineReader = QueryDb("SELECT * FROM Engine WHERE TagID='" + tagID + "'"); Tag tag = null; if (itemReader.HasRows) { while (itemReader.Read()) {
107
tag = new Tag(itemReader.GetString(0), itemReader.GetString(1), itemReader.GetString(3), itemReader.GetDateTime(4), "item"); } } else if(engineReader.HasRows) { while (engineReader.Read()) { tag = new Tag(engineReader.GetString(2), engineReader.GetString(0), engineReader.GetString(3), engineReader.GetDateTime(5), "engine"); } } CloseConnection(); return tag; }
public static OleDbDataReader QueryDb(string s) { OleDbCommand command = new OleDbCommand(s, _connection); return command.ExecuteReader(); }
public static List<string> RemoveDuplicates(List<string> inputList) { Dictionary<string, int> uniqueStore = new Dictionary<string, int>(); List<string> finalList = new List<string>(); foreach (string currValue in inputList) { if (!uniqueStore.ContainsKey(currValue)) { uniqueStore.Add(currValue, 0); finalList.Add(currValue); } } return finalList; }
public static void AddEditRecords(string s) { OpenConnection(); OleDbCommand command = new OleDbCommand(s, _connection); command.ExecuteNonQuery(); CloseConnection(); }
public static bool ItemExists(string s) { OpenConnection(); OleDbDataReader reader = QueryDb("SELECT * FROM Equipment WHERE TagID='" + s + "'"); if (reader.HasRows) { return true; } else { return false; } }
internal static List<Engine> LoadEngines(string station) { List<Engine> engines = new List<Engine>();
OpenConnection(); OleDbDataReader reader = QueryDb("SELECT RegNumber, TagID, Status, Location, Station FROM Engine WHERE Station='" + station + "'"); while (reader.Read()) { engines.Add(new Engine(reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetString(3), reader.GetString(4))); }
108
// load items for engines foreach (Engine engine in engines) { engine.PopulateTags(); } CloseConnection(); return engines; } }}
Tag.csusing System;
namespace Radar{ class Tag { private bool _oldRange; private bool _inRange; private string _status; public string ItemEngine; public string Id;
public DateTime LastStatusChange { get; set; } public bool OldRange { get { return _oldRange; } }
public string Name { get; set; } public bool OutRange { get; set; } public string CurrentLocation { get; set; } public string Station { get; set; }
public event EventHandler RangeChanged; public event EventHandler StatusChanged;
public bool InRange { get { return _inRange; } set { _oldRange = _inRange; _inRange = value; if (RangeChanged != null) RangeChanged(this, new EventArgs()); }
}
public string Status { get { return _status; } set { _status = value; if (StatusChanged != null) StatusChanged(this, new EventArgs()); } }
public Tag(string name, string iD, string status, DateTime LastStatusChange, string itemOrEngine) { Name = name; Id = iD; _inRange = false; _status = status; this.LastStatusChange = LastStatusChange; ItemEngine = itemOrEngine;
109
}
public Tag(string name, string iD, string status, string currLoc, string stat) { Name = name; Id = iD; _status = status; CurrentLocation = currLoc; Station = stat; }
}}
Engine.cs
using System;using System.Collections.Generic;using System.Data.OleDb;using System.Linq;using System.Text;
namespace Radar{ class Engine { public string RegNumber; public string TagID; public string Status; public string Location; public string Station; public List<Tag> Tags = new List<Tag>();
public Engine(string regNum, string tag, string status, string loc, string stat) { RegNumber = regNum; TagID = tag; Status = status; Location = loc; Station = stat; }
public void PopulateTags() { OleDbDataReader reader = RadarHelper.QueryDb("SELECT Name, TagID, Status, CurrentLocation, Station FROM Equipment WHERE Engine='" + RegNumber + "'"); if (reader.HasRows) { while (reader.Read()) { Tags.Add(new Tag(reader.GetString(0), reader.GetString(1), reader.GetString(2), reader.GetString(3), reader.GetString(4))); } } } }}
AddEditTagForm.cs
using System;using System.Data.OleDb;using System.Windows.Forms;using System.Drawing;
namespace Radar{ public partial class AddEditTagForm : Form { private bool _booltagName; private bool _booltagId; private bool _boolStation; private bool _boolstatus; private bool _boolengineNo;
110
private string _stationTemp; private string _engineTemp; private string _mood; private bool _saved;
/// <summary> /// Open the tag dialog for adding a tag /// </summary> public AddEditTagForm() { InitializeComponent(); _mood = "ADD"; _btnAdd.Visible = true; _cboStatus.Items.Add("IN"); _cboStatus.Items.Add("OUT"); RadarHelper.OpenConnection(); PopulateStationcbo(); RadarHelper.CloseConnection(); // set bools _booltagName = false; _booltagId = false; _boolStation = false; _boolstatus = false; _boolengineNo = false;
}
public AddEditTagForm(string tagID) { InitializeComponent(); _mood = "EDIT"; _saved = false; _cboStatus.Items.Add("IN"); _cboStatus.Items.Add("OUT"); _btnSaveEdit.Visible = true; RadarHelper.OpenConnection(); OleDbDataReader reader = RadarHelper.QueryDb("SELECT * FROM Equipment WHERE TagID='" + tagID + "'"); EditPopulateFields(reader); RadarHelper.CloseConnection(); _cboStation.SelectedItem = _stationTemp; _cboEngineNo.SelectedItem = _engineTemp; }
private void EditPopulateFields(OleDbDataReader reader) { if (reader.HasRows) { while (reader.Read()) { _txtName.Text = reader.GetString(0); _txtTagID.Text = reader.GetString(1); PopulateStationcbo(); _stationTemp = RadarHelper.GetStationName(reader.GetString(2)); _cboStatus.SelectedItem = reader.GetString(3); _engineTemp = reader.GetString(6); _txtDescription.Text = reader.GetString(5); } } }
#region ########### populate data ################
private void PopulateStationcbo() { _cboEngineNo.Enabled = false; OleDbDataReader reader = RadarHelper.QueryDb("SELECT StationName FROM Station");
_cboStation.Items.Clear();
while (reader.Read()) { _cboStation.Items.Add(reader.GetString(0)); } }
111
private void PopulateEnginecbo(string station) { OleDbDataReader reader = RadarHelper.QueryDb("SELECT RegNumber FROM Engine WHERE Station='" + RadarHelper.GetStationRefNumber(station) + "'");
_cboEngineNo.Items.Clear();
while (reader.Read()) { _cboEngineNo.Items.Add(reader.GetValue(0)); } _cboEngineNo.Enabled = true; _cboEngineNo.Text = string.Empty; }
#endregion
private void AddEditTagForm_Load(object sender, EventArgs e) {
}
private void _btnAdd_MouseClick(object sender, MouseEventArgs e) { if (_booltagName && _booltagId && _boolstatus && _boolengineNo && _boolStation) { if (!RadarHelper.ItemExists(_txtTagID.Text)) { string tagName = "'" + _txtName.Text + "'"; string tagID = "'" + _txtTagID.Text + "'"; RadarHelper.OpenConnection(); string station = "'" + RadarHelper.GetStationRefNumber(_cboStation.SelectedItem.ToString()) + "'"; RadarHelper.CloseConnection(); string status = "'" + _cboStatus.SelectedItem + "'"; string engineNo = "'" + _cboEngineNo.SelectedItem + "'"; string description = "'" + _txtDescription.Text + "'";
RadarHelper.AddEditRecords("INSERT INTO Equipment VALUES (" + tagName + ", " + tagID + ", " + station + ", " + status + ", " + "'" + DateTime.Now.AddMinutes(-5).ToString() + "'" + ", " + description + ", " + engineNo + ", " + station + ")"); MessageBox.Show("Update: A new item has been added to the database", "UPDATE", MessageBoxButtons.OK, MessageBoxIcon.Information); ClearForm(); } else { MessageBox.Show("ERROR: The tagID already exists please check the ID and try again", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Error); _txtTagID.Focus(); return; } } else { MessageBox.Show("ERROR: you must fill in all the mandatory feilds.", "ERROR", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); } }
private void _btnSaveEdit_Click(object sender, EventArgs e) { if (RadarHelper.ItemExists(_txtTagID.Text)) { string tagName = "'" + _txtName.Text + "'"; string tagID = "'" + _txtTagID.Text + "'"; RadarHelper.OpenConnection(); string station = "'" + RadarHelper.GetStationRefNumber(_cboStation.SelectedItem.ToString()) + "'";
112
RadarHelper.CloseConnection(); string status = "'" + _cboStatus.SelectedItem + "'"; string engineNo = "'" + _cboEngineNo.SelectedItem + "'"; string description = "'" + _txtDescription.Text + "'";
RadarHelper.AddEditRecords("UPDATE Equipment SET Name=" + tagName + ", TagID=" + tagID + ", CurrentLocation=" + station + ", Status=" + status + ", LastStatusChange='" + DateTime.Now.AddMinutes(-5).ToString() + "', Description=" + description + ", Engine=" + engineNo + ", Station=" + station + "WHERE TagID=" + tagID); MessageBox.Show("Update: You have just updated an item", "UPDATE", MessageBoxButtons.OK, MessageBoxIcon.Information); _saved = true; } }
private void ClearForm() { _txtName.Text = string.Empty; _txtTagID.Text = string.Empty; _cboStation.SelectedIndex = -1; _cboStatus.SelectedIndex = -1; _cboEngineNo.SelectedIndex = -1; _txtDescription.Text = string.Empty;
// clear validation _lblNameX.Text = string.Empty; _lblTagIDX.Text = string.Empty; _lblStationX.Text = string.Empty; _lblStatusX.Text = string.Empty; _lblEngineNoX.Text = string.Empty; }
private void _Close_Click(object sender, EventArgs e) { if (_saved) { Close(); } else { if ( MessageBox.Show( "WARING: You have not saved the details are you sure you wish to leave without saving?", "WARING", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes) { Close(); } }
} #region ############ Validation ##################
private void _txtName_Leave(object sender, EventArgs e) { if (_mood == "ADD") { if (_txtName.Text == string.Empty) { _lblNameX.ForeColor = Color.Red; _lblNameX.Text = "X"; _booltagName = false; } else { _lblNameX.ForeColor = Color.Green; _lblNameX.Text = "√"; _booltagName = true; } } }
private void _txtTagID_Leave(object sender, EventArgs e) { if (_mood == "ADD") {
113
if (_txtTagID.Text == string.Empty) { _lblTagIDX.ForeColor = Color.Red; _lblTagIDX.Text = "X"; _booltagId = false; } else { _lblTagIDX.ForeColor = Color.Green; _lblTagIDX.Text = "√"; _booltagId = true; } } }
private void _cboStatus_Leave(object sender, EventArgs e) { if (_mood == "ADD") { if (_cboStatus.SelectedIndex == -1) { _lblStatusX.ForeColor = Color.Red; _lblStatusX.Text = "X"; _boolstatus = false; } else { _lblStatusX.ForeColor = Color.Green; _lblStatusX.Text = "√"; _boolstatus = true; } } }
private void _cboEngineNo_Leave(object sender, EventArgs e) { if (_mood == "ADD") { if (_cboEngineNo.SelectedIndex == -1) { _lblEngineNoX.ForeColor = Color.Red; _lblEngineNoX.Text = "X"; _boolengineNo = false; } else { _lblEngineNoX.ForeColor = Color.Green; _lblEngineNoX.Text = "√"; _boolengineNo = true; } } }
private void _cboStation_Leave(object sender, EventArgs e) { if (_mood == "ADD") { if (_cboStation.SelectedIndex == -1) { _lblStationX.ForeColor = Color.Red; _lblStationX.Text = "X"; _boolStation = false; } else { _lblStationX.ForeColor = Color.Green; _lblStationX.Text = "√"; _boolStation = true; } } }
private void _cboStation_SelectedIndexChanged(object sender, EventArgs e) { if (_cboStation.SelectedIndex != -1) { RadarHelper.OpenConnection();
114