Earlier Versions
Luke Cerwin
AJ Johnson
Following is information about each official TSENTRY release, including a description of all the changes included with each release and instructions for upgrading from one version to the next.
Upgrading TSENTRY
In general, upgrading TSENTRY from one version to another requires the following steps:
Stop any running TSENTRY processes
Backup existing TSENTRY files
Install new version of TSENTRY
For versions 2.29 and below, copy new
\tpriNtRt\
directory over existing directoryFor versions 3.00 and above, run the install wizard
Rebuild all application processes, screens, and the data dictionary
In some cases, however, additional changes are required; these are listed below by version. In some cases some steps must be taken before performing the above instructions, so please read below before continuing. If upgrading across more than one version (e.g. v1.4 to 2.0), steps for intermediate versions must also be performed.
TSENTRY Versions
The major TSENTRY versions reflect support for the various versions of the Microsoft Visual Studio compiler:
Visual Studio Version | TSENTRY Version |
Visual Studio 2017 | TSENTRY v9.xx.x.xxxx |
Visual Studio 2015 | TSENTRY v8.xx.xxxx |
Visual Studio 2013 | TSENTRY v7.xx.xx |
Visual Studio 2010 | TSENTRY v6.xx.xx |
Visual Studio 2008 | TSENTRY v5.xx.xx |
Visual Studio 2005 | TSENTRY v4.xx.xx |
Visual Studio .NET 2003 | TSENTRY v3.xx.xx |
Visual Studio 6.0 | TSENTRY v2.xx & v1.xx |
Version Details
Changes:
Replace tpriAppThread with direct calls to CreateThread and tpriCreateTimer (TSEN-37)
Add protection against malformed messages received by ProbeSvr (TSEN-43)
Upgrade Instructions:
Review project code for usage of tpriAppThread:
If calling StartAppThread with first two parameters set to non-zero then replace with call to tpriCreateTimer(..).
If calling StartAppThread with first two parameters set to zero then replace with call to CreateThread(..). Remember to set appropriate thread priority on successful thread creation.
Update EGD driver initialization file:
[PRODUCE] section adds ‘ThreadPriority’ and ‘ThreadInterval’ parameters as shown below:
[Produce]
ProducerId=10.0.0.1
ProducerPort=18246
ThreadPriority=101 (typically this will be higher than the task's priority)
ThreadInterval=25 (ms rate)
Changes:
Fix logging of ProbeSvr variable changes (TSEN-38)
Changes:
Made various changes to the ProbeSvr task:
Added check to prevent message buffer overrun (TSEN-21)
Added requirement for Initialize(..) and Shutdown(..) methods in custom probe sources (TSEN-23)
Added support for writing new values back to custom probe sources (TSEN-27)
Added support for relaying requests to other probe servers (TSEN-25)
Fix server variable reference counting (TSEN-24)
Added new ProbeMir standard task (TSEN-29)
Increased maximum allowed sizes for data dictionary (TSEN-28)
Modified ControlLogix Producer/Consumer driver to use PLC’s Requested Packet Interval (RPI) when producing messages sent to PLC (TSEN-26)
Fixed unhandled exception in
tpriGsmDDCom::saveAllStructs(..) (TSEN-30)
Fixed save/restore of bool types in data dictionary (TSEN-31)
Restructured LogMsg library to facilitate usage outside of Tsentry (TSEN-35)
Refactored tpriCreateTimer(..) so that multiple independent timers can be created from a single task (TSEN-36)
Updated RTX64 4.1 → 4.2
Changes:
Automatically set Windows timer resolution for tasks with rep rates less than 50 ms (TSEN-20)
Added a ValidatingClick event to SelectButton, CmdButton, LinkLabel, and Shape (TSEN-22)
Added deployment of OPC library and Client+Server applications (for x86 only)
Updated RTX64 4.0 → 4.1
Changes:
Added TstartMgr utility
Fixed Tsecurity installer to no longer create a local account named LOCALSYSTEM
Changes:
Added overload to TPRI.Process.GetState(..) in TPRI.NtRtControl.dll to specify application name
Fixed converting legacy trend data files
Removed support for v1.70 and older trend data files
Enable graphics double-buffering for LevelDisplay HMI control
Fixed 64-bit issue in ControlLogix producer/consumer library
Changes:
Updated versioning to 4 digits (Major.Minor.Build.Rev)
Changes:
Added support for RTX64 4.0
Updated tpriProcMgr tracking of active processes
Created new wrapper methods in tpriNtRtEx.dll
tpriCreateProcess
tpriOpenProcess
tpriGetExitCodeProcess
tpriCloseHandle
tpriTerminateProcess
Added various enhancements to the data dictionary & GsmPifBld:
Added support for bool types
Added support for bitfields
Added support for embedded structures
Added various enhancements to the GsmCsBld utility:
Added support for bool types & bitfields
Added helper methods to every structure class:
Allocate()
Zero()
Copy(..)
Added FromHexString(..) extension for strings
Added new tpriTimer functions:
Act*Timer(..)
Exp*Timer(..)
Changes:
Fixed variable entry on TriggerMgr screens
Changes:
Fixed trending structures size for compatibility between 32-bit and 64-bit library versions
Added Cryptor class to NtRtControl
Made various changes in the GsmCsBld utility:
Add IEnumerable<T> interface to array classes
Add comments to generated C# code using data dictionary variable descriptions
Add GSM boolean extension methods
Made various changes to GePlc driver:
Retry logic for handling errors during sending data
Additional debug log messages
Do not explicitly set socket to non-blocking
Set initial connection port pseudo-randomly
Added logging of Tsentry uptime
Increased limit of files paths used in sysProcs.ini file
Changes:
Added GsmCsBld utility
Exposed various methods in TPRI.NtRtControl.dll required for C# Tsentry tasks:
TPRI.Process.Create()\
TPRI.Process.PrIni(..)
TPRI.Process.PrWait()
TPRI.Process.GetState()
TPRI.Process.SetDispStatus(..)
TPRI.Process.Destroy()
TPRI.GsmDDCom.Create()
TPRI.GsmDDCom.MapGsm(..)
TPRI.GsmDDCom.Destroy()
Added support for Tsentry restart request
Added DelayBool utility function
Added 'Localizable' attribute to the text properties of various HMI controls
Added ability to update Texplore titlebar text
Changes:
Added support for VS2017 & 64-bit
Made various changes in the TPRI.NtRtControl assembly:
Fixed Debug::LogMsg(..) to properly support custom message queues
Added GsmDDCom::GetVarPtr(..) method
Changed Tsecurity authentication to call LogonUser(..) using LOGON32_LOGON_NETWORK instead of LOGON32_LOGON_INTERACTIVE
Fixed LogData(..) to properly handle buffer as binary data instead of a text string
Fixed ProbeSvr to prevent data corruption resulting from network delays and/or time skew
Removed DbgHelp.lib from Tsentry installation (now included on all Windows platforms)
Changes:
Added support for VS2015 & RTX2016
Made various changes to the Texplore application:
Fixed download of Texplore assemblies from host to prevent conflict if Texplore is already running with an older version of the assemblies
Fixed sequencing to return to ‘Connect’ screen if unable to start an HMI application
Fixed initialization of window positions from .ini file when automatically connecting via command line parameters
Fixed initialization of window size and position for normal, maximized, and kiosk modes
Disabled popup message if exception while saving Texplore settings to .xml file
Added option to specify different computer (from HMI host) for retrieving probe data
Made various changes to the ProbeX control/screen:
Allowed paste of a textual list of variable names
Fixed flickering/delay when adding or removing a large number of variables from the list
Fixed corruption of grid data when loading a very large probeset
Fixed display of 0’th element of array in graph
Fixed cut/copy/paste shortcut keys when editing variable names & values
Fixed left-justify of all text in cells
Made various changes to the TPRI.Debug class in the TPRI.NtRtControl assembly:
Fixed crash if calling Initialize(..) while Tsentry is not running
Added overloaded Initialize(..) function to support usage in processes that are not included in the sysVars.ini file
Added TPRI.GsmDDCom.SetVariable(..) method in the TPRI.NtRtControl assembly
Added auto-validation of min/max to TPRI.HMI.Controls.TextBox
Fixed TPRI.HMI.Controls.ComboBox auto-submit logic so that new value is only sent to host after the selection change is committed
Fixed TPRI.HMI.Controls.StateList to support use of control on sub-panels instead of only on forms
Fixed TPRI.HMI.Controls.DataSetLoader to ignore the mouse wheel when the dropdown list is collapsed
Fixed TPRI.HMI.Controls.LogMsg control so that it automatically reconnects if LogMsgName is changed at runtime
Fixed TPRI.HMI.Controls.StaticArrayGraph2D control so that data at x=0 is properly displayed
Added TPRI.HMI.Controls.DBViewer control
Removed deprecated controls and dependencies from the TPRI.Core assembly
Updated ComponentOne version to v2.6.20073.357
Made various changes to the ProbeSvr process:
Converted connection handling from dedicated threads to a thread pool
Fixed TCP/IP listen logic so that all pending connections are accepted at once instead of once per loop of the main thread
Fixed memory leak when handling requests for array or string variables
Added delay before retry if error opening listen socket
Fixed printing of Unicode text when displaying current NtRtSvc configuration parameters
Made various changes to the tpriGsmDDCom library:
Fixed getVarArrDimCnt(..) and getVarArrDim(..) to support complex types like array typedef’s
Fixed formatting of 64-bit integers when converting to a string
Added support for message number, object name, and user to the LogMsg(..) function library
Fixed concurrency issue when calling LogMsg(..) from multiple threads
Fixed tpriGsmOpcItem::ReadGsmOpcItem(..) so that value is only written back to global common if quality is ‘good’
Updated tpriVmic driver so that latest VMIC 5565 drivers are used in Win32 mode
Made various changes to the Tsentry and Tsecurity installers:
Fixed created shortcuts so that they have working folders configured correctly
Added silent installation command line switch (/S)
Fixed tpriProc::Create(..) so that the C runtime error report mode is set properly when compiling applications in debug mode vs. the release version of tpriNtRt.lib
Change RDCHANDLE typedef used by tpriRdc classes from unsigned to signed in order to support legacy code setting the value to -1
Fixed logging of stack trace information after crash (bug introduced with conversion to Unicode)
Fixed parsing of historical trend trigger files with headers larger than 16 kB
Changes:
Initial release for VS2013
Modified installer to deploy Release-mode versions of all executables and libraries
Rebuilt all executables and libraries for Unicode instead of MBCS
Changed all projects to use CRT and MFC as shared DLLs instead of static libraries
Upgrade Instructions:
Modify any application Visual Studio project properties to use CRT and MFC as shared DLLs instead of static libraries:
Configuration Properties → General → Use of MFC:
Use Standard Windows Libraries if not using MFC
Use MFC in a Shared DLL if using MFCConfiguration Properties → C/C++ → Code Generation → Runtime Library:
Multi-threaded DLL (/MD) for Release builds
Multi-threaded Debug DLL (/MDd) for Debug builds
Changes:
Made various changes to the Texplore application:
Moved Texplore.exe.config file from same folder as Texplore.exe to user-specific folder
Fixed restore of minimized/maximized window state when application is stopped & restarted
Added automatic retry of host connection after error
Fixed display of new & old windows when spawning a new instance of the executable
Automatically download all sub-folders and files when downloading application to client workstation
Removed user interface window from TrendSrv process
Fixed cleanup of socket handles in tpriCleip class
Upgrade Instructions:
Remove any
Texplore.exe.config
file from the folder(s) used to download Texplore & the associated HMI DLLs to client workstations (these folder are typically%TSENTRY_SYSDIR%\%TSENTRY_SYSNAME%\HmiConfig\*\Texplore.exe.config
) since these Texplore.exe.config files are no longer used and if corrupted can cause problems for the application
Changes:
Made various changes to the TrendX screen & controls:
Changed automatic axis rescaling to use data between cursors rather than entire trend width
Added Rescale all axes popup menu item
Reworked logic for reallocating axis percentages when changing value for single axis
Fixed automatic update of displayed axis percentage when dragging axis in graph
Fixed TrendX error message following restarts when playing data backwards in ‘<’ mode
Fixed bug in auto-abbreviation of variable names listed in a trendset
Fixed display of time & axis min/max popup boxes when viewing on non-primary monitor
Fixed data dictionary form to properly display dictionary browser popup window when viewing on non-primary monitor
Fixed Texplore/Tsecurity handling of DefaultPrivileges key in application configuration XML files when Tsecurity is disabled
Made various changes to the Tsecurity GetPrivileges(..) function:
Fixed bug that would incorrectly set an error flag in SAK instead of return status
Added code to reset returned SAK and privileges upon function entry so that default values are returned in these variables in case of error
Fixed crash in Tsecurity service when authenticating domain users on Windows 2008 and later
Made various changes to the Texplore application:
Fixed saving/restoring of window size & position
Added code to automatically save/restore last 30 host/application connections & display in drop-down box on the connection page
Changed TPRI.HMI.Controls.Prober class ProberUpdated event declaration to explicitly specify a ProberUpdatedEventArgs argument instead of the generic EventArgs
Changed NtRtInfo.ReadFile(..) to open file for both read & write sharing
Added popup message to TPRI.HMI.Controls.LogMsg if error retrieving LogMsg text file
Added Prober and WriteProber properties to the TPRI.HMI.Controls.SelectButton class
Added new tpriLicense::VerifyWithPCName(..) and TPRI.License.VerifyWithPCName(..) functions
Added new tpriOpcClient class library
Added new TPRI.NtRtControl assembly
Fixed buffer overruns when logging messages longer than 512 bytes via LogMsg(..)
Made various changes to the tpriProc class:
Added new Attach(..) function
Added new getGroupState(..) function
Made various changes to the tpriGsmDDCom class:
Changed getVarDesc(..) function so that structure-based description is returned if variable is defined in the sysVars.ini file but description is left empty
Added new getVarTypeName(..) overloaded method
Added new getBaseVType(..) method
Added structDef::getStruct(..) method
Added structDef::getBaseStruct(..) method
Modified getVarArrDim(..) and getVarArrDimCnt(..) to retrieve parameters for base structure type to support cases where one structure is typedef’ed to another
Changed structDef::getBaseVType(..) to set VT_ARRAY bit instead of returning VT_ILLEGAL for array types
Added new additional optional parameters to the writeVariant(..) function
Added new logWriteVar(..) function
Fixed size of buffer passed to getsockopt(..) functions in tpriRdcTcp::open(..) function
Made various changes to the GsmPifBld process:
Added code to replace defines after closing braces (‘}’) and before the end of the line to remove attribute decorators required by non-Microsoft compilers
Fixed handling of commented pre-compiler directives in sections of header files already excluded due to a previous #if xxx statement
Fixed handling of #elif defined statements
Fixed parsing of compiler directives to prevent buffer overrun
Fixed string manipulation routines to guarantee proper null termination
Fixed NtRtMgr process so that process groups are correctly shown as stopped when shutting down the system
Fixed tpriCleanDir(..) function to prevent corruption of passed search pattern buffer
Fixed buffer overrun bug in tpriTrigFile::readTriggerDef(..) that would use previously loaded data for the current file
Added optional parameter to tpriCleip::SetTimeOut(..) function to set the internal polling interval
Changed buffer pointer parameter in DumpHex(..) function from signed/unsigned char * to void *
Added new tpriPing class to tpriNtRt and tpriNtRtApp libraries
Added support for hard real-time RTX 2012 under VS2010
Changed installers from Astrum to NSIS
Changes:
Fixed TPRI.PIO.ControlLogix class to force cleanup of unmanaged memory
Added new tpriLicense class to the tpriNtRt library
Added new TPRI.License class to the TPRI.NtRtNET library
Fixed internal probe libraries to properly handle non-ASCII characters in string variables
Removed tpriCryptor class from RTSS version of tpriNtRt and tpriNtRtApp libraries
Fixed internal handling of process Pulse Timeout parameter to correct operation in various scenarios
Decreased priority of RTSS timer and shutdown threads from 127 to 120 to prevent conflict with higher-priority interrupt handlers
Removed dynamic memory allocation from LogMsg(..) function internals
Fixed TsecurityCfg application to prevent crash while editing browse users
Remove digital signature from ComponentOne assembly to prevent delay when opening HMI screens on computers w/out an internet connection
Changes:
Added functions to convert TrendSets to ProbeSets and vice-versa and added popup menu links to TrendCtrl and ProbeX TPRI.HMI.Controls classes
Fixed logic asking user to save changes to ProbeSet/TrendSet/TriggerDef to first check if user has privileges to save file
Fixed internal screen history tracking logic in Texplore when screen change is cancelled
Fixed initialization of internal pointers within TPRI.Trending.TrendSet classes
Added logic to TPRI.HMI.Controls.TrendCom to automatically resize internal buffers for extremely large TrendSets
Optimized grid repainting when performing multiple row operations in the TPRI.HMI.Controls.ProbeX control
Added GetLogMsgList(..) method to the TPRI.NtRtInfo.INtRtInfo interface and host/client classes
Added popup menu items to the TPRI.HMI.Controls.LogMsg control to support the download and display of old log files
Made numerous changes to the TPRI.HMI.Controls.TrendCtrl control:
Changed logic for default variable label to use shortest possible unique string instead of fully qualified variable name
Fixed axis min/max/pct editor control to automatically place focus in axis minimum cell rather than leaving active edit on axis label cell
Modified popup menu to display current trend source as part of text for “Change Trend Source” menu item
Modified initialization TPRI.HMI.Forms.TrendSrcSelectForm to automatically highlight last selected trend source
Modified NtRtMgr process and TPRI.NtRtCmd.ShutdownSystem(..) HMI function to support completely shutting down or rebooting the host system
Made various changes to the GsmPifBld process:
Added support for header file-based variable descriptions stored in the sysStruct.ini file for use by the data dictionary
Fixed processing of comments within compiler directives
Added support for #if defined, #if !defined, and #if !XXX compiler directives
Added deadlock detection to prevent process from entering infinite loop
Made various changes to the tpriGsmDDCom class:
Added & modified numerous functions to add support for header file-based variable descriptions
Increased size of memory allocated for data dictionary global common
Added static parseValue(..) functions to each varDef-derived class
Fixed internal data dictionary lookup function to properly indicate when a structure or variable property is not defined
Changed varDef::getDefaultFormat(..) to return simplified formatting strings
Changed formatting for double-precision floating point variable return by varDef::getDefaultFormat(..) to explicitly request 16 digits of precision
Fixed parsing of sysVars.ini file to truncate variable descriptions longer than the maximum allowed string length rather than generating an error
Fixed parsing of long command line parameters from sysProcs.ini in the tpriProcMgr class
Made various changes to the VarIniChk application
Added code to automatically populate variable descriptions using new data dictionary functions that extract comments from header files
Corrected default formatting string for 64-bit integers to “%I64d”
Changed default formatting string for single (4-byte) floating point variables to “%g”
Changed default formatting string for double (8-byte) floating point variables to “%.16g”
Fixed tpriIniFile::extractIniString(..) to prevent accessing outside of original string when called repeatedly processing a single buffer
Modified tpriXmlFile::WriteNodeStruct(..) to support outputting structure entries directly under the root XML node
Made numerous changes to probe system components:
Modified client-side message processing to prevent deadlocks when both client and server have large amounts of data to transmit
Fixed client-side mutual exclusion bug that could cause application to crash while processing variable updates from host
Modified tpriProbeSrcVar class to add support for locally-allocated variable data and updated internals of ProbeSvr process to support these variables
Optimized memory allocation and functions for internal variable collections
Added SendTimeout parameter to sysProbe.ini initialization file for ProbeSvr process
Made numerous changes to historical trending components:
Fixed playback routines so that variables recorded at different rates are properly synchronized in time when displayed in TrendX
Fixed data collection so that variables are saved to the historical trending file at the requested sampling period
Fixed timestamps of real-time data buffered to disk-based circular files
Fixed timestamps of recorded data so that they are not skewed by the extra invalid points added to the end of the file to fill the final 8-point block
Fixed routines that convert binary historical trend file to text so that invalid data points at the end of the buffer are omitted from the output text file
Fixed TriggerConditionList and TriggerTrendList to properly configure trend source for first variable when adding multiple variables with different trend sources from data dictionary
Made numerous changes to various Tsecurity components:
Added support for named privileges defined in the ASCF’s
Added GetPrivileges(..) and GetAppPrivileges(..) functions to the TPRI.Tsecurity.ITsecurity interface
Added Connect(..), GetPrivileges(..), and GetAppPrivileges(..) functions to the TPRI.Tsecurity.Client class
Added TPRI.Tsecurity.Controls.PrivilegePropertyEditor class for use in selecting required privilege levels in properties of numerous HMI controls
Added storage of full user names in ASCF’s
Added user access report generation in the ASCFEditor application
Added HostName, Initialized, and Connected properties to the TPRI.Tsecurity.Client class
Added NotConnected to the list of TPRI.Tsecurity.ErrorCode enumerated values
Modified ASCFEditor to automatically fill in user name and domain based on current Windows login credentials
Replaced old VB6 function calls with official .NET equivalents in various sections of code
Changes:
Fixed TPRI.HMI.Controls.TrendCom control to force IPv4 connection to host system
Fixed unhandled exception when deleting last axis in TPRI.HMI.Controls.TrendCtrl control
Changed display of date/time in trend source selection form to use 24-hour display of time rather than 12-hour with AM/PM
Added DefaultSource property to numerous TPRI.HMI.Controls and TPRI.HMI.Forms trending-related classes
Fixed popup message question in numerous TPRI.HMI.Controls classes when expansion of data dictionary name would produce too many new entries
Fixed display of [+/-] tree expansion icon for array variables in TPRI.HMI.Controls.ProbeX control after disconnecting and reconnecting to host
Changed all TPRI.DataDictionary.VariableNamePrefix known prefix constants from single characters to strings
Disabled display of historical trends when selecting trend source in TPRI.HMI.Controls.TriggerConditionList and TriggerTrendList controls
Made various changes to the NtRtMgr HMI screen:
Added additional debugging information for unhandled exception during updates
Changed display of system name to disable interpreting ‘&’ characters as a mnemonic
Made various changes to the Texplore application:
Added support for dynamically-created IProber objects added to collection of HMI application variables
Fixed auto-update functionality so that automatic updates will continue work after disconnecting from an HMI application
Modified tpriTimer routines so that absolute timer values can be referenced between machines using the wall clock at the time of system startup
Fixed memory leak in tpriTrigFile class
Fixed possible string buffer overrun while saving list of active triggers in tpriTrigTrend class
Change routines used to convert historical trend files to ASCII to format dates using 4-digit year
Made various changes to the tpriCleanDir function:
Added support for environment strings in directory name
Added support for multiple filters delimited by the ‘|’ character
Added new tpriCleanDirThread function
Made various changes to the tpriGsmDDCom class:
Changed default formatting of double-precision floating point variables use 16 digits of precision
Replaced sscanf(..) calls in restoreList(..) with type-specific string-parsing functions
Changes:
Made various fixes to the TrendFileMgr screen:
Fixed conversion to .csv functionality to properly process files in local folder
Added code to delete temporary files after conversion
Fixed file list to remove folder and file extension when displaying files from local folder
Fixed file list to retain highlighting of selected item even when control does not have focus
Fixed anchoring of file list object so screen displays properly at large screen resolutions
Made various fixes to the TPRI.HMI.Controls.HistoricalTrendList:
Modified AvailableSources property to remove from designer & properties window
Deprecated SelectedSource property
Changes:
Added new classes to the TPRI.DataDictionary namespace:
DataDictVariable
DataDictVariableCollection
Made various changes to the TPRI.DataDictionary.TranslateVariableEventArgs class:
Added InitialDict and TranslatedDict properties
Added new constructor and marked old version as obsolete
Added Variables As DataDictVariableCollection property to both the TPRI.HMI.Forms.DataDictForm and TPRI.HMI.Controls.DDVarSelect classes and updated dependent classes to take advantage of additional variable source (dictionary) information
Added TrendSetChanged events to both TPRI.HMI.Controls.TrendCtrl and TrendGraph controls
Changed BackColor property of TPRI.HMI.Controls.TextSelectBox and DDVarSelect controls to default to ambient value instead of White
Made various changes to the TPRI.HMI.Controls.TriggerScalarList control:
Marked the DataDictNames property as obsolete
Force data dictionary form to use “TsentryGsm” data dictionary
Fixed initialization of TPRI.HMI.Controls.TriggerEditor class to force File Tag entry field to use “TsentryGsm” data dictionary
Added TrendSourceChanged event to TPRI.HMI.Controls.TrendCtrl control
Made various changes to the TPRI.HMI.Controls.StaticArrayGraph3D control:
Added support for 3D surface contour plots
Added numerous new properties
Made various changes to certain StringCollection-type properties in numerous TPRI.HMI.Controls classes:
Changed property designer serialization to save content rather than using resource files
Added property editor attribute to use standard .NET StringCollectionEditor
Added checks for setting property value to Nothing and instead reset to empty collection
Made various changes to the tpriGsmDDCom::fmtVar(..) function:
Added check to confirm variable is scalar before formatting value
Added cross-check between variable type and variable formatting type
Fixed handling of shutdown options in NtRtMgr process to prevent application exception when shutting system down via Texplore with the console GUI disabled
Changes:
Made various changes to the NtRtInfo service and TPRI.NtRtInfo.INtRtInfo class:
Renamed WriteFile(..) overload with NtRtFileInfo parameter to WriteFile2(..)
Replaced GetFileSystemInfos(..) methods with new GetFileInfos(..) method
Made various changes to the TPRI.NtRtInfo.Client class:
Deprecated GetFileSystemInfos(..) in lieu of new GetFileInfos(..)
Updated WriteFile(..) overload to call WriteFile2(..) interface method
Modified Probe client objects to increase stale data timeout from 1 second to 3 seconds
Upgrade Instructions:
Update all Texplore client workstations with the current version of Texplore as the latest NtRtInfo service is not backwards compatible with older clients in terms of automatically downloading the latest screens
Changes:
Made various changes to the TPRI.HMI.Controls.Prober class:
Implemented IAdjustableDataSource interface
Added new EnableAdjustDataSources property
Modified ProberName property to return class name if located on a form
Made various changes to the TPRI.HMI.Controls.StaticArrayProber class:
Implemented IAdjustableDataSource interface
Renamed MinInterval property to RequestDelayInterval
Added RequestDelayCount property
Added attributes to all designer properties so that the designer code for the parent object is correctly updated when a property value is changed
Removed IAdjustableDataSource interface from TPRI.HMI.Controls.StaticArrayGraphBase class
Made various changes to the TPRI.HMI.Controls.StaticArrayGraph2D class:
Changed internal graph object from standard to scientific graph
Fixed X-axis labels when ArrayStep is set to a value other than zero
Fixed cleanup of graph display when array data is reset
Added Autoscale option to right-click popup menu
Added numerous properties to support graph configuration in designer
Made various changes to the TPRI.HMI.Controls.StaticArrayGraph3D class:
Added Autoscale option to right-click popup menu
Added numerous properties to support graph configuration in designer
Made various changes to the TPRI.HMI.Controls.StaticArrayGraphContour class:
Added code to hide null data values
Added maximize and customization items to popup menu
Added numerous properties to support graph configuration in designer
Made various changes to the TPRI.HMI.Controls.ProbeGraph class:
Changed internal graph object from standard to scientific graph
Added support for automatically retrieving x-axis labels via new XPosProbeSource property
Added support for multiple plotted arrays with new AttachProber(..) method
Added code to automatically redraw the graph when changing the GridLineControl property
Removed IAdjustableDataSource interface (now directly handled by Prober)
Updated TPRI.HMI.Controls.ProbeGraphButton control for changes to underlying ProbeGraph
Made various changes to the TPRI.HMI.Controls.TrendCtrl class:
Added support for cut/copy/paste/delete of variables and axes
Fixed bugs in “Set Current Scaling as Original Scaling” functionality
Fixed bugs in auto-scale functionality
Automatically use last trend source when adding new variables
Added support for showing metadata for historical trends
Set graph font size to large
Fixed grid initialization to correctly use ColumnWidths property values
Updated trend variable color selector user interface
Added fixes to internal forms to prevent loss of focus when editing trendset
Made various changes to the TPRI.HMI.Controls.TrendGraph class:
Change class inheritance from SplitContainter to UserControl
Added DefaultValue attributes to numerous properties
Added Initialized property to the TPRI.HMI.Controls.DataSetLoader control
Made various changes to the TPRI.HMI.Controls.ActiveGrid control
Modified initialization sequencing so that GridSetLoader is only initialized once
Added support for multiple data source adjustment functions
Added Grid property to expose reference to internal grid object
© 2022 TelePro, Inc.
3811 Illinois Avenue, Suite 100, St. Charles, IL 60174