(New Feature) Added SDI-12 Version 1.4 support to SDI12Recorder() and SDI12SensorSetUp().
(New Feature) Added the Quadrature() instruction
(New Feature) Added PCAP Settings in the advanced section to allow the creation of a PCAP file.
(New Feature) Added Settings.NTPServer. This setting keeps the datalogger clock synced with the specified server. This setting will be polled once per day. It will also be polled if something has changed the datalogger clock by more the 1.5 seconds. This setting is in the settings editor advanced section.
(New Feature) Added Settings.TCPMSS. This setting can be used to set the maximum TCP segment length. Valid range is between 300-1460 bytes. Some modems require smaller TCP Packets. This setting is in the settings editor network services section.
(New Feature) Added optional parameter to the PingIP() instruction to specify IP version.
(New Feature) Added an optional parameter to the PPPOpen() instruction to select the IP version.
(New Feature) Added Terminal Mode 'F' command to display datalogger setting names.
(New Feature) Added "press ESC ESC ESC ESC to close" when opening the Terminal Serial Talk Through mode.
(New Feature) Added a warning in the Status.CompileResult when a conflicting PakBus TCP route is found. This happens when there are two PakBus nodes with the same PakBus address on a network. While the conflict exists, PakBus polling will occur every 2 minutes instead of every 200 mSec to avoid unnecessary memory usage.
(New Feature) Added TTL (Time to Live) when monitoring DNS communication traffic.
(New Feature) Added Exclusive Option to the IPRoute() instruction.
(New Feature) Added the ability to load an operating system stored on a card via the CR1000KD File Directory (E.g., CR1000KD/File/Load OS From Card).
(Minor) The GPS() instruction now accepts values prefaced with + or -.
(Minor) The ETsz() instruction now outputs the correct units.
(Minor) The SerialOpen() instruction now reflects the CommsMode setting back to Device Configuration Utility.
(Minor) Improved the advanced settings section in the CR1000KD.
(Minor) Fixed SetSetting("EthernetPower",0); 0 = always on, 2 = one minute, 10 = disabled.
(Minor) The function parameter in the TimerInput() instruction now resolves the erroneous compiler error that states "There are too may function digits specified, maximum is 14."
(Major) Settings.PPPDial now always keeps the RS232 port awake when the setting equals "PPP." The RS232 port would go into sleep mode disabling communications between the datalogger and the cell modem. This was present with datalogger and Raven XT combinations. Datalogger and RV50 combinations were not affected.
(Major) The ClockSet() instruction now avoids skipped records when the clock adjustments are less than one second.
(Major) The memory error that occurred when two PakBus/TCP Client connections were pointing to each other no longer occurs.
(Minor) You can now store to a one-byte string (String * 1).
(Minor) Minion Pair configuration now allows SDI12 communication and PWM() on the same minion pair.
(Minor) The SDI12Recoder() instruction now detects if an error occurred while waiting for the ttt seconds timeout before getting data with the D command.
(Major) The Disable Lithium Battery setting is now cleared on powerup.
(Minor) The HttpGet() and HttpPost() instructions now replace a space character in the URL with a %20.
(Minor) Parameters defined as Double are now correctly passed to functions that are not declared as type Double.
(Minor) Function declarations now output the Return value when no parameters have been defined.
(Minor) Fixed data type IEEE8 in the Sample() instruction for variable types as Double.
(Minor) The CPI Sync now works with a 1kHz program scan rate.
(Minor) XML output of data types now displays data type UINT4 as unsigned Int instead of Float.
(Minor) Sample() instruction now correctly executes when sampling from a Float into a Double.
(Major) If the Main Scan does not contain a measurement instruction, the SlowSequence will still run.
(Minor) A Pointer can now be sent into an Array when the index is not constant. For P(i)(), at run time i was used as the pointer rather than P.
(Minor) Fixed an erroneous compile error when the index of an array is an expression with the first number equal to 0 (e.g., X(0+1), X(0+i)). Note that variable array indexes always start at 1, so if the expression used for the index returns 0, a runtime variable out of bounds warning is generated.
(Minor) You can now use pointers in ArrayLenVar parameter in the ArrayLength() instruction.
(Minor) You can now use pointers in TypeVar parameter in the TypeOf() instruction.
(Minor) You can now update datalogger data table information using web sockets.
(Major) Fixed the EmailRelay() instruction stream all tables option.
(Minor) The Subject parameter in the EmailRelay() instruction now allows the subject to be Constant.
(Minor) The EmailRelay() instruction now ignores 'space' or 'tab' characters in the address string. The comma ',' character is the delineator for multiple address.
(Minor) The EmailRelay() instruction now returns the correct error code when there are connection failures.
(Minor) The timeout parameter in the EmailRelay() is the value specified (not twice the value, as in previous operating systems).
(Major) Sequential Mode background calibration now performs as expected.
(Major) When the measpex parameter in the BrFull() instruction does not equal the reps parameter; the data is no longer shifted into the wrong destination array elements.
(Major) PPP now discards packets with a bad Checksum when a modem is attempting to establish the PPP session.
(Minor) The Delay() instruction will no longer accept delay values less than 0.
(Minor) The ClockSet() instruction will now allow "/" in the date if the parameter is of type String.
(Minor) The SNMPVariable() instruction now allows new OIDs to be inserted before the ESSVariable space.
(Minor) The public declarations for the EssVariables() instruction now require a ten-element array for indexed OIDs.
(Minor) The SPIOpen() and I2COpen() instructions now configure the hardware at runtime.
(Minor) The reset parameter in the MaxRun() and MinRun() instructions now behave like AvgRun().
(Minor) String variables can now be referenced as (N,1) or (1). This avoids a variable out of bounds error at run time.
(Minor) Constant declarations now allow a Const to be equal value in the settings table. Example Const A = Settings.SerialNumber.
(Minor) The Timer() instruction now uses the system time instead of the clock so the timer is independent of the clock being adjusted.
(Minor) The SDI12Recorder() instruction now accepts type Double for the destination variable.
(Minor) The SDI12Recorder() instruction timeout now ignores noise spikes while waiting for the sensor to be ready.
(Minor) Channel configuration no longer allows the TimerInput() and PulseCount() instructionson same minion.
(Minor) The CDM_VW300Config() instruction now allows using the pre-defined constant CDM_VW300 or CDM_VW305 in type parameter (as well as 0 or 1, as in previous operating systems).
(Minor) The CPIStatus table now displays up to 50 CPI modules.
(Minor) The PakBus verify interval advertised in the 'Hello Exchange' is now equal to the verify interval setting rather than the setting / 2.5.
(Minor) DNS will now attempt to first resolve IPv6 then IPv4.
(Minor) The default DNS server is now listed last. The specified DNS address is listed first.
(Minor) TimeUntilTransmit is no longer allowed outside a Scan/NextScan.
(Major) SWVX now works outside of the main scan when setting VX1 to 5 V.
(Minor) Settings.PPPInterface now disables auto baud functionality. A specific baud rate must be set.