(URGENT) An issue was found in the previous operating systems that could cause the datalogger to become unresponsive in some systems after 50 days. This operating system resolves that issue. It is highly recommended that all CR300s and CR310s be upgraded to this operating system.
(WARNING) Upgrading the Operating System could reset all CR300 settings back to factory defaults. Sending this Operating System remotely can be done but is not recommended. To restore settings after the update, it is recommended that a backup be made of the current datalogger settings or take programmatic measures to ensure your settings can be restored. This can be done using Device Configuration Utility’s (DevConfig) backup utility or the CRBasic instruction SetSetting(). Watch the Video Tutorial: Sending an OS to a Local Datalogger.
Added GPS() instruction.
Added AM25T() instruction.
Added PreserveVariables() instruction.
Added SMSRecv() instruction (for use with the CR3X0-CELL200 and CR3X0-CELL210 only).
Added SMSSend() instruction (for use with the CR3X0-CELL200 and CR3X0-CELL210 only).
Added support for the CR3X0-CELL200 and CR3X0-CELL210 embedded cellular modems.
Added RNDIS support which allows Ethernet over the USB port.
Fixed an internal system timer rollover issue that could cause tasks to sleep indefinitely resulting in communications loss and/or a watchdog.
Communications are now paused until the radio (407,422, etc.) has initialized.
Added the ability to create WireShark PCAP files that can be used for Ethernet tracing and troubleshooting.
Added the ability to update the datalogger operating system, internal webpages, and program to the datalogger using a single xxx.WEB.OBJ.GZ file.
Added background task queue checking.
Boot-up table verification buffer updated (requires less memory).
Combined communications and IP to share the same pool memory.
Various memory optimizations have been made to improve variable and table space.
Updated default program checking to include "default.cr300" on the CSI drive.
Fixed a USB issue that could cause USB transmit to fail.
Fixed an error in the USB driver that caused USB communications to fail.
Fixed a wakeup from sleep issue that could cause RS-232 transmit to fail.
Fixed a memory issue related to configuration of C1 and C2 ports.
Updated default program checking. If default.cr300 has a compile error, the datalogger does not continually restart.
Fixed an issue that caused hidden files to lockup the datalogger.
Fixed an issue in memrealloc that could cause a hard fault due to a memory read beyond the memory boundary.
Fixed an ABS function when using doubles.
Fixed the EXP function when using doubles.
Fixed an issue when storing tables with records greater than 4K.
Fixed an issue in the IP task that did not allow the CR310 to sleep when the Ethernet was disabled or powered down.
Fixed an issue that could cause memory corruption in the IP stack.
Fixed a memory corruption issue with the IP stack buffers.
Fixed a continuous restart issue related to file streaming.
Fixed an issue where the PakBus TCP Client setting was not able to connect to large port numbers.
Fixed a wait communications issue that could cause PPP dial to fail.
Fixed a TLS server memory allocation issue that could cause the logger to continually restart.
Fixed an issue when using EmailRelay() to send emails to multiple email accounts.
Fixed an HTTP chunking issue when using EmailRelay() with table streaming.
Updated IP stack advertised MTU to 1430 bytes. This resolves an issue with EmailRelay() when used with a datalogger connected to an RV50 cellular modem.
Lowered TCP maximum segment size. Fixes issue with RV50 modems and EmailRelay().
Fixed an issue that caused the chunk size to be incorrect when using EmailRelay().
Streaming pointers for EmailSend(),FTPClient(),HTTPPost(),HTTPPut() are now preserved across power cycles. (A lithium battery is required.)
Fixed a continuous restart issue related to file streaming.
Fixed a memory buffer size issue that caused HTTPPut() to fail.
Fixed an issue when using FTPClient() and TLS in slow sequences that caused the datalogger to continually restart.
Updated CRBasic compile to allocate an additional TLS buffer when using FTPClient().
Fixed a TLS memory free issue that could cause FTPS to fail.
Added low-level file creation retries for HTTP/FTP.
Updated the HTTP server to look for files on the CPU drive first.
Updated the HTTP server to first look for "CPU:index.html" before trying "CSI:index.html".
Updated the "Forbidden" HTTP message for internal web pages.
Fixed an issue that caused web sockets to fail to update after bootup.
Fixed an issue that caused XMLParse() to fail when XMLContent was a file name.
Fixed a TCP/IP buffer overrun issue with the DHCP server.
Fixed an issue that caused PPPClose to not allow the datalogger to sleep.
Fixed an issue that caused duplicate sniff output when sniffing over a TCP/IP connection.
Updated the default domain name to be "linktodevice.com".
Fixed a PakBus/TCP Clients issue when using a large port number that caused datalogger to not make the TCP/IP connection.
Fixed an issue that caused ModbusMaster() to always reopen the port. This caused issues when using a non-default serial format.
Updated ModbusSlave() to show a compiler error if the baud rate is incorrect.
Fixed an issue that caused the MODBUS flag to not be set when the port was already opened.
Fixed Tablefile() record pointers incorrect after power cycle.
Fixed an issue that could cause an IP Trace to be enabled while tracing another port.
Updated terminal command web update to retry if the first network fails.
Fixed an issue with SetSettings(Settings.RadioEnable).
Fixed an issue that caused a continual restart when using SetSetting("EthernetEnable" . . .).
CRBasic SetSetting "USBconfig" added.
Fixed issues with SetSetting "BaudrateRS232", "BaudrateCOM1", "BeaconRS232", "BeaconCOM1", "BeaconCOMRF", "VerifyRS232", "VerifyCOM1" and "VerifyCOMRF".
Updated Settings.RadioRSSI to return a negative value.
Updated SetSetting() parameter FieldName to support variables or expressions.
Fixed an issue with SDI12SensorResponse giving +9999999 for NAN instead of -9999999.
Fixed the SDI12Recorder() instruction array bounds checking.
Updated port/channelcompiler error to give the port/channel name instead of the number.
Fixed an issue with GoesTable() not addressing the transmitter prior to sending data.
Added support for Sprintf() 'Y' SDI-12 formatting.
Fixed Sprintf() so %% in the format string generates a % character.
Added a PulseCount() - PConfig compiler check.
Fixed an issue that could cause a PakBus timer to request a disconnect when using the watch command (W) in the terminal.
Fixed an issue that caused the compiler to crash with variable names > 39 characters.
Fixed an issue that caused GetDataRecord() timestamp to be incorrect.
Fixed an issue that caused PakBus communications to fail if Modbus was enabled on the same port.
Fixed MuxSelect() to allow VX1 and VX2 as the clock and reset ports.
Fixed an issue that caused SerialBrk() to not send the break.
Updated digital I/O pin hardware initialization.
Fixed an issue that caused CRBasic long variable = NAN to fail.
Updated SlowSequence task priorities.
Updated FileControl() to allow file delete if "run now program flag" is set and the program is not running.
Fixed an issue when storing tables with greater rhan 4k record size.
Updated low-level serial open to skip hardware/DMA initialization if port is already open with same options.
Fixed ABS() negative to positive error.
Fixed a ABS() issue when using doubles.
Updated math "^"(pwr) function to return results consistent with other dataloggers.
Fixed an issue when using SerialOpen() for ports ComC1_Rx,ComC2_Rx,ComC1_Tx, ComC2_Tx. Format was set incorrectly.
Fixed Terminal CSI Security Code issue.
Added clock calibration option to calibrate the clock using P_SW port.
Added support for VX1 and VX2 to PortSet().
Fixed an issue that caused the menu to be truncated when displaying the terminal menu.
Fixed an issue that caused invalid differential measurements if a port was configured as an input.
Fixed an issue that could cause CurrentSE() to measure before the hardware was fully ready.
Fixed a record find issue that caused GoesTable() buffer to not output all data.
Low-temperature clock calibration added.
Updated Startup timing to use a hardware timer.
Fixed GoesTable()/GoesField() instructions.
Fixed setting values in ConstTable. The flag that told the search code that this was not a final storage table was being cleared.
Fixed an issue in SerialClose() that caused the port to not shut down in the correct sequence.
CRBasic SerialIn() updated. If the timeout = 0 and the termination character/string is < 0 or a NULL string, then it will record any characters in its buffer and then exit.
Fixed a SlowSequece task start priority issue that could cause slow sequences without scans to run at a higher priority.
SerialOpen(), SerialIn(), SerialOut(), SerialClose() updated to support ComC1_Tx, ComC1_Rx,ComC2_Tx,ComC2_Rx. Example: SerialOpen (ComC1_Tx,115200,0,0,500)
Fixed an issue that caused sniff RX packets to be duplicated.
Updated PWM port checking. Allows PWM on same port and fixed the reported channel.
GoesTable() and GoesField() adjusted so slashes are present only when the record has not yet been recorded.
Adjusted GoesTable() syntax when decimating.
Fixed GOES pseudo binary message so it will now not include any spaces or carriage returns.
Fixed setting a Boolean in a constant table.
Power-up flag is now restored when a lithium battery failure occurs.
Fixed an issue that could cause the datalogger to continually reboot if a compile error occurred with a line greater than 512 bytes.
Fixed a serial flash write issue with tables larger than 4K.
Fixed a table memory buffer issue.
Changed LithiumBattery text to "OK, ON POWER UP".
Fixed a PakBus issue that caused a watchdog when a link timed out.
Updated Goes instructions.
PakBusClock() changed so PakBusAddr parameter can be variable.
PakBus 30 minute close file timeout not active if called from the program.
Fixed an issue where, if writing to a special field (TIMESTAMP, RECORD, etc.) of a structure, the table semaphore was not released.
Removed various compile errors with GetDataRecord() and AcceptDataRecord() when referencing a data table not matching the scan interval, which will allow the data table's DataInterval() declaration to match the remote DataInterval() declaration.
Fixed terminal command "C".
Fixed an issue with MODBUS that caused the RxParse task to drop to a lower priority.
Fixed an issue that could cause PeriodAvg() to reset the datalogger.
Fixed a PeriodAvg() timer rollover issue.
PeriodAvg() - removed cycle restriction of 200 cycles.
Updated GOES to prevent pc-compiler crash.
Fixed an issue that could cause a serial flash error at address 217088 when settings are set to defaults.
Fixed the DataTableInfo record number from incrementing on every poll.
Fixed a NAN issue when using reps with measurements. If one channel is NAN the sequential channels will NAN as well.
Removed a 16K task allocation.
Fixed an issue with channel port configuration checking when using reps.
Fixed an issue that could cause the RunProgram task to lock up if the same table is called from both the SlowSequence and scan.
Fixed an issue that caused unclean frame size to not be calculated correctly.
Fixed a COM1 open issue that could cause the COM1 task to not start. (Occurred when a SerialClose() and SerialOpen() were called without a delay in-between them.)