IVS Product Family EIC Developer’s Guide
The John Deere EIC Developer’s Guide
COPYRIGHT 2013 DEERE & COMPANY Moline, Illinois All rights reserved
Deere & Company Confidential and Proprietary
Page 1 of 93
IVS Product Family EIC Developer’s Guide
1
Introduction to the EIC Software Development Kit ......................................... ......................................... 7 1.1 Licensing the EIC SDK .................................................. ........................................................................... .........................7 1.1.1 The EIC ClearSpace Forum ........................................................ ............................................................ .... 7 1.2 Licensed vs. Advanced Features ................................................ ............................................................ ............ 8 1.3 EIC Versioning .............................................. ....................................................................... .......................................... ................. 8 1.3.1 EIC Version Numbers ................................. .......................................................... ..................................... ............ 8 1.4 Installing the EIC SDK ................................................... ............................................................................ .........................9 1.5 Removing the EIC SDK ................................................. ........................................................................ .......................10 1.6 The Development Environment ............................................................ ............................................................10 1.6.1 The EIC Model Factories ................................................ ............................................................... ............... 11 1.6.2 The EIC Diagnostic Utility ............................................... .............................................................. ............... 11 1.6.3 EIC API Help File............................................ File...................................................................... ............................... ..... 11 1.7 Terminology .................................................. ........................................................................... ........................................ ............... 11 2 Understanding the GreenStar™ system ................................................ ...................................................... ...... 15 2.1.1 GreenStar Displays ................................................ ....................................................................... .......................15 2.1.2 The Original GreenStar Mobile Processor ..................................... ..................................... 16 2.1.3 StarFire Position Receiver .................................. ........................................................... ........................... .. 16 2.1.4 Online Customer Support ...................... ............................................... ........................................ ............... 16 3 Introduction to the EIC Framework .................................................... .............................................................. .......... 16 3.1 EIC Models .................................................................... ........................................................................................... .......................17 3.1.1 RCD Models ................................................... ............................................................................ ............................... ...... 19 3.1.2 GSD4 Models ...................................................................... ................................................................................ .......... 19 3.2 EIC Model Factories ...................................................... ............................................................................. .......................19 3.3 RCD Out-of-Box Creators .................................. ........................................................... ................................... .......... 20 4 Target Streams ................................................................. .......................................................................................... ........................... .. 20 4.1 RCD Data Files and Target Streams ..................................... .................................................... ............... 21 4.1.1 RCD Card Structure ................................................... ...................................................................... ................... 21 4.1.1.1 Profiles ................................................ ......................................................................... ................................... ..........24 4.1.2 RCD Data File Formats ....................................................... ................................................................. .......... 24 4.1.3 Setup ................................................. .......................................................................... ............................................ ...................26 4.1.4 Log .................................................... ............................................................................. ............................................ ...................26 4.1.5 Field AB Curve ........................................................................ .............................................................................. ...... 26 4.1.6 Field Import/Export ....................................................................... ......................................................................... 26 4.1.7 Field Export ................................................ ......................................................................... ................................... .......... 26 4.1.8 Field Flag ........................................... .................................................................... ............................................ ................... 27 4.1.9 Fuel Diary ................................................................... ...................................................................................... ................... 27 4.1.10 Global ................................................ ......................................................................... ............................................ ...................27 4.1.11 Global AB Curve ................................................. ........................................................................... ............................ 27 4.1.12 Surface Water Management ................................................ .......................................................... .......... 28 4.1.13 Tank Fill Calculator ............................ ..................................................... ............................................ ................... 28 4.1.14 Transport Log ................................................. .......................................................................... ............................... ...... 28 4.2 Spatial Data Files .................................................. ........................................................................... ............................... ...... 29 4.2.1 Spatial Data File Information ....................................................... ......................................................... .. 29 4.2.2 Raster Grids ................................................... ............................................................................ ............................... ...... 30 4.3 Original GreenStar Target Streams ....................................... ...................................................... ............... 30
Deere & Company Confidential and Proprietary
Page 2 of 93
IVS Product Family EIC Developer’s Guide
4.3.1 GSD4 Data File Formats ..................................................... ............................................................... .......... 30 4.3.2 GSS (OriginalGreenStar) .................................... ............................................................. ........................... .. 31 4.3.3 GSB (GreenStarBoundary) ......................................... ............................................................ ................... 31 4.3.4 GSD (GreenStarFieldDoc) ...................................... ............................................................. .......................31 4.3.5 VPX (OriginalGreenStarVarietyLocator) ........................................ ........................................ 31 4.3.6 GSP (OriginalGreenStarPrescription) ........................................... ............................................. 31 4.3.7 GSY (GreenStarYield) .................................................................. .................................................................... 32 4.3.8 Guidance (GreenStarGuidance) .................................................... ....................................................32 5 Creating and a nd Using Target T arget Streams Stream s ............................................................ ............................................................32 5.1 Reading and Writing W riting Target Streams ................................................. ................................................... .. 33 5.1.1 Backward Write Compatibility .................................................. ........................................................ ...... 34 5.2 Validating Target Streams .......................................................... .................................................................... .......... 35 5.3 Copying Target Streams ........................... .................................................... ............................................ ................... 36 5.4 Target Stream Capabilities .................................................... ................................................................... ............... 36 6 Developing an EIC Application .............................................................. .................................................................... ...... 36 6.1 Reference the Appropriate EIC Libraries .............................................. ..............................................37 6.1.1 Required RCD Namespaces ......................................................... ......................................................... 37 6.1.2 Required GSD4 Namespaces ....................................................... ....................................................... 38 6.2 HostID, AppID, Card Path, and Model Type ......................................... .........................................39 6.3 Create an Appropriate Model Factory ................................................. ................................................... .. 39 6.4 Create the Appropriate Target Streams ................................................ ................................................39 6.4.1 The CardModel Class ................................................. .................................................................... ................... 40 6.5 Read or Write to the Appropriate Target Streams ................................ ................................ 40 6.6 Deploying an EIC Application ................................................ ............................................................... ............... 41 6.6.1 Additional Requirements .................................... ............................................................. ........................... .. 42 6.7 Error Handling .................................................. ............................................................................ .................................... .......... 42 6.7.1 Exceptions ................................................. ........................................................................... .................................... .......... 43 6.7.2 Custom Exceptions............................ Exceptions..................................................... ............................................ ................... 43 6.7.3 Re-thrown Exceptions ................................................ ................................................................... ................... 43 6.7.4 Exception Handling in Threads ................................................ ...................................................... ...... 44 7 EIC Application Guidelines and Examples ................................................. ................................................... .. 44 7.1 Creating an RCD Setup File .............................................. ................................................................. ................... 44 7.2 Creating an a n RCD Setup File with Product Details................................. ................................. 47 7.2.1 Product Details for Products ................................................ .......................................................... .......... 47 7.2.2 Product Details for Seed Varieties ............................................... ................................................. .. 47 7.3 Accessing RCD Log File Information .................................................. .................................................... .. 50 7.3.1 RCD Log File Structure .................................................. ................................................................. ............... 51 7.3.1.1 Setup .................................................. ............................................................................ .................................... .......... 53 7.3.1.2 Equipment Configuration ......................................... ........................................................ ............... 53 7.3.1.2.1 Equipment configuration & log block b lock ................................... ................................... 54 7.3.1.3 Meters ................................................. .......................................................................... ................................... ..........55 7.3.1.4 Task Region .................................................................. ........................................................................... ......... 56 7.3.1.5 Navigation Reference ................................................... ............................................................. .......... 57 7.3.2 Accessing RCD Log File Data ................................................. ....................................................... ...... 57 7.3.2.1 Preliminary Steps ................................................ ................................................................... ................... 58 7.3.2.2 Import the Log Lo g Target Tar get Stream ................................................ ................................................58
Deere & Company Confidential and Proprietary
Page 3 of 93
IVS Product Family EIC Developer’s Guide
7.3.2.3 Process the Spatial Layers ..................................................... 59 7.3.2.4 Equipment Dynamics ............................................................. 59 7.3.2.4.1 Recommended Settings ...................................................... 60 7.3.2.5 Parse the Target Stream ........................................................ 60 7.3.2.6 Data Representations ............................................................. 62 7.3.2.7 Read Section and Meter Data ................................................ 63 7.3.2.7.1 Method 1: Obtain data for a specific operation or meter ...... 64 7.3.2.7.2 Method 2: Obtain data for all operations and all meters ...... 65 7.3.2.7.3 Method 3: Obtain data for equipment configuration ............. 65 7.3.2.8 Operation and Meter Relationships ........................................ 66 7.3.3 Infrequently Changing Log Data (*.fdl) .......................................... 68 7.3.4 Frequently Changing Log Data (*.fdd) ...........................................69 8 Sample EIC Applications ............................................................................. 70 APPENDIX A: EIC Compatibility with Previous John Deere Data Formats ......... 72 APPENDIX B: Crop List ...................................................................................... 74 APPENDIX C: Supported Encodings ..................................................................80 APPENDIX D: Unit and Representation System ................................................. 83 APPENDIX E: RCD Out of Box Types ................................................................ 85 APPENDIX F: Calibration Factors.......................................................................92
List of Tables Table 1 Licensed vs. Advanced Features ............................................................. 8 Table 2 Terminology Used in this Document ......................................................11 Table 3 EIC Namespaces ................................................................................... 18 Table 4 RCD Model Factory Description ............................................................. 18 Table 5 RCD Data File Formats ..........................................................................24 Table 6 EIC Spatial Files .................................................................................... 29 Table 7 Spatial Data Hierarchy ........................................................................... 29 Table 8 GSD4 Data Formats .............................................................................. 30 Table 9 Target Stream Capabilities.....................................................................36 Table 10 Required Namespaces for a Specific Functional Operation .................38 Table 11 Deployable Library Dependencies ....................................................... 41 Table 12 Data Representations .......................................................................... 62 Table 13 Operations and Meter Domain IDs....................................................... 66 Table 14 Sample EIC Applications......................................................................70 Table 15 EIC Crop List........................................................................................ 74 Table 16 RCD Language Support .......................................................................80 Table 17 RCD OOB Types ................................................................................. 85 List of Figures Figure 1 Original GreenStar display (left) and the GreenStar 2 2600 display (right) ..................................................................................................................16 Figure 2 The EIC framework data flow................................................................ 17 Figure 3 Card structure for the GS2 2600, GS2 1800, CommandCenter and GS3 2630 displays ...................................................................................................... 24 Figure 4 The RCD Log file structure ................................................................... 52
Deere & Company Confidential and Proprietary
Page 4 of 93
IVS Product Family EIC Developer’s Guide
Figure 5 Configuration Block ............................................................................... 53 Figure 6 Equipment Configuration ...................................................................... 53 Figure 7 Meter and Section References ............................................................. 54 Figure 8 Meter Log File Structure ....................................................................... 56 Figure 9 Log Task Region ................................................................................... 57 Figure 10 Navigation Reference ......................................................................... 57 Figure 11 RCD configuration block .....................................................................60 Figure 12 : Illustration of EIC accessing earlier versions of GreenStar display data .....................................................................................................................72 Figure 13 EIC backward-write compatibility across minor versions .................... 73 Figure 14 Representation System Browser ........................................................ 83 Figure 15 Unit System Browser .......................................................................... 84
C O NVENTIONS U S E D IN THIS D OCUMENT The following conventions are used throughout this document
Numeric Numbers expressed in the form nn (e.g. 78) are decimal, unless otherwise noted. Numbers expressed in the form 0xnn (e.g. 0x32, 0x1A4) are hexadecimal.
Code All code examples are given in the following font and colors:
// First call to GS2ModelFactory.Create() is slower than // subsequent calls, since we are caching data beforhand to // increase serialization performance. GS2ModelFactory factory = GS2ModelFactory.Create(cardPath, _hostID); ISetupStream stream; try { stream = CreateMasterSetup(factory); Console.WriteLine(string.Format("Exporting setup to {0}...", cardPath)); Debug.Assert(stream.IsValid); stream.Export(); // This performs automatic validation. Console.WriteLine("Setup exported successfully."); // Look at card model to verify stream was written. RcdCardModel model = factory.CreateCardModel(); Debug.Assert(model.CardPath == cardPath); Debug.Assert(model.SetupStream != null); Debug.Assert(model.GetStreams(TargetStreamType.Setup).Count == 1); Debug.Assert(model.GetStreams(TargetStreamType.Setup)[0] == model.SetupStream); } catch (Exception x) {
Deere & Company Confidential and Proprietary
Page 5 of 93
IVS Product Family EIC Developer’s Guide
Console.WriteLine(x); }
R eferenced Documents Document EIC SDK Documentation.chm
Out of Box (RCD Applications).pdf John Deere GreenStar 2 Totals Formulas.pdf
Description Microsoft Windows compatible help file. This document describes all programming interfaces within the EIC API. Adobe .pdf formatted file listing all John Deere Out-of-Box applications, with associated ID and reference ID. Adobe .pdf formatted file detailing the formulas used by the Greenstar system for summarizing and averaging field data.
Deere & Company Confidential and Proprietary
Page 6 of 93
IVS Product Family EIC Developer’s Guide
1 Introduction to the EIC Software Development Kit The EIC Software Development Kit (SDK) is a complete redesign of the John Deere EIC programming model. The new EIC SDK exposes John Deere equipment data in a unified object model. These objects can be accessed or manipulated by developers in any language compliant with the ECMA Common Language Specification (ECMA-334). This new version of the EIC SDK uses Microsoft Windows .NET 2.0 Framework ©, which supports the use of all CLS-compliant languages.
1.1 Licensing the EIC SDK The EIC SDK requires you to obtain a license file ( johndeere.eic.lic ) if you want your application to access the following sets of data:
Guidance data (spatial data such as AB lines, AB curves, boundaries, and circle tracks) Surface water management data Business Pack data Universal Swath Control Pro data
Each of these data sets is licensed individually. Only John Deere Partners can receive EIC license files. At this time, Deere & Co. is only allowing read-only access to the guidance lines stored on the card. This means that in order to obtain a license file enabling guidance line transfer, a separate license agreement must be signed which states that the 3 rd party desktop application will not alter or create any guidance lines. A 3rd party desktop application will be able to read the existing guidance lines from the card and write them back unaltered, however. To obtain an EIC license file, contact the EIC support staff by email at
[email protected]. You must provide a unique application identifier and the entry assembly identifier. The assembly identifier is most likely the ID of the Windows Forms application. For more information about a unique application identifier, see HostID, AppID, Card Path, and Model Type later in this document. Once the John Deere EIC team has this information, it will generate a license file for distribution with your application. The license file must reside in the same directory where the EIC libraries are installed on the runtime machine. Note: If your application is unmanaged and calls the EIC libraries, then the entry assembly GUID will either be empty or the GUID of the first assembly loaded by the unmanaged application. Obtain more information by searching the EIC Help file for System.Reflection.Assembly.GetEntryAssembly().
At runtime, the license file will be checked by the EIC libraries to determine whether your application has the proper permissions to use guidance and surface water management data sets.
1.1.1 The EIC ClearSpace Forum EIC developers who are John Deere partners can access the John Deere online EIC forum. On the EIC Forum page, you will find EIC announcements, participate in EIC discussions, obtain answers to your questions by EIC staff, and download patches and documentation.
Deere & Company Confidential and Proprietary
Page 7 of 93
IVS Product Family EIC Developer’s Guide
To obtain a user name and password for the EIC Forum, contact the EIC support staff by email at
[email protected] [email protected].. To access the EIC Forum: 1. Open an Internet browser and navigate to https://jdforums.deere.com/clearspace/index.jspa 2. Sign in with your user user name and password. password. 3. On the John Deere Collaboration Forums page, navigate to the Spaces portion of the page and select EIC. 4. Your browser will be redirected to the EIC Forum.
1.2 Licensed vs. Advanced Features The standard features which come with the th e EIC SDK are known as licensed features. The features for which the SDK user needs a license file are known as advanced features. The following table describes the EIC licensed vs. advanced features. Table 1 Licensed vs. Advanced Features Features
Read/Write setup data excluding jobs Read/Write boundary data Read/Write prescription/reference/variety locator layer data Read/Write flag layer Read log data Read/Write jobs data Read/Write guidance data (spatial data such as AB lines, AB curves, and circle tracks) Read/Write surface water management data Read/Write Business Pack data Read/Write Universal Swath Control Pro data
Licensed
Advanced
X X X X X X X X X X
1.3 EIC Versioning Because EIC interacts with a large variety of John Deere system equipment files, and in order to accommodate future changes to the EIC interface and implementation code, John Deere enforces strict version version control of the EIC API. Programmers and users can use this versioning strategy to understand the limitations, restrictions, and changes that might occur between releases of the EIC libraries.
1.3.1 EIC Version Numbers EIC API versions are denoted using a standard quadruplet of integers of the following form: major.minor.patch.build (e.g. 1.2.0.144 ).
EIC releases with major number number changes indicate a change that might cause an application using a previous version of EIC to fail to compile. Any kind of change may occur with a major version version change. These changes might include adding or removing enumerated types, functions, and properties. EIC releases with minor number number changes indicate API enhancements and implementation changes. Minor releases can introduce ne w symbolic and
Deere & Company Confidential and Proprietary
Page 8 of 93
IVS Product Family EIC Developer’s Guide
enumerated constants, new new properties and new functions. Minor versions may also deprecate existing functions. Deprecating a function simply means that the [System.Obsolete] attribute is applied at the function declaration. For a minor release, existing functionality will not be removed, but deprecated functions might, at John Deere’s discretion, be removed in a future release of the EIC. Changes to the patch number indicate indicate an implementation change that does not affect the API. A patch release will only change function or property implementations. These releases will be used to distribute bug fixes, also known as hot fixes. A hot fix f ix will generally correct any issues associated with existing functionality or features. The build number indicates indicates the specific EIC build version being released. Refer to Appendix A, EIC Compatibility with Previous John Deere Data Formats for specific information about backward read and write compatibility between EIC and earlier data formats.
Note: Some of the libraries distributed with EIC are built and maintained using a John Deere build system separate from the EIC SDK build system. Therefore these libraries will have different versions than the EIC libraries. The following libraries currently use a separate versioning system.
JohnDeere.RepresentationReference.dll JohnDeere.RepresentationSystem.dll JohnDeere.RepresentationSystemBrowser.dll JohnDeere.UnitSystem.dll JohnDeere.UnitSystemBrowser.dll
1.4 Installing the EIC SDK The EIC SDK is distributed as a zipped (compressed) file named EIC_3.x.y.zzz.zip where x is the major version number, y is the minor version number, and zzz is the build version of the EIC SDK. This file can be extracted to any place on your local computer system. system. The zip file creates an SDK folder (:\installation_folder\). The installation requires approximately 21 MB free space on your disk drive. Note: The EIC SDK can be installed on computers that have previous version of EIC installed.
After the contents of the zip file are extracted, you you will find: the EIC libraries, the EIC SDK diagnostics utility (JohnDeere.EIC.DiagnosticsUI.exe), the \Samples folder, containing a full suite of test programs that illustrate development with the EIC SDK, f ile (EIC SDK the \Documents folder, containing a Microsoft-compatible help file Documentation.chm ), a developer’s guide (EIC ( EIC Developer's Guide.pdf ) and a document (Out of Box RCD Applications.pdf ) detailing the Out-of-Box applications distributed with this version of the EIC SDK.
If you intend to write Original GreenStar (GSD4) setup files, you must register SavetoCard.dll , a Microsoft COM library. To register the SavetoCard library, do the following:
Deere & Company Confidential and Proprietary
Page 9 of 93
IVS Product Family EIC Developer’s Guide
1. Open a command prompt. 2. Input the following command: {system_path}\regsvr32.exe {eic_path}\SavetoCard.dll
where system_path is the location of regsvr32.exe and eic_path is the location of the EIC SDK on your local computer. 3. Press Enter . The EIC SDK requires the Microsoft .NET Framework Version 2.0 Redistributable Package (x86) with SP1 be installed on the local machine. For more information, access the see this link: (http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D8EDD-AAB15C5E04F5&displaylang=en)). 8EDD-AAB15C5E04F5&displaylang=en
1.5 Removing the EIC SDK Remove the EIC SDK simply by deleting the folder where the EIC libraries were extracted. In addition, if you manually registered the SavetoCard library, manually deregister the library by doing the following: To register the SavetoCard library, do the following: 1. Open a command prompt. 2. Input the following command: {system_path}\regsvr32.exe/u {eic_path}\SavetoCard.dll
where system_path is the location of regsvr32.exe and eic_path is the location of the EIC SDK on your local computer. 3. Press Enter .
1.6 The Development Environment EIC applications can be written in any Integrated Development Environment (IDE) that supports the.NET 2.0 Framework©. You can find the Microsoft .NET Framework Version 2.0 Redistributable Package at: (http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D8EDD-AAB15C5E04F5&displaylang=en)). 8EDD-AAB15C5E04F5&displaylang=en It is recommended that new EIC applications be written using Microsoft Visual Studio 2005© Professional Edition with SP1 or higher. The EIC SDK Help file displays displays code examples in C#, C++, and Visual Basic .NET. While it is recommended that you use these languages to write EIC applications, any CLS complaint language supported b y Microsoft .NET Framework can be used for development of EIC applications. The EIC sample applications distributed with this SDK were coded with Microsoft Visual Studio C# 2010 Team Edition for Software Developers. Please note that the solution files in each EIC sample application contain folders, a feature which may or may not be supported by your specific version of Visual Studio. Check with your software vendor or Microsoft Corporation to determine whether solution folder s are supported. The John Deere® EIC SDK includes the software components required to access and produce data compliant with the John Deere Deere GreenStar System .This system system includes
Deere & Company Confidential and Proprietary
Page 10 of 93
IVS Product Family EIC Developer’s Guide
the Original GreenStar, GreenStar 2 1800, GreenStar 2 2600 and GreenStar 3 2630 displays. This document refers to the individual displays as follows:
GreenStar 2 2600 display: RCD GreenStar 2 1800 display: RCD GreenStar 3 2630 display: RCD Original GreenStar display: GSD4
This manual contains instructions for installing the EIC SDK, information about the various EIC data structures, instructions for creating an EIC application, and instructions for deploying an EIC application. Detailed information regarding specific subjects such as language encoding is located in the Appendices of this document.
1.6.1 The EIC Model Factories The EIC API provides an object template for creating the data structures associated with each GreenStar display model. Using the appropriate data model factory simplifies development by creating all objects appropriate for that display. Additionally, the model factories create interfaces to these objects to provide an extra layer of abstraction.
1.6.2 The EIC Diagnostic Utility A useful tool distributed with the EIC SDK is JohnDeere.EIC.DiagnosticsUI.exe . This tool can be used to test, verify, and demonstrate your EIC-enabled application. This Windows-compatible program utilizes all features of the EIC API. Use this program to display EIC data structures, GreenStar log data, spatial log maps, prescriptions, and aerial images. You can also validate and delete EIC data on the data card used by the specific John Deere GreenStar 2 display or the Original GreenStar display.
1.6.3 EIC API Help File The EIC API is documented in a Microsoft Windows-compatible compiled help file named EIC SDK Documentation.chm which is distributed with the EIC SDK. Refer to this help file for information about all namespaces, classes, interfaces, methods and enumerations that make up the EIC API model.
1.7 Terminology The following table describes the terms used in this document. Table 2 Terminology Used in this Document Term
Description
A/B lines are used for guidance when the GreenStar system is in parallel tracking mode. Also called Track 0 , this line is the reference from which all parallel passes in a field are based. The tractor follows the line between the A and B point, then auto drives to the left or right by the track spacing distance, then follows another line parallel to the original track. Track 0 can also describe curved and circular paths. A/B line In straight track mode, an equipment operator can be define an A/B line in the following ways: Specifying a starting point (A) and an ending point (B) for the line. Specifying a starting point (A) and a heading. Specifying a starting point (A) and driving to a point in the field, which becomes the end point.
Deere & Company Confidential and Proprietary
Page 11 of 93
IVS Product Family EIC Developer’s Guide
Term
Description Specifying
A/B Curve
Apex API
the latitude and longitude of both points.
AB Curves are similar to A/B lines, but allows a customer to drive a curved line in the field with two end points. Subsequent field tracks in either direction will be based on the original driven track. The John Deere desktop application used to access, display, and manipulate data card information from the GreenStar systems (GSD4 and GS2). Application Programming Interface. Boundaries delineate an area. The specified boundary must be made up of one exterior and zero or more interior polygons. The RCD system does not support the use of multiple exterior boundaries. Typically an interior boundary delineates the area of a field where a crop was planted within a field.
Boundaries Sometimes, with legacy GSD4 systems especially, boundaries are also used for tile lines. In GS2 systems, tile lines are also marked using flags instead of boundaries. Apex allows only one active field boundary at a time. However, you can have any number of crop boundaries active at the same time. CAN CFFT CLI
CLS
COM DAL Control Element
ECMA
EIC
FMS
Controller Area Network. Client, Farm, Field, and Task. Common Language Infrastructure. CLI is an open specification developed by Microsoft describing the code and runtime environment that comprise the Microsoft .NET Framework. Common Language Specification. The CLS is an open specification developed by Microsoft describing the code and runtime environment that allows multiple high level programming languages be used irrespective of different hardware and operating system platforms. Component Object Model. Developed by Microsoft in 1993, COM enables interprocess communication and dynamic object creation in any programming language that supports COM. Data Access Layer. The DAL provides access to data between a desktop application and a data repository. The control element contains a value supplied to the controller by a prescription. This is an ideal value that the controller should achieve. Control elements will only be available when a prescription is used. An international standards organization that facilitates the timely creation of a wide range of global Information and Communications Technology (ICT) and Consumer Electronics (CE) standards. It maintains the specification for the C# programming language (ECMA #334). The John Deere Equipment Interface Component application programming interface (API). The EIC API is used by developers and others to read data from and write data to the data cards used by either the GreenStar 2 or Original GreenStar display systems. Farm Management System. John Deere uses this term to describe a software package that is capable of tracking tasks, work items, and operations occurring on a farm. The software package must be capable of a minimum set of functions determined by our changing customer needs as it relates to precision farming and operational data flow. Some examples of the functionality required of an FMS are:
Deere & Company Confidential and Proprietary
Page 12 of 93
IVS Product Family EIC Developer’s Guide
Term
Description
GIS GreenStar GS2 GS3 GS3B GPS GSB GSD
Tracking inputs (application of chemicals, seeding rates, environmental inputs such as weather, GPS inputs). Managing equipment (identification of machine type and associated data such as hitch offsets and section width. Includes GIS tracking). Managing workflow. Documenting outputs (yields, measurements, operational logging).
Graphical Information System. The John Deere precision agricultural management solution. The GreenStar 2 2600 display. The GreenStar 3 2630 display. The GreenStar 2 1800 display. Global Positioning System. GPS is used to enable precise positioning and tracking by the GreenStar system. A boundary log file produced by the Original GreenStar system (GSD4). A boundary log file describes numerically a topographical boundary. A field documentation log file produced by the Original GreenStar system (GSD4).
GSD4
The Original GreenStar display.
GSS
A GSD4 data format for the setup file. A combine yield mapping log file produced by the Original GreenStar system (GSD4). Graphical User Interface. Globally Unique Identifier. This is a presumably unique 128-bit number used by the Microsoft Component Object Model (COM) to identify software application and component interfaces in any context that identification is required. This numerical value is a correction factor to account for the difference between the weight and moisture values recorded by the GreenStar system and the actual weight and moisture values found in the field.
GSY GUI GUID
HMON Calibration Factor
Inoculant
The equipment operator calibrates this factor in the field by weighing a small amount of newly harvested crop. The operator then inputs that weight into the GreenStar display. The GreenStar system then calculates the HMON Calibration Factor. After that procedure, the GreenStar display applies the calibration factor to all future readings. If the farmer wants to obtain consistently accurate data, best practice is to calibrate the equipment several times during a season. This is particularly true if the moisture of the crop varies between fields and to account for changing weather conditions. The term inoculant is only applied to silage for Self Propelled Forage Harvesters. Inoculants supply additional lactic acid bacteria to the crop, acting as a catalyst to the fermentation process. Without the appropriate bacteria balance, the chances of silage spoilage increases and animal intake will likely diminish. Additional value realized through accurate inoculant dosing may include decreased silage loss, improved bunk stability, increased digestibility and intake, and increased animal performance.
Deere & Company Confidential and Proprietary
Page 13 of 93
IVS Product Family EIC Developer’s Guide
Term
Description
Mapped Rate
The rate to be used based on a prescription map.
Measured Element
The measured element contains the actual value measured by the physical sensor. This could be an application rate, wind speed, air temperature, seed depth, etc. IMeter.MeteredElement property.
Measured Rate
The rate (of an application) as measured by a sensor.
Metered Element
The metered element contains the value calculated/derived by the controller. Metered elements are used when there is no physical sensor to use for measurement. This is the IMeter.MeteredElement property
Metered Rate
A calculated or derived rate being reported by a meter. Sometimes referred to as an Rx, a prescription is essentially a map of what is being planted or sprayed or applied to a field. A prescription is used by the farmer when planting seed or spraying a fertilizer, chemical, or tank mix to a field.
Prescription
When creating a prescription, you specify what product (crop variety, fertilizer, chemical or tank mix) you will be using. After specifying that information, your EIC-enabled application, if capable, can draw the locations to which the product will be applied. For instance, Apex can auto-generate the locations based on a management zone or a contour of a rate layer. After the regions are specified, the user specifies the rates in each specific area at which the product will be applied, or seeds planted. When created, the user saves the prescription information to the data © card for use by the GreenStar system. The user then places the data © card in the GS2 or GSD4 display, and then the GreenStar system will use the prescription to apply the product at the specified rates at the specified locations without user intervention in the field. A raster grid is a regular network of rows and columns covering an entire field. In GS2, every cell in the grid will have a value. The value can be a prescription rate, variety type or color of an aerial image depending on what purpose for which the grid is being used. Each cell will have the same width and height throughout the field.
Raster Grid
RCD SDK Solution
When the GreenStar GS2 system needs to know, for instance, the rate of fertilizer to apply at a specific location, it will calculate which row and column that location fails in. For performance reasons, the GS2 prefers using a raster grid instead of a vector format (in which areas of similar values are delineated using a polygon). Data is often originally in vector format, derived from a soil study, or previous year yield delineation. Embedded software application and embedded hardware platform that is designed to control and log aspects of John Deere Ag equipment. Refers specifically to the GreenStar 1800, 2600 and 2630 systems. Software Development Kit. Microsoft Visual Studio© implements conceptual containers called solutions and projects. While projects contains source files, component references and build instructions, a solution contains one or more projects, with files and metadata that define the solution as a whole. The
Deere & Company Confidential and Proprietary
Page 14 of 93
IVS Product Family EIC Developer’s Guide
Term
Description
EIC SDK provides several solutions as example code. SPFH Self Propelled Forage Harvester Summer Software Bundle. Usually released in the month of July, the SSB SSB consists of any required updates to the GreenStar system. The rate being reported by the controller indicating what the controller is Target Rate attempting to achieve. A virtual object-oriented data structure that exposes RCD and GSD4 data. Each logical target stream is matched to data from one or more physical files on the file system; each data file in the GreenStar display Target Stream systems has a corresponding target stream. RCD has nine available target streams and the GSD4 has seven target streams. The target element contains a value supplied by the user that the controller attempts to achieve. This target value may be supplied by Target either the desktop application or the operator in the cab. See the Element IMeter.TargetElement Property in EIC Help USB Universal Serial Bus. Winter Software Bundle. Usually released in the month of January, the WSB WSB consists of any required updates to the GreenStar system. This term refers to the EIC function that discovers, from earlier log files, Variety the crop varieties that were planted in a field. This information is used by Locator EIC to determine what crops are being harvested from that field.
2 Understanding the GreenStar ™ system The John Deere GreenStar system is a complete precision agricultural management solution designed to help customers make better farm management decisions. Utilizing the GreenStar system, John Deere customers can achieve increased operational efficiency and productivity, leading to important reductions in overall costs. The GreenStar system is comprised of three main components:
The Original GreenStar display or the GreenStar 2 display Original GreenStar Mobile Processor (doesn’t apply to GS2) StarFire Position Receiver
2.1.1 GreenStar Displays The GreenStar displays, together with the associated mobile processors, are rugged field computers that are placed in the equipment cab for easy operator access. The GreenStar display is similar to a computer monitor. The older GSD4 monochrome GreenStar display is easily operated using buttons that access all GreenStar display functions, allowing the operator to view and even edit current and past information while operating the equipment. The newer GS2 GreenStar display offers a larger color display with touch-screen capabilities.
Deere & Company Confidential and Proprietary
Page 15 of 93
IVS Product Family EIC Developer’s Guide
Figure 1 Original GreenStar display (left) and the GreenStar 2 2600 display (right)
2.1.2 The Original GreenStar Mobile Processor The GreenStar mobile processor is the core of the GreenStar system. This mobile computer attaches to the GreenStar display mounted in the cab of the equipment. It logs information such as farm, field, crop, and spatial data to a PCMCIA data storage card (also known as a PC Card). This card can hold up to 800 hours of data, enough for a whole season’s data for many growers.
2.1.3 StarFire Position Receiver The John Deere StarFire iTC position receiver is the first in the industry to combine dualfrequency GPS technology with terrain-compensation functionality. The 12 channel StarFire receiver accepts signals from the network of orbiting Global Positioning System satellites and from the John Deere Differential Correction Network. Using these signals, the StarFire position receiver can pinpoint equipment location with exceptional accuracy.
2.1.4 Online Customer Support John Deere offers online user support on the John Deere StellarSupport site: http://stellarsupport.deere.com/.
3
Introduction to the EIC Framework The EIC framework exposes data from the data cards used by the GreenStar systems by exposing an in-memory object model. John Deere GreenStar systems accumulate and record considerable amounts of operational, environmental, and geospatial data transmitted by various components of the John Deere equipment being used. For instance, a combine will have information transmitters called meters that gather raw data from sensors tracking direction, current latitude and long itude, crop weight, etc. and transmit that information to the GreenStar display controller in the cab of the combine. The operator uses the display to control the operation, record certain datasets, and track important operational metrics. This data can be stored on data cards placed in the display and later read by EIC-enabled applications like Apex. The figure below shows a high level view of the EIC framework and demonstrates interaction with a desktop application system.
Deere & Company Confidential and Proprietary
Page 16 of 93
IVS Product Family EIC Developer’s Guide
PCMCIA Card (GSD4)
EIC Framework ModelsImpl (Implementation)
Compact Flash Card (GS2/GS3)
Desktop Software Application
Models Data Access Layer
Database
Figure 2 The EIC framework data flow
The EIC API hides many complexities of the GreenStar display data formats from desktop applications by exposing an object-oriented abstraction layer. This architecture is also designed to accommodate future data formats that may be introduced due to new product features. John Deere designed the EIC API for:
execution speed : the EIC libraries have minimal performance impact on
applications utilizing them. reduced memory usage : the EIC libraries provide additional functionality for allocating and freeing memory used by the EIC data structures. data safety: the EIC libraries will not execute any algorithms to modify the raw data unless such operations are explicitly specified.
3.1 EIC Models The EIC SDK provides interfaces for two separate data models, the RCD data model and the GSD4 data model. The RCD data model encapsulates data from the GreenStar 2 1800, 2600 and 2630 displays. The GSD4 data model encapsulates data from the Original GreenStar display. All RCD and GSD4 data interfaces are exposed within the JohnDeere.EIC.Models namespace and subsequent child namespaces. These namespaces are clearly identified as RCD or GSx: RCD namespaces relate to the GreenStar GS2 2600,GS3 2630 and GS2 1800 systems; GSx namespaces relate to the Original GreenStar system.
Deere & Company Confidential and Proprietary
Page 17 of 93
IVS Product Family EIC Developer’s Guide
These models namespaces are: Table 3 EIC Namespaces
Namespace
Description
JohnDeere.EIC.Models.RCD
Contains the RcdCardModel class and interfaces for RCD data (GS2 2600, GS2 1800 and GS3 2630 displays).
JohnDeere.EIC.Models.RCD.ContractorDoc
Contains the interfaces relating to the logged Business Pack data.
JohnDeere.EIC.Models.RCD.Enums
Enumerations for the RCD files and data.
JohnDeere.EIC.Models.RCD.Log
Contains the EquipmentDynamicsInfo class and interfaces for RCD log file data.
JohnDeere.EIC.Models.RCD.Setup
Contains interfaces for RCD data such as farm, field, and implement.
JohnDeere.EIC.Models.RCD.Spatial
Contains spatial column classes and interfaqces for RCD geographical data.
JohnDeere.EIC.Models.GSx
Contains the GSD4 card model class and the data import and export interfaces.
JohnDeere.EIC.Models.GSx.Common
Contains GSD4 classes for client, farm, and field and setup information; contains classes for interacting with the legacy GSD4 data files.
JohnDeere.EIC.Models.GSx.Enums
Enumerations for the GSD4 files and data.
JohnDeere.EIC.Models.GSx.Export
Contains classes for GSD4 data objects and object collections of data to be exported to legacy setup or prescription files.
JohnDeere.EIC.Models.GSx.Import
Contains classes and enumerations for GSD4 data to be imported from GSD4 data card files.
Implementation of these interfaces and classes are found in the JohnDeere.EIC.ModelsImpl.dll library. These models are constructed through the use of “Model Factories”. A model factory exists for the legacy John Deere GSD4 display controller and three model factories are presented for John Deere displays that use the EIC RCD architecture. This namespace contains the following classes: Table 4 RCD Model Factory Description
Class
Description
ModelFactory
An abstract model factory class with CardPath, HostID, and licensing members.
RcdModelFactory
An abstract model factory class that manipulates RCD model objects, including card models to access data streams on the card file system, setup data streams, out of box data types, operations, etc. This class cannnot be constructed.
GS2ModelFactory
A class to create GS2 2600 model objects, including prescription converter.
Deere & Company Confidential and Proprietary
Page 18 of 93
IVS Product Family EIC Developer’s Guide
GS3BModelFactory
A class to create GS2 1800 model objects, including profile and prescription converter.
GS3ModelFactory
A class to create GS3 2630 model objects, including profile and prescription converter.
GSD4ModelFactory
A class to create GSD4 model objects, primarily data streams used by the GSD4 system.
Refer to EIC SDK Help for detailed information regarding specific behavior of these classes and interfaces.
3.1.1 RCD Models RCD model object interfaces are located in the JohnDeere.EIC.Models.RCD namespace of the JohnDeere.EIC.Models.dll library. These models encapsulate the data structure of the RCD system files and provide a layer of abstraction for all John Deere GS2 2600, GS3 2630 and GS2 1800 display consoles. Sample projects in the GS2 subfolder of the sample application solution demonstrate how to interact with the various RCD model objects. Note: Future GreenStar displays that adhere to the RCD interface standards will be supported by the EIC SDK.
3.1.2 GSD4 Models GSD4 model objects are located in the JohnDeere.EIC.Models.GSx namespace of the JohnDeere.EIC.Models.dll library. These models encapsulate the data structure of the GSD4 system files and provide a layer of abstraction for the Original Greenstar display consoles. The sample projects in the GSD4 subfolder of the sample application solution demonstrates how to interact with the various GSD4 model objects. Note: GSD4 data models have not changed from previous releases of EIC. This should simplify porting legacy EIC applications to this new version of the EIC SDK.
3.2 EIC Model Factories The EIC API provides object factories for creating the data structures associated with each GreenStar display model. Using the appropriate data model factory simplifies development by creating all objects appropriate for that display. Each model factory accepts card path and host ID arguments. The card path argument specifies the location of the John Deere data files and the host ID argument is the unique GUID identifier of your application. See HostID, Card Path, and Model Type later in this document for more information. As mentioned, these object factory classes are located in the JohnDeere.EIC.ModelsImpl.Factories namespace. To create GS2 2600 model objects, instantiate a instance using the static Create( ) method. The following code instantiates a GS2 model factory. JohnDeere.EIC.ModelsImpl.Factories.GS2ModelFactory
GS2ModelFactory gs2Factory = GS2ModelFactory.Create(cardPath, _hostID);
Deere & Company Confidential and Proprietary
Page 19 of 93
IVS Product Family EIC Developer’s Guide
To create GS2 1800 model objects, instantiate a instance using the static Create( ) method. The following code instantiates a GS3B model factory. JohnDeere.EIC.ModelsImpl.Factories.GS3BModelFactory
GS3BmodelFactory gs3bFactory = GS3BmodelFactory.Create(cardPath, _hostID);
To create GS3 2630 model objects, instantiate a instance using the static Create( ) method. The following code instantiates a GS3 model factory. JohnDeere.EIC.ModelsImpl.Factories.GS3modelFactory
GS3ModelFactory gs3Factory = GS3ModelFactory.Create(cardPath, _hostID);
To create GSD4 model objects, instantiate a instance using the static Create( ) method. The following code instantiates a GSD4 model factory. JohnDeere.EIC.ModelsImpl.Factories.GSD4ModelFactory
GSD4ModelFactory gsd4Factory = GSD4ModelFactory.Create(cardPath, _hostID);
3.3 RCD Out-of-Box Creators The EIC SDK provides functions for creating most Out-of-Box data accepted by the RCD display systems. These Out-of-Box creators are part of the JohnDeere.EIC.ModelsImpl.Factories.RCDModelFactory class and have a naming pattern of CreateOutOfBoxXXX () where XXX is the type of object being created. Using these methods populate the data model objects with the appropriate IDs and reference IDs. With this version of the EIC SDK, there is no longer a need to manually populate the data model in your code. The following code example illustrates creating the Out-of-Box user-defined types required in the setup file: GS2ModelFactory factory = GS2ModelFactory.Create(cardPath, _hostID); IuserDefinedType otherType = factory.CreateOutOfBoxOtherType(); IuserDefinedType balingType = factory.CreateOutOfBoxBalingType();
Refer to the accompanying document Out of Box RCD Applications.pdf for a listing of out of box types that can be created with the RCD model factory with reference IDs. Also see APPENDIX E: RCD Out of Box Types.
4 Target Streams EIC exposes RCD and GSD4 data files as object-oriented data structures called target streams. These streams are logical entities, not physical entities. Each logical target stream is matched to data from one or more physical files on the file system; each data file in the GreenStar display systems has a corresponding target stream. All target streams implement the generic JohnDeere.EIC.Models.ItargetStream interface, The ItargetStream interface allows developers to work with all John Deere data in a consistent manner. RCD target streams are enumerated in the EIC namespace as: JohnDeere.EIC.Models.RCD.Enums.TargetStreamType.
GSD4 target streams are enumerated in the EIC namespace as: JohnDeere.EIC.Models.GSx.Enums.TargetStreamType. For more information about the interfaces implemented by each target stream, refer to the class diagram outlining the EIC target stream object hierarchies, which can be
Deere & Company Confidential and Proprietary
Page 20 of 93
IVS Product Family EIC Developer’s Guide
accessed in Common/Diagrams.csproj located in the SampleApps.sln solution, or consult the EIC SDK Help file. Note: EIC data objects are mutable: the data these objects model can change. Therefore EIC data objects are not designed for thread-safety. If your application uses multiple threads, make sure that you take proper precautions to ensure data integrity.
4.1 RCD Data Files and Target Streams The RCD target streams are logical entities (like the GSD4 streams), not physical entities. Each logical stream is matched to one or more physical files on the file system and each data file for the displays has a corresponding target stream. As mentioned, in this version of the EIC SDK, almost all of the RCD target streams can both read and write to the appropriate data file. Many of the RCD target streams encapsulate spatial data. Spatial data is data related to location and orientation; examples include the shape of a field or the sequential location and direction of equipment as it passes over a field.
4.1.1 RCD Card Structure The physical files for each RCD target stream must be stored under a folder named RCD on the data card. For the GS2 2600 display, this folder should be located off the root folder. For the GS2 1800 display which supports multiple profiles (see §4.1.1.1 for more information), the RCD folder should be located in a sub-folder hierarchy. Figure 3 below shows an example card structure for each display. Note: The GS2 2600 uses a CF card as the data medium while the GS2 1800 and GS3 2630 uses a USB card.
Deere & Company Confidential and Proprietary
Page 21 of 93
IVS Product Family EIC Developer’s Guide
Deere & Company Confidential and Proprietary
Page 22 of 93
IVS Product Family EIC Developer’s Guide
Deere & Company Confidential and Proprietary
Page 23 of 93
IVS Product Family EIC Developer’s Guide
Figure 3 Card structure for the GS2 2600, GS2 1800, CommandCenter and GS3 2630 displays
4.1.1.1 Profiles The GS2 1800 and GS3 2630 displays provide the ability to a ssociate a name with a set of data on the data card. This named data is known as a profile and provides the ability for the operator to select a specific set of data in the cab. EIC provides the ability to manage these profiles using the GS3BModelFactory and GS3ModelFactory classes. Please see the API help documentation or the GS2 1800\SampleModelFactory and GS3 2630\SampleModelFactory sample applications for more information.
4.1.2 RCD Data File Formats The newer RCD architecture, used by the GS2 2600, GS2 1800 and GS3 2630 GreenStar display systems, provides twelve different data formats. The EIC RCD libraries provide the functionality to read from, and write to, eight of these data file formats, unlike the import-only or export-only functionality of the older GSD4 model. The RCD data formats are summarized in the following table. Table 5 RCD Data File Formats File Format
Transfer Type
Description
Setup
Import/Export
Setup information about the GS2 system.
Deere & Company Confidential and Proprietary
Page 24 of 93
IVS Product Family EIC Developer’s Guide
File Format
Transfer Type
Description
Log
(From/To Card) Import (From Card)
Operational and other information collected in the field. Not available on GS2 1800 displays.
Field AB Curve
Import/Export (From/To Card)
Field-specific spatial information regarding AB curves. Access to this data is restricted to lice nsed users of the EIC SDK.
Field Import/Export
Import/Export (From/To Card)
Field-specific spatial information regarding curved track lines, boundaries, AB lines and circle tracks. Access to the guidance data is restricted to licensed users of the EIC SDK.
Field Export
Export (To Card)
Field-specific information such as variety locator, reference data (aerial images) and prescription data.
Field Flag
Import/Export Field-specific spatial information regarding flag (From/To Card) session layers. Import (From A complete log of the fuel consumption information for Card) a particular machine.
Not available on GS2 1800 displays.
Fuel Diary
Access to this data is restricted to lice nsed users of the EIC SDK.
Global
Import/Export (From/To Card)
Global field spatial information regarding curved track lines, AB lines and circle tracks. Global information is not field specific and can apply to any field. Access to this data is restricted to lice nsed users of the EIC SDK.
Global AB Curve
Import/Export (From/To Card)
Global field spatial information regarding AB curves. Global information is not field specific and can apply to any field. Access to this data is restricted to lice nsed users of the EIC SDK.
Surface Water Management
Import/Export (From/To Card)
Field-specific spatial information regarding contour, best fit levee, ditch track, levee track, survey, drainage, depression, ditch, and benchmark elevation. Access to this data is restricted to lice nsed users of the EIC SDK.
Tank Fill Calculator
Import (From Card)
Operational data related to a tank-fill calculator log session. Access to this data is restricted to lice nsed users of the EIC SDK.
Transport Log
Import (From Card)
Operational data related to a transport task log session. Access to this data is restricted to lice nsed users of the EIC SDK.
Deere & Company Confidential and Proprietary
Page 25 of 93
IVS Product Family EIC Developer’s Guide
The following sections describe each of the RCD target streams.
4.1.3 Setup The RCD setup stream encapsulates a file named setup.fds . This file consists of setup and configuration information that can be supplied by the user utilizing an EIC-enabled application or by the operator in the equipment cab. Setup information defined by the user includes farms, fields, products, machine information, tasks, and jobs. This information is then written to the data card and becomes available to the equipment operator in the GS2 2600,GS3 2630 or GS2 1800 display consoles. The information in the setup file is important to more than just the setup stream. Most of the other target streams also require client, farm, and field information. Note: A master setup file (master_setup.fds ) is distributed with the EIC SDK. This file demonstrates all the John Deere Out-of-Box data.
4.1.4 Log The log stream encapsulates two sources of data on the data card as follows:
A file with an .fdl extension. This file contains categories of data that are considered to remain relatively static, such as farm name or machine model. A file with an .fdd extension. This file contains data that frequently changes, such as elevation, wind speed, or rate of application.
The Infrequently Changing Data and Frequently Changing Data sections later in this document detail each data category. Note: The GS2 1800 display does not support documentation, so no log files will appear on a GS2 1800 data card.
4.1.5 Field AB Curve The field AB curve stream encapsulates a file named ABCurves.SpatialCatalog . This stream also encapsulates a set of spatial data files ( *.fdShape and *.fdData ). The field AB curve stream contains all AB curve information about a particular field. AB curves are curved guidance lines with a starting point and an ending point consisting each of latitude/longitude. Access to this target stream requires an EIC SDK license.
4.1.6 Field Import/Export The field import/export stream encapsulates a file name d ImportExport.SpatialCatalog . This stream also encapsulates a set of spatial data files ( *.fdShape and *.fdData ). The field import/export stream contains the boundary data, A/B lines, curved track lines, and circle tracks for a specific field. Each spatial item present in the file will refer to a shape file that contains the actual spatial data. Access to the guidance lines stored in this target stream requires an EIC SDK license. Note: The GS2 1800 display does not support headland boundaries. It is possible to export headland boundaries to the card via EIC, but the GS2 1800 will not read them.
4.1.7 Field Export The field export stream encapsulates a file named ExportOnly.SpatialCatalog . This stream also encapsulates a set of spatial data files ( *.fdShape and *.fdData ).
Deere & Company Confidential and Proprietary
Page 26 of 93
IVS Product Family EIC Developer’s Guide
This target stream contains the prescription layers, reference layers (aerial images) and variety locator layers for a specified field. Each spatial layer in the file will refer to a paired set of files (*.fdShape and *.fdData ) that contain the actual spatial information. Note: The GS2 1800 display does not support prescriptions, aerial images, background images or variety locators so access to this stream is prohibited by the GS3BmodelFactory class.
4.1.8 Field Flag The field flag stream encapsulates a file named [flag-ID].SpatialCatalog . This stream also encapsulates a set of spatial data files (*.fdShape and *.fdData ). This target stream contains flag layers. Flags are used to mark points or sections on the field of special consideration. An example of a flagged point is a rock pile the farmer wants to avoid. Each flag is represented as a spatial layer within the target stream for a specific farm field. Each spatial layer in the file will refer to a paired set of files (*.fdShape and *.fdData ) that contain the actual spatial information.
4.1.9 Fuel Diary The fuel diary stream encapsulates a file named [machine-ID].bpf. This target stream contains information relating to fuel usage for a specific machine. The display will create this file when all of the following conditions are met:
There is a Business Pack key available (managed by the display). The operator has a machine name selected on the display (list provided by information provided in the setup stream). When the operator adds, modifies or deletes a fuel diary ticket, there is no existing fuel diary file for the selected machine name.
The display will open or create this file to store fuel diary ticket information for the desktop system to read. Once EIC imports the contents of the fuel diary in to the desktop system, this target stream may be deleted. The values that are shown on the display screen are stored in an embedded database, so removing this file from the CF card will not affect operation in the field.
4.1.10 Global The global stream encapsulates a file named Global.SpatialCatalog . This stream also encapsulates a set of spatial data files (*.fdShape and *.fdData ). This target stream contains information about curved track lines, A/B lines, and circle tracks. A global stream is not tied to a specific field; it can be applied to any field. Access to this target stream requires an EIC SDK license.
4.1.11 Global AB Curve The global AB curve stream encapsulates a file named ABCurves.SpatialCatalog . This stream also encapsulates a set of spatial data files ( *.fdShape and *.fdData ).
Deere & Company Confidential and Proprietary
Page 27 of 93
IVS Product Family EIC Developer’s Guide
This target stream contains information about A/B curves. A global AB curve stream is not applied to a specific field; it can be applied to any field. Access to this target stream requires an EIC SDK license.
4.1.12 Surface Water Management The surface water management stream encapsulates a file named WaterManagement.SpatialCatalog. This stream also encapsulates a set of spatial data files (*.fdShape and *.fdData ). This target stream contains information about best fit levees, ditch tracks, levee tracks, survey data, drainage maps, depression maps, ditch data, benchmark elevation data, drain designs, and contour data. Access to this target stream requires an EIC SDK license.
4.1.13 Tank Fill Calculator The tank-fill calculator (TFC) stream encapsulates a file named [TFC session-ID].bpc. The display will create this stream when the TFC session is ended on the display (operator presses the ‘Stop Mix’ button). The TFC stream will not be reopened by the display to append data. A TFC session is a collection of tanks with the same products/components. The products rates may vary within a TFC session. A new product or product mix will initiate the creation of a new TFC session. Each sprayed tank contained in the TFC stream contains a collection of one or more task region IDs. These IDs can be used to reference the task region information contained in the log stream. Each tank is referenced to one or more task regions so the desktop can see which tank was used on which area. A tank can belong to one or more task regions but one task region can not belong to multiple tanks. Once EIC imports the contents of the TFC session in to the desktop system, this target stream may be deleted.
4.1.14 Transport Log The transport log stream encapsulates two sources of data on the data card as follows:
A file with a .bpt extension. This file contains information regarding transport tickets and session information. A file with a .bpb extension. This file contains data that changes from point to point including fuel consumption, speed and distance traveled.
The display will create this stream if the Business Pack Key (managed by the display) is available and the operator has selected a machine name from the list. The list on the display will be populated with information provided in the setup stream. A new file will be created for each transport task session. The following conditions determine when a new session begins:
The operator changes client or farm information. The operator selects another job. The operator completes a product transport task.
Deere & Company Confidential and Proprietary
Page 28 of 93
IVS Product Family EIC Developer’s Guide
After each power cycle on the display, a new transport log stream will be created for the current session. Therefore, it will be possible to have multiple streams for the same transport session. Each stream will include the session configuration so that the desktop application is able to process each of the files separately if necessary. A transport log stream has no direct relationship to a field. There is an optional field reference, however, within the transport ticket location (see ItransportTicket.UserDefinedLocation). This is used to define which field a product was loaded or unloaded. Once EIC imports the contents of the transport log stream in to the desktop system, this target stream may be deleted.
4.2 Spatial Data Files All spatial target streams consist of one XML file and one or more sets of spatial data files (*.fdShape and *.fdData ). The XML file contains the metadata/attributes for the spatial streams while the spatial data files contain the spatial information.
4.2.1 Spatial Data File Information Spatial data files each consist of a pair of files: Table 6 EIC Spatial Files File Extension
Description
*.fdShape *.fdData
Contains the geometry information Contains the data associated with each element of the geometry
Shape-based files allow a data row to be assigned to each shape. The order that shapes appear in the *.fdShape file matches the order of the data rows in the *.fdData file. For example, data describing the nth shape in the *.fdShape file can be found at row n of the *.fdData file. Important: In the case of a polygon, point, or line geometry, the elements are called shapes. However, with raster grids the elements are called cells.
The EIC spatial data is modeled after industry-standard GIS shape data. The hierarchy of EIC spatial data is Layer, Shape, Part, and Point. Table 7 Spatial Data Hierarchy Data Hierarchy
Description
Layers
Layers are a collection of shapes.
Shapes
Shapes can be points, lines or polygons. Shapes contain parts.
Parts
Parts contain points. Parts cannot directly have attribute data associated with them. Parts can only indirectly reference data via the shape to which they belong.
Points
Points are X, Y locations; in this case, longitude and latitude. Points cannot directly have attribute data associated with them.
Deere & Company Confidential and Proprietary
Page 29 of 93
IVS Product Family EIC Developer’s Guide
Data Hierarchy
Description
Points can only indirectly reference data via the shape to which they belong.
4.2.2 Raster Grids A grid is a network of rows and columns covering the entire field. In this context, every cell in the grid will have a value. The value can be a prescription rate, variety type or color of an aerial image depending on what the grid is b eing used for. The cell width and height of the grid are the same throughout the field. In the case of raster grids, each row of the data file will be a cell. For a raster grid with 10 columns and 5 rows, the first 10 rows (0-9) of the data file contain the data for all 10 cells of the first row of the raster grid starting from left to right. The next 10 rows (10-19) of the data file are for the second row of the raster grid. The rows of the raster grid start at the top and work towards the bottom. A 10 x 5 raster grid would have 50 rows of data in the data file. If multiple data planes are required or used for the raster grid then each data plane will have a corresponding column in the data file. A 10 x 5 raster grid with two data plans will have 100 data elements. When the GreenStar 2 system needs to know the data associated with any location, (what rate of fertilizer to apply, or what crop variety is being planted), it simply subtracts the start location coordinates on the grid and divides by cell size. This identifies which row and column of the grid the location is in. The GreenStar 2 system prefers this format to the more common vector format (where areas of similar values are delineated using a polygon) because using this format is faster. The reason this format is faster is that the calculations involved identifying which polygon a point is in takes a long time because the polygons are irregular.
4.3 Original GreenStar Target Streams The following sections describe the information within each GSD4 target stream, the EIC-specific format of that data, how the information is enumerated, and the data file associated with that target stream.
4.3.1 GSD4 Data File Formats The older Original GreenStar display (GSD4) system provides seven different data file formats. Each of these data file formats has an associated data stream, called a target stream. Each GSD4 target stream is a one-way data stream, either moving data from, or moving data to, files stored on a PCMCIA data card used by the GSD4 Mobile Processor. Table 8 GSD4 Data Formats File Format
Description
GreenStar Setup GreenStar Boundary
Transfer Type Export to data card Import from data card
GreenStar
Import from
Log file information collected during field operations.
Setup file that is created using the desktop software and exported to the data card. Boundary information including latitude, longitude, and timestamp.
Deere & Company Confidential and Proprietary
Data File Extension .GSS
.GSB .GSD
Page 30 of 93
IVS Product Family EIC Developer’s Guide
File Format
Field Doc GreenStar Variety Locator GreenStar Prescription GreenStar Yield GreenStar Guidance
Transfer Type data card Export to data card
Export to data card Import from data card Import from data card
Description
Data File Extension
Information about the crop varieties that will be harvested. This file is created by the desktop software based on crop varieties found in the planting season log file (GreenStar Field Doc). A prescription file that is created using the desktop software and exported to the data card. Crop yield information collected in the field.
.VPX
Guidance information, including AB lines and circle tracks.
.DAT
.GSP .GSY
4.3.2 GSS (OriginalGreenStar) The GSS target stream contains all the setup information for the GSD4 GreenStar display system. This data stream is represented by one physical file with a *.GSS extension. This stream is export-only. The GSS target stream is enumerated in the EIC namespace as: JohnDeere.EIC.Models.GSx.Enums.TargetStreamType.OriginalGreenStar
4.3.3 GSB (GreenStarBoundary) The GSB target stream is contains boundary information (including latitude, longitude and a boundary timestamp) collected by the GSD4 GreenStar display. This stream is represented by one physical file with a *.GSB extension. This stream is import-only. The GSB target stream is enumerated in the EIC namespace as: JohnDeere.EIC.Models.GSx.Enums.TargetStreamType.GreenStarBoundary.
4.3.4 GSD (GreenStarFieldDoc) The GSD target stream contains log file information recorded during field operations. This stream is represented by one physical file with a *.GSD extension. This stream is import-only. The GSD target stream is enumerated in the EIC namespace as: JohnDeere.EIC.Models.GSx.Enums.TargetStreamType.GreenStarFieldDoc.
4.3.5 VPX (OriginalGreenStarVarietyLocator) The VPX or VarietyLocator target stream contains information about the crop varieties that will be harvested. This stream is represented by one physical file with a *.VPX extension. This stream contains the crop varieties that h ave been planted in a given field. This information is then used by the GreenStar system during harvest to identify the crop varieties in each field. This stream is export-only. The VPX target stream is enumerated in the EIC namespace as: JohnDeere.EIC.Models.GSx.Enums.TargetStreamType.OriginalGreenStarVariet yLocator.
4.3.6 GSP (OriginalGreenStarPrescription) The GSP target stream contains information about any prescriptions that will be applied to a field. This stream is represented by one physical file with a *.GSP extension. This stream is export-only.
Deere & Company Confidential and Proprietary
Page 31 of 93
IVS Product Family EIC Developer’s Guide
The GSP target stream is enumerated in the EIC namespace as: JohnDeere.EIC.Models.GSx.Enums.TargetStreamType.OriginalGreenStarPrescr iption.
4.3.7 GSY (GreenStarYield) The GSY target stream contains crop yield information that has been collected in the field. This stream is represented by one physical file with a *.GSY extension. This stream is import-only. The GSY target stream is enumerated in the EIC namespace as: JohnDeere.EIC.Models.GSx.Enums.TargetStreamType.GreenStarYield.
4.3.8 Guidance (GreenStarGuidance) The guidance target stream contains spatial guidance information, including AB lines and circle tracks, for the GSD4 GreenStar display. This stream is represented by one physical file named either ablines.dat or circles.dat. This stream is import-only. The guidance target stream is enumerated in the EIC namespace as: JohnDeere.EIC.Models.GSx.Enums.TargetStreamType.GreenStarGuidance.
The sample project GSD4/SampleStreams.csproj , located in the sample applications solution, is an example of processing GSD4 target streams.
5 Creating and Using Target Streams Creating, reading, writing, verifying and eventually deleting target streams are essential functions of any EIC application. All card data is obtained through the EIC target streams and their respective data structures. Creating target streams appropriate for each GreenStar display is done with EIC model factories. Additionally, you can use the abstract CardModel class to retrieve the target streams from the file system, where T is the type of target stream. The target stream type is either RcdTargetStream or GsxTargetStream. These techniques are illustrated in the next section, Developing an EIC Application. All target streams, both RCD and GSD4, inherit from ITargetStream, making generic processing possible in your application. The general process you will use to access and process target streams is: 1) Create model factory, 2) Create card model, 3) Create or get stream of choice, 4) Manipulate stream, 5) Export or validate stream. The following code demonstrates how to use the GS2 target stream classes. GS2ModelFactory factory = GS2ModelFactory.Create(cardPath, _hostID); for (int i = 0; i < count; i++) { RcdCardModel model = factory.CreateCardModel(); Debug.Assert(DirUtil.AreSamePaths(model.CardPath, cardPath));
Deere & Company Confidential and Proprietary
Page 32 of 93
IVS Product Family EIC Developer’s Guide
foreach (TargetStreamType type in Enum.GetValues(typeof (TargetStreamType))) { Ilist streams = model.GetStreams(type); foreach (IrcdStream stream in streams) { // The following properties will be populated even // without importing the stream. Debug.Assert(!string.IsNullOrEmpty(stream.Alias)); Debug.Assert(stream.CanExport || stream.CanImport); Debug.Assert(DirUtil.AreSamePaths(model.CardPath, cardPath)); Debug.Assert(stream.IsExported); Debug.Assert(!stream.IsImported); Debug.Assert(!string.IsNullOrEmpty(stream.Name)); TestStream(stream); // You must use the same card model object to delete // the stream as the one that created it. Otherwise, // you’ll get an error saying that the model could // not find the stream. If (doDelete) { IrcdStream streamToDelete = stream; if (streamToDelete.CanDelete) { model.Delete(ref streamToDelete); Debug.Assert(streamToDelete == null); } } } } }
The sample project GS2/SampleStreams.csproj located in the SampleApps solution demonstrates how to process GS2 target streams. In a ddition, the sample project Common/SampleGUI.csproj located in the same solution demonstrates how a typical desktop application might integrate the EIC API.
5.1 Reading and Writing Target Streams All target streams implement the JohnDeere.EIC.Models.IImport and JohnDeere.EIC.Models.IExport interfaces. These interfaces provide a contract for reading and writing (Import/Export) data in a consistent manner. Original GreenStar (GSD4) streams are write-only or read-only; they are one way data streams. By contrast, most GreenStar 2 (GS2 2600/GS2 1800) streams are both read and write. Since not all target streams can perform both import and export operations, your application can inspect the properties JohnDeere.EIC.Models.Iimport.CanImport and JohnDeere.EIC.Models.Iexport.CanExport to determine whether the stream is import only or export-only. The code shown below demonstrates how a target stream can be tested whether it can read or write data. private static void TestStream(IRcdStream stream)
Deere & Company Confidential and Proprietary
Page 33 of 93
IVS Product Family EIC Developer’s Guide
{ bool validate = false; bool merge = false; if (stream.CanImport) { // Validation, by default, is turned off during import. // Merging, by default, is turned off during import. // Here, we explicitly turn off merging and validation. stream.Import(merge, validate); try { VerifyObjects(stream); if (stream.CanExport) { if (stream.IsValid) { // Validation, by default, is turned on during export. // Merging, by default, is turned off during export. // Here, we explicitly turn off merging and validation. stream.Export(merge, validate); } } } finally { // Releases memory acquired during import. // This method only indicates that memory may freed // by the runtime garbage collector. There is no // guarantee when the memory will actually be collected. stream.Release(); } } }
5.1.1 Backward Write Compatibility Backward write compatibility is available for all RCD data streams (e.g. GS2 2600, GS3 2630, etc). Currently, the EIC API only allows writing back one display version. For instance, if the current version of the GS2 2600 is 2.7, then EIC will allow writing target stream data to display version 2.6. The following example code shows how to use the EIC APIs to write an older version of the GS2 2600 setup file.
Deere & Company Confidential and Proprietary
Page 34 of 93
IVS Product Family EIC Developer’s Guide
static void Main(string[] args) { var factory = GS2ModelFactory.Create(cardPath, HostID); var setupStream = SetupHelper .CreateMasterSetup(factory); var currentDisplayInfo = setupStream.CurrentDisplayInfo; var previousDisplayInfo = DisplayInfo.GetPreviousDisplayInfo(currentDisplayInfo.DisplayName); DoExport(setupStream, currentDisplayInfo); DoExport(setupStream, previousDisplayInfo); } private static void DoExport( ITargetStream stream, DisplayInfo displayInfo ) { // Make sure that the target stream supports the export operation. if (stream.CanExport && stream.SupportsExport(displayInfo)) { Console.WriteLine(Exporting to display version {0}.", displayInfo.Version); stream.Export(displayInfo); } else { Console.WriteLine( "Stream '{0}' does not support the backward export operation.", stream.Name); } }
5.2 Validating Target Streams All target streams implement the JohnDeere.EIC.Models.IValidate interface. This interface provides a contract for validating data within the target stream. In other words, any class that implements the IValidate interface must provide a method for validation. Since not all target streams can perform the validation operation, the JohnDeere.EIC.Models.Ivalidate.CanValidate property is available for inspection by the desktop application. The code shown below demonstrates how a target stream can validate itself. ICollection errors; GS2ModelFactory factory = GS2ModelFactory.Create(cardPath, _hostID); ISetupStream file = factory.CreateSetupStream(); if (file.CanValidate) { file.Setup = factory.CreateSetup(); Assert.IsTrue(file.IsValid); // Create a crop where crop weight is missing. ICrop crop = factory.CreateCrop(“Canola”, 1, 1); file.Setup.Crops = new List(new Icrop[] { crop }); // Make sure it doesn’t validate. Assert.IsFalse(file.IsValid); file.Validate(out errors); }
Deere & Company Confidential and Proprietary
Page 35 of 93
IVS Product Family EIC Developer’s Guide
5.3 Copying Target Streams All target streams implement the ItargetStream interface. The ItargetStream interface declares two methods:
Copy(string cardPath), Copy(string cardPath, bool overwrite).
5.4 Target Stream Capabilities The following table summarizes the capabilities of each GSD4/RCD target stream. Table 9 Target Stream Capabilities Model Type
Target Stream Type
Original GreenStar
GSB GSD GSP GSS GSY Guidance Variety Locator Field AB Curve Field Import/Export Field Export Field Flag Global Global AB Curve Log Setup Surface Water Management Field AB Curve
GreenStar 2 2600
GreenStar 3 2630
GreenStar 2 1800
Import
Export
Validate
Copy
Field Import/Export Field Export Field Flag Global Global AB Curve Log Setup Surface Water Management Field AB Curve Field Import/Export Field Export Global Global AB Curve Setup
6
Developing an EIC Application The process of developing an EIC application can be summarized in the following steps:
Reference the appropriate EIC libraries in your development environment. Determine the card path and GreenStar model type of the data you are accessing.
Deere & Company Confidential and Proprietary
Page 36 of 93
IVS Product Family EIC Developer’s Guide
Create the appropriate model factory class. Create the appropriate target streams for your application.
At this point of development, your application is ready to import and export target stream data.
6.1 Reference the Appropriate EIC Libraries Create a new project in your development IDE and add the following EIC library references to your project:
JohnDeere.EIC.Models.dll JohnDeere.EIC.ModelsImpl.dll JohnDeere.EIC.SpatialTools.dll JohnDeere.RepresentationReference.dll JohnDeere.RepresentationSystem.dll JohnDeere.UnitSystem.dll
Important: The libraries shown below are intended for internal use by EIC components. Do not directly use the types exported by these assemblies.
JohnDeere.EIC.SaveToCard.dll JohnDeere.UnitSystemBrowser.dll JohnDeere.RepresentationSystemBrowser.dll JohnDeere.EIC.SpatialControls.dll JohnDeere.EIC.Tools.dll BinaryProcessor.dll BinaryTools.dll SavetoCard.dll SAVETOCARDLib.dll Microsoft.ExceptionMessageBox.dll
6.1.1 Required RCD Namespaces For most RCD applications you will load a core set of namespaces:
JohnDeere.EIC.Models.RCD JohnDeere.EIC.Models.RCD.Enums JohnDeere.EIC.Models.RCD.Log JohnDeere.EIC.Models.RCD.Setup JohnDeere.EIC.Models.RCD.Spatial JohnDeere.EIC.ModelsImpl.Factories JohnDeere.RepresentationSystem JohnDeere.RepresentationReference JohnDeere.UnitSystem
These namespaces contain core RCD interfaces and classes. For other purposes, as illustrated in the sample code provided with this SDK, you will use additional RCD resource libraries. In C#, resources are called with the using statement as shown: using JohnDeere.EIC.Models.RCD.Log;
The table below shows the required namespaces for a specific functional operation within EIC.
Deere & Company Confidential and Proprietary
Page 37 of 93
IVS Product Family EIC Developer’s Guide
Table 10 Required Namespaces for a Specific Functional Operation Functional Requirement
Namespaces
Handling English and Metric Units of Measurement
JohnDeere.RepresentationSystem JohnDeere.RepresentationReference JohnDeere.UnitSystem
Accessing Setup Data
JohnDeere.EIC.Models.RCD JohnDeere.EIC.Models.RCD.Enums JohnDeere.EIC.Models.RCD.Setup JohnDeere.EIC.ModelsImpl.Factories
Accessing Log File Data
JohnDeere.EIC.Models.RCD JohnDeere.EIC.Models.RCD.Enums JohnDeere.EIC.Models.RCD.Log JohnDeere.EIC.ModelsImpl.Factories JohnDeere.RepresentationSystem JohnDeere.RepresentationReference JohnDeere.UnitSystem
Accessing Spatial Data
JohnDeere.EIC.Models.RCD JohnDeere.EIC.Models.RCD.Enums JohnDeere.EIC.Models.RCD.Setup JohnDeere.EIC.Models.RCD.Spatial JohnDeere.EIC.ModelsImpl.Factories JohnDeere.EIC.SpatialTools JohnDeere.RepresentationSystem JohnDeere.RepresentationReference JohnDeere.UnitSystem
Accessing Business Pack Data
JohnDeere.EIC.Models.RCD JohnDeere.EIC.Models.RCD.ContractorDoc JohnDeere.EIC.Models.RCD.Enums JohnDeere.EIC.Models.RCD.Log JohnDeere.EIC.ModelsImpl.Factories JohnDeere.RepresentationSystem JohnDeere.RepresentationReference JohnDeere.UnitSystem
6.1.2 Required GSD4 Namespaces For most GSD4 applications you will load a core set of namespaces:
JohnDeere.EIC.Models.GSx JohnDeere.EIC.Models.GSx.Enums JohnDeere.EIC.Models.GSx.Export JohnDeere.EIC.ModelsImpl.Factories JohnDeere.EIC.SpatialTools JohnDeere.EIC.SpatialTools.GIS JohnDeere.RepresentationSystem JohnDeere.UnitSystem JohnDeere.RepresentationReference
Deere & Company Confidential and Proprietary
Page 38 of 93
IVS Product Family EIC Developer’s Guide
6.2 HostID, AppID, Card Path, and Model Type All instances of your application must have a unique shared ID. This ID, of type System.Guid, uniquely identifies your software application within the EIC community. Typically, the Host ID which is passed as an argument to the GSD4ModelFactory, GS2ModelFactory and GS3BmodelFactory class creators is used as this unique identifier. However, for some companies, the Host ID is used to identify a single node within a distributed software system. This means that the Host ID will be different for each installation of the software application. In this case, an alternate argument called the App ID may be passed to the GSD4ModelFactory, GS2ModelFactory and GS3BmodelFactory class creators. Please see the documentation of these class creators in the EIC SDK Documentation.chm API help file for more information. Your application must also determine the location of the card data. This location, known as the card path, is the location of the data on the user’s system (drive letter or card reader). Private static readonly Guid _hostID = new Guid(“{E2FDDAE0-3C59-42C6-BFD8ED50D027CF5D}”); string cardPath = “X:\ DataCardLocation” ;
The appropriate folder structure on the data card itself is created by either the GreenStar system or the EIC application itself. The actual card path will probably be supplied by the user of your application. After your application acquires this information, knowing the type of card data (GSD4 or RCD) will enable you to know which model factory is appropriate to create and which target streams you will be using. Note: For the GSD4 system the card path will be the root of the file system on the card , while for the GS2 system the card path will be : \RCD\.
6.3 Create an Appropriate Model Factory Based on the card path and model type information gathered in the previous step, you can now create the appropriate model factory class. The following code illustrates creating a model factory class. String cardPath = GetCardPath(); // pseudocode bool isGS2Data = IsGS2Data() ; // pseudocode if (isGS2Data) { GS2ModelFactory gs2 = GS2ModelFactory.Create(cardPath, _hostID); } else { Debug.Assert(IsGSD4Data() ); // pseudocode GSD4ModelFactory gd4 = GD4ModelFactory.Create(cardPath, _hostID); }
6.4 Create the Appropriate Target Streams After the model factory is created, you can create the appropriate target streams for your application. These streams can be created manually using the factory object from the previous step, or you can create the streams using the card model object, which retrieves the existing target streams on the file system.
Deere & Company Confidential and Proprietary
Page 39 of 93
IVS Product Family EIC Developer’s Guide
The following code illustrates the creation of target streams. In the first example, a GS2 log stream is created using the card model object; in the second example, a setup target stream is created using the manual method. GS2ModelFactory factory = GS2ModelFactory.Create(cardPath, _hostID); // Example 1: using the card model to create a log stream. RcdCardModel model = factory.CreateCardModel(); foreach (IlogStream stream in model.GetStreams(TargetStreamType.Log)) { stream.Import(); // Do something with the stream. Stream.Release(); } // Example 2: manual target stream creation. IsetupStream stream; try { stream = CreateMasterSetup(factory); stream.Export(); } catch (Exception x) { Console.WriteLine(x); }
6.4.1 The CardModel Class The abstract CardModel class is contained in the JohnDeere.EIC.Models namespace. This class serves as a repository for target streams found on the data card file system. When an RcdCardModel object, which derives from CardModel, is initially created, the Refresh() method is called and all target streams are cached in memory. In order to retrieve target streams that are added to the file system after the object is created, Refresh() must be called again the re-cache the target streams. The following code illustrates creating a GS2 model card factory, then creating a card model class, then loping through the target streams on the data card. GS2ModelFactory factory = GS2ModelFactory.Create(cardPath, _hostID); RcdCardModel model = factory.CreateCardModel(); foreach (IlogStream stream in model.GetStreams(TargetStreamType.Log)) { stream.Import(); }
6.5 Read or Write to the Appropriate Target Streams After target streams are created, you can call the Import() method, illustrated in the code example above, to read data from a target stream. Calling the Export() method writes data stored in the target stream to the card path, as illustrated above.
Deere & Company Confidential and Proprietary
Page 40 of 93
IVS Product Family EIC Developer’s Guide
6.6 Deploying an EIC Application The following EIC libraries must be deployed with your desktop application. The libraries listed above should be located in a common directory within the searchable path of your desktop application.
JohnDeere.EIC.Models.dll JohnDeere.EIC.ModelsImpl.dll JohnDeere.EIC.SaveToCard.dll JohnDeere.EIC.SpatialTools.dll JohnDeere.EIC.Tools.dll JohnDeere.RepresentationReference.dll JohnDeere.RepresentationSystem.dll JohnDeere.UnitSystem.dll SavetoCard.dll SAVETOCARDLib.dll
The table below shows each deployable EIC library along with its dependencies. Table 11 Deployable Library Dependencies
Deployable Component JohnDeere.EIC.Models.dll
Language C#
JohnDeere.EIC.ModelsImpl.dll JohnDeere.EIC.ModelsI mpl.dll
C#
JohnDeere.EIC.SaveToCard.dll JohnDeere.EIC.SaveToCar d.dll
C#
JohnDeere.EIC.SpatialTools.dll JohnDeere.EIC.SpatialT ools.dll
C#
JohnDeere.EIC.Tools.dll JohnDeere.RepresentationReference.dll JohnDeere.Representati onReference.dll
C# C#
JohnDeere.RepresentationSystem.dll JohnDeere.Representati onSystem.dll
C#
JohnDeere.UnitSystem.dll SavetoCard.dll
C# Unmanaged C++
Deere & Company Confidential and Proprietary
Dependencies {.NET 2.0 System Libraries} JohnDeere.EIC.SpatialTools.dll JohnDeere.EIC.Tools.dll JohnDeere.RepresentationReference.dll JohnDeere.RepresentationSystem.dll JohnDeere.UnitSystem.dll {.NET 2.0 System Libraries} JohnDeere.EIC.Models.dll JohnDeere.EIC.SaveToCard.dll JohnDeere.EIC.SpatialTools.dll JohnDeere.EIC.Tools.dll JohnDeere.RepresentationReference.dll JohnDeere.RepresentationSystem.dll JohnDeere.UnitSystem.dll {.NET 2.0 System Libraries} JohnDeere.EIC.Models.dll JohnDeere.EIC.Tools.dll SAVETOCARDLib.dll {.NET 2.0 System Libraries} JohnDeere.EIC.Tools.dll JohnDeere.RepresentationReference.dll JohnDeere.RepresentationSystem.dll JohnDeere.UnitSystem.dll {.NET 2.0 System Libraries} {.NET 2.0 System Libraries} JohnDeere.RepresentationSystem.dll JohnDeere.UnitSystem.dll {.NET 2.0 System Libraries} JohnDeere.UnitSystem.dll {.NET 2.0 System Libraries} Microsoft Foundation Classes (MFC) mfc42.dll
Page 41 of 93
IVS Product Family EIC Developer’s Guide
SAVETOCARDLib.dll
C#
Microsoft C Runtime 6.0 msvcrt.dll Microsoft C++ Runtime 6.0 msvcp60.dll Microsoft OLE 2.4 for Windows NT and Windows 95 Operating Systems asycfilt.dll ole32.dll oleaut32.dll olepro32.dll stdole2.tlb Microsoft Component Category Manager comcat.dll {.NET 2.0 System Libraries}
6.6.1 Additional Requirements The EIC SDK requires .NET Framework 2.0 with SP1 be installed on the local machine. For more information about this Microsoft product, see this Microsoft link: (http://www.microsoft.com/downloads/details.aspx?FamilyID=0856EACB-4362-4B0D8EDD-AAB15C5E04F5&displaylang=en)). 8EDD-AAB15C5E04F5&displaylang=en As mentioned earlier in the installation section, section, if your application writes to GSD4 setup files, you must register the file SavetoCard.dll in code or the user must register the library manually. A user registers this library by performing performing the following procedure: 1. Open a command prompt 2. Input the following command: {system_path}\regsvr32.exe {eic_path}\SavetoCard.dll where system_path is the location of regsvr32.exe and eic_path is the location of the EIC SDK on your local computer. 3. Press Enter . Note: Unlike earlier versions of the EIC SDK, this version does not use application domains to load specific file-read and file-write classes. This means that if your desktop application changes the Environment.CurrentDirectory setting, the functionality of your EIC application will not be affected.
6.7 Error Handling Since EIC is designed to be a lightweight component with little impact on the software application using the EIC libraries, EIC has no tracing or logging capabilities. This minimizes performance impact on EIC-enabled applications by limiting I/O (input/output) overhead. The EIC libraries are written in C# (see ECMA-334 ECMA-334)) and utilize the Microsoft .NET 2.0 © Framework . The C# language can create exception objects which derive from the System.Exception class. These exception objects can be thrown from the EIC framework and then can be handled by the calling application by using a catch or a finally statement. The software application application that catches these exceptions can handle the error in a variety of ways, such as recording the error in an application event log.
Deere & Company Confidential and Proprietary
Page 42 of 93
IVS Product Family EIC Developer’s Guide
6.7.1 Exceptions EIC utilizes most of the exceptions defined within the Microsoft .NET Framework Version 2.0. Whenever an illegal condition is encountered, EIC will will create the appropriate exception object and throw it to the incorporating application for handling. The exception that EIC first catches will be provided in the new exception object as the inner exception. This allows EIC to maintain maintain the exception tree and the inner call stack. stack. EIC will provide as much information about the illegal condition condition as possible. This information is conveyed through the System.Exception.Message property. Exceptions thrown by any API within the EIC are documented in the Windowscompatible help file distributed with the EIC SDK.
6.7.2 Custom Exceptions In some cases, the Microsoft .NET 2.0 Framework will not contain the appropriate exception type needed by EIC. When this situation occurs, EIC defines defines its own custom exception type. This type inherits from the System.Exception type. This type will be marked with the [Serializable] attribute. There is no need to add custom serialization logic when this attribute is included, since marking the custom exception with the [Serializable] attribute allows the exception to be automatically serialized or de-serialized across application domains. Important: It is your responsibility as the developer of your application to handle any errors produced by the EIC libraries and process them accordingly.
6.7.3 Re-thrown Exceptions EIC will try to avoid avoid re-throwing exceptions when possible. However, if EIC must rethrow an exception, the exception argument will be omitted from the throw statement so that the original call stack is preserved. The code example below illustrates a bad method and a good method for re-throwing exceptions. Try { } catch ( catch (Exception Exception x) x) { // Bad method throw x; throw x; } try { } catch ( catch (Exception Exception x) x) { // Good method throw;; throw }
Deere & Company Confidential and Proprietary
Page 43 of 93
IVS Product Family EIC Developer’s Guide
6.7.4 Exception Handling in Threads EIC sometimes creates application threads to support parallel processing. All threads created by EIC libraries will have their own top level exception handler. No exceptions will be thrown from these threads since this is an undefined behavior within the .NET 2.0 Framework. If an exception occurs in one of these threads, it will be handled in the thread and then passed back to the main thread. Once the exception is passed back to the main thread, it can then be thrown to the incorporating application.
7 EIC Application Guidelines and Examples The following best-practice guidelines should be followed when developing an EIC application:
All mutable global data accessed across threads should be locked appropriately. EIC is not designed to be thread-safe. Avoid unmanaged code in all circumstances. This is a dangerous practice that could cause unwanted side effects. Do not throw exceptions within delegate callbacks such as JohnDeere.EIC.Models.Delegates.TaskStatusUpdater . Remember that all RCD property collections are read-only. See note above.
7.1 Creating an RCD Setup File The setup target stream contains configuration data such as farm, field, machine, and implement details. This information, if pre-set by the operator at the desktop or in the cab, is stored in the setup.fds file read by the display controller. The example below illustrates how to create a setup file using the EIC SDK. GS2ModelFactory factory = GS2ModelFactory.Create(cardPath, _hostID); IsetupStream stream; try { stream = CreateMasterSetup(factory); } catch (Exception x) { Console.WriteLine(x); }
The CreateMasterSetup() method called in the above demonstration code is illustrated below: private static IsetupStream CreateMasterSetup(GS2ModelFactory factory) { IsetupStream stream = factory.CreateSetupStream(); stream.Setup = factory.CreateSetup(); // Initialize the setup data. Stream.Setup.Clients = SetupHelper .CreateClients(factory); stream.Setup.Farms = SetupHelper .CreateFarms(factory, stream.Setup); stream.Setup.Fields = SetupHelper .CreateFields(factory, stream.Setup); stream.Setup.Operators = SetupHelper .CreateOperators(factory); stream.Setup.MachineTypes = factory.CreateOutOfBoxMachineTypes();
Deere & Company Confidential and Proprietary
Page 44 of 93
IVS Product Family EIC Developer’s Guide
stream.Setup.ImplementTypes = factory.CreateOutOfBoxImplementTypes(); stream.Setup.UserDefinedTypes = SetupHelper .CreateUserDefinedTypes(factory); stream.Setup.Crops = SetupHelper .CreateSeedTypes(factory); stream.Setup.ChemicalTypes = factory.CreateOutOfBoxChemicalTypes(); stream.Setup.FertilizerTypes = factory.CreateOutOfBoxFertilizerTypes(); stream.Setup.Chemicals = SetupHelper .CreateChemicals(factory); stream.Setup.Fertilizers = SetupHelper .CreateFertilizers(factory); stream.Setup.Flags = factory.CreateOutOfBoxFlags(); stream.Setup.Sequences = SetupHelper .CreateSequences(factory); stream.Setup.Machines = SetupHelper .CreateMachines(factory); stream.Setup.Implements = SetupHelper .CreateImplements(factory, stream.Setup); stream.Setup.MachineModels = SetupHelper .CreateMachineModels(factory); stream.Setup.ImplementModels = SetupHelper .CreateImplementModels(factory); return stream; }
The helper code contained in SetupHelper.cs (see the provided sample EIC application) creates the various setup objects. Namespace SampleSetup { public static class SetupHelper { public static Ilist CreateClients( GS2ModelFactory factory ) { Iclient client1 = factory.CreateClient(“Client_1”); Iclient client2 = factory.CreateClient(“Client_2”); Iclient client3 = factory.CreateClient(“Client_3”); return new List( new Iclient[] { client1, client2, client3 }); } public static Ilist CreateFarms( GS2ModelFactory factory, Isetup setup ) { Ifarm farm1 = factory.CreateFarm(“Farm_1”, setup.FindClient( “Client_1”)); Ifarm farm2 = factory.CreateFarm(“Farm_2”, setup.FindClient( “Client_2”)); Ifarm farm3 = factory.CreateFarm(“Farm_3”, setup.FindClient( “Client_3”)); return new List( new Ifarm[] { farm1, farm2, farm3 }); } public static Ilist CreateFields( GS2ModelFactory factory, Isetup setup ) {
Deere & Company Confidential and Proprietary
Page 45 of 93
IVS Product Family EIC Developer’s Guide
Ifield field1 = factory.CreateField(“Field_1”, setup.FindFarm( “Farm_1”), CreateFieldArea(1000.0)); Ifield field2 = factory.CreateField(“Field_2”, setup.FindFarm( “Farm_2”), CreateFieldArea(2000.0)); Ifield field3 = factory.CreateField(“Field_3”, setup.FindFarm( “Farm_3”), CreateFieldArea(3000.0)); return new List( new Ifield[] { field1, field2, field3 }); } public static Ilist CreateOperators( GS2ModelFactory factory ) { List operators = new List(); operators.Add(factory.CreateOperator( “Frank”)); operators.Add(factory.CreateOperator( “Lou”)); operators.Add(factory.CreateOperator( “John”)); return operators; } public static Ilist CreateSeedTypes( GS2ModelFactory factory ) { List crops = new List(); crops.Add(CreateSeedType(factory, crops.Add(CreateSeedType(factory, crops.Add(CreateSeedType(factory, crops.Add(CreateSeedType(factory, crops.Add(CreateSeedType(factory, crops.Add(CreateSeedType(factory, crops.Add(CreateSeedType(factory, crops.Add(CreateSeedType(factory, “prcnt”)); crops.Add(CreateSeedType(factory, “prcnt”)); crops.Add(CreateSeedType(factory, crops.Add(CreateSeedType(factory,
“Barley”, 2, 2, 21.77, “kg1bu-1”, 14.0, “prcnt”)); “Canola”, 5, 3, 23.59, “kg1bu-1”, 10.0, “prcnt”)); “Corn”, 173, 6, 25.4, “kg1bu-1”, 15.0, “prcnt”)); “Cotton”, 175, 4, 480.0, “kg1bu-1”, 6.0, “prcnt”)); “Oats”, 11, 7, 14.51, “kg1bu-1”, 14.0, “prcnt”)); “Rape Seed”, 16, 8, 23.59, “kg1bu-1”, 8.0, “prcnt”)); “Rice”, 17, 9, 20.41, “kg1bu-1”, 14.0, “prcnt”)); “Sorghum (milo)”, 21, 10, 25.4, “kg1bu-1”, 13.0, “Soybeans”, 174, 11, 27.22, “kg1bu-1”, 13.0, “Sunflowers”, 40, 12, 11.33, “kg1bu-1”, 9.0, “prcnt”)); “Wheat”, 24, 5, 27.22, “kg1bu-1”, 13.0, “prcnt”));
return crops; } public static Ilist CreateUserDefinedTypes( GS2ModelFactory factory ) { List types = new List(); types.Add(factory.CreateOutOfBoxTillageType(true)); types.Add(factory.CreateOutOfBoxTillagePractice( true)); types.Add(factory.CreateOutOfBoxLoadCartType(true));
Deere & Company Confidential and Proprietary
Page 46 of 93
IVS Product Family EIC Developer’s Guide
types.Add(factory.CreateOutOfBoxResidueManagementType( true)); // The Out-of-Box OtherType must be added if if the child nodes // will also be added. Types.Add(factory.CreateOutOfBoxOtherType()); // parent of following types types.Add(factory.CreateOutOfBoxBalingType()); // child of OtherType types.Add(factory.CreateOutOfBoxConditioningType()); // child of OtherType types.Add(factory.CreateOutOfBoxMiscellaneousType()); // child of OtherType types.Add(factory.CreateOutOfBoxMowingType()); // child of OtherType types.Add(factory.CreateOutOfBoxScoutingType()); // child of OtherType types.Add(factory.CreateOutOfBoxTransportType()); // child of OtherType types.Add(factory.CreateOutOfBoxSoilSamplingType()); // child of OtherType return types; }
And in this way, the remaining elements of the setup stream are created. See the SampleSetup application distributed with this SDK for a more complete example of creating a setup file.
7.2 Creating an RCD Setup File with Product Details If the display is enabled with the Universal Swath Control Pro module, the operator can define additional information for products and seed varieties. Currently there are nine product detail types available for use within EIC. Five are intended to describe products (chemicals and fertilizers) while four are intended to describe seed varieties. Each product can have a minimum of zero and a maximum of twenty-five product details associated. A product may not have two product details with same name and type.
7.2.1 Product Details for Products The following product details are supported for products. The variable representation for each product detail is listed in parentheses. a) b) c) d) e)
BufferZone (vrBufferZone) WaitingTime (vrWaitingTime) Content (vrProductContent) ActiveIngredient (vrActiveIngredientMass) Indication (vrProductLimitIndicationPercent or vrProductLimitIndicationCount)
7.2.2 Product Details for Seed Varieties The following product details are supported for seed varieties. The variable representation for each product detail is listed in parentheses. a) ThousandCropWeight (vrThousandCropWeight) b) PrimingInformation (vrPrimingInfoVolPerMass, vrPrimingInfoMassPerMass, or vrActiveIngredientVolPerVol) c) GerminationRate (vrGerminationRate) d) GmoInformation (not available since it is a Boolean value) The setup stream will have a list of product details known as master collection, added to all the products. Each product will have a product detail key stored referring to master collection.
Deere & Company Confidential and Proprietary
Page 47 of 93
IVS Product Family EIC Developer’s Guide
The example below illustrates how to create a setup file using the EIC SDK. GS2ModelFactory factory = GS2ModelFactory.Create(cardPath, _hostID); IsetupStream stream; try { stream = CreateMasterSetup (factory); } catch (Exception x) { Console.WriteLine(x); }
The CreateMasterSetup() method called in the above demonstration code is illustrated below: private static IsetupStream CreateMasterSetup( GS2Modelfactory factory) { IsetupStream stream = factory.CreateSetupStream (); stream.Setup = factory.CreateSetup(); //Create clients Iclient client = factory.CreateClient(“Client”); stream.Setup.Clients = new List(new Iclient[] { client}); //Create farms Ifarm farm = factory.CreateFarm(“Farm”, client); stream.Setup.Farms = new List(new Ifarm[] { farm }); //Create fields Ifield field = factory.CreateField(“Field”, farm, CreateFieldArea(20.0)); stream.Setup.Fields = new List(new Ifield[] { field }); //Create chemical and fertilizer types stream.Setup.ChemicalTypes = factory.CreateOutOfBoxChemicalTypes(); stream.Setup.FertilizerTypes = factory.CreateOutOfBoxFertilizerTypes(); //Create product details for product type List productTypeDetails = CreateProductTypeProductDetails (factory); //Create product details for seed type List seedTypeDetails = CreateSeedTypeProductDetails (factory); //Create master product details collection which will be assigned to Setup. //Product/seed types will have a collection of product detail keys refering to master product details. List productDetails = new List(); productDetails.AddRange(productTypeDetails); productDetails.AddRange(seedTypeDetails); stream.Setup.ProductDetails = productDetails;
Deere & Company Confidential and Proprietary
Page 48 of 93
IVS Product Family EIC Developer’s Guide
//Create chemical with product type details Ichemical chemical = factory.CreateChemical(“Water ”, stream.Setup.ChemicalTypes[0]); chemical.ProductDetails = productTypeDetails; stream.Setup.Chemicals = new List(new Ichemical[] { chemical }); //Create fertilizer with product type details Ifertilizer fertilizer = factory.CreateFertilizer(“NH3”, stream.Setup.FertilizerTypes[0]); fertilizer.ProductDetails = productTypeDetails; stream.Setup.Fertilizers = new List(new Ifertilizer [] { fertilizer }); //Create crop with seed type details assigned to variety Icrop crop = factory.CreateCrop(1, “Barley”); crop.Weight = new VariableNumber (RepresentationTagList.vrCropWeightVolume, new BaseNumber (21.77, UnitSystemManager .Instance.UnitOfMeasures[ “kg1bu-1”])); IcropVariety cropVariety = factory.CreateCropVariety(“Variety1”); cropVariety.ProductDetails = seedTypeDetails; crop.Varieties = new List(new IcropVariety[] { cropVariety }); stream.Setup.Crops = new List(new Icrop[] { crop }); return stream; }
The CreateProductTypeProductDetails () method called in the CreateMasterSetup () is illustrated below: private static List CreateProductTypeProductDetails ( GS2Modelfactory factory) { //Currently there are 5 product detail types for product type. //1.Buffer Zone //2.Waiting Time //3.Content //4.Indication //5.Active Ingredient List productDetails = new List(); productDetails.Add(factory.CreateProductDetail (“detail1”, ProductDetailType.BufferZone, CreateVariableNum(RepresentationTagList .vrBufferZone,”m”, 10))); productDetails.Add(factory.CreateProductDetail (“detail2”, ProductDetailType.WaitingTime, CreateVariableNum(RepresentationTagList .vrWaitingTime, “hr ”, 20))); productDetails.Add(factory.CreateProductDetail (“detail3”, ProductDetailType.Content, CreateVariableNum(RepresentationTagList .vrProductContent, “prcnt”, 30)));
Deere & Company Confidential and Proprietary
Page 49 of 93
IVS Product Family EIC Developer’s Guide
productDetails.Add(factory.CreateProductDetail (“detail4”, ProductDetailType.Indication, CreateVariableNum(RepresentationTagList .vrProductLimitIndicationPercent, “prcnt”, 40))); productDetails.Add(factory.CreateProductDetail (“detail5”, ProductDetailType. ActiveIngredient, CreateVariableNum(RepresentationTagList .vrActiveIngredientMass, “kg”, 50))); return productDetails; }
The CreateSeedTypeProductDetails () method called in th e CreateMasterSetup () is illustrated below: private static List CreateSeedTypeProductDetails ( GS2Modelfactory factory) { // Currently there are 4 product detail types for seed type. // 1.Thousand Crop Weight // 2.Priming Information // 3.GerminationRate // 4.GmoInformation List productDetails = new List(); productDetails.Add(factory.CreateProductDetail (“detail1”,
ProductDetailType.ThousandCropWeight, CreateVariableNum(RepresentationTagList .vrThousandCropWeight, “lb”, 10))); productDetails.Add(factory.CreateProductDetail (“detail2”, ProductDetailType.PrimingInformation,
CreateVariableNum( RepresentationTagList .vrPrimingInfoMassPerMass, “g1kg-1 ”, 20))); productDetails.Add(factory.CreateProductDetail (“detail3”, ProductDetailType.GerminationRate, CreateVariableNum(RepresentationTagList .vrGerminationRate, “prcnt”, 30))); productDetails.Add(factory.CreateProductDetail (“detail4”,
ProductDetailType.GmoInformation, null)); return productDetails; }
See the SampleProductDetails application distributed with the EIC SDK for a more complete example of creating a setup file with product details.
7.3 Accessing RCD Log File Information The GreenStar system is a sophisticated geospatial app lication, deftly recording equipment state over time and location to the data card in the form of log files. During
Deere & Company Confidential and Proprietary
Page 50 of 93
IVS Product Family EIC Developer’s Guide
operations such as tillage or planting, the GreenStar system gathers both static and dynamic geospatial data and writes it to a log. This version of the EIC SDK has encapsulated the data recorded in GreenStar logs, making it much easier for you to obtain information from GreenStar operations. Each RCD log is composed of two files, a binary *.fdd file and an xml *.fdl file. A new log is created by John Deere equipment whenever any of the following events occur:
The equipment operator begins operations on a different field, The operator changes tasks; for example first tilling, and then spraying. The operator restarts (warm boots) the GreenStar display, The operator inserts a data card into the Original GreenStar Mobile Processor or the GreenStar 1800/2600/2630.
Within each log file, a new log block is created whenever data that is considered relatively static changes. An example of such an event for a harvest combine is a change of crop type. Any time data which rarely changes actually does change, a new log block creation event is triggered, and a new section of the log, a log block, is added to the *.fdl file. The log block data structure is implemented in the EIC SDK as JohnDeere.EIC.Models.RCD.Log.IlogBlock.
7.3.1 RCD Log File Structure A typical desktop GIS application which incorporates EIC features the ability to present data visually in a geographical context. John Deere customers might want to see a display that shows the rate of fertilizer application applied by a sprayer and where it was applied. A combine operator might want to view crop yield data in various parts of the field. In each case, the physical dimensions of the equipment’s effective width , whether that equipment is offset laterally or vertically from the hitch point, and other detail such as direction and speed are important inputs to calculate this information. The RCD log file is composed of blocks of information. Navigating those blocks is key to reading data from a log file target stream. Shown below is the structure of a typical RCD log file.
Deere & Company Confidential and Proprietary
Page 51 of 93
IVS Product Family EIC Developer’s Guide
Figure 4 The RCD Log file structure
A typical RCD log file is composed of:
one RCD log header; one or more RCD log block, each containing: o one configuration block, containing: one setup section, containing farm, field, and operator data; as well as machine and implement types, products, and tasks. one or more equipment configuration sections, each containing: one or more meter data blocks one or more section data blocks one or more navigation reference blocks one dtHitchType data block one log task region, containing: one or more operation data sections. Each operation is composed of : one dtOperationClass section, containing information such o as type of operation (e.g. Application or Harvest); o one or more ProductRef sections, each containing a reference ID to a product; one or more MeterRef sections, each referring to a specific o section ID; if a prescription has been applied, this section will also o contain one or more Prescription Use data sections, containing information about Prescriptions being applied, with reference to application meters; also will contain a dtPrescriptionState block, containing reference to the location of prescription data in the binary file. one or more TaskMeasurements data section. Each section contains: the type of measurement – weather, observation, or o machineinfo reference to the meter which made making the o measurement o one Log Data Block (the binary portion of the log data, from the *.fdd file.
Deere & Company Confidential and Proprietary
Page 52 of 93
IVS Product Family EIC Developer’s Guide
7.3.1.1 Setup The Setup section of the configuration block consists of, at minimum, farm, field, and operator information, as well as machine and machine type, implement type details, equipment, and products.
Figure 5 Configuration Block
7.3.1.2 Equipment Configuration Within the configuration block you might also find one or more equipment configuration sections. As shown below, these sections will contain meter and section data, and may contain navigation references:
Figure 6 Equipment Configuration
Equipment configurations contain meter and section data blocks. As you can see in the illustration below, equipment configurations contain meters which contain section references. A meter might have more than one section reference, because an implement, such as a sprayer, can be composed of several equipment sections which together define the effective width of the working implement in the field. Each spatial point is a track in time across the field.
Deere & Company Confidential and Proprietary
Page 53 of 93
IVS Product Family EIC Developer’s Guide
The following illustration shows a meter (id=105) that references a section (id=54). Sections contain useful data such as towing offsets and width of the section. For an example of using equipment configurations to obtain section data is illustrated in the Method 2 code example in the next chapter of this document.
Figure 7 Meter and Section References
7.3.1.2.1
Equipment configuration & log block
There will always be at least two equipment configurations for each log block in the log file. The first equipment configuration accounts for the “virtual” meters while the second equipment configuration accounts for the “weather” meters. Any subsequent equipment configuration will account for the physical equipment configured on the GS2. This would include any machine and implement configurations. Virtual meters are rates recorded by the GS2 that are not obtained from the CAN-bus. Examples of these meters include application method, application height, seeding depth, tillage practice etc. Both virtual and weather meters are referenced by product application and planting/seeding operations. Harvest operations will contain no virtual meters. Weather meters will be referenced by all operations. There is not an operation mapping done in the GS2 display. All selected equipment is attached to each operation. For example, if you are planting and applying fertilizer (product application), you cannot just associate the implement type planter with the planting operation. The planter would be associated with both operations. Below is a list of the meters that will exist for the various equipment configurations.
Deere & Company Confidential and Proprietary
Page 54 of 93
IVS Product Family EIC Developer’s Guide
Operation Product Planting/Seeding Product Application Planting/Seeding (Implement Application (Implement Combine Cotton SPFH (Virtual) Detected) (Virtual) Detected) Harvest Harvest Harvest Tillage Equipment Config #1 Application Method x x Application Height x x Application Rate x Seeding Tillage Practice x x Seeding Depth x x Seeding Rate x Tillage Depth x
Equipment Config #2 Humidity Meter Temp Meter Wind Speed Meter Wind Direction Meter Sky Condition Meter Soil Moisture Meter Soil Temp Meter Fuel Rate Meter Vehicle Speed Meter
Equipment Config #3 Application Rate Seeding Rate Mass Flow Moisture Length Of Cut Innoculant Rate
x x x x x x x x x
x x x x x x x x x
x x x x x x x x x
x x x x x x x x x
x x x x x x x x x
x x x x x x x x x
x x x x x x x x x
x x
x
x x x x
x x x x x x x x x
x x
7.3.1.3 Meters Each meter section in an equipment configuration block will have an ID and either a target, measured, metered, or control element depending on the type of meter on the equipment. In addition, each element will be either a defined type (JohnDeere.RepresentationSystem.DefinedTypeValue) or a variable representation (JohnDeere.RepresentationSystem.VariableNumber) value. A defined type, e.g. dtSoilMoisture, is a string and enumerated by the John Deere representation system (JohnDeere.RepresentationSystem.dll and JohnDeere.RepresentationReference.dll ). For instance, dtSoilMoisture can be dtDry or dtWet. A variable representation value is numeric, but what that number means depends on the unit of measurement representation system in use. For instance a vrTemperature value could be in Celsius or Fahrenheit, depending on the representation system
Deere & Company Confidential and Proprietary
Page 55 of 93
Other
x x x x x x x x x
IVS Product Family EIC Developer’s Guide
(uomEnglish or uomMetric) and the units of measurements being used. See EIC Help for more information about units of measurement system representation.
Figure 8 Meter Log File Structure
7.3.1.4 Task Region The task region data will refer to one or more log operations. Operations are enumerated in the JohnDeere.EIC.Models.RCD.Enums.OperationType enumeration and defined as follows: Application (e.g. spraying or spreading) Harvest Planting/Seeding Tillage Surface Water Management Other (e.g. mowing)
The task region of a typical log file is displayed below:
Deere & Company Confidential and Proprietary
Page 56 of 93
IVS Product Family EIC Developer’s Guide
Figure 9 Log Task Region
Each operation will in turn refer to meters. The JohnDeere.EIC.Models.RCD.Log.Imeter interface
represents the data recorded by a physical monitoring device on the equipment. A piece of equipment might have several meters.
7.3.1.5 Navigation Reference The navigation reference section contains equipment offsets and navigational data.
Figure 10 Navigation Reference
7.3.2 Accessing RCD Log File Data From previous EIC application examples, the preliminary steps of importing the appropriate EIC resources to creation of the correct model factory and card model should be familiar. Similarly, importing a log target stream (JohnDeere.EIC.Models.RCD.Enums.TargetStreamType.Log ) is the same as importing other target streams. What differs when dealing with log file data is that the data contains spatial data tracking operations and tasks over time and distance. Processing those layers to associate the
Deere & Company Confidential and Proprietary
Page 57 of 93
IVS Product Family EIC Developer’s Guide
data in the paired log files *.fdd and *.fdl is an essential EIC function. After spatial processing, you must parse the log stream data to obtain logged operational information. The steps for accessing the log file data are listed below. 1. 2. 3. 4.
Preliminary Steps Import the Log Target Stream Process the Spatial Layers Parse the Log Target Stream
7.3.2.1 Preliminary Steps The preliminary steps for accessing the log target stream follows the EIC code practice discussed earlier.
Import the EIC resources needed to handle a target stream of type Log. Provide a host ID; then get or set a card path. Create a GS2 model factory and RCD card model.
First, import the required EIC and system resources: using System; using JohnDeere.EIC.Models.RCD; using JohnDeere.EIC.Models.RCD.Enums; using JohnDeere.EIC.Models.RCD.Log; using JohnDeere.EIC.ModelsImpl.Factories; using JohnDeere.EIC.SpatialTools.GIS; using JohnDeere.RepresentationSystem; using JohnDeere.UnitSystem;
As in all EIC applications, you must provide a unique host ID for your application. You must also obtain or provide the file path to the data. In the example shown below, the card path is provided in the code. Guid _hostID = new Guid(“{E2FDDAE0-3C59-42C6-BFD8-ED50D027CF5D} ”); string cardPath = @”C:\RCD\”;
As previously shown, declare and create a GS2 model factory and the RCD card model. GS2ModelFactory factory = GS2ModelFactory.Create(cardPath, _hostID); RcdCardModel model = factory.CreateCardModel();
7.3.2.2 Import the Log Target Stream The JohnDeere.EIC.Models.RCD.Enums.TargetStreamType.Log interface encapsulates an RCD log target stream. The log stream contains data from the John Deere EIC log files: *.fdl and *.fdd . As the code demonstrates, for each log file stream in the card model, import the stream. Foreach (IlogStream stream in model.GetStreams(TargetStreamType.Log)) { // This imports the data from the XML file. Stream.Import();
Deere & Company Confidential and Proprietary
Page 58 of 93
IVS Product Family EIC Developer’s Guide
7.3.2.3 Process the Spatial Layers After importing the log stream, the next task is to associate the spatial data of the binary *.fdd log file with the meta-data of the xml *.fdl log file. This is done with the IlogStream.ProcessSpatialLayers() method. Stream.ProcessSpatialLayers(); LoopThroughLogStream(stream); //see code below Note: The ProcessSpatialLayers() method has the potential for long runtimes, so you might want to run it on a separate processing thread.
Important: This method will apply the default latencies to the mass and moisture measurements to account for time delays between the operation and the sensor readings. If you would like EIC to disregard all latencies, then you must pass null to the ProcessSpatialLayers method as shown below:
stream.ProcessSpatialLayers((EquipmentDynamicsInfo)null);
7.3.2.4 Equipment Dynamics Equipment dynamics refer to compensations applied to mass and moisture data recorded within the RCD system. These compensations are required to accurately associate a spatial point with the operation occurring at that point. For instance, the point a combine is at when a harvested crop passes a mass or moisture meter in the combine might be several feet or meters away from the point at which th e wheat was actually cut in the field. Equipment dynamics only apply to mass and moisture readings. By default, GreenStar sometimes adds a 10 second delay to both moisture and mass readings. In other words, the RCD system assumes that when the crop passes the sensor, it was harvested roughly 10 seconds ago. EIC will then look at this latency data and assign the mass or moisture data to the point where the combine was at 10 seconds earlier. The actual latency data for each equipment element can be found in the JohnDeere.EIC.Models.RCD.Log.IequipmentElement.Latency property. Equipment dynamics can be adjusted using the new JohnDeere.EIC.Models.RCD.Log.EquipmentDynamicsInfo class
provided in the EIC SDK. This class provides the ability to override mass delays, yield delays and status transition delays. It also provides the ability to filter out outlier data that may cause problems with mapping software. Creating the EquipmentDynamicsInfo data structure is illustrated below. // Declared earlier bool useStatusTransitionFilter = true; bool useHarvestFilter = true; // Set up the equipment dynamics structure (optional). EquipmentDynamicsInfo info = new EquipmentDynamicsInfo( useStatusTransitionFilter, useHarvestFilter, 2000, 2000, 14, 18);
Please see the Microsoft compatible help file EIC SDK Documentation.chm for more information about each property of the JohnDeere.EIC.Models.RCD.Log.EquipmentDynamicsInfo class.
Deere & Company Confidential and Proprietary
Page 59 of 93
IVS Product Family EIC Developer’s Guide
7.3.2.4.1
Recommended Settings
John Deere recommends the following settings when using the EquipmentDynamicsInfo data structure. These settings, also used by John Deere’s Apex application, ensure that the data displayed in the desktop application is consistent with the data displayed in the cab of the vehicle. // Recommended settings which Apex uses for data consistency/accuracy with the display. EquipmentDynamicsInfo info = new EquipmentDynamicsInfo(false, true); info.UseStatusTransitionFilter = false; info.UseHarvestFilter = true; // Very important to set this to true! Info.OverrideYieldDelay = 14; info.OverrideMoistureDelay = 18;
7.3.2.5 Parse the Target Stream After associating the binary and xml data of the two log files, obtain the log file data. Do this by parsing the log target stream objects.
Figure 11 RCD configuration block
The logic for parsing an RCD log file follows this pattern: For every log block in the stream, obtain task region and spatial layer data. Then move through each logged spatial point and for every point obtain: Longitude and latitude Navigation values such as heading, elevation, and GPS accuracy Timestamp Meter rates
Most developers dealing with GreenStar 2 logs will be interested in obtaining meter and section data. Having obtained task and spatial point data, this document presents three choices for parsing through meter and section data, illustrated in the next section. The task and spatial point logic parsing a log file is illustrated in the following code snippet: private static void LoopThroughLogStream(IlogStream stream) { foreach (IlogBlock logBlock in stream.LogBlocks) { IlogTaskRegion logTaskRegion = logBlock.ConfigBlock.TaskRegion; IlogTaskRegionSpatialShapeLayer shapeLayer = logTaskRegion.SpatialLayer; //Resets the shape cursor to the begining of the shape list.
Deere & Company Confidential and Proprietary
Page 60 of 93
IVS Product Family EIC Developer’s Guide
shapeLayer.ResetShapeCursor(); //Iterate through every point recorded for the log block while (shapeLayer.MoveToNextShape()) { //Get the latitude and longitude for the current shape. Double latitude = shapeLayer.Latitude.Value.SourceValue; double longitude = shapeLayer.Longitude.Value.SourceValue; //Get the Navigation values. Double heading = shapeLayer.Heading.Value.SourceValue; double elevation = shapeLayer.Elevation.Value.SourceValue; double distance = shapeLayer.DeltaDistance.Value.SourceValue; double gpsAccuracy = shapeLayer.GPSAccuracy.Value.SourceValue; double gspVerticalAccuracy = shapeLayer.GPSVerticalAccuracy.Value.SourceValue; DefinedTypeValue signalType = shapeLayer.SignalType.Value; //Recorded time for the current point string time = shapeLayer.Time.ToString(“HH:mm:ss.fff MMM dd yyyy”); foreach (ItaskMeasurement taskMeasurement in logBlock.ConfigBlock.TaskRegion.TaskMeasurements) { if (taskMeasurement.Meter.HasRates) { object value; value = FetchMeterValues(taskMeasurement.Meter.TargetElement); value = FetchMeterValues(taskMeasurement.Meter.ControlElement); value = FetchMeterValues(taskMeasurement.Meter.MeasuredElement); value = FetchMeterValues(taskMeasurement.Meter.MeteredElement); } } //Read section and meter information. //Option 1: Loop through the meter ’s in each operation. //You can use this option if you want to fetch data for a particular operation //or a meter ReadFromLogOperations(logTaskRegion); //Option 2: Loop through the referring meter ’s for each section. //You can use this option if you want to fetch data for all operations and all meters. //This way you can load all the different layers. ReadFromEquipmentConfig(logBlock); //Option 3: Look through sections in EquipmentConfigurations //and loop through meters //in each LogOperations. //You can use this option if you would like to store data in a database. This output //is simlar to the output you see in the Log Binary Viewer of the EIC Diagnostic Tool. WriteDataToDatabase(logBlock);
Deere & Company Confidential and Proprietary
Page 61 of 93
IVS Product Family EIC Developer’s Guide
} } }
7.3.2.6 Data Representations The FetchMeterValues() function demonstrated in the code snippet above obtains logged meter data. This data, if not null, will be one of two types:
a spatial value defined type a spatial value variable representation
Defined types are represented by the JohnDeere.RepresentationSystem.DefinedTypeValue class.
Variable representation types are represented by the JohnDeere.RepresentationSystem.VariableNumber class.
EIC defined types are string enumerations and are used to describe the various choices for a particular meter. For example, the equipment recording status (dtRecordingStatus) has two states – dtiRecordingStatusOff and dtiRecordingStatusOn. Variable representation data types, on the other hand, contain a numeric value which depends on the representation system and units of measurement (UOM) being applied. The representation system is either umsEnglish or umsMetric. For instance, if you obtain a value of 900 for a variable with a domain ID of vrDistanceTraveled, the value could be represented in either feet or meters. Examples of both EIC defined types and variable representation types are shown below: Table 12 Data Representations Domain ID
dtSeedingApplicationMethod dtiBroadcastSeeding dtiInGround dthitchType dtiDrawbar dtiFrontRigidThreePoint dtiRearPivotWagonHitch dtiReartwoPoint dtiThreePoint vrAppRateMassControl vrAppRateMassMeasured vrAppRateMassMetered vrAppRateMassTarget vrAppRateVolumeControl vrAppRateVolumeMeasured vrAppRateVolumeMetered vrAppRateVolumeTarget vrAreaProductivity
Domain Tag
1011 5065 5066 1009 5032 5148 5147 5146 5031 46 45 44 47 50 49 48 51 133
Name & Description strings
Seeding Application Method BroadcastSeeding In Ground Hitch Type Rear Pivot Drawbar Front Rigid 3-pt Rear Pivot Wagon-Hitch Rear Pivot 2-pt Rear Rigid 3-pt Control Application Mass Rate Measured Application Mass Rate Metered Application Mass Rate Target Application Mass Rate Control Application Mass Rate Measured Application Mass Rate Metered Application Mass Rate Target Application Mass Rate Productivity Area
The JohnDeere.RepresentationReference.RepresentationTagList class enumerates all the available domain IDs and domain tags. The John Deere representation system enforces a strict naming convention for defined and variable representation type domain IDs. Each domain ID consists of three parts as shown below.
Deere & Company Confidential and Proprietary
Page 62 of 93
IVS Product Family EIC Developer’s Guide
[dt | vr ] [description of variable] [Control | Measured | Metered | Target] The first part of a domain ID is always prefixed with a ‘dt’ or ‘vr’ denoting whether the variable is a defined type or a variable representation type. The second part of the domain ID name describes the value being measured. The third part indicates whether it is a control, measured, metered or target equipment element. To learn more about units of measurement, you can access a unit system browser and a representation system browser under the View menu item of the EIC Diagnostics Tool. To learn more about the UnitOfMeasureSystem, UnitRepresentation and UnitOfMeasureSystemReference classes, see the EIC SDK help file. The FetchMeterValues() function is illustrated below: private static IspatialValue FetchMeterValues( IequipmentElement elem, ref DefinedTypeValue val, ref VariableNumber num ) { IspatialValue value = null; if (elem != null) { if (elem.IsVRColumn) { value = elem.VRSpatialColumn.Value; num = ((IspatialValueRepresentationNumber )value).Value; } else { Debug.Assert(elem.IsDTColumn); value = elem.DTSpatialColumn.Value; val = ((IspatialValueDefinedType)value).Value; } } return value; }
7.3.2.7 Read Section and Meter Data At every spatial point, you will need to obtain section and meter information. This document illustrates three methods of reading that data, depending on your requirements. The meter and section interfaces used are:
JohnDeere.EIC.Models.RCD.Log.Imeter
JohnDeere.EIC.Models.RCD.Log.Isection
The Imeter interface encapsulates data transmitted by John Deere equipment that measures quantitative data such as amount applied, crop harvested, weight of crop, etc. This information is in the context of a geospatial area, a section. Each meter contains a
Deere & Company Confidential and Proprietary
Page 63 of 93
IVS Product Family EIC Developer’s Guide
reference to the section to which it belongs. For example, a sprayer may have several sections, each with a meter measuring rate of application. The Isection interface encapsulates data about equipment width, physical offsets, recording state, and referring meters on the same equipment. While meters contain the actual data within the log target stream, sections contain status information such as whether recording status is on or off.
7.3.2.7.1
Method 1: Obtain data for a specific operation or meter
The first method illustrates how to iterate through the meters in each operation of the log task region. Since each meter references a section, you can then obtain section information for each operation’s meter. This method is useful to obtain data for a specific operation or meter. Private static void ReadFromLogOperations(IlogTaskRegion logTaskRegion) { foreach (IlogOperation logOperation in logTaskRegion.LogOperations) { PrintOpType(logOperation.Type); foreach (Imeter meter in logOperation.Meters) { //Fetch the Section details. Foreach (Isection section in meter.Sections) { if (section.RecordingStateElement.SpatialColumn.Value != null) { // Get the section ID. Int sectionId = section.ID; // Get the section status (dtRecordingStatus). IvalueType sectionStatus = ((IspatialValueType) section.RecordingStateElement.SpatialColumn.Value).ValueType; // Get the section width. Double sectionWidth = section.Width.SourceValue; } } // Fetch the meter values if it contains rates. If (meter.HasRates) { IspatialValue value = null; DefinedTypeValue val = null; VariableNumber num = null; value value value value
= = = =
FetchMeterValues(meter.TargetElement, ref val, ref num); FetchMeterValues(meter.ControlElement, ref val, ref num); FetchMeterValues(meter.MeasuredElement, ref val, ref num); FetchMeterValues(meter.MeteredElement, ref val, ref num);
} } } }
Deere & Company Confidential and Proprietary
Page 64 of 93
IVS Product Family EIC Developer’s Guide
7.3.2.7.2
Method 2: Obtain data for all operations and all meters
This method obtains all data for all operations and all meters in the equipment configuration block. This method is useful for loading all spatial layers. Private static void ReadFromEquipmentConfig(IlogBlock logBlock) { foreach (IequipmentConfiguration equipmentConfig in logBlock.ConfigBlock.EquipmentConfigurations) { foreach (Isection section in equipmentConfig.Sections) { // Get the section ID. Int sectionId = section.ID; // Get the section status (dtRecordingStatus). IvalueType sectionStatus = ((IspatialValueType) section.RecordingStateElement.SpatialColumn.Value).ValueType; // Get the section width. Double sectionWidth = section.Width.SourceValue; foreach (Imeter meter in section.ReferringMeters) { // Fetch the meter values if it contains rates. If (meter.HasRates) { IspatialValue value = null; DefinedTypeValue val = null; VariableNumber num = null; value value value value
= = = =
FetchMeterValues(meter.TargetElement, ref val, ref num); FetchMeterValues(meter.ControlElement, ref val, ref num); FetchMeterValues(meter.MeasuredElement, ref val, ref num); FetchMeterValues(meter.MeteredElement, ref val, ref num);
} } } } }
7.3.2.7.3
Method 3: Obtain data for equipment configuration
The last method illustrated iterates through all sections and all meters. The output is similar to the output of the Log Binary Viewer in the EIC Diagnostics tool. This method is useful if you are considering storing the resulting output in a database. Private static void ReadDataForWriteToDatabase(IlogBlock logBlock ) { foreach (IequipmentConfiguration equipmentConfig in logBlock.ConfigBlock.EquipmentConfigurations) { foreach (Isection section in equipmentConfig.Sections) { if (section.RecordingStateElement.SpatialColumn.Value != null)
Deere & Company Confidential and Proprietary
Page 65 of 93
IVS Product Family EIC Developer’s Guide
{ // Get the section ID. Int sectionId = section.ID; // Get the section status (dtRecordingStatus) IvalueType sectionStatus = ((IspatialValueType) section.RecordingStateElement.SpatialColumn.Value).ValueType; // Get the section width. Double sectionWidth = section.Width.SourceValue; } } } foreach (IlogOperation logOperation in logBlock.ConfigBlock.TaskRegion.LogOperations) { foreach (Imeter meter in logOperation.Meters) { // Fetch the meter values if it contains rates. If (meter.HasRates) { IspatialValue value = null; DefinedTypeValue val = null; VariableNumber num = null; value value value value
= = = =
FetchMeterValues(meter.TargetElement, ref val, ref num); FetchMeterValues(meter.ControlElement, ref val, ref num); FetchMeterValues(meter.MeasuredElement, ref val, ref num); FetchMeterValues(meter.MeteredElement, ref val, ref num);
} } } }
7.3.2.8 Operation and Meter Relationships The following table displays the available meter types associated with a particular operation. This information is useful when looking up information in the log file. For example, it might be important for your application to look up an operator’s targeted application rate (vrAppRateMassTarget) for a given application operation. In the following table, bold text indicates that the meter domain ID is unique to the operation. For instance, vrSeedRateMassMetered is found only in seeding operations. Table 13 Operations and Meter Domain IDs Operations
All Operations
Category
Area Equipment Measurement
Navigation
Deere & Company Confidential and Proprietary
Meter Domain ID
vrTotalAreaCovered vrInlineOffset vrLateralOffset vrSectionWidth vrEquipmentWidth vrLatitude vrLongitude vrHeading
Page 66 of 93
IVS Product Family EIC Developer’s Guide
Operations
Category
Implement Section Weather
Observation
Application Operations
Machine Information By Mass
By Volume
Seeding Operations
Height Application Method Prescription State By Mass
By Rate
Depth Down Force Margin Seeding Method
Tillage Operations Harvest Operations
Spacing (Singulation) Depth Yield by Volume
Yield by Count Moisture Harvest: Combine
Deere & Company Confidential and Proprietary
Meter Domain ID
vrElevation vrDistanceTraveled vrGPSAccuracy vrGPSVerticalAccuracy dtSignalType dtNavigationType dtRecordingStatus vrRelativeHumidity vrAirTemperature dtWindDirection vrWindSpeed dtSkyCondition vrSoilTemperature dtSoilMoisture vrFuelRatePerHour vrAppRateMassMetered vrAppRateMassMeasured vrAppRateMassControl vrAppRateMassTarget vrAppRateVolumeMetered vrAppRateVolumeMeasured vrAppRateVolumeControl vrAppRateVolumeTarget vrTotalQuantityAppliedVolume
vrAppHeightTarget dtApplicationMethod dtPrescriptionState vrSeedRateMassMetered vrSeedRateMassMeasured vrSeedRateMassControl vrSeedRateMassTarget vrSeedRateSeedsMetered vrSeedRateSeedsMeasured vrSeedRateSeedsControl vrSeedRateSeedsTarget
vrSeedDepthTarget vrDownForceMargin dtSeedingMethod dtSeedingApplicationMethod vrSeedSpacing vrTillageDepthTarget vrYieldVolume vrYieldVolumePerArea vrYieldMassPerArea vrYieldWetMassPerArea vrYieldWetVolume vrYieldWetVolumePerArea vrYieldBale vrYieldBalePerArea vrCropMoisture vrHarvestMoisture vrYieldWetMass
Page 67 of 93
IVS Product Family EIC Developer’s Guide
Operations
Category
Harvest: Cotton Harvest: Forage (SPFH)
Meter Domain ID vrYieldMass vrYieldMassForage, vrYieldWetMassForage
vrLengthOfCut vrInoculantDosing vrFuelRatePerHour
7.3.3 Infrequently Changing Log Data (*.fdl) Some data does not change or changes very infrequently. Examples of such data are the name of the farm or the equipment where the GreenStar display is installed. Infrequently changing data is logged in the *.fdl file. This file is in an XML format. Any time this type of data actually changes, a new log block creation event is triggered, and a new section of the log, called a log block, is added to the *.fdl file. The log block event is implemented in the EIC namespace as: JohnDeere.EIC.Models.RCD.Log.IlogBlock.
The following sections display the data considered to infrequently change by the GS2 system. Setup Information Client Farm Operator License Number Crop Growth Stage Machine Type Machine Model Machine Name Machine Connection Point Planting/Seeding Operation Seed Type Seed Brand Seed Variety (can be cross referenced back to brand and crop type)
Implement Type Implement Mode Implement Name Implement Offsets or Width (physical implement width) Section Configurations, including section widths and offsets.
Tillage Practice Lot Number
Product Application Operation Product Type Product Name Tillage Operation Tillage Type Tillage Name Other Operation Other Type Other Name
Deere & Company Confidential and Proprietary
Page 68 of 93
IVS Product Family EIC Developer’s Guide
Harvest Combine Operation Crop Type Crop Brand Crop Variety Load Type Load Number Harvest Cotton Operation Crop Type Crop Brand Crop Variety Load Type Load Number Harvest SPFH Operation Crop Type Crop Brand Crop Variety Load Type Load Number
Load Cart Load Destination Residue Management HMON Calibration Factor
Load Cart Module ID Gin Turnout HMON Calibration Factor
Load Cart Load Destination Residue Management HMON Calibration Factor
7.3.4 Frequently Changing Log Data (*.fdd) Some data, such as wind speed or metered rates of seeding, changes frequently. Frequently changing data is logged in the *.fdd file. This file is in binary format. When any of these data items changes, the *.fdd file is updated with the change event information. The following sections display the data considered to be frequently changing by the GS2 (RCD) system. Setup Info Temperature Wind Speed Wind Direction Sky Condition Planting/Seeding Operation Seed Depth Seeding Application Method Target Rates Product Application Operation Application Height Application Method Target Rates
Humidity Soil Moisture Soil Temperature
Measured Rates Metered Rates Control Rates Measured Rates Metered Rates Control Rates
Tillage Operation Tillage Depth Other Operation
Deere & Company Confidential and Proprietary
Page 69 of 93
IVS Product Family EIC Developer’s Guide
(as defined and added by operator)
Harvest Combine Operation Mass Flow Rates Moisture Rates Harvest Cotton Operation Mass Flow Rates Harvest SPFH Operation Mass Flow Rates Moisture Rates Inoculant Rates
8
Fuel Rates Length of Cut Rates
Sample EIC Applications This version of the EIC SDK provides code files for several example applications. Example GSD4 and GS2 applications are found in the solution \Samples\SampleApps.sln . Refer to the following table for a description of these applications. Table 14 Sample EIC Applications
Application Type Common
Application Name Diagrams SampleCPlusPlus SampleGUI SampleVB
GSD4
SampleImport
SamplePrescription SampleSetup SampleStreams GS2
SampleBoundary SampleFlags SampleFuelDiary SampleGuidance SampleJob SampleLog SamplePrescription
Description Contains the UML diagrams for the classes/interfaces located in JohnDeere.EIC.Models.dll. Demonstrates how to create an EIC application using Visual C++. Demonstrates how the EIC SDK may be used to create a simple GUI application with a tree browser. Demonstrates how to create an EIC application using Visual Basic .NET. Demonstrates how to import the various GSD4 streams. Once the streams are imported, the data is exported to a .csv file for inspection purposes. Demonstrates how to create and export a GSD4 prescription file. Demonstrates how to create and export a GSD4 setup file. Demonstrates how to interact with all the GSD4 target streams. Demonstrates how to set up boundary data within the RCD field import/export stream. This data is then exported to the card. Demonstrates how to create a flag layer and export it to the card. Demonstrates how to read information from a fuel diary stream stored on the card. Demonstrates how to create guidance data and export it to the card. Demonstrates how to create multiple jobs and export them to the card. Demonstrates how to import log files and extract spatial information from them. Demonstrates how to setup a seeding and/or application prescription layer and export it to the card.
Deere & Company Confidential and Proprietary
Page 70 of 93
IVS Product Family EIC Developer’s Guide
Application Type
Application Name SampleProductDetails SampleReferenceLayer SampleRxConverter
SampleSetup SampleStreams SampleSWM SampleTankFillCalculator
SampleTankMix SampleTask SampleTotals
SampleTransportLog
GS2 1800
SampleVarietyLocator SampleModelFactory
GS3 2630
SampleModelFactory
Description Demonstrates how to specify product details for chemicals, fertilizers and crop varieties in the setup file. Demonstrates how to send an aerial image to the card. Demonstrates how to convert industry standard shape files containing prescription information into a RCD prescription file. Demonstrates how to create a master setup file and export it to the card. Demonstrates how to interact with all the GS2 target streams. Demonstrates how to read and write surface water management data. Demonstrates how to specify a tank mix template in the setup file as well as read information from a tank-fill calculator session file stored on the card. Demonstrates how create a tank mix and export it to the card. Demonstrates how to set up a simple task and export it to the card. Demonstrates the implementation of calculations detailed in the document titled John Deere GreenStar 2 Totals Formulas.pdf. Demonstrates how to specify a transport task in the setup file and also how to read information from a transport session log file stored on the card. Demonstrates how to obtain crop variety information. Demonstrates how to use the GS3BmodelFactory class to support the GS2 1800 display. Demonstrates how to use the GS3modelFactory class to support the GS3 2630 display.
71
IVS Product Family EIC Developer’s Guide
APPENDIX A: EIC Compatibility with Previous John Deere Data Formats The following sections discuss backward-write and backward-read compatibility with previous John Deere data.
Backward Read Compatibility EIC supports the ability to read and write earlier versions of specific GreenStar displayformatted data. As a consequence, EIC developers can test applications that utilize an earlier version of the EIC API without being required to wait for the latest GreenStar display software system release. You can access data from any earlier version of John Deere GreenStar display software when using this version of the EIC SDK. The figure below demonstrates how EIC accomplishes this task.
Models.dll GS2 (all earlier versions)
EIC-enabled Application
ModelsImpl.dll (version 3.4)
Figure 12 : Illustration of EIC accessing earlier versions of GreenStar display data
Backward Write Compatibility The EIC SDK is able to produce data that can be read by an earlier version of the GreenStar display software. The figure below demonstrates how EIC handles this task.
72
IVS Product Family EIC Developer’s Guide
Figure 13 EIC backward-write compatibility across minor versions
While an EIC developer will usually link an application to the latest version of the EIC API libraries, this version of the EIC API loads the required version of the EIC libraries into an application domain. The data will then be converted to a binary format and serialized across the application domain boundary. Then when an older version of the EIC SDK library receives the binary data, the older version will de-serialize the raw data into its own data structures. Any raw data that does not fit the older data structure is disregarded. The older version of the library then will serialize the data and create data files that are compliant with the older version of the GreenStar display software. In this way, the developer does not have to write applications for each version of the EIC. Important: Backward write compatibility is only supported across minor versions of the EIC SDK.
Backward Write Support for Setup Files The EIC SDK enables you to write setup files for use by previous minor versions of EIC. To accommodate this functionality, three new interface methods have be en added to the JohnDeere.EIC.Models.IExport interface:
Export(BackwardCompatibilityInfo info) Export(BackwardCompatibilityInfo info, bool merge)
Export(BackwardCompatibilityInfo info, bool merge, bool validate)
Global Version File EIC uses a file named global.ver to determine whether RCD data can be read from or written to the data card. This file is located at the root directory of the RCD card path.
73
IVS Product Family EIC Developer’s Guide
During initialization, EIC compares the global version number stored in the global.ver file to the global version internally stored in the EIC libraries. This internal global version number represents the highest version of the data structures in the RCD card that the current EIC libraries can utilize. If the version number on the data card is greater than the version number stored within EIC, then an exception will be thrown to prevent the application reading from or writing to the data card. If the global.ver file does not exist in the root data directory of the card, EIC will not throw an exception. This behavior allows applications to archive the card data and then read it back again without problems. The global.ver file is used primarily by the display libraries to minimize the amount of I/O overhead. Note: If your application accesses a data card that lacks a global version file, the EIC libraries create one, and assumes that the data is compatible with the current version.
APPENDIX B: Crop List The following table displays the crop names and crop IDs for both the GSD4 and GS2 systems. It is not possible to add crops to this list unless explicitly approved by John Deere. The table also displays which crops are displayed in European displays for various combines used in Europe, including the LYNX combine The Default Active and Default Inactive columns display which crops Apex uses by default during data card setup for European customers. Standard inactive means that the desktop software, such as Apex, does not add these crops by default during setup. Note:
means
crop is supported in the monitor.
Table 15 EIC Crop List
GSD4 Tag ID
GS2 ID
1
1
Alfalfa
2
2
Barley
3
3
Edible Beans
4
4
Navy Beans
5
5
Canola
6
173
7
6
Flax
8
7
Grass Seeds
9
8
Lentils
10
9
Millet
11
10
Mustard
12
11
13
12
Oats Peas(BlackEyed)
14
13
Peas (Field)
74
Crop Name (en)
Corn (Wet)
Harvest Monitor: Combine EUR
Harvest Monitor: SPFH
Combine Yield Monitor EUR
Harvest Monitor: LYNX combine
Default Active (Europe)
Default Inactive (Europe)
IVS Product Family EIC Developer’s Guide
GSD4 Tag ID
GS2 ID
Crop Name (en)
15
14
Popcorn (Yellow)
16
15
Popcorn (White)
17
16
Rape Seed
18
17
Rice (Long)
19
18
Rice (Medium)
20
19
Rye
21
20
Safflower
22
21
Sorghum
23
174
Soybeans
24
22
25
23
Sunflower (Oil) Sunflower(Strip e)
26
24
27
25
28
26
29
27
Wheat (Durum) Wheat(Hrd Rd Spr) Wheat(Hrd Rd Wtr) Wheat(Sft Rd Wtr)
30
28
Wheat (White)
31
29
Chickpeas
32
30
33
31
34
32
Lupins Barley (Euro Spr) Barley (Euro Wtr)
35
33
Barley (Euro 6)
36
34
Corn (Euro)
37
35
Oats (Euro)
38
36
Peas (Euro)
39
37
40
38
Popcorn (Euro) Rape Seed (E Ind)
41
39
42
40
43
41
44
42
45
43
Harvest Monitor: Combine EUR
Harvest Monitor: SPFH
Combine Yield Monitor EUR
Harvest Monitor: LYNX combine
Default Active (Europe)
Rye (Euro) Sunflower (E Ind) Sunflower (E Oil) Triticale (Euro) Wheat (Euro Feed)
75
Default Inactive (Europe)
IVS Product Family EIC Developer’s Guide
GSD4 Tag ID
GS2 ID
46
44
47
45
Wheat (Euro Wtr) Rape Seed (E Oil)
48
175
Cotton
49
46
Asparagus
50
47
Balm
51
48
Beets
52
49
Belgian endive
53
50
Broad Beans
54
51
55
52
Broccoli Brussels Sprouts
56
53
Buckwheat
57
54
Cabbage-lettuce
58
55
Caraway seed
59
56
Carrots
60
57
Castor beans
61
58
Cauliflower
62
59
Celery
63
60
Chervil
64
61
65
62
Chicory Chinese cabbage
66
63
Clover
67
64
Corn silage
68
65
Corn cob mix
69
66
Corn salad
70
67
Crambe
71
68
Cucumber
72
69
Digitalis lanate
73
70
Dill
74
71
Elephant-grass
75
72
76
73
77
74
78
75
Endives English rye grass Evening primrose Field meadowgrass
76
Crop Name (en)
Harvest Monitor: Combine EUR
Harvest Monitor: SPFH
Combine Yield Monitor EUR
Harvest Monitor: LYNX combine
Default Active (Europe)
Default Inactive (Europe)
IVS Product Family EIC Developer’s Guide
GSD4 Tag ID
GS2 ID
Crop Name (en)
79
76
Fodderbeet
80
77
French beans
81
78
Gherkin
82
79
Ginseng
83
80
Grain maize
84
81
Grass forage
85
82
Grassland
86
83
Green cabbage
87
84
88
85
Green peas Hard fescue grass
89
86
90
87
Haricot beans Headed cabbage
91
88
Hemp
92
89
Hops
93
90
Hypericum
94
91
Iceberg salad
95
92
96
93
Italian rye-grass Jerusalem artichoke
97
94
Kale
98
95
Leek
99
96
Lettuce
100
97
Lucerne
101
98
Lupine
102
99
Marowfat peas
103
100
Melon
104
101
Mushrooms
105
102
Onions
106
103
Oregano
107
104
Parsley
108
105
Peanuts
109
106
Picklers
110
107
Poppy seed
111
108
112
109
Potatoes sweet Potatoes for chips
113
110
Potatoes for
Harvest Monitor: Combine EUR
Harvest Monitor: SPFH
Combine Yield Monitor EUR
Harvest Monitor: LYNX combine
Default Active (Europe)
77
Default Inactive (Europe)
IVS Product Family EIC Developer’s Guide
GSD4 Tag ID
GS2 ID
Crop Name (en)
retail
78
114
111
Potatoes for starch
115
112
Pumpkins
116
113
Radicchio
117
114
Raddice
118
115
Red beet
119
116
120
117
121
118
Red cabbage Red fescue grass Red kidney beans
122
119
Rettich
123
120
Rhubarb
124
121
Salad
125
122
Savoy cabbage
126
123
Scorzonera
127
124
Seed potatoes
128
125
Sesame
129
126
Shallots
130
127
Silver Onions
131
128
Spear grass
132
129
Spinach
133
130
Strawberries
134
131
Stubbel tuber
135
132
Sugarbeet
136
133
Sugar cane
137
134
Sugar corn
138
135
Tankard turnip
139
136
Tick beans
140
137
Tobacco
141
138
Tomatoes
142
139
Tuber fennel
143
140
144
141
Turnip cabbage Turnip-rooted celery
145
142
Vetch
146
143
White beans
147
144
White cabbage
Harvest Monitor: Combine EUR
Harvest Monitor: SPFH
Combine Yield Monitor EUR
Harvest Monitor: LYNX combine
Default Active (Europe)
Default Inactive (Europe)
IVS Product Family EIC Developer’s Guide
GSD4 Tag ID
GS2 ID
148
145
Wood carrot
149
146
Set aside
150
Crop Name (en)
Harvest Monitor: Combine EUR
Harvest Monitor: SPFH
Combine Yield Monitor EUR
Harvest Monitor: LYNX combine
Default Active (Europe)
No Crop present
151
147
Hyracinth
152
148
Tulip
153
149
Narcissus
154
150
Gladiolus
155
151
Crocus
156
152
Lily
157
153
Iris
158
154
Dahlia
159
155
Apples
160
156
Pears
161
157
Peaches
162
158
Apricots
163
159
Melons tree
164
160
Oranges
165
161
Lemons
166
162
Almonds
167
163
Vines
168
164
Olives
169
165
Jalapeño
170
166
Cantaloupe
171
167
Honeydew
172
168
Squash
173
169
Green Beans
174
170
Lima Beans
175
171
Sweet Corn
176
172
Canary Seed
79
Default Inactive (Europe)
IVS Product Family EIC Developer’s Guide
APPENDIX C: Supported Encodings Both the GSD and RCD displays are currently restricted to single byte character codes. However, the RCD system allows character codes in the range 0x00 - 0xFF while the GSD system only allows characters within the ASCII character set (0x00 – 0x7E). Note: The GSD4 display only supports characters in the ASCII character set while the GS2 display utilizes code pages to support multiple languages. Neither the GSD4 nor the GS2 displays support the Unicode character set at this time.
R C D Lang uag e S upport The GreenStar 2 displays support multiple languages through the use of code pages. A code page is the term used when a sequence of bits, usually a single octet representing integer values 0 through 255, is associated with a specific character. A full list of the supported languages on the RCD display and their respective code pages is shown below. Table 16 RCD Language Support Language
2-Letter Code
Encoding Used on Display
Bulgarian Croatian Czech Danish Dutch English Estonian Finnish French German Greek Hungarian Italian Latvian Lithuanian Norwegian Polish Portuguese Romanian Russian Slovak Spanish Swedish Turkish
bg hr cs da nl en et fi fr de el hu It lv lt no pl pt ro ru sk es sv tr
ISO-8859-5 ISO-8859-2 ISO-8859-2 ISO-8859-1 ISO-8859-1 ISO-8859-1 ISO-8859-15 ISO-8859-1 ISO-8859-1 ISO-8859-1 ISO-8859-7 ISO-8859-2 ISO-8859-1 ISO-8859-4 ISO-8859-4 ISO-8859-1 ISO-8859-2 ISO-8859-1 ISO-8859-2 ISO-8859-5 ISO-8859-2 ISO-8859-1 ISO-8859-1 ISO-8859-9
EIC always writes RCD string data files to the data card using a UTF-8 encoding. This allows any character to be transferred properly to the RCD display with no loss of information. Keep in mind, however, that an RCD display can read a UTF-8 encoded data file, but it will write data files using the code page stored in the system settings. For
80
IVS Product Family EIC Developer’s Guide
example, if an RCD display is set to the English language, it will read a UTF-8 setup file produced by EIC, but write it back to the data card using the ISO-8859-1 encoding. Note: This type of situation increases the potential for data loss. For example, if you save a Russian setup to your card using EIC with a UTF-8 encoding, the GS2 will read the file without any problem.
But a problem may occur if the language setting on the GS2 console is set to a language different than Russian. If the console is set to English, then the setup will be written back to the card using ISO-8859-1 encoding. This would cause all the Cyrillic characters to be changed to a corresponding character on the ISO-8859-1 code page.
Below is displayed a matrix showing the characters that are common to all code pages. This common character set is often referred to as the ASCII character set. The matrix shows which characters are allowed on the RCD display. Table 16 RCD Base Character Matrix 0
1
2
3
4
5
6
7
8
9
A
B
C
D
E
F
0
nd
nd
nd
nd
nd
nd
nd
nd
nd
tab
lf
nd
nd
cr
nd
nd
1
nd
nd
nd
nd
nd
nd
nd
nd
nd
nd
nd
nd
nd
nd
nd
nd
2
spc
!
"
#
$
%
&
'
(
)
*
+
,
-
.
/
3
0
1
2
3
4
5
6
7
8
9
:
;
<
=
>
?
4
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
5
P
Q
R
S
T
U
V
W
X
Y
Z
[
\
]
^
_
6
`
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
7
p
q
r
s
t
u
v
w
x
y
z
{
|
}
~
nd
Allowed character Non displayable character Allowed special character space non breaking space Avoid use
These characters are always allowed. These characters are non displayable on most systems and are not allowed for entry in the GSD4 or RCD systems. These are non-alphabetic special characters that will be allowed in the GSD4 or RCD systems. Space allowed except at the beginning and end of a name. Non breaking space (not allowed) which is replaced with a space instead of underscore. These characters are frequently used and have special meaning in some file formats and systems.
Names for items such as farms, fields, varieties, fertilizers, etc. are limited to 20 characters within the RCD system and must be at least 1 character in length. Names must not start with or end with a white space character. White space characters are spaces, tabs, carriage returns, line feeds, or other non printable ASCII escape characters. The following matrix details the allowed and disallowed characters.
81
IVS Product Family EIC Developer’s Guide
The items listed below are represented as System.String objects within the EIC SDK. These strings are bound to the character rules described above. Load (when using custom) Lot Module ID Prescription Name Reference Layer Name Job Name Field Name Task Template Name Fertilizer Type Name Fertilizer Name Chemical Type Name Chemical Name Headland Name Tank Mix Name Crop Variety Name Crop Name Machine Type Name Implement Type Name Machine Name Implement Name Flag Name Client Name Operator Name Farm Name Brand Name A/B Line Name Circle Name
82
Unit of measure name and label (exception: composites such as lb/ac will allow “/”. Also, composite names and labels may be greater than 20 characters). o Tillage Type Name o Seeding Tillage Practice Name o Other Type Name o Residue Management Type Name o Load Destination Name o Load Cart Name o Application Method (dtApplicationMethod) o Cotton Load (dtCottonLoadType) o Hitch Type (dtHitchType) o Load Type (dtLoadType) o Sky Condition (dtSkyCondition) o Soil Moisture (dtSoilMoisture) o Wind direction (dtWindDirection)
IVS Product Family EIC Developer’s Guide
APPENDIX D: Unit and Representation System The diagnostics utility (DiagnosticsUI.exe) that is packaged with the EIC SDK contains browsers for viewing John Deere’s representation system and unit system data structures. To open these browsers: 1. Run DiagnosticsUI.exe 2. Click View on the menu bar 3. Select Representation System to view the representation system data structures.
Figure 14 Representation System Browser
4. Select Unit System from the same menu item to view the unit system data structures.
83
IVS Product Family EIC Developer’s Guide
Figure 15 Unit System Browser
84
IVS Product Family EIC Developer’s Guide
APPENDIX E: RCD Out of Box Types The following table displays the Out-of-Box types that can be created with the RCD model factory. Included are the unique ID (a System.Guid object) of each type and the reference ID, used on Original GreenStar John Deere systems and sometimes referred to as the legacy ID. The GSD4 uses the reference ID. These Out-of-Box creators, part of the class, have a name is the type of object being
JohnDeere.EIC.ModelsImpl.Factories.GS2ModelFactory
creation pattern of CreateOutOfBoxXXX () where XXX created. Table 17 RCD OOB Types Method
Enum Type
Return Type
CreateOutOfBoxChemical
CreateOutOfBoxChemical Type
CreateOutOfBox
Water
IChemical
DryFertilizer
IChemical
LiquidFertilizer
IChemical
WaterAndFertilizer
IChemical
Solution_10_34_0
IChemical
UAN_28_0_0
IChemical
UAN_32_0_0
IChemical
Additive
IChemicalType
Carrier
IChemicalType
Fungicide
IChemicalType
GrowthRegulator
IChemicalType
Herbicide
IChemicalType
Insecticide
IChemicalType
NitrogenStabilizer
IChemicalType
Conditioning
IUserDefinedType
ID
{53B03C91-D9E84d8e-A6DC7E7AC43B8E87} {543A57C7-BD7444A0-A2408733C4D6410F} {F35B7F67-8C594303-BB4128E84BEE80CD} {FD859B30-20FA41DC-A449CF71EAD27E99} {44D91E7A-34094DFD-877AC250305093B0} {DF4C35D6-C44B4815-BEF91B5904B4A842} {E767C7D2-AC9E4059-8F2334EA76509ED2} {CDD99744-8A854215-8756215A45A554C8} {3C6CB8E5-341640DA-AE1FE683A028AC0E} {7C1D277E-C1B04a76-94E1 AC53A630F4B1} {E443333A-E60B4363-87F8 ACC7FCD4ECA5} {CA0687E8-8C874bac-8F6520B124B82A70} {FB436E9C-2B1143b4-8FE8 A5E69CD4BD44} {077DF20C-74E943e4-A9FCE3C666CAE578} {C1E7103D-2EE2-
Ref ID*
n/a
n/a n/a
n/a n/a
n/a
n/a n/a n/a n/a
n/a
n/a n/a
n/a n/a
85
IVS Product Family EIC Developer’s Guide
Method
Enum Type
Return Type
ConditioningType CreateOutOfBox FertilizerType
Fertilizer
IFertilizerType
Manure
IFertilizerType
Rocks
IFlag
Weeds
IFlag
Dry_Spreader_DN345
IImplementModel
Pickup_630
IImplementModel
Pickup_640
IImplementModel
Pickup_645
IImplementModel
Planter_ 1111
IImplementModel
Planter_ 1113
IImplementModel
Planter _1770NT
IImplementModel
Planter_1790
IImplementModel
Planter_2117
IImplementModel
Planter_2122
IImplementModel
Planter_DB44
IImplementModel
Row Independent_345
IImplementModel
Row Independent_770
IimplementModel
Row Independent_678
IimplementModel
Row Independent_676
IimplementModel
CreateOutOfBoxFlags
CreateOutOfBoxImplement Model
86
ID
4781-BD3C0BC3F647905B} {FD2BFE9D-51C646F4-98EFD2A02D7859EA} {EB2BE46E-887644D4-9A055E2E874A8598} {688C20BB-96094590-95C9649BA65C06DF} {186B9781-04E34c8a-A872FE9FA1493914} {8FC4655D-E879 4D70-AA725847C61A9461} {FE8204D8-AB464A1C-A502E6D6BF6472F7} {D28A788E-A1104608-8850 ABED7C92D658} {6A743D49-24384153-AE327F2AE8D06AB1} {F52565BE-C560468A-A30B93E16BF4521A} {BFD14398-11DE4A26-8F68D1C0A938DAB5} {D143FCA4-BAD04281-B53E8F93BECD1230} {7E99E14B-89294E6E-9C2B19CB9D904083} {4F23ED27-791945FE-98C2C35C9E12A173} {3EEB3C1F-3858435F-83869C40C708C74D} {627C6389-07C443C4-AA5F77BB56B36240} {248B70B4-3C2B4051-86698E6FAD8F7D91} {D071A985-9867488B-A92BB1C02DB8F222} {26F24D37-A51B4658-98CBB2ED7E514B2C} {61D95C1E-BFF34F57-9125C7DE3BA8399B}
Ref ID*
n/a n/a
n/a n/a
n/a n/a
n/a n/a
n/a n/a
n/a
n/a n/a
n/a
n/a n/a
n/a
n/a n/a
IVS Product Family EIC Developer’s Guide
Method
CreateOutOfBoxImplement Type
Enum Type
Return Type
Row Independent_710
IimplementModel
Row Independent_688
IimplementModel
Row Independent_686
IimplementModel
Row Independent_475
IimplementModel
Row Independent_460
IimplementModel
Row Independent_445
IimplementModel
Row Independent_390
IimplementModel
Row Independent_375
IimplementModel
Row Independent_360
IimplementModel
RowUnits_35xxT
IimplementModel
RowUnits_ 35x2
IimplementModel
RowUnits_748Header
IimplementModel
RowUnits_ProSeries
IimplementModel
Seeder_1890_1990
IImplementModel
Tillage_Field Cultivator_2210
IImplementModel
Tillage_Field Cultivator_2210LL
IImplementModel
Tillage_MulchFinisher_ 2310
IImplementModel
Tillage_ChiselPlow
IImplementModel
Tillage_Disk
IImplementModel
AirCart
IImplementType
ID
{3B2767AE-6EEF45D8-8002020C6092F12B} {EE235EC3-7E0842EC-AE70DF0BCAC6F505} {AF0C55C9-7A274EE2-91A74662B520C9E1} {61543E12-BA91460B-990701E8C11918A0} {36B029C8-BCDE4850-818D80471E60B03C} {0885BAFA-CE83499F-B1541487CFD758E8} {BC252A49-20814EE9-847F A5A54E95A2B4} {2612DB4E-0C014EA3-A45E777140DB5824} {CD6AF416-A1C44AA2-9620CA3214A3B981} {F9279813-3D3A4B66-ABC6B532CBEA4076} {614669B8-D7B8463B-947F003A3FCDCCA7} {42E2C573-ABB74C05-A087B14799A7105E} {3C6881C6-CA374401-A5C68338C0498A4E} {FD7EA714-AC044C07-B239328C91634D49} {28AF3243-7C2B4786-8D14F6EAD96E59FD} {737CBE4A-A2304767-89670ECB0CA8898B} {F2614536-C6B447DB-8C5E4C93CB64FD4A} {90C0810F-F492485B-8CE3179A8BE45FBE} {0CBBE717-9AE44F99-BF6380A33F5EF24D} {66C0D7AE-A13F4184-B6C8-
Ref ID*
n/a
n/a
n/a n/a
n/a n/a n/a
n/a n/a
n/a n/a
n/a
n/a n/a
n/a n/a n/a
n/a
n/a 2
87
IVS Product Family EIC Developer’s Guide
Method
88
Enum Type
Return Type
Baler
IImplementType
BeltPickup
IImplementType
Boom
IImplementType
Cart
IImplementType
Chopping Corn Head
IImplementType
CornHead
IImplementType
Draper
IImplementType
DrySpreader
IImplementType
Flex Platform
IImplementType
Flexible Draper
IImplementType
GrainDrill
IImplementType
Hydraflex Platform
IImplementType
RotaryDitcher
IImplementType
RowCrop
IImplementType
RowDependent
IImplementType
RowUnits
IImplementType
LiquidFertilizer Tool
IImplementType
RowIndependent
Implement Type
Pickup NH3Tool
Implement Type IImplementType
ID
FC33FF9CCA54} {BC43B404-CC5041BF-9C44 A675545F72A1} {D3C71163-9E1F44DB-842D6E91E2936A2E} {242A1D81-254D4223-BD76 ABD3C330F2FC} {643E2308-7C814078-9B28 AF60A4C4D9D9} {C2CEAC69-F3044496-A09BC623174524FF} {D9D1C11F-35E043AF-84AE696D9EA3C18B} {D649E05F-E78442E8-AC90498077D9B5DC} {1E187F19-658C4168-93FA A1BD4CF86424} {567D155D-8A204955-90D9E1698AAFACBA} {12FEED97-18C3430F-B20AC0E20AF914DA} {F786C5C1-969D45B6-8719F2FBA4CE1C53} {247A0ADA-8F4A4CCA-9A57FFBC8ED83C26} {42B8651C-589B446C-8BFF A5D8056CB9F8} {D2B57F21-04104A57-91B55F81C1189465} {7554E347-51F54656-9A0017ACB231DF83} {E28F2723-B5D8449A-A0C2838AA20DD292} {AE8C6CEA-303D4C42-A5ACDFDCE93CCAA6} {06BE888A-A8DB480F-B6CB196418EEEA68} {F2FDE3E1-5E6C4FC9-94A44B99C3E2548E} {001A5C0F-6F9A-
Ref ID*
30
10 3
23 24
8
11 5
27 26 6
28 20
9
13 16
17 14
15 18
IVS Product Family EIC Developer’s Guide
Method
Enum Type
Other
IImplementType
Planter
IImplementType
Platform
IImplementType
Scraper
IImplementType
Seeder
IImplementType
Pull Behind Sprayer
IImplementType
Rigid Platform
IImplementType
Tillage
IImplementType
Unknown Head
IImplementType
CreateOutOfBoxLoadCart Type CreateOutOfBoxLoadCart TypeInstance
CreateOutOfBoxMachine Model
Return Type
IUserDefinedType
Truck
IuserDefinedType Instance
GrainCart
IuserDefinedType Instance
BollBuggy
IuserDefinedType Instance
CaneHarvester_35xxT
IMachineModel
CaneHarvester_35xx W
IMachineModel
CottonPicker_7X60
IMachineModel
CottonPicker_99xx
IMachineModel
Combine_SXXX
IMachineModel
Combine_TXXX
IMachineModel
ID
4EE9-B885C8EC9766BB40} {BCB321B9-521D4761-9E64F59816A2AB6B} {DA444C99-A25F4A8E-99B0925B4071C601} {80B8206E-50944A3B-88EAE2F775F41BA1} {5373B15D-73664305-AE7D9392F05B4B08} {C19852E3-5ACD43BD-AA6F8E536CE55275} {A29FB2E7-C75D4521-91FAC9A4311C5F53} {B46BDFD3-BEA144B2-BA4A3B59014CA297} {CD805CAF-9B074943-8DDB4D46FE4A306A} {392661EF-7AD246FC-ACA81786E2C839A0} {DB4F1D89-8A194D02-A8211DB3926502C4} {5F79968B-5CF74029-BFDD789E36608B9C} {8BB60273-E533422D-87097A90482B98C9} {20E7565C-549E4A6A-BA94DD70D4E53C69} {756AB752-19C242F3-A65B2D8F156D59E8} {387F1C01-ECB94F2F-A6D1EF40F02A200B} {554480F4-728641F7-BACD7972C7DFCDCC} {92A7FBDD-1A20429B-A20F05E805037707} {D7DCA058-F7C64C4C-A6069745A6AC1ABE} {854A238D-36254C5F-BFD2-
Ref ID*
22 1
12 21
19 4
25 7
29 n/a
n/a
n/a n/a
n/a
n/a
n/a
n/a
n/a n/a
89
IVS Product Family EIC Developer’s Guide
Method
Enum Type
Combine_WXXX
CottonStripper_74xx Sprayer_4x40
Tractor_6x30 Tractor_6xxxJ
Return Type
IMachineModel
IMachineModel IMachineModel IMachineModel
IMachineModel
Tractor_6xxxR
IMachineModel
Tractor_7x30
IMachineModel
Tractor_7xxxJ
IMachineModel
Tractor_7xxxR
IMachineModel
Tractor_8x30
IMachineModel
Tractor_8x30T
IMachineModel
Tractor_9x30
IMachineModel
Tractor_9x30T
IMachineModel
Tractor_9xxxR
IMachineModel
Tractor_9xxxRT
IMachineModel
Tractor_8xxxR
IMachineModel
Tractor_8xxxRT
IMachineModel
CaneHarvester
IMachineType
Combine
IMachineType
CreateOutOfBoxMachineType
90
ID
8D38F67546C5} {A1456823-64254FA6-B8413E2C8EA69C5E} {6EB82F27-FD704522-8D31EF8181ECBB3A} {93C47B03-F2E0499F-B7B81B8278FE29E1} {C45D3063-9680498D-93C085A9DFB60707} {46925515-16A44E60-A9A24F8822047C51} {54BFC1F4-D4C14288-A2600D85186D9BE6} {80BC222D-4DEE4BB1-897F0AF6E9AE2E9E} {D29B6028-C49C4CC1-AFFBBD36158706D1} {E1348933-38AC4387-83A4C3E216359E43} {B7812809-AA6E4149-B7CA5DCBD8C77CAF} {0A96ED5A-CA674501-BA286AB6E45773CC} {05928C56-9BB3464D-8FEE67205DED3C6B} {5C3CAB35-982942FE-932F5C8B3331A8E4} {8F85C6AC-29484AD0-A9E954B81C108234} {99B0A31A-914D47E3-A4612355C14A83DA} {1EB2EF7A-74D342FE-9B52 AFA6A88E4163} {BE207158-932A4B6C-8BD7C42954227CA4} {4086ADBF-725544E0-81BA71194737FB7C} {D8DCE5B0CC8D-4C34-AFAC27D93793BD86}
Ref ID*
n/a
n/a n/a
n/a n/a
n/a
n/a n/a
n/a n/a n/a
n/a n/a
n/a
n/a
n/a
n/a 10
3
IVS Product Family EIC Developer’s Guide
Method
Enum Type
Return Type
CottonPicker
IMachineType
CottonStripper
IMachineType
Other
IMachineType
PickupTruck
IMachineType
SPFH
IMachineType
Sprayer
IMachineType
Tractor
IMachineType
UtilityVehicle
IMachineType
CreateOutOfBox MiscellaneousType
IUserDefinedType
CreateOutOfBoxMowingType IUserDefinedType CreateOutOfBoxOtherType IUserDefinedType CreateOutOfBoxResidue ManagementType CreateOutOfBoxResidue ManagementTypeInstance
IUserDefinedType
Chopped
IUserDefinedType Instance
Spread
IUserDefinedType Instance
ChopAndSpread
IUserDefinedType Instance
Windrow
IUserDefinedType Instance
CreateOutOfBoxScouting Type
IUserDefinedType
CreateOutOfBoxSoil SamplingType
IUserDefinedType
CreateOutOfBoxTillage Practice
IUserDefinedType
CreateOutOfBoxTillage PracticeInstance
NoTill
IUserDefinedType Instance
ID
{574705BC-C7D54A07-95015515D02268EC} {5758B5FD-F2244344-BFAEC219631F1006} {502355A9-53FA4B08-99E6EC1F5AEFAB31} {54020EBB-DEF84F36-8A0C6F713A3F9868} {99EDF0E0-4ABB42D3-9798327439A39C38} {6CF945EC-9E624BCC-A40241D917BD906C} {82115264-9385460C-BFBE177A59445FD9} {A00AC8A0-7F2F4C5F-B156DC8982CF9040} {B6326CAD-3757483F-8ADE6583F931A0EE} {F775799A-41A84548-81BDB06421C509AD} {E47B11F4-94954C36-A474DD2E6558ACF1} {93A85C5D-7D674E3F-956195B34FB0207D} {936BFAC4-CF824F8C-B8CD7FABB588DCF2} {03B73715-7D6F49BE-B20277CB07C5417F} {66BB9DF6-1B664164-B006 A7F5C234CEEE} {D4765065-FC8E4787-A22298F120BFD51C} {84D15525-1727414D-A7FC87D3FB900858} {9B031E2D-672B4AC1-AD2AB4396FE2E1B1} {59AF1349-F54C456C-B8F56D1496BCF1C8} {8AB0C735-DCBB4495-BDD6-
Ref ID*
5
6
9 8
4 2 1
7 n/a
n/a n/a
n/a
n/a n/a
n/a n/a n/a
n/a
n/a n/a
91
IVS Product Family EIC Developer’s Guide
Method
Enum Type
Return Type
Strip
IUserDefinedType Instance
Ridge
IUserDefinedType Instance
Mulch
IUserDefinedType Instance
Reduced
IUserDefinedType Instance
Conventional
IUserDefinedType Instance
CreateOutOfBoxTillageType IUserDefinedType CreateOutOfBoxTillageType Instance
Primary
IUserDefinedType Instance
Secondary
IUserDefinedType Instance
RotaryHoe
IUserDefinedType Instance
RowCropCultivation
IUserDefinedType Instance
CreateOutOfBoxTransport Type
IUserDefinedType
ID
7879FCB7FE6C} {EB1FA803-302B464B-B133FDC36B2C5513} {248D0627-D13A4F9C-968FBA9EA8B5E205} {C9C74920-E92044EA-B28BC4C65B9B0CDC} {F84CE98B-564B4DC8-98E17A2FC3129D0E} {A0E97081-48CA4FF5-B4D6313FD6D849A3} {0F592078-A596477D-8E6A8F12A50B7389} {6C55529D-5B4D4E3E-B98618CEBF54F4D6} {4E51F08C-5E5242FB-B1B00732207E189A} {DDAF2662-DF39488D-9A402FEC15887CD7} {842C34A2-05854D3D-B11533788F0C62E8} {F5123955-8825489C-BE90C159E994DEC9}
Ref ID*
n/a
n/a n/a
n/a n/a
n/a
n/a n/a
n/a n/a n/a
*(n/a = not applicable)
APPENDIX F: Calibration Factors Before engaging in harvest operations, the equipment operator will often need to adjust the raw data being transmitted by, for instance, a mass flow sensor. The operator must adjust or calibrate the mass flow sensor in order to achieve accurate grain weight measurements. By determining what adjustments are required a nd applying these adjustments, yield accuracy and other metrics are improved. On the GS2 display, the operator can apply these adjustments on the Setup – Yield Calibration screen. Accurate adjustments or calibration factors are obtained by a number of methods. One method is to begin calibration using the GreenStar display, then engaging in a prescribed calibration procedure. One procedure involves harvesting a given amount of grain (which is recorded by the mass flow sensor) then weighing that grain at the grain silo or other collection point. The scale weight and the harvested weight are then compared and the adjustment of that yield is the new calibration factor. For instance, if you have the following: Existing calibration factor for the crop being harvested: 500 Weight of harvested crop on GreenStar display: 10,000 lb.
92