Title: Precision Farming
1Precision Farming
- Jason Bould, Matt Febus, Michael Lang, Jon
Gottschalk, Blake Reed - Handheld scouting prototype
- John Deere
2Whats Scouting?
- Back in my day
- New trends
- John Deere Pushing the envelope
3Equipment
- The Hardware
- HP Jornada
- Garmin GPS
- Development Machines
- The Software
- JDMap
- Visual Embedded Tools
4The First Steps
- Meeting John Deere
- Making Fields
- Development Dinosaurs
- Installing Software
5Divide and Conquer
- GUI
- Parsing, Map Drawing
- PC Synchronization
- Handheld - GPS Communication
- Requirements Document, Busy Work, Fifth Wheel
6Building Great Applications for the Pocket
PCMicrosoft Corporation
7Key is Simplify
- Remove complexity
- Setup Device and Synchronization
- Flat controls Page-based dialogs
- Single tap
- Redesign of control panels
- Remove redundant menus, introduce tap hold
8Optimize Simplifications
- Optimize for form factor needs and appliance-like
behavior - New shell arrangement (nav bar on top, menus on
bottom) - Minimize difficulty of input
- Auto save automatic memory management
9App Platform Diagram
Bug Tracker
VB MFC ADO ATL CEF
GameX
HTML JScript XML XSL
Rapier Shell APIs
POOM
pIE
WinInet/URLMon
WinCE 3.0 (Cedar) Win32, OLE, Winsock, etc
10Rapier UI APIs
- Maintain Windows affinity w/o being shrunken down
Windows - A few Rapier specific APIs
- Limited new APIs
- As automatic as we could
- Largely UI design shift
See the Rapier UI session
11Tools
- Emulation
- Device direct
- Embedded Visual Studio
12UI Design Principles
- The form factor is critical, optimize for it
- Design for the 80 / 20 case rather than the
100 case - More content, less app
- Reduce redundancy, and reduce effort
- Windows affinity, not wholesale copy
- Consistency with what users expect, not for its
own sake - Ease up on the eyes
- Simple NOT simplistic
13Redesigned UI
App Name
New Shell Nav bar on top (start button title
bar), command bar on bottom, system tray on home
screen only New User Model Single tap, autosave
everywhere, close cards/documents (no cancel)
Flat look feel Pages instead of cascading
menus, flat buttons, fewer controls Feature
consolidation Removed redundant menus/buttons,
Redesigned control panel
Start Menu
Client Area
Command Bar
App Menu
New
SIP
14Navigation Bar
- Foofy Design Stuff
- Start at 0,0, prime real estate
- Title should only be app name, should not change
- Instantly conveys a sense of place
- OK button, closes dialogs docs
- No cancel, just undo
- Read is often different from edit
15Final Thoughts
- Copy us
- Less CAN be moreNO UI is Good UI
- Know your key scenarios design only for those
- Read is different from edit
- Minimize the difficulty of input
- 5mm stylus and 9.1mm finger
- Single tap, single tap, single tap
- Be good to the SIP WC_SIPPREF is your friend
- Shut down cleanly, were managing memory, one bad
app makes us all look bad - Support AutoRun CF storage
16Main View for Operations
17Rapier
18Bug Tracker
19PC/Jornada Synchonization
20Why Synchronization?
- Need way to get information from handheld to
desktop - More than copying files
- Dates
- Tasks
- E-mail
21ActiveSync
- Part of Windows CE Services
- Allows custom modules to be built
- DLLs (Dynamic Link Libraries)
- COM (Component Object Model)
- Standard interface
22 How ActiveSync Works (User)
- Plug in handheld device
- Serial or USB connection
- Works automatically
- Configurable
23How ActiveSync Works(Developer)
- Synchronizes objects
- For us, JDMap files
- Resolves conflicts
- Desktop to Device
- Boundary files, pest lists
- Device to Desktop
- Pest information recorded
24ActiveSync Screens
25Progress
- Now Synchronizes all farms and fields
- Compares and copies each field
- Doesnt take much space
- Future Added options
- Select farms and fields to copy
26ActiveSync Screens
27Parsing and Drawing
28Parsing Files
- Farm and field names file
- Coordinate files
- The pest file
29Drawing the Field
- Given the field coordinates draw the field
- Draw the users current location
30GPS/Jornada Communication
31NMEAConnection
- Encapsulates all communication between Jornada
and GPS - 5 public methods Connect, StartStream,
GetCurrentPos, KillStream, Disconnect
32Under the Hood
- Implementation of the 5 public methods is simple
- Bulk of work done by friend function ReadThread
33Under the Hood part 2
- ReadThread
- Runs in separate thread
- Monitors Com port for data from GPS
- Parses data and makes it available for
GetCurrentPos method
34It Works! (kind of)
- Problems to investigate
- GPS doesnt seem to conform to NMEA spec
- GPS sometimes spews garbage
35Future Directions
- Map Zoom
- Auto Start Current Field
- Pause and Resume
- Editing Data Points