- Created by Luke Cerwin , last modified on Jul 27, 2022
You are viewing an old version of this page. View the current version.
Compare with Current View Page History
« Previous Version 6 Next »
TSENTRY Real-time Control System Platform
http://www.tsentry.com
Version, Change, and Upgrade Information
TelePro, Inc.
3811 Illinois Ave. Suite 100
St. Charles, IL 60174
(630) 513-9790
(630) 513-9794 Fax
http://www.tpri.com
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:
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
Modified default values for TPRI.HMI.Controls.Shape ShapeFill and ShapeBorder properties to prevent Empty colors from appearing in designer code
Added new TPRI.DataDictionary.ExpandOptions enumerated type to the TPRI.Core.dll assembly and replaced ExpandArray properties in various classes with new ExpandOptions properties
Made various changes to the TPRI.HMI.Forms.TreeDataDict class:
Added new IsString(..) function
Enhanced variable expansion functionality to improve flexibility
Made various changes to the TPRI.HMI.Forms.VariableNamePrefix class:
Removed PrefixType enumerated type (users should use shared constant values)
Changed calling parameters to AddPrefix(..) method
Made various changes to the TPRI.HMI.Forms.DataDictForm class:
Optimized internal functions to improve performance when working with large data dictionaries and historical trend files
Modified data dictionary search functionality to allow dots and brackets in search strings
Fixed internal logic to prevent variable expansion if multiple variables are not allowed
Changed list of available data dictionaries to use sortable multi-column display
Modified TPRI.HMI.Forms.TrendSrcSelectForm to use sortable multi-column display for list of historical trend files
Made various changes to the TPRI.NtRtInfo classes:
Added new GetHistTrendMetaData(..) functions
Added new GetUtcTime(..) functions
Added new control classes to the TPRI.HMI.Controls namespace in the TPRI.Core.dll assembly:
ProberCollection
Added new TPRI.Trending.TriggerFile class to the TPRI.NtRtNET.dll assembly
Modified TPRI.HMI.Controls.ArraySelector MinIndex and MaxIndex properties to automatically adjust Index if outside new min/max
Added new global function TPRI.HMI.Controls.FormatValue(..)
Modified TPRI.HMI.Application.Explorer.AdjustVariableIndex(..) function to check for forward slashes in the variable name and ignore all characters preceding the slash
Added new TPRI.HMI.Application.Explorer.AdjustDataSourceDelegateCollection class to the TPRI.Core.dll assembly
Removed TPRI.HMI.Forms.TrendInsDelForm class from TPRI.Core.dll assembly
Added BadValue to the TPRI.Probe.ErrorCode enumerated type
Made various changes to the TPRI.Probe.ProbeMgr class:
Fixed WriteProbe(..) method to properly set returned request status
Fixed WriteProbe(..) to set return status to BadValue if unable to convert variable value
Modified NtRtMgr screen to support small display sizes
Fixed NtRtProcEd screen to support extremely long file names
Made various changes to the ProbeX screen:
Fixed stack overflow exception when highlighting large number of array variables in grid
Made various changes to the Texplore application:
Fixed Texplore.AdjustDataSources(..) function to find all objects implementing the IAdjustableDataSource interface (instead of only finding child controls controls)
Fixed auto-download functions to prevent exception if %APPDATA% environment variable does not exist
Updated ‘Tools’ toolbar icon
Modified NtRtInfo and Tsecurity service installers to support running as LocalSystem, LocalService, or NetworkService accounts
Modified NtRtSvc service to support installation for LocalSystem user
Made various changes to the historical trending functionality:
Added support naming historical trend files using variable values from global common
Added support for recording scalar variable values
Added [MetaData] section to historical trend data files
Added ability to drag-and-drop rows in various grids of historical trigger editor screen
Increased maximum number of triggers from 100 to 1000
Fixed string overrun exception in TrendSrv process
Fixed tpriXmlFile::ReadNodeStruct(..) to properly validate child node data
Added new tpriVmic::getMemAddr() function
Made various changes to the tpriGsmDDCom class:
Added new fmtVar(..) function
Fixed restoreList(..) function to properly restore single-byte variables
Updated version of Microsoft Visual C++ 2005 Service Pack 1 Redistributable Package included with installer
Updated various procedures & scripts to support installation on Windows XP Embedded
Upgrade Instructions:
Install the Visual Studio 2005 Service Pack 1 ATL Security Update onto the application development system per Microsoft KB971090 (http://www.microsoft.com/downloads/en/details.aspx?familyid=7c8729dc-06a2-4538-a90d-ff9464dc0197&displaylang=en )
Changes:
Modified TPRI.Tscreen.TscreenMgr class so that SDI forms are completely docked to the MDIClient and use the AutoScroll and AutoScrollMinimumSize properties instead of manually trying to resize the form and enable/disable scroll bars
Modified TPRI.Tscreen.TscreenInfo class to use the form’s MinimumSize property if configured before defaulting to the form’s initial size when determining the minimum size for scroll bars
Made various changes to the TPRI.NtRtInfo.INtRtInfo interface and the TPRI.NtRtInfo.Host and Client classes:
Replaced WriteFileOptions class with NtRtFileInfo class
Deprecated existing GetFileSystemInfos(..) method and replaced with new method using NtRtFileInfo class (all calls to original GetFileSystemInfos(..) now return ‘NotSupported’)
Fixed various TPRI.Trending.TrendSet classes to properly set variable references to parent axes when serializing from form designer code
Modified internal storage of trend variable data in the TPRI.HMI.Controls.TrendCtrl class to improve performance and reliability
Changes:
Made various changes to Texplore
Fixed login panel to auto-display current user domain even if domain is not in list
Added display of variable dictionary (source) to list of returned variables
Added functions to automatically show/hide and resize various items for narrow displays
Force application to run in 32-bit mode even on 64-bit systems (required for run-time compatibility with TPRI.NtRtNet.dll assembly on 64-bit systems)
Changed type of TPRI.Tscreen.ActivateInfo.Argument property from String to Object
Made numerous changes to the TrendX screen and related controls to improve ease-of-use
Made numerous changes to the TriggerMgr screen and related controls to improve ease-of-use
Made various changes to the ProbeX screen:
Fixed display of tree expand/collapse icon after host disconnect/reconnect
Changed background color on all standard Tsentry screens to black
Added new control classes to the TPRI.HMI.Controls namespace in the TPRI.Core.dll assembly:
ColorPicker
StaticArrayGraphBase
StaticArrayGraph3D
StaticArrayGraphContour
Changed TPRI.HMI.Controls.StaticArrayProber from Control to Component to be consistent with standard Prober object
Modified TPRI.HMI.Controls.StaticArrayGraph2D to inherit from StaticArrayGraphBase
Fixed TPRI.HMI.Controls.Prober to completely disconnect from probe manager when requested
Changed TPRI.Probe.ProbeMgrBase to call DisconnectProbes(..) on IProber objects passing Nothing for the probe manager reference when trying to disconnect permanently from an IProber
Changed TPRI.Tscreen.TscreenMgr to call Form.Dispose when trying to remove screen from memory
Added BarWidths and BarWidthsProber properties to the TPRI.HMI.Controls.BarGraph class
Added CounterRotate property to the TPRI.HMI.Controls.LevelDisplay control
Modified TPRI.HMI.Controls.ActiveGrid to use BackColor property to set grid background color
Made various changes to the TPRI.HMI.Forms.DataDictForm form
Fixed handling of double-click on variable to add variable to list rather than replacing list
Added display of variable dictionary (source) to list of returned variables
Added ExpandArray property
Added TranslateVariable event
Made various changes to the TPRI.NtRtInfo.INtRtInfo interface and the TPRI.NtRtInfo.Host and Client classes:
Added new DirectoryExists(..) functions
Added new CreateDirectory(..) functions
Added new DeleteFile(..) functions
Added new MoveFile(..) functions
Added new SharedFolderExists(..) functions
Added overloaded WriteFile(..) functions to support additional write options
Added new ParseSharedFolder(..) function to TPRI.NtRtInfo.Client class
Fixed numerous TPRI.HMI.Controls classes to remove links to external object when disposed in order to eliminate event handlers from preventing garbage collection of in-memory objects
Fixed TPRI.HMI.Forms.TrendSrcSelect to enable use of the historical trend Filter function
Made various changes to the TrendTrig process & libraries:
Added support for configurable sampling periods for trended variables
Added code to set minimum values for pre- and post-trigger trend times to 1 second to prevent trigger data collection restarts due to jitter in non-real-time data collection
Made various changes to the tpriXmlFile library:
Added ReadTableStruct(..) and WriteTableStruct(..) functions
Added support for environment variables in file names
Optimized various functions to improve processing speed
Changed tpriIniFile class to use local buffers for calls to tpriEnvStr(..) instead of relying on the shared/static buffer inside of tpriEnvStr(..)
Changes:
Fixed global common variable initialization to properly handle cases where a variable cannot be found in the save-by-name file but does not have an initial value
Made various changes to the GsmPifBld data dictionary builder utility:
Fixed handling of compiler directives that use backslashes to span multiple lines
Fixed handling of #pragma once directives to use case-insensitive comparison of file names
Fixed crash during initialization of GsmExpSvr process
Added support for custom probe source DLLs to the ProbeSvr process
Made several additions to the tpriNtRt library:
Added tpriAppThread application thread class
Added StartTimer(), ElapUTimer(..), ElapMTimer(..) and ElapSTimer(..) functions
Added tpriProbeSrcVar class to support custom probe sources
Added tpriXmlFile class to support reading/writing XML files w/ data dictionary
Made various changes to the tpriGsmDDCom class in the tpriNtRt library:
Added additional overloaded mapGsm(..) function
Added structDef::getChild(..) function
Added structDef::getTypeStruct(..) function
Added varDef::getSize(..) function
Fixed getVarXxxPtr(..) functions to return correct size for strings
Added new GetDiagInfo(..), GetConnectInfo(..), and GetStatementInfo(..) functions to the tpriDbio class in the tpriNtRt library
Modified tpriIniFile::extractIniString(..) to replace all \” tokens in the output string with a single double-quotes character
Added code to tpriProcMgr class in the VS2008-version of the tpriNtRt library to force processor affinity to prevent issues related to high-speed clocks for different CPU cores drifting apart on hypervisor systems
Added tpriEgd GE EGD PLC driver class to the tpriPio library
Made various changes to the tpriVmic class in the tpriPio library:
Fixed bytes-per-second calculation to support different variable refresh rates
Fixed board initialization to detect actual memory size from board registers
Added getNodeID() and getMemSize() functions
Removed function declaration of non-existent tpriRdcSer::xmitMsg(..) function from header file to prevent compile & link errors
Fixed tpriTrendSrc::setTrendData(..) function to keep the memory buffer in sync with the disk buffer when the memory buffer rolls over due to a long delay in data collection
Made various changes to the tpriTrendTrig class:
Decreased in-memory trend times and increased on-disk trend times for requested variables
Add protection against corrupted trigger files
Added VarIniChk utility process to list global common variables not present in a sysVars.ini file
Added VarIniSort utility process to alphabetically sort variables in the sysVars.ini file
Fixed ProbeSvr process to properly handle requests for variable min/max/init values
Fixed TrendMgr process to properly store all in-memory trend data when shutting down
Made various changes to support changing local Tsentry user password:
Added additional command line parameters to the NtRtSvc service process
Added ChangeTsentryPassword.cmd script
Modified CreateTsentryUser.cmd, CreateUser.vbs, and ConfigureTsecurity.cmd scripts
Added InstallNtRtSvc.cmd script for installing main Tsentry service
Made various changes to the TPRI.HMI.Controls.Shape and ActiveShape control:
Integrated codebase together so that ActiveShape inherits from Shape
Fixed Value property so that object is only updated & repainted if the value has changed
Fixed painting routines to prevent double paint calls while shape is blinking
Fixed blinking so that it remains consistent (if possible) when value has changed
Fixed TPRI.DataDictionary.VariableNamePrefix.StartOf(..) function to properly validate inputs
Made various changes to the TPRI.HMI.Controls.BarGraph class:
Added drawing of vertical axis ticks and labels to the TPRI.HMI.Controls.BarGraph control
Fixed various probe source properties to automatically request data for new variable
Added checks to prevent exceptions if multi-dimensional array is returned from host
Added BackBarProber and FrontBarProber properties
Modified TPRI.HMI.Controls.TrendAxisList to set the default axis label as the axis number
Modified TPRI.HMI.Controls.TrendPlayback to inherit BackColor and ForeColor from container
Made various changes to the TPRI.HMI.Controls.TrendCtrl control
Fixed TrendInit(..) method to run without releasing CPU
Implemented IAdjustableDataSource interface
Added ColumnWidths property to TPRI.HMI.Controls.LogMsg control
Added new control classes to the TPRI.HMI.Controls namespace in the TPRI.Core.dll assembly:
ActiveGrid
ArraySelector
BarGraphCollection
BlockDrawingBase
GridSetLoader
Label
LabelCollection
LevelDisplay
Line
MinMaxCutoff
MinMaxLimit
Multiplier
NumericUpDown
NumericUpDown2
ProbeGraph
ProbeGraphButton
Prober
ProbeX
SelectButton
StateList
StaticArrayProber
StaticArrayGraph2D
SummingJunction
Toggler
TrendGraph
Added new TPRI.Grid.GridSet class to the TPRI.Core.dll assembly
Added new TPRI.HMI.Forms.ProbeGraphForm class to the TPRI.Core.dll assembly
Added C1.Win.C1FlexGrid.2.dll assembly to distributed files
Made various changes to the TPRI.HMI.Controls.TextBox control:
Added AutoSubmit property
Added WriteValue property
Added EnableSAK property
Added VisibleSAK property
Changed SendBatchUpdates method to use internal probe manager reference is none is passed to the function
Made various changes to the TPRI.HMI.Controls.ComboBox control:
Added AutoSubmit property
Added EnableSAK property
Added VisibleSAK property
Changed SendBatchUpdates method to use internal probe manager reference if none is passed to the function
Made various changes to the TPRI.HMI.Controls.DataSetLoader control:
Added SaveSAK property
Added DeleteSAK property
Changed DataSetName property to be configurable at design time
Added DataSetNameChanged event
Modified Initialize(..) function to automatically load DataSetName file if defined
Added code to reset modified flag when user chooses not to save changes
Fixed data set load sequence so that requested data set is still loaded after user saves unsaved changes to the previous data set
Changed TPRI.HMI.Controls.TriggerDefLoader class so that trigger name is set when the data set name is changed instead of when the file is written to disk
Made various changes to the TPRI.HMI.Controls.CmdButton control
Added SendBatchUpdates property
Added CancelBatchUpdates property
Added EnableSAK property
Added VisibleSAK property
Made various changes to the TPRI.HMI.Controls.LinkLabel control:
Added EnableSAK property
Added VisibleSAK property
Made various changes to the TPRI.HMI.Controls.ToggleButton control
Added EnableSAK property
Added VisibleSAK property
Made numerous changes to the TPRI.HMI.Forms.DataDictForm form to support selection of multiple variables at once
Added new VariableNames property to the TPRI.HMI.Controls.DDVarSelect control
Made various changes to the TrendX screen & support classes:
Updated Gigasoft libraries to pegrp32d.dll v6.0.0.74
Increased the maximum number of trend axes from 6 to 16
Added ability to identify/highlight specific trend variables in graph
Added support for automatically scaling axes in trend graph
Added ability to clip variables to associated axis in multi-axis trends
Enhanced validation of graph width and sampling period in trend setup screen
Fixed determination of the number of significant digits used for the display of trend times
Fixed unhandled exception when setting AxisMin and AxisMax without any axes defined
Changed TrendX.UpdateTrendSet() from a private to a protected function
Made various changes to the ProbeX screen:
Added support for graphing scalar and 1-dimensional arrays to the screen
Added hotkeys for new variable, edit variable, edit new variable, and delete variable
Fixed initialization of format style when changing a comment to a variable
Fixed NtRtProcEd screen so that requested process is always selected by default
Made various changes to the Texplore screen browser:
Added support for automatic download & update of application files from host system
Added support for running in kiosk mode
Added display of date/time to title bar
Added print screen support
Fixed delayed updates of newly added Probe variables in situations where the specific variable had already been requested
Added GetFileSystemInfos(..) function to TPRI.NtRtInfo.INtRtInfo interface and TPRI.NtRtInfo.Host and Client classes
Fixed TPRI.DatabaseIO.DBIOServer and DBIOClient classes so that .NET remoting security is not required
Added global FindKnownColor(..) function to the TPRI.Core.dll
Optimized display update & repaint code in numerous HMI components to minimize CPU overhead and associated flicker when updating display
Added property description and category attributes in numerous HMI components
Changes:
Added TPRI.DataDictionary.VariableNamePrefix class to encapsulate data dictionary naming prefixes and functionality
Fixed automatic expansion of data dictionary variable names (e.g. in ProbeX) to check for and handle variable name prefixes
Changed ProbeX, TrendX, and TriggerMgr screens to check for unsaved changes prior to navigating away from the screen
Fixed validation of trigger definitions on TriggerMgr screen to prevent infinite error loop
Fixed TPRI.HMI.Application.Explorer.AdjustVariableIndex(..) to support variable name prefixes
Changed TPRI.Tscreen.ScreenChangedEventArgs class AllowChange property from read-only to read/write
Modified TPRI.Tscreen.TscreenMgr to raise BeforeScreenChanged event before deactivating old screen
Made various changes to the GsmPifBld data dictionary builder utility:
Fixed handling of array indices that are specified with arithmetic operations that result in fractional values
Fixed handling of closing braces when parsing functions defined in header files
Made various changes to the NtRtMgr process:
Changed handling of delayed startup aborts to skip handling of GuiOptions .ini file parameter
Fixed error handling on startup to prevent conditions where main display is not shown
Fixed processing of sysProcs.ini file to support long command line parameter strings
Made various fixes to the tpriGsmDDCom class:
Changed PERSIST_APPENDONLY value to properly represent a single unique bit
Changed PERSIST_FLAGMASK to add future support for additional flags
Added testMinMax(..) function for validating value against known min/max values
Added additional error logging
Fixed TrendMgr bug causing trend data to be improperly buffered to disk files
Modified TrendTrig so that temporary historical trend buffer files are closed in between read/write operations rather than continuously holding files open
Fixed tpriIniFile::setKeyValue(..) to properly place key entry after section name when saving to a completely new section
Added SAFE_DELETE(..) and SAFE_DELETE_ARRAY(..) macros to tpriUtilMacs.h
Modified VmicDrv to read/write variables to reflective memory at individually specified frequencies
Added SetTsentrySystem.cmd and SetEnvVariable.vbs scripts to the distributed procedures
Fixed TsentryConfig.cmd script to forcibly uninstall the NtRtInfo service before reinstalling in order to support changes to the installation directory
Modified TsentryConfig.cmd script to write results to disk log file
(%TSENTRY_SYSDIR%\%TSENTRY_SYSNAME%\logs\TsentryInstall.log)
Cleaned up TSENTRY and Tsecurity command-line scripts
Modified TSENTRY installer to support runtime-only installations
Upgrade Instructions:
Modify any VMIC configuration files to specify the refresh period (in milliseconds) for each variable as shown in the example below:
# ------------------------------------------------------------------------ # Variable definitions # ------------------------------------------------------------------------ [VarDef] #VariableName #Read/Write #Offset #RefreshPeriod(ms) #RemoteType MyWriteStruct.MyWriteVar W 0x1000 20 MyReadStruct.MyReadVar R 0x2000 100 VT_I2
Changes:
Made various changes to the TriggerMgr screen and underlying controls:
Fixed internal logic to properly allow saving of new historical trend trigger definitions
Added checks to prevent trigger names that start or end with whitespace
Modified error reporting during validation to eliminate duplicate error messages
Made various changes to the TrendX screen Trend Setup form and underlying controls:
Fixed logic for inserting a new axis to properly insert before the clicked item
Added code to automatically add an empty variable when creating a new axis
Fixed validation of axis percentages to prevent unhandled exception
Fixed copying and pasting of trend variables within the variable list
Fixed unhandled exception when trying to copy an axis node within the variable list
Added more details to warning message when trying to define a graph with too many points
Added support to ProbeX screen for use of up/down arrow buttons while editing a variable value
Fixed Probe client to eliminate unnecessary expansions of the receive buffer size
Made various changes to the TPRI.HMI.Controls.TrendCtrl class:
Changed AxisMinBox and AxisMaxBox property types from TextBox to Control
Moved internal code from InitializeDefaultTrendGraph(..) method to TrendLib module
Fixed InitializeDefaultTrendGraph(..) to set the graph Desk color so that it matches the parent’s BackColor rather than forcing Navy
Made various changes to the TPRI.HMI.Controls.DataSetLoader class:
Changed file list retrieval error handling to display message in combo box rather than as a popup message
Added code to automatically resize dropdown box if dropdown text is wider than the control
Added code to validate file names before saving
Made various fixes to the TPRI.HMI.Controls.BarGraph class:
Fixed processing of bar data arrays to prevent array index exceptions
Fixed handling of changes to BarCount value while displaying data
Fixed sizing of bars so that border will always be visible
Fixed handling of control background color
Modified BarLabels property to be editable via the designer
Added BarLabelsStartIndex property for auto-numbering bars
Changed BoundaryInfo.TextBox property type from TextBox to Control
Added window titles to all popup error messages
Made various changes to the TPRI.HMI.Controls.ToggleButton class:
Added ValidatingClick event to provide mechanism to cancel button clicks
Removed default value from BackColor property serialization and added code to initialize value as KnownColor.Control
Removed nuisance message in design mode when setting BackColor
Removed default value from TPRI.HMI.Controls.TextBox BackColor property
Completely reworked the TPRI.HMI.Controls.CoverageBar class for use under VB.NET
Added numerous control property description and category attributes
Fixed tpriIniFile class to replace environment variables in the file name before saving the file
Fixed tpriTrendTrig class to support trigger definitions whose names contain spaces when restoring the active triggers following a system restart
Added additional error logging to VmicDrv when unable to map physical memory
Made various fixes to the GsmPifBld process:
Added code to ignore 'signed' specifier
Enhanced error messages processing #define statements
Reset all WINVER and _WIN32_WINNT preprocessor defines in internal Tsentry Visual Studio projects to 0x0500 for continued support of the Windows 2000 operating system
Changes:
Added GrantThreadAccessToConsole() function to tpriNtRtApp static library
Changed various static variables in tpriRdc libraries to class variables so that multiple instances of the same class in a single process each have their own copy of data
Added support for PCI-5565 card to the tpriVmic process I/O library class
Added new VmicDrv Win32 and RTSS processes
Made various changes to the ProbeSvr process:
Added new TextChangeLog parameter to [General] section of .ini file to support configuration of text-based logging of variable changes received from client connections
Renamed existing LogMsgQueue parameter in [General] section of .ini file to BinaryChangeLog (the original LogMsgQueue parameter name is still supported)
Added support for text-based change logging of signed and unsigned 8-byte integer values
Fixed text-based change logging of unsigned 2- and 4- byte integer values
Fixed Probe client so that it will properly process multiple incoming messages in a single pass
Added new TPRI.Process class to TPRI.NtRtNET assembly
Fixed IOComp licensing in Texplore so child screens do not display licensing dialog
Made various changes to the TPRI.Tsecurity.TsecurityAD class:
Modified authentication routine to explicitly close all network connections before each authentication attempt
Fixed logging of messages to the event log
Upgrade Instructions:
Modify the ProbeSvr .ini file (typically sysProbe.ini in the \pif\ folder) as follows:
Rename the LogMsgQueue parameter in the [General] section to BinaryChangeLog
Add the new TextChangeLog parameter to the [General] section to specify the appropriate LogMsg queue if text-based logging of variable changes is desired
A sample [General] section for this file is shown below:
#-------------------------------------------------------------- # General probe parameters #-------------------------------------------------------------- [General] # Specify the local host to which the ProbeSvr server socket should bind, # or leave blank to bind the socket without specifying a local host. LocalHost=192.168.0.1 # Specify the LogMsg queue for text-based variable change logging, # or leave blank to disable text-based change logging. TextChangeLog=LogMsg # Specify the LogMsg queue for binary variable change logging, # or leave blank to disable binary change logging. BinaryChangeLog=ProbeLog
Changes:
Added TPRI.Tsecurity.EncryptedTcpChannel class to allow encrypting of .NET Remoting channels without requiring authentication
Changed all .NET Remoting servers & clients (Tsecurity, NtRtInfo, etc.) to use the above new TPRI.Tsecurity.EncryptedTcpChannel class to encrypt data rather than registering channels using the default .NET Remoting security (which only allows authenticated domain users to connect)
Added monitor icon to Texplore resources
Removed encoding specification from of default Tsecurity.exe.config file
Modified and added various logged messages in tpriProbe libraries to enhance debugging
Fixed parsing of MaxDays parameter for custom LogMsg queues in sysLogs.ini file so that old log files for custom queues will be properly deleted from the hard drive
Added function prototypes for DumpHex(..) functions to LogMsg.inl inline header file for use with tpriNtRtApp.lib
Fixed tpriProcMgr::Destroy(..) function so that it properly returns zero if successful
Made various changes to the tpriIniFile class:
Added getNextKey(..) and cleanFile(..) functions
Modified success return value of createSection(..) and insertChars(..) to indicate number of characters inserted rather than always zero
Modified deleteLine(..) to return negative value if characters cannot be removed from file
Optimized internal buffer allocation to improve performance when writing data to file
Optimized cleanSection(..) function to improve speed
Made various changes to the tpriGsmDDCom class:
Added support for default variable formatting strings if one is not provided in the .ini file
Added saveAllStructs(..) and restoreList(..) functions
Added varDef::getDefaultFormat(..) static functions
Modified varDef::fmtValEx(..) function to provide multiple static overloads that support default as well as custom formatting strings
Modified TSENTRY installer so that Hard-Real Time installation option will not be presented if not supported by a specific version of TSENTRY
Modified TSENTRY and Texplore installers to use Microsoft Visual C++ 2005 Redistributable Package (x86) rather than manually installing required Visual C++ assemblies onto target system
Upgrade Instructions:
Modify any applications that employ custom .NET Remoting components in addition to Tsecurity, DBIO, or NtRtInfo so that the custom .NET Remoting channels are registered with the enableSecurity flag set to False (reversing the change required by TSENTRY v4.11.00 and v4.12.00)
If installing over a previous version of TSENTRY, modify the Tsecurity.exe.config file to replace the first line of the file:
<?xml version="1.0" encoding="Windows-1252"?> with: <?xml version="1.0"?>
Changes:
Fixed tpriRdcTcp class to prevent socket creation if unable to resolve host name
Changed probe server and client libraries to use getaddrinfo(..) rather than gethostbyname(..)
Modified ProbeSvr process to add support for specifying a local host name for the TCP/IP server via the LocalHost parameter in the [General] section of the .ini file.
Fixed ProbeX screen to properly process changes to multiple elements of multi-dimension arrays
Updated all code to use StopWatch class rather than system clock for internal timing in order to prevent errors when the system clock is changed or daylight savings transitions occur
Made various fixes to the TPRI.HMI.Controls.ActiveShape class:
Changed internal processing of data and boundaries so that comparisons are made in the native format of the host data rather than forcing conversion to floating point
Changed type of Value property from Single to Object
Changed type of ActiveShapeSetup.BoundMax property from Single to Object
Deprecated tLocked property in favor of new Locked property
Added DisplayMode property
Added LiveValueChanged event when data from host is updated
Fixed code to correctly fire ValueChanged event when value is changed
Made various fixes to the TPRI.HMI.Controls.LimitDisplay class:
Deprecated ShowUpperLimit and ShowLowerLimit properties in favor of new UpperLimitVisible and LowerLimitVisible properties
Added ValueTextBox, UpperLimitTextBox, and LowerLimitTextBox properties to allow full customization of text boxes
Fixed resize/layout handling to correctly position textboxes within control and to account for the control border
Added shadowed Enabled property to the TPRI.HMI.Controls.ToggleButton class to support disabling the control completely regardless of whether or not it is receiving live data
Removed TPRI.Tsecurity.Controls.AutoCompleteComboBox class as the AutoComplete functionality is now provided directly by the System.Windows.Forms.ComboBox class
Made various fixes to the TPRI.Tsecurity.TsecurityDomainsList class (and the Tsecurity service):
Fixed the FindDomains(..) functions to correctly interpret ‘types’ parameter
Fixed memory leak and potential crash while enumerating the list of trusted domains
Changes:
Added Enabled property to the TPRI.HMI.Application.Explorer.IndicatorMgr class to enable/disable automatic indications
Modified the TPRI.HMI.Application.Explorer.IDataSourceIndicator interface to add new EnableDataSourceIndicator property and modified all classes implementing this interface accordingly
Made various fixes to the TPRI.HMI.Controls.ActiveShape class:
Redesigned text display to directly draw text rather than implementing a text box child control
Removed LabelControl property
Fixed drawing code to properly draw background for non-rectangle shapes
Fixed drawing code to properly draw right and bottom borders when border width is set to 1
Changed default blink period from 0 to 1000 ms
Fixed internal Click handling to correctly generate event regardless of where on the control the mouse is clicked
Deprecated tValue property in favor of new Value property
Deprecated tNumTextLines property
Added LiveValue property
Modified internal processing of probe updates to use common code with other controls
Made various fixes to the TPRI.HMI.Controls.ActiveShapeSetup class:
Modified Converter class to provide more meaningful information when converting to a string
Modified Font property to inherit value from parent ActiveShape control
Fixed Font property so that the designer properly serializes value to form source code
Made various fixes to the TPRI.HMI.Controls.TextBox class:
Added code to set focus to the TextBox and select all text if there is an error converting text to the appropriate value type while trying to send batch updates
Added code to automatically switch to EditActive mode if Text is modified while live
Modified internal processing of probe updates to use common code with other controls
Made various fixes to the TPRI.HMI.Controls.ComboBox class:
Added LiveValue property and renamed ValueChanged event to LiveValueChanged
Added code to set focus to the ComboBox and select all text if there is an error converting text to the appropriate value type while trying to send batch updates
Added logic to hide drop-down when ComboBox is put into ReadOnly mode
Fixed Items property editor form to force serialization of object when list of Items is changed
Modified internal processing of probe updates to use common code with other controls
Made various fixes to the TPRI.HMI.Controls.ToggleButton class:
Added LiveValue property and LiveValueChanged event
Added InvalidVariableType to ToggleButtonDisplayMode enumeration & added logic to set DisplayMode to this value when the live variable value cannot be converted to an integer type
Modified internal processing of probe updates to use common code with other controls
Modified Converter class for TPRI.Shape.ShapeBorder class to provide more meaningful information when converting to a string
Modified Converter class for TPRI.Shape.ShapeFill class to provide more meaningful information when converting to a string
Modified signatures of events generated by the ActiveShapeCollection, CmdButtonCollection, ComboBoxCollection, ShapeCollection, TextBoxCollection, ToggleButtonCollection, and TrendVarSelectCollection classes in the TPRI.HMI.Controls namespace to change the ‘sender’ parameter from ByRef to ByVal in order to be consistent with .NET coding standards
Added TPRI.HMI.Application.Explorer.AdjustVariableIndex(..) function
Reworked NtRtProcEd screen to support new HMI control objects
Modified GsmPifBld process to ignore ‘volatile’ variable specifier
Fixed various calls to vsnprintf_s(..) and snprintf_s(..) throughout code to prevent buffer overrun exceptions by forcing truncation of the output strings if the output buffer is too small
Changes:
Made various changes to Texplore application:
Added functionality to display variable names as tool tips for probe-enabled objects
Added functionality to display error messages using an ErrorProvider
Added functionality to programmatically adjust all data sources
Added screen name to application window title to help discriminate between multiple instances of the application pointed at different screens
Modified popup window when double-clicking screen title to display screen parameters along with class and assembly information
Added checks to TPRI.Probe.ProbeClientVar class to return an error if attempting to write an updated variable value that cannot be converted to the original variable type
Fixed TPRI.Probe.ProbeMgrBase class to prevent internal corruption when an IProber with only probe changes the variable name associated with a given tag
Made various fixes to the TPRI.HMI.Controls.ActiveShapeSetup class:
Set default property values for all properties
Changed type converter to remove conversion to and from strings
Added TPRI.HMI.Controls.ActiveShapeSetupCollection class
Made various fixes to the TPRI.HMI.Controls.ActiveShape class:
Added ActiveSetup collection property and deprecated ActiveShapeSetup array property
Changed designer serialization to save individual properties rather than as a full array
Fixed Click handler of internal label control to call OnClick(..) method rather than raising the click event directly
Added LinkedScreen and LinkedScreenArguments properties to automatically navigate to other screens when the object is clicked
Fixed various ActiveSetup and DisconnectSetup properties to correctly update display when the property values are changed
Fixed internal logic for DisplayMode when ProbeSource is set to an empty string
Fixed requesting of probe variables to handle cases where probe is already active
Changed error reporting to implement the IErrorIndicator interface rather than message boxes
Made various fixes to the TPRI.HMI.Controls.TextBox class:
Removed design-time message box warning of the use of the BackColor property
Modified display logic to correctly draw control while in design mode
Added LiveValue and LiveText properties
Fixed internal logic for DisplayMode when ProbeSource is set to an empty string
Fixed CancelBatchUpdates(..) to process only if an update is pending
Changed error reporting to implement the IErrorIndicator interface rather than message boxes
Made various fixes to the TPRI.HMI.Controls.ComboBox class:
Modified class to inherit directly from System.Windows.Forms.ComboBox
Renamed various properties for new naming convention
Fixed internal logic for DisplayMode when ProbeSource is set to an empty string
Changed error reporting to implement the IErrorIndicator interface rather than message boxes
Made various fixes to the TPRI.HMI.Controls.ToggleButton class:
Fixed requesting of probe variables to handle cases where probe is already active
Changed error reporting to implement the IErrorIndicator interface rather than message boxes
Made various fixes to the TPRI.HMI.Controls.BarGraph class:
Changed error reporting to implement the IErrorIndicator interface rather than message boxes
Added TPRI.HMI.Forms.ComboBoxItemsEditorForm and TPRI.HMI.Controls.ComboBoxItemsPropertyEditor classes to support new ComboBox class
Removed events from TPRI.HMI.Controls.ComboBoxCollection class
Fixed internal logic for TPRI.HMI.Controls.ToggleButton.DisplayMode when ProbeSource is set to an empty string
Added TPRI.HMI.Controls.LimitDisplay classes
Made numerous changes to the TPRI.Shape.ShapeBorder, TPRI.Shape.ShapeFill, and TPRI.HMI.Controls.Shape classes in order to improve serialization in the designer
Fixed TPRI.HMI.Controls.TrendCom class to prevent error if passed an invalid host name
Added TPRI.HMI.Application.Explorer.FindSubControls(..) utility function
Made various changes to ProbeX screen:
Fixed automatic expansion of arrays and structures in to support cases where only one variable is produced from the expansion
Added logic to enable highlighting of cells whose variable name is an empty string
Changed NtRtInfo service Host and Client classes to use a pure TCP channel rather than an HTTP channel in order to support encryption and security
Enabled security & encryption for all .NET Remoting connections
Replaced various deprecated .NET functions in code with new .NET functions
Modified tpriCleip class to increase maximum allowed size of file name and host name strings
Changed RTSS builds of TrendGsm and MillSim to use the fast floating point model (/fp:fast) for improved real-time performance
Upgraded Glacial Components GlacialTreeList to v2.5.1.22512
Upgraded Glacial Components GlacialListView to v2.1.0.22283
Upgrade Instructions:
Modify any applications that employ custom .NET Remoting components in addition to Tsecurity, DBIO, or NtRtInfo so that the custom .NET Remoting channels are registered with the enableSecurity flag set to True (see the MSDN documentation for the ChannelServices.RegisterChannel(..) method)
Changes:
Added support for new Probe protocol, including:
Added new standard TSENTRY process ProbeSvr
Added tpriProbeChange class to the tpriNtRt libraries
Added numerous classes to TPRI.Core.dll assembly
Modified Texplore to communicate with ProbeSvr rather than GsmOpcSvr for the exchange of global shared memory variable data
Modified all screen control objects to use new IProber interface
Added LogData(..) global functions to logging binary data to LogMsg queues
Modified various internal functions to support LogData(..) functionality
Increased size of LogMsg message buffer size from 256 bytes to 512 bytes
Modified tpriLogMsg class and sysLogs.ini file format to support LogMsg queues that do not generate files on disk
Fixed DumpHex(..) functions to send logs to requested queues rather than always only to default “LogMsg” queue
Made various fixes to the tpriCryptor class:
Fixed Win32 encryption function calls to use machine keysets and named containers
Modified EncryptString(..) and DecryptString(..) functions to format error string as output when an error occurs
Changed LogMsg for receive data timeout in tpriRdc class from DBERR to DBSEQ
Fixed tpriDbio::ExecSql(..) to dynamically allocate local buffer for SQL statement to prevent buffer overruns
Rewrote tpriEnvStr(..) function to eliminate buffer size and reentrancy issues
Fixed GsmPifBld process to delay replacement of a matched #define string that falls at the end of the read buffer until more data has been read from the file
Added EncryptString(..) and DecryptString(..) functions to the TPRI.Cryptor class
Made various fixes to the TPRI.NtRtInfo.Client class:
Modified.WriteFile(..) function to allow writing empty (size = 0) files
Fixed Connect(..) function to correctly handle exceptions generated when registering a .NET Remoting channel that has already been registered
Fixed Connect(..) function to clean up properly after an exception while registering the .NET Remoting channel
Added code to clear cached data when disconnecting from host
Modified TPRI.NtRtInfo.Host.GetTrendSourceList(..) function to return the list of real-time trends even if unable to retrieve the list of historical trends
Fixed TPRI.DataDictionary.TreeDataDict to prevent unhandled exception if an empty variable is added to a ProbeX ProbeSet
Updated TPRI.HMI.Controls.DataSetLoader GUI to make it more intuitive for users
Made various fixes to the TPRI.HMI.Controls.TextBox class:
Modified class to inherit directly from System.Windows.Forms.TextBox
Renamed various properties for new naming convention
Made various fixes to the TPRI.HMI.Controls.ActiveShape class:
Renamed various properties for new naming convention
Replaced TPRI.HMI.BaseControl.OnActiveUpdate event with new ValueChanged event
Made various fixes to the TPRI.HMI.Controls.CoverageBar class:
Changed LeftEdge, LeftData, RightData, and RightEdge readonly properties to read/write
Renamed various properties for new naming convention
Removed ErrorTerminate event
Made various fixes to the TPRI.HMI.Controls.ToggleButton class:
Modified class to inherit directly from System.Windows.Forms.Button
Replaced TPRI.HMI.BaseControl.OnActiveUpdate event with new ValueChanged event
Renamed various properties for new naming convention
Fixed TPRI.HMI.Controls.TrendAxisList to prevent unhandled exception if internal timer to check axis percents runs before a trend set has been defined
Changed TPRI.HMI.Controls.TrendCom, TrendCtrl, TrendPlayback, TriggerEditor, and TriggerStatusList classes to inherit from System.Windows.Forms.UserControl rather than TPRI.HMI.Controls.BaseControl
Removed TPRI.HMI.Controls.BaseControl and TPRI.HMI.Controls.OpcMgr classes
Fixed tracking of the internal ‘modified’ flag in the TPRI.HMI.Controls.ProbeSetLoader, TrendSetLoader, and TriggerDefLoader classes
Added Changed event to the TPRI.HMI.Controls.TriggerEditor class
Modified ProbeX, TrendX, and TriggerMgr screens to ask the user to save unsaved changes when leaving the screen
Made various fixes to the ProbeX screen:
Fixed handling of invalid variables when sending data back to host
Added removal of previous ProbeSet’s variables when changing to a new ProbeSet
Allowed reordering of columns in variable display
Added code to check if a string specified for the variable name is illegal and, if so, format the displayed line as a comment
Fixed the changing of a variable name to remove variable from the list of probes before adding a new probe
Fixed text color for highlighted items when list loses focus
Added code to add a single empty variable by default to any new ProbeSet
Added ‘Set Values’, ‘Revert to Live Values’, and ‘Set Formats’ menu items for modifying multiple variables simultaneously
Modified TrendX screen so that new TrendSets will be created by default with a single axis containing a single empty variable
Modified TriggerMgr screen so that new trigger definitions will be created by default with a single empty condition and a single empty trend
Modified TPRI.Trending.TriggerDef class to initialize MaxTrendTime to 3600 seconds by default
Modified TPRI.HMI.Forms.TrendSetupForm class to display an error message to the user if unable to retrieve the list of available trend sources from the host system
Added design-time support for data dictionary window when selecting variable name for control properties such as TextBox.ProbeSource and modified various TPRI.HMI.Controls classes to use this object for design-time selection of variable names
Removed pauses from installation scripts so that installer now runs to completion without periodically requiring key presses to continue
Made various fixes to the Tsentry development and release environment:
Moved all source code into single solution and configured project dependencies
Changed all VB.NET projects to output to \bin\Debug\ and \bin\Release\ rather than just \bin\
Updated all scripts to reflect new project folder locations
Upgrade Instructions:
Modify application screens to replace obsolete OPC interfaces for host data with the new Probe interfaces and classes as follows:
Remove references to TPRI.OpcCom.dll assembly
Implement the TPRI.Probe.IProber interface if direct access to host variable data is required
Modify sysProcs.ini file to add the ProbeSvr host process
If custom logging of variable changes made through the ProbeSvr process is desired:
Modify the sysLogs.ini file to add a specialized LogMsg queue such as ProbeLog for probe variables changes:
#-------------------------------------------------------------- # LogMsg Initialization File #-------------------------------------------------------------- [General] # LogMsg file directory LogMsgDir=%TSENTRY_SYSDIR%\%TSENTRY_SYSNAME%\Logs [Queues] ProbeLog * - Create and configure sysProbe.ini configuration file for the ProbeSvr process and specify the new LogMsg added above: #-------------------------------------------------------------- # ProbeSvr Initialization File #-------------------------------------------------------------- #-------------------------------------------------------------- # General probe parameters #-------------------------------------------------------------- [General] # Specify the LogMsg queue for variable change logging LogMsgQueue=ProbeLog
Changes:
Modified tpriCryptor class to add new functions utilizing true encryption/decryption
Removed deprecated TPRI.HMI.Screens.BaseScreen class
Added GetVarArrDimCnt(..) and GetVarArrDim(..) functions to TPRI.DataDictionary.GsmDDCom class
Added VariableArrayDimensions(..) to TPRI.DataDictionary.IDataDict interface
Added VariableArrayDimensions(..) to TPRI.DataDictionary.ListDataDict class
Added VariableArrayDimensions(..) and ExpandAllVariables(..) functions to TPRI.DataDictionary.TreeDataDict class
Made various fixes to the TPRI.HMI.Screens.ProbeX screen:
Added code to check changed variable names to see if they are structures or ill-defined arrays and offer to automatically add variables for all structure sub-variables and array indices
Fixed naming of array elements when parent variable does not have enough empty array indices
Added popup menu items to expand and collapse all nodes
Modified TPRI.HMI.Forms.DataDictForm so that array indices will be kept if possible when changing from one variable to another in the tree
Fixed tpriGsmDDCom::getVarArrDim(..) function to correctly find array dimension for variable names corresponding to multi-dimensional arrays with only partially filled array indices
Fixed TsecurityCfg application to correctly process changes to various user lists
Fixed Texplore login screen to display language-specific labels & buttons
Added additional exception handling to Tsecurity service functions that search for available domains
Changes:
Made various fixes to the Texplore application:
Fixed connection logic to prevent unhandled exception if the Tsecurity service is not running
Added code to display hourglass cursors during connection & authentication
Fixed TPRI.HMI.Application.LoginMgr.LoginNotRequired(..) function to correctly set internal property values to prevent subsequent security timeouts
Added TestSAK(..) function to TPRI.Tsecurity.LoginSession class
Made various fixes to the TPRI.HMI.Controls.ActiveShape class:
Added code to check for changes to underlying ActiveShapeSetup configurations and automatically update display accordingly
Optimize painting routines to speed processing
Made various internal modifications to TPRI.Shape classes to support above ActiveShape changes
Made various fixes to the TPRI.HMI.Forms.DataDictForm class:
Fixed initial display of form to prevent warning message if previous search string fails to find any results
Added code to clear the search results any time the current data dictionary is changed to prevent accidental selection of a variable name not actually available in the current dictionary
Fixed initial display of form to prevent changing original value of variable when it cannot be found in the data dictionary tree
Fixed TPRI.HMI.Screens.ProbeX screen to properly check user’s SAK for various privileges
Made various changes to the TPRI.NtRtCommand.NtRtCmd class:
Changed subroutines to integer functions returning NtRtInfo.ErrorCode values
Added message box display to user to indicate errors writing files to host
Made various fixes to the TPRI.Tscreen.TscreenMgr class:
Modified MaxBackgroundTime property so that setting property to a value of TimeSpan.MaxValue disables automatic disposal of the screen while in the background
Optimized routines to resize child forms to reduce total number of form layouts required
Made various changes to the TPRI.DatabaseIO.DBIOHost class:
Added overridable property ConnectionString to allow derived classes to customize the specification of the database connection string
Added Shutdown() function to forcibly reset the database service connection
Added code to periodically clean up the database query cache
Added overridable properties ServerName, PortNumber, and HostType to the TPRI.DatabaseIO.DBIOServer class to allow derived classes to customize the specification of the various connection parameters
Made various changes to the TPRI.DatabaseIO.DBIOClient class:
Added public Shutdown() function to allow for destruction of communications channel
Added code to trap exceptions while unregistering .NET remoting channel
Modified tpriGsmDDCom class to add additional error handling while formatting global common variable values with formatting strings listed in sysVars.ini
Modified tpriProc class to move initialization of crash & invalid parameter handlers from Create(..) function to the class constructor to support special case uses of class
Fixed restoration of TRENDCOM buffers in tpriTrendMgr to eliminate incorrect error messages
Changes:
Fixed bug in Tsecurity that would occasionally return authentication failure even when proper credentials are supplied
Added TPRI.HMI.Controls.BarGraph and TPRI.HMI.Controls.RotatedLabel class
Made various fixes to the TPRI.HMI.Controls.TextBox class:
Fixed display of focus rectangle
Fixed default value of BorderStyle property so that setting the value to BorderStyle.None will force it to be written to the source code
Modified TPRI.HMI.Forms.DataDictForm to remember and restore previous variable name and search string
Fixed TPRI.HMI.Controls.TriggerConditionList and TPRI.HMI.Controls.TriggerTrendList to properly update display after change to cell values
Numerous changes to trending HMI components to internally store times as integers rather than floating point numbers
Made various fixes to the TPRI.HMI.Controls.TrendPlayback class:
Renamed various events to conform to .NET naming conventions
Fixed handling of End Time checkbox clicks to properly update displayed check state
Added attributes to numerous properties to prevent display in properties window and serialization in the designer
Added attributes to numerous properties to prevent display in properties window
Modified PlaybackMode property to be read-only (mode is set via SetPlaybackMode(..))
Made various fixes to the TPRI.HMI.Controls.TrendCtrl class:
Renamed various events to conform to .NET naming conventions
Added DataUpdatedEventArgs class and changed parameters to DataUpdated event
Renamed updData(..) function to UpdateData(..)
Modified display of times to automatically determine number of significant digits to display
Fixed display of Delta Time to correctly show values greater than 60 seconds
Fixed display of Delta values when data is not available for one of the cursors
Modified graph initialization so that the time between the first and last points displayed in the graph is exactly the specified width
Added code to automatically force graph width to be an integral multiple of sampling period
Added attributes to numerous properties to prevent display in properties window
Renamed TPRI.Trending.PB_1SECPERSEC constant to PB_REGULATESPEED
Fixed TPRI.Trending.TrendSetConverter classes to prevent exception when loading empty TrendSet
Fixed TPRI.Trending.TriggerDef and TPRI.HMI.Controls.TriggerStatusList classes to properly read and write trigger save times in various disk files
Fixed TPRI.HMI.Screens.TriggerMgr screen to correctly lock down Activate and Deactivate buttons based on user’s security level
Modified tpriLogMsg class to allow shared read operations when opening log files
Modified tpriIniFile::extractIniFileString(..) to return an error if a quote-delimited string is not immediately followed by a whitespace character
Added RemXTimer(..) functions to tpriTimer libraries
Added dynamic trend time and dynamic trend timeout variables to TRENDCOM global common
Made various changes to tpriTrendSrv class:
Fixed processing of trend data requests to correctly interpret a relative start time paired with an absolute end time that comes before the latest recorded data
Modified requests for dynamic trend variables to allow data storage on disk and to use sysTrend.ini file variable to specify trend storage time
Modified tpriTrendMgr to parse both dynamic trend time and dynamic trend timeout variables from sysTrend.ini file into TRENDCOM global common
Fixed tpriGsmDDCom data dictionary initialization to remove check and warning message during parsing of variable formatting string as error detection is now in tpriIniFile::extractIniFileString(..)
Fixed parsing of __int64 variable init/min/max values during data dictionary initialization
Added error messages to tpriProc::shutdownMgr(..) if invalid mode passed to function
Changed shutdown request processing in NtRtMgr to use InitiateSystemShutdownEx(..)rather than ExitWindowsEx(..)to shutdown and/or reboot the system
Made various changes to GsmPifBld process:
Fixed parsing of union variables that explicitly specify the ‘union’ keyword
Fixed parsing of C-style comments that are broken across multiple header file reads
Fixed parsing of multi-line C-style comments started on the same line as a compiler directive
Made various changes to NtRtSvc process:
Added support for '$'-enclosed environment variables in installation strings to allow specifying environment variables in the registry entries
Modified installer to update binary path and command line parameters if service is already installed
Modified installer to specify .\Tsentry user for service
Added additional event log messages and error code returned to user if service fails to start
Added additional configuration feedback when displaying installation information
Updated components to support Ardence RTX 7.0
Upgrade Instructions:
Modify project properties for all RTSS versions of all processes as follows:
Remove the “/QIfist” flag from the C/C++ → Command Line setting
Set Manifest Tool → Input and Output → Embed Manifest to No
Changes:
Fixed TPRI.HMI.Screens.NtRtMgr class to prevent exceptions when right-clicking on white space in the process list
Fixed TPRI.Tscreen.TscreenMgr class to initialize ScreenTrackingEnabled to True by default
Fixed TPRI.Languages.LanguageTable class to trap exceptions generated by passing an invalid culture name to the class constructor
Added additional exception trapping to TPRI.NtRtInfo.Host for reading HMI configuration files
Added additional error messages displayed to user in Texplore while attempting to connect to a given host and application
Made various fixes to the TPRI.HMI.Screens.ProbeX class:
Fixed Paste operation in to properly update underlying ProbeSet object
Fixed handling of escape key to revert a modified probe variable to its unmodified value
Added Debug versions of static link libraries tpriNtRtAppd.lib and tpriNtRtNETd.lib to TSENTRY distribution files
Changes:
Modified NtRtMgr initialization logic so that if there is an error processing the sysVars.ini file but the system is allowed to start anyway (AllowBadDDComVars=Yes) then the warning message box will not be displayed and the system will start immediately (LogMsg will still be called)
Modified GsmOpcRSvr so that it cannot be registered as a server (passing /regserver on the command line is now equivalent to /regclient)
Modified GsmOpcSvr to use true path to executable for registering service rather than default path
Fixed internal variable initialization and logic error causing occasional exceptions in TPRI.HMI.Controls.OpcMgr.WriteTscItem(..)
Fixed bug ProbeX screen that would display the Format selection box for elements within an array
Added Cut, Copy, & Paste operations to ProbeX screen
Added Cut operation to TPRI.HMI.Controls.TrendVarList for TrendX screen
Fixed internal function shared by TPRI.HMI.Controls.CmdButton and ...LinkLabel to correctly return whether or not the link to a new screen has been handled
Fixed bug in Texplore that would occasionally prevent the application from closing
Added VerifyAppClose property to TPRI.HMI.Application.Explorer.TexploreSettings class and added code to Texplore to check app.config file setting before asking user to verify close requests
Added support for changing user password to Texplore
Fixed TPRI.DatabaseIO.DBIOHost class destructor to prevent exception generated if database has already been closed
Renamed and changed scope of friend class TPRI.HMI.Forms.SharedFolderListForm to public class TPRI.HMI.Forms.OpenSharedFileForm and made various internal changes to add greater flexibility in use
Changed scope of TPRI.NtRtCommand.NtRtCmd class from private to public to facilitate generation of LogMsg messages from HMI screens
Added TPRI.NtRtCommand.DebugLevel enumeration for generating LogMsg messages
Updated the TPRI.HMI.Controls.RpsEditor class to be fully compatible with NtRtInfo service
Fixed TPRI.HMI.Controls.TrendingVarList, TPRI.HMI.Controls.TriggerStatusList, and TPRI.Tsecurity.Controls.AppSecurityEditor classes so that the tool tip text is not immediately displayed when the mouse moves over various nodes
Changed copies of tpriNtRtApp.lib and tpriNtRtNET.lib distributed with Tsentry from Debug to Release versions
Upgraded Glacial Components GlacialTreeList to v2.5.0.18486
Upgraded Glacial Components GlacialListView to v2.1.0.22279
Changes:
Added #include “tpriUtilMacs.h” to tpriNtRt.h file
Made various changes to the tpriProcMgr class:
Moved NtRtCmd processing code directly into NtRtMgr process itself
Changed scope of parseGrpdef(..), parseProdef(..), and parseTrapCrash(..) from private to public
Modified macros in tpriUtilMacs.h to surround all function arguments with parentheses to prevent unexpected results when calling functions as part of a larger expression
Fixed Release versions of tpriNtRtApp.lib and tpriNtRtNET.lib to correctly use 32-bit time functions rather than new 64-bit time functions
Made various changes to the NtRtMgr process:
Added code to optionally delay TSENTRY startup and display a countdown timer to allow console user time to cancel startup
Fixed shutdown option processing to correct potential multithreading pitfalls
Made various changes to the NtRtSvc process:
Added numerous logs during service installation
Added ‘-installdefault’ command line option to simplify service installation
Fixed non-RTX version of tpriCreateSharedMemory(..) to properly set the last error code to ERROR_ALREADY_EXISTS when shared memory already exists
Fixed TPRI.HMI.Controls.ActiveShape to force text and shape to be visible when changing from an blinking state to a non-blinking state
Modified TPRI.HMI.Controls.TextBox so that text will not be automatically reset when OPC disconnects if the tDataSource member is an empty string
Added TPRI.Trending.TrendMgrStatus enumeration
Added Status property to TPRI.HMI.Controls.TrendCom class
Added TPRI.Trending.ProbeMgrStatus enumeration
Added Status property to TPRI.HMI.Controls.TrendCom class
Made various changes to the TPRI.HMI.Controls.TrendVarList class:
Fixed processing of Label cell changes to correctly update the Label, not the Variable
Fixed the Trend Setup form on the TrendX screen to update the trend sources displayed on the Trend Variable list when the Set All Variables button is clicked
Changed the data dictionary form so that it is not displayed in the Windows taskbar
Created new TPRI.HMI.Controls.TextSelectBox class as base class for text box with a [*] button to display popup selection box and completely reworked DDVarSelect and TrendSrcSelect classes to inherit from this parent class
Made various changes to the TPRI.HMI.Controls.OpcMgr class:
Added public RestartComm() method
Modified trapped exception handling during data updates so that error message boxes are generated only one at a time
Fixed TPRI.HMI.Screens.ProbeX screen to properly display elements of multi-dimensional arrays
Fixed TPRI.HMI.Screens.TrendFileMgr screen to use correct shared folder name for historical trend data files
Added TPRI.NtRtCommand namespace and ShutdownOptions, AppShutdownOption, and AppShutdownOptionCollection classes as well as AppShutdownOptionType and AppShutdownOptionFunction enumerated types to that namespace
Modified TPRI.NtRtInfo.INtRtInfo interface and TPRI.NtRtInfo.Client and TPRI.NtRtInfo.Host classes to add GetShutdownOptions(..) functions
Added Shutdown button and code to send request to host to TPRI.HMI.Screens.NtRtMgr form
Fixed TPRI.HMI.Application.TsecurityMgr so that Accessed events raised by secured objects only reset the expiration time if the object is not yet expired
Made various changes to the Texplore application:
Added code to save size and position of window and restore on restart
Added code to save most recently used host and application names and restore on restart
Added indicators for OPC and Trend communications
Fixed window sequencing when Tsecurity host cannot be reached during login
Added code to handle Enter key presses from domain combo box on login screen
Disabled Change Password button for functionality not yet completed
Added default icon for application
Added code to TPRI.Tscreen.TscreenMgr to detect when the parent container is closing and disable auto-navigation that is normally processed when the active form is closed
Added additional error handling to TPRI.Tscreen.TscreenInfo to trap exceptions during creation of custom application screens
Added icons to Tsecurity and TsecurityCfg processes
Updated code base to use various secure CRT functions under VS2005
Upgrade Instructions:
Update the
\tpriNtRt\bin\NtRtInfo.exe.config
file to add a <SharedFile> key with the name set to SysIni and Path set to the system.ini file, as in the following:
<SharedFile> <Name>SysIni</Name> <Path>%TSENTRY_SYSDIR%\%TSENTRY_SYSNAME%\pif\%TSENTRY_SYSNAME%.ini</Path> </SharedFile>
Update the sys.ini file to configure a DelayStartupTime parameter in the [AppParams] section, if desired
Changes:
Updated compiler support for Visual Studio 2005 and .NET Framework 2.0
Visual Studio .NET 2003 and Visual Studio 6.0 are no longer supported in any way by versions of TSENTRY v4.00.00 or greater
Moved HMI environment from Internet Explorer to Tsentry Screen Explorer (Texplore)
Removed following portions of TSENTRY:
TSENTRY and application
\wwwroot\
folders no longer required or created by installationTSENTRY
\Modules\
folder is no longer supported of created by installationAll application file shares (DataSet, Trigger, NtRtCmd, etc.) no longer required as the NtRtInfo service now provides enhanced functionality
Local tpriHmi user no longer required or created by installation
tpriPublisher no longer required or included with installation
tpriTrigText application removed in favor of standard TSENTRY screen TrendFileMgr
Removed all HMI-related assemblies in favor of classes exposed by TPRI.Core.dll
Removed Probe, ProbeA, and ProbeV screens in favor of ProbeX
Several standard TSENTRY functions are temporarily excluded from this release, including:
tpriNtRtAdmin application not included with release
Custom HMI screens not yet explicitly supported
Added links to ASCFEditor and TsecurityCfg application to both TSENTRY and Tsecurity installers
Updated Workstation Configuration document in TsentryHelp to support Texplore installation
Integrated classes from TPRI.Cryptor assembly into TPRI.NtRtNET assembly
Updated all scripts to require and use the .NET Framework v2.0 rather than v1.1
Moved .NET components from tpriNtRt.lib into separate tpriNtRtNET.lib library
Removed CreateShares.cmd, ExportDataDict.cmd, InstallFiles.cmd, InstallIISCustom.cmd, InstallIISCustomFiles.cmd, and InstallIISCustomSite.cmd scripts
Added TPRI.HMI.Application.AppVariableCollection class
Made various changes to the TPRI.HMI.Application.AppConfig class:
Added HmiConfigSharedFolder constant field
Added CurrentCulture, CurrentLanguage, and Title properties
Changed AppVariables property from StringDictionary to AppVariableCollection
Removed LoadStringDictionary(..) function from TPRI.HMI.Application.AppLib module
Added TPRI.HMI.Application.Explorer namespace, including ITexplore interface and FindExplorer(..) function
Added LinkLabel class to TPRI.HMI.Controls namespace
Added TPRI.HMI.Application.TsecurableObject class
Moved login-releated portions of TPRI.HMI.Application.TsecurityMgr into new LoginMgr class and reworked TsecurityMgr to better manage security session
Moved shape-related enumerated types and classes into TPRI.Shape class
Renamed TPRI.Shape.Shapes enumerated type to TPRI.Shape.ShapeTypes
Updated TPRI.HMI.Controls.ActiveShape and TPRI.HMI.Controls.BarGraph classes to work with new TPRI.Shape namespace
Made various changes to the TPRI.HMI.Controls.CmdButton class:
Modified class so as to inherit directly from System.Windows.Forms.Button
Deprecated tURL property and replaced with LinkedScreen property
Deprecated tText property in favor of standard Text property
Removed unnecessary ButtonControl property
Changed pMgr internal variable of TPRI.HMI.Controls.BaseControl class from generic Object type to TPRI.HMI.Controls.OpcMgr
Made various changes to the TPRI.HMI.Controls.CmdButtonCollection class:
Added CmdButtonCollectionEventArgs subclass
Modified Click event signature to pass reference to CmdButtonCollectionEventArgs object
Added IndexOf(..) function
Made various changes to the TPRI.HMI.Controls.DDVarSelect class:
Completely reworked class so as to inherit directly from System.Windows.Forms.Button
Removed various old class events exposed directly by System.Windows.Forms.Button
Remove all events from TPRI.HMI.Controls.DDVarSelectCollection class
Made various changes to the TPRI.HMI.Controls.OpcMgr class:
Completely reworked class to support switching between screens in Texplore
Added StopComm() and Reset() methods
Changed existing parameter to StartComm(..) to pass by value and added additional parameter to point to the root control to search for active objects
Made various changes to the TPRI.HMI.Controls.TrendCom class:
Completely reworked class to support switching between screens in Texplore
Changed existing parameter to StartComm(..) to pass by value and added additional parameter to point to the root control to search for active objects
Added StopComm() method
Removed TPRI.HMI.Screens.BaseScreen class
Implemented internals of TPRI.NtRtInfo.Host.GetHmiConfig(..) function
Added TPRI.DatabaseIO namespace and classes
Upgrade Instructions:
Before installing the new version of Tsentry:
Uninstall previous version of Tsentry via Control Panel→Add/Remove Programs
Uninstall previous version of Tsentry HMI via Control→Add/Remove Programs
Download and install .NET Framework v2.0 from Microsoft
Remove \tsentry\ and custom application virtual web shares from IIS
Copy the existing
%TSENTRY_SYSDIR%\tpriNtRt\wwwroot\web.config
file into%TSENTRY_SYSDIR%\%TSENTRY_SYSNAME%\HmiConfig\
or equivalent folder and rename as TsentryHmi.xmlCopy the existing web.config file from any custom application virtual web shares into
%TSENTRY_SYSDIR%\%TSENTRY_SYSNAME%\HmiConfig\
or equivalent folder and rename as <Application>.xml, where <Application> matches the name of the old virtual web shareRemove the folders used as the virtual web shares for any custom HMI applications (typically only
%TSENTRY_SYSDIR%\%TSENTRY_SYSNAME%\wwwroot\
)Using Windows explorer perform the following to
%TSENTRY_SYSDIR%\tpriNtRt\
Remove the \Apps\ subfolder
Remove all files from the \bin\ subfolder except NtRtInfo.exe.config
Remove the \Modules\ subfolder
Remove the \wwwroot\ subfolder
After installing the new version of TSENTRY:
Remove any post-build operations that copy data dictionary files to web shares from data dictionary project settings in application development environment (web shares no longer exist)
Changes:
Modified TSENTRY installer to save flags for real-time installation and copying HMI files so subsequent installations default to the same values
Made various changes to the tpriProc class:
Moved initialization of crash handler from PrIni(..) to Create() in order to support processes not listed in sysProcs.ini file
Modified Create() function to disable popup message boxes for ASSERTs
Changed destructor so that process state is left as tpriProcStopping rather than resetting to tpriProcStopped (NtRtMgr/tpriProcMgr will reset the value when process exits)
Made various changes to the tpriProcMgr class:
Modified function that checks if processes are still alive to withhold log message indicating that process is no longer alive if process state is tpriProcStopping (due to above change to tpriProc destructor)
Modified function to adjust the internal clock drift rates to disable RTX clock tracking if RTX is not installed on the system (prevents error message on non-RTX systems)
Fixed AddXTimer(..) function prototypes in tpriTimer.h
Changed LogMsg(..) so that displayed process name is taken from sysProcs.ini file or executable file name rather than first passed function name
Fixed logging of memory buffer rollovers in TrendMgr to log correct memory buffer size
Changed calling parameters to tpriGsmDDCom::varDef::fmtXXX(..) functions to include size of destination buffer
Removed try/catch from tpriGsmDDCom::varDef::fmtXXX(..) in tpriNtRt.RTSS.lib library
Removed tpriLogMsg::fileLogMsgs(..) function from tpriNtRt.RTSS.lib library
Fixed tpriGetClockTime(..) function to correctly use RTX timer for Win32 processes on an RTX system so that absolute timer values are consistent between Win32 and RTSS processes
Fixed non-RTX version of tpriCreateSharedMemory(..) to properly set the last error code before function returns
Increased size of error message buffer in tpriSvrSock constructor to prevent buffer overruns
Made various changes to the GsmPifBld process:
Added support for use of sizeof(..) in array bounds
Added support for mixed hexadecimal and decimal math in array bounds
Reorganized code in main(..) function of NtRtSvc to clean up sequencing
Fixed Tsecurity installer to include Interop.ADSecurity.dll in \bin\ folder
Fixed TPRI.Tsecurity.Client class so that internal .NET remoting channel is properly disposed
Made various changes to the TPRI.Tsecurity.LoginSession class:
Added Copy(..), CopyTo(..), CreateCopy(), and UpdateExpiration(..) methods
Added Expired, Timed, ExpireTime, and AllowedAcces properties
Removed UsingDefaultSAK property
Changed name of ResetLogin() function to Logout()
Changed name of SessionTimeout property to Timeout
Changed default property values in TPRI.Tsecurity.TsecuritySettings class from shared properties to simple public constants
Modified TPRI.Tsecurity.Host class so that user information will not be removed from the cache if authentication fails because the network is unreachable
Fixed HMI security functions in SecurityDef module to properly treat SAK as a 64-bit integer
Changed securityLevel parameter on all SecurityScreen(..) functions to a 64-bit integer
Upgraded Glacial Components to GlacialListview v2.0.3.2204 and GlacialTreeList v2.3.2.21597
Fixed TPRI.DataDictionary.TreeDataDict class to properly create, track, and destroy references to the tpriGsmDDCom classes
Made various changes to the TPRI.HMI.Application.AppConfig class:
Changed initial value of TsecurityHost property from MachineName to an empty string
Changed initial value of TsecurityPort property from hardcoded 8080 to TsecuritySettings.DefaultPortNumber
Fixed parsing of TsecurityPort from config file to force default value if exception occurs
Fixed TPRI.HMI.Application.ScreenConfig class to properly load ClassName from XML file
Made various changes to the TPRI.HMI.Application.ScreenConfigCollection class:
Implemented ISerializable interface and added constructor for serialization
Removed unnecessary ScreenConfigs property
Added BarGraph, ComboBox, ComboBoxCollection, CoverageBar, and LogMsg classes to TPRI.HMI.Controls namespace
Made various changes to the TPRI.HMI.Controls.DDVarSelect class:
Modified DataDictNames property set method to automatically choose first data dictionary name as current data dictionary if none has already been chosen
Added InitialDataDictDisplay property
Added ShowDataDict() method
Added check to TPRI.HMI.Controls.OpcMgr to verify valid internal references before processing data updates to eliminate potential null reference exception
Added Remove(..) method to TPRI.HMI.Controls.TextBoxCollection class (shadowed Remove(..) base class function) to unhook event handlers when removing items from collection
Completely reworked all trend-related classes in TPRI.HMI.Controls namespace to use GlacialControls lists and trees rather than TelePro-developed objects
Removed TrendVarListBase, TrendingVarListBase, TrendingVarDateTimeList, ListViewEditor, and OwnerDrawnListView from TPRI.HMI.Controls namespace
Fixed TPRI.HMI.Controls.TriggerStatusList.ColumnWidths property set method to validate inputs
Made various changes to the TPRI.HMI.Forms.DataDictForm class:
Added several checks for valid data to prevent null reference exceptions
Added Enter key handler for variable name box to process like an Accept button press
Changed name of TPRI.HMI.Forms.QueryContinueForm.Continue property to Result in order to avoid conflict with known keyword ‘Continue’
Implemented ISerializable interface and added constructor for serialization to TPRI.Languages.LanguageTable class
Made various changes to the TPRI.Languages.LanguageTable class:
Implemented ISerializable interface and added constructor for serialization
Added FindPhrase(..) method
Renamed the TPRI.NtRtInfo.INtRtInfo.GetAppConfig(..) function to GetHmiConfig(..) and added additional security-related parameters
Made various changes to the TPRI.NtRtInfo.Host class:
Added DefaultPort constant field
Changed GetAppConfig function to GetHmiConfig to conform to updated INtRtInfo interface
Fixed GetSharedFilePath(..) function to catch illegal attempts to access parent directories of shared folders
Changed ServiceName of NtRtInfo service from Service1 to NtRtInfo
Fixed TPRI.Probe.ProbeSet class to properly read/write Format string from/to ProbeSet files
Added Tag property to TPRI.Trending.TrendSet class and completely reworked helper classes
Changed name of TPRI.Trending.TriggerDef.Operator property to Comparator in order to avoid conflict with known keyword ‘Operator’
Made various changes to TPRI.HMI.Screens.ProbeX class
Changed text in popup menu items to read ‘Variable’ rather than ‘Probe’
Added ‘Edit Variable’ popup menu item
Fixed display position of popup menu to correspond with mouse position
Added automatic retrieval of variable description in far-right column of display
Added protected properties VariableName(..) and RequestedVariableName(..)
Changed scope of InsertVariable(..), RemoveVariable(..), and RefreshArray(..) methods from public to private
Changed scope of StartVariable(..) from public to protected
Changed edit activation of variable name from single-click to double
Added Escape key processing in variable value text box in order to reset modified state and restore live value updates
Added check to prevent selection of rows in tree display that are not root variables
Added code to automatically display data dictionary when editing a new variable name
Added code to automatically stop editing the variable name when a variable is selected from the data dictionary form
Added code to automatically stop editing the variable format when a new selection is made in the dropdown box
Added support for displaying integers as unsigned values
Changed scope of PopulateHostTriggers() and PopulateLocalTriggers() methods in TPRI.HMI.Screens.TriggerFileMgr class from public to private
Moved TPRI.OpcCom class into the TPRI.Probe.OPC namespace
Added TPRI.Tscreen.ActivateInfo class
Made various changes to the TPRI.Tscreen.ITscreen interface:
Moved ActivateScreen(..), GoBack(..), and GoForward(..) events into new TPRI.Tscreen.INavigator interface
Changed OnScreenActivated parameter from a TscreenInfo object to an ActivateInfo object
Added TPRI.Tscreen.FindTscreen public function
Modified TPRI.Tscreen.ScreenChangingEventArgs and TPRI.Tscreen.ScreenChangedEventArgs classes to use ActivateInfo rather than TscreenInfo as primary data class
Made various changes to the TPRI.Tscreen.TscreenHistory class:
Added BackToMenu(), FindStepsToAlternateScren(..), RemoveScreen(..), and Clear() methods
Added Item(..), CurrentItem, CurrentIndex, and Count properties
Modified various existing functions to use ActiveInfo class rather than TscreenInfo
Added TPRI.Tscreen.TscreenResizeStyle enumerated type
Added new TPRI.Tscreen.TscreenInitInfo class
Made various changes to the TPRI.Tscreen.TscreenInfo class:
Modified class definition to inherit from TPRI.Tscreen.TscreenInitInfo class and removed local MaxBackgroundTime property (now inherited from TscreenInitInfo)
Added Navigator, InMemory, Active, and IsDisposingScreen properties
Changed Steps property from ReadOnly to Read/Write
Enhanced error trapping and reporting during creation of actual screen object
Added code to record initial size of screen to internal data
Fixed DestroyScreen() function to prevent function from indirectly calling itself and to clean up destruction sequencing
Fixed detection of form closure to update internal class data
Added RemoveByID(..), RemoveByClass(..), and RemoveAt(..) methods to the TPRI.Tscreen.TscreenInfoCollection class
Made various changes to the TPRI.Tscreen.TscreenMgr class:
Added ActivateInfo, AllowAutoRegister, ScreenInitInfo, CanGoBack, CanGoForward, and ScreenTrackingEnabled class properties
Added UnregisterAllScreens(), HideAllScreens(), ShowCurrentScreen(), and GoBackToMenu(..) methods
Replaced ScreenChanged(..) event with separate BeforeScreenChanged(..) and AfterScreenChanged(..) events
Replaced ScreenDisposed(..) event with separate BeforeScreenDisposed(..) and AfterScreenDisposed(..) events
Added overloaded RegisterScreen(..) method to accept a TscreenInitInfo object
Added support for automatically registering screens based on screen ID and namespace of current screen
Added overloaded ActivateScreen(..) method and support for screen activation arguments
Changed sequencing in internal ActivateScreen(..) to always force screen activation even if the TscreenMgr believes the requested screen is already active
Added support for automatically disposing screens when they have been idle longer than the time specified by the MaxBackgroundTime property
Changed OnScreenChanged(..) method from public to private
Added various options for sizing screens when container form is resized
Made various changes to the TPRI.Tscreen.ActivateScreenEventArgs class:
Added Argument property
Added new constructor to support navigating with arguments
Changed Steps property from ReadOnly to Read/Write
Changed ScreenID property from ReadOnly to Read/Write
Made various code-level changes to improve compatibility with Visual Studio 2005, including:
Initialized local function variables to eliminate warnings
Removed unused variables
Verify all function code paths return a valid value
Fixed incorrect types specified in various native Win32 function calls
Upgrade Instructions:
Re-run the HMI client installer (http://hostaddress/tsentry/ → Hmi Setup → Step #3) on any workstation where .NET Framework v2.0 has been installed
Changes:
Made various changes to NtRtMgr process:
Modified process initialization to check for failure to create data dictionary GSM and display message to user
Modified initialization of LogMsg window update timer so that it runs on a non-zero interval under all conditions
Made various changes to GsmPifBld process:
Replaced code to evaluate mathematical expressions with true expression processor
Changed processing of #defines to hold off replacing text until required so that handling of header files with #undef statements are processed correctly
Changed code so that mathematical expressions in #defines are not evaluated until they are used so that compound expressions in #defines are evaluated correctly
Fixed incorrect calculations for structure alignment under certain circumstances
Added support for hexadecimal array indices
Added check to TrendGsm initialization to verify that all global commons are properly mapped
Made various changes to tpriGsmDDCom class:
Added check to data dictionary initialization for invalid variable formatting string in vars.ini file
Added optional fullSize parameter to tpriGsmDDCom::getStructInfo(..) function
Fixed historical trend data collection so that if one or more of the recorded variables in a trigger must be reset (e.g. if another trigger requires larger data buffers) the trigger will properly clean up its internal data, close the historical trend file file, and reinitialize without crashing
Fixed calculation of process interval percent utilization in tpriProc class so that changes to RepRate update filter constant in smoothing filter accordingly
Added AddXTimer(..) function to tpriTimer library
Modified NtRtHmiSetup installer so that OPC DLLs are always updated with version from installer, and hence are always registered upon the completion of the installer
Made various changes to TPRI.Core.dll assembly:
Modified TPRI.HMI.Controls.OpcMgr so that it can find TPRI.HMI.Controls.BaseControl-derived objects stored in sub-objects (e.g. GroupBox’es) on the parent form
Added following new namespaces, classes, & modules
TPRI.HMI.Controls.ToggleButton and TPRI.HMI.Controls.ToggleButtonCollection
TPRI.HMI.Controls.ProbeSetLoader
TPRI.Probe.ProbeSet, TPRI.Probe.ProbeSetConverter, and TPRI.Probe.ProbeLib
TPRI.HMI.Screens.ProbeX
TPRI.HMI.Application.AppConfig, TPRI.HMI.Application.AppLib, TPRI.HMI.Application.LoginConfig, and TPRI.HMI.Application.TsecurityMgr
TPRI.Languages.LanguageTable and TPRI.Languages.LanguageTableCollection
Renamed ShapeArray class to ShapeCollection and moved into TPRI.HMI.Controls namespace
Moved ActiveShapeCollection, ShapeCollection, and TextBoxCollection in TPRI.Core.dll assembly into TPRI.HMI.Controls namespace
Improved error logging in TPRI.HMI.Controls.DataSetLoader class
Modified TPRI.HMI.Screens.BaseScreen so that security is disabled until the screen is actually started in order to prevent errors during development
Added support for security on TPRI.HMI.Screens.TrendFileMgr screen
Added readonly ActiveInfo property to TPRI.Tscreen.TscreenMgr class
Numerous minor code fixes to eliminate errors during strict compilation
Integrated TPRI.Cryptor and TPRI.CryptClient classes into TPRI.NtRtNet.dll assembly
Made various changes to Tsecurity service:
Changed logging of login errors to display error string instead of error number
Fixed caching of user info so that data is not inadvertently removed from the cache file if a login fails with a bad password that does not match the hashed password stored in the cache
Fixed calculation of password expiration date for a given user so that the user flags are first checked to determine if the password is set never to expire
Fixed security hole in encryption/decryption of values in cached user info file
Added DisableAuthentication key to Tsecurity service to facilitate testing
Modified algorithm to search for available domains so that trusted domains will always be included
Added TsecurityDomains lists to configuration file to support filtering of available domains
Moved location of available domains file into same folder as service executable
Removed LocalMachineDomain parameter from configuration file and added code to automatically determine correct value
Moved ASCFFolder and PortNumber parameters into TsecuritySettings class
Made various changes to ASCFEditor application:
Modified application close sequence to ask user to save unsaved changes
Changed various domain comboboxes to allow user-entry of domains
Fixed saving of known Tsecurity hosts to ASCFEditor.exe.config file
Improved error logging
Remove various sections of unused code
Added TsecurityCfg application for configuring the Tsecurity service
Made various changes to the TPRI.Tsecurity.dll assembly in addition to those required for the above changes:
Moved all Tsecurity Application and ASCF related classes into the TPRI.Tsecurity.TsecurityApps namespace
Moved all controls into the TPRI.Tsecurity.Controls namespace
Renamed all “Dialog” classes as “Form” classes and moved into the TPRI.Tsecurity.Forms namespace
Added TPRI.Tsecurity.BrowseUser and TPRI.Tsecurity.BrowseUserCollection classes
Added TPRI.Tsecurity.TsecurityDomainList and TPRI.Tsecurity.TsecurityDomains classes
Added TPRI.Tsecurity.Client.GetDomains(..) overloaded function to retrieve domains as a TsecurityDomains list
Modified TPRI.Tsecurity.TsecuritySettings class to allow direct access to data outside of application configuration files
Added NoNetwork error code and code to detect condition during user authentication
Modified TPRI.Tsecurity.TsecurityApps.ASCF class to retrieve ASCFs from arbitrary folder not specified by registry key
Moved various utility functions from specific classes into the TPRI.Tsecurity.UtilLib module
Completely redesigned HMI Login page:
Reworked Login page as a true ASP.NET page
Moved all configuration from tpriScreens.ini file to application-specific web.config file
Added various Login sequencing configuration options
Removed all references to tpriScreens.ini file from tpriNtRtAdmin, installers, and procedures
Removed all references to TSENTRY_HMI_PIF and TSENTRY_HMI_LOG system environment variables
Modified tpriScreens.net.htm.template for compatibility with new Login architecture
Updated CleanExtinctTsentryComponents.cmd script for latest changes
Added ntrights.exe to distributed \Procs\ folder and modified CreateTsentryUser.cmd script to call ntrights.exe to give Tsentry user the right to log on as a service
Added DeleteByDate.vbs scripts to distributed \Procs\ folder
Made various modifications to .NET screen htm/aspx template:
Updated template for new login architecture
Updated cookie functions
Fixed potential bug during string parsing in OnLinkTo(..) function
Migrated help documentation to new Web Works platform
Upgrade Instructions:
Before installing the new version of TSENTRY:
Delete all files and subdirectories from
%TSENTRY_SYSDIR%\tpriNtRt\TsentryHelp
After installing the new version of TSENTRY:
Delete all application screen *.htm, *.asp, & *.aspx files and re-publish using tpriPublisher
Port all HMI security settings from old tpriScreens.ini file to new web.config file format for all virtual web shares
Port settings for Tsentry web share as well as any application web shares
See
\tpriNtRt\apps\tpriNtRtAdmin\template\web.config.template
for the correct web.config file formatSave web.config using UTF-8 encoding (open file in notepad, File→Save As, choose UTF-8 in the Encoding dropdown box, and click Save)
Run the new Tsecurity configuration tool (\tpriNtRt\Tsecurity\bin\TsecurityCfg.exe) to configure all Tsecurity parameters, browse users, domains, and administrators
Changes:
Modified TrendTrig process to successfully initialize if sysTrend.ini file does not contain [TrendTrigDefs] section
Added tpriTrigText to tpriNtRt libraries
Fixed domain filtering on HMI login screens
Modified tpriTrendSrc::setTrendData(..) to add checks for valid input parameters
Added NtRtInfo service for exposing data from TSENTRY host
Renamed TsecurityUser to TsentryUser to generalize user for multiple uses
Modified CreateUser.vbs script to accept command line arguments and move DeleteUser code into its own script DeleteUser.vbs
Added scripts to clean up extinct Tsentry and Tsecurity components and modified installer to call scripts during installation/uninstallation
Added tpriTrendSrc::isCompactVarBuf(..) function to return if a trend buffer is fully compacted
Added createSection(..) functions to tpriIniFile class for creating a new section in an ini file
Made various changes to tpriTrendTrig class:
Modified saveTriggerList(..) to automatically create .ini file section if needed
Modified chkAddDel(..) to return number of files processed
Removed concept of ‘active’ vs. ‘inactive’ triggers; triggers are either loaded into the system or not
Modified trigger initialization so that trigger is loaded into the system even if there is an error so that its status will be displayed on the trigger status screen
Added support for recording error messages for display on the trigger status screen
Added tpriTrend::getTrendVarStatusMessage(..) function to get text description of trend status
Modified TrendTrig process to save trigger list after any changes, not just when process exits
Added DynamicTrendTimeout parameter to sysTrend.ini file to specify max timeout for dynamic variables and modified tpriTrendMgr class to parse this parameter from the ini file
Added checks to timestamp subtraction operator overload functions to prevent negative values
Created TPRI.Core.dll VB.NET assembly to provide many common objects in a single assembly
Set up hierarchical namespace tree for various classes
Imported copies of many of the existing HMI classes and assemblies into TPRI.Core.dll
Massive modifications to existing classes and structures to take advantage of .NET constructs and capabilities
Modified existing TrendX and TriggerMgr screens to use TPRI.Core.dll assembly and classes rather than older individual assemblies
Created new TrendFileMgr screen for managing historical trend files
Updated NtRtMenu screen to include link to TrendFileMgr screen
Changes:
Completely reworked Tsecurity subsystem
Tsecurity now packaged and installed as an integral part of TSENTRY
Removed TSecurityAD.dll, TSecurityASCF.dll, TSecurityClient.dll, and ITSecurity.dll assemblies from distribution
Redesigned Tsecurity classes and moved all common code into single Tsecurity.dll assembly
Modified file format for ASCF files
Redeveloped ASCFEditor as a completely new application
Renamed TSecurityService.exe to Tsecurity.exe
Added several configuration parameters to Tsecurity service configuration file
Modified authentication sequence to use multiple threads and caching of user credentials
Optimized authorization sequence to speed Active Directory lookups of group memberships for domain users
Integrated Tsecurity documentation and installation in with TSENTRY
Made various fixes to tpriNtRtAdmin VC++ task project template
Modified Output and Intermediate Directories for RTSS Debug and RTSS Release configurations to use underscore between RTSS and Debug/Release
Replaced RtxSdkDir environment variable with RtxDir to conform to RTX 6.0 installation
Made various changes to tpriTrendSrc class:
Modified constructor to allow NULL passed as trend source name
Make compactVarBuf(..) a protected virtual function
Changed cleanDeadVars(..) to check return value from cleanDeadVar(..)
Modified setTrendData(..) to force sampling times to lie on multiples of the trend variable sampling period, not the base period of the trend source
Added checks to various functions for fully initialized internal data
Made various changes to tpriPci::findPci(..) function:
Modified logging of all hex numbers to prepend output with ‘0x’
Modified debug levels so all messages are displayed while scanning for PCI cards
Added tpriGsmDDCom::getTypeFromTypeName(..) function to parse type strings
Fixed binary & hex formatting on Probe/ProbeA/ProbeV to display values properly
Temporarily reversed v3.08.00 change to tpriNtRtEx.dll so that RTX timers are only used if running under RTSS
Upgrade Instructions:
Before installing the new version of TSENTRY, completely remove any previous Tsecurity installation as follows:
First, uninstall the old TsecurityService application by running the uninstall script:
<InstallDir>\Procs\UninstallTsecurityService.cmd <InstallDir>\bin
where <InstallDir> is replaced with the base installation directory of the old version of Tsecurity, such as D:\tpriNtRt\TsecurityIf the latest version of TSENTRY has already been installed before removing the previous version of Tsecurity, the above uninstall script may not work; in this case, the old TsecurityService service can be removed by manually executing the following two commands from the command prompt:
cd /d %Windir%\Microsoft.NET\Framework\v1.1.4322
installUtil.exe /u <InstallDir>\bin\TsecurityService.exe
where <InstallDir> is replaced with the base installation directory of the old version of Tsecurity, such as D:\tpriNtRt\TsecurityIf the old Tsecurity package was uninstalled before the uninstall script was executed, the TsecurityService entry in the service control manager can only be removed by deleting the following entries from the registry:
HKLM\SYSTEM\CurrentControlSet\Services\ Eventlog\Application\TSecurityService
HKLM\SYSTEM\CurrentControlSet\Services\TSecurityService
Uninstall the old Tsecurity package through the Control Panel→Add/Remove Programs
Rename the old Tsecurity installation directory; this directory may be deleted if no Application Security Configuration Files (ASCFs) are to be transferred to the new installation
Once the new version of TSENTRY has been installed, configure the Tsecurity administrator by inserting the appropriate user as an Owner into the Tsecurity.xml file in the \ASCF\ subdirectory in the Tsecurity installation directory
For each existing ASCF that is to be transferred to the new system:
Copy the existing ASCF from the old Tsecurity installation directory tree (renamed above) into the new installation directory tree (in both cases the ASCF file should be located in the \ASCF\ subdirectory off of the installation directory)
Modify the copied ASCF to conform to the new ASCF file format; use ExampleASCF.xml as a template for the proper file format
Verify proper ASCF format by using the ASCFEditor to view the file and check all configuration settings (must log in to the ASCFEditor as the Tsecurity administrator or as the application owner for the ASCF in question)
Modify any existing Tsecurity client applications using the TPRI.TsecurityClient class in the TsecurityClient.dll assembly to instead use the TPRI.Tsecurity.Client class provided in the Tsecurity.dll assembly
Changes:
Rearranged this TsentryVersion.rtf document so that the most recent changes are listed at the top
Fixed buffering of trend variables to disk to properly initialize disk-based trend buffers
Modified tpriPublisher to process ASP.NET pages
Added encryption and decryption functions to tpriNtRt.lib
Made all required changes to implement new TSECURITY package
Replaced classic ASP Login/Security front-end HMI screens with new ASP.NET screens
Changed all links on standard screens to reference <screen_name>.aspx instead of <screen_name>.asp
Updated tpriScreen.net.htm.template to support ASP.NET screens
Replaced TPRI.Cryptcom COM+ encryption object with TPRI.Cryptor.dll .NET object
Removed all references to deprecated TPRI.ADSecurity object
Added optional ability to use custom title string on HMI login screen
Added optional ability to select a preferred language on HMI login screen
Added sample template
Apps\tpriNtRtAdmin\template\HmiLangTable.ini.template
for configuration of multilingual login stringsModified installation scripts to correctly process various security objects
Added TSECURITY package installer as component of TSENTRY installation
Made various changes to GsmPifBld process.NET screen htm template:
Added support for #pragma once compiler directives
Added support for #pragma pack (push, x) and #pragma pack (pop) compiler directives
Modified processing of all other #pragma statements to ignore compiler directive
Added support for long int and short int type specifiers
Fixed processing of arrays of structures declared using the struct keyword to function identically to those declared without the struct keyword
Added display of line number within header file of processing errors
Modified logged messages during errors to help improve readability and comprehension
Added detection of pointer declarations and allow (but ignore) if extern or typedef
Changed process return codes to positive values so they are trapped by Visual Studio
Fixed tpriTrigText to properly process multiple variables from historical trend data files
Removed calls to unnecessary security auditing functions in GrantThreadAccessToConsole(..) to speed execution of function
Fixed tpriConnSock class to dynamically allocate large enough buffer size as needed
Added option to tpriNtRtAdmin task for creating a new task that uses managed extensions
Fixed tpriNtRtAdmin VB.NET screen template to properly reference HMI library DLLs in \tbin\
Created SHUTDOWNMGR_XXX defines as flag to pass to tpriProc::shutdownMgr(..) function
Added tpriLiteralStr(..) function for processing literal character sequences from strings
Fixed tpriStringToChar(..) to correctly check for valid passed buffer size
Changed calling format of HmiShare functions to pass-by-value rather than pass-by-reference
Added GetFiles(..) function to TPRI.DataDict assembly to expose data dictionary files
Made various changes to variable compare function library (cmpVar):
Added parseCmp(..) function to parse comparison string
Added string comparison functions
Changed comparison defines from TRIGVAR_XX to CMPVAR_XX
Made various changes to variable conversion function library (cvtVar):
Added support for unsigned __int64 variable types
Added functions for conversion between signed and unsigned integers of the same size
Added fmtVar(..) function for printing variables of a specified type
Added variable operator function library (oprVar)
Added tpriVop class for parsing and processing arbitrary variable operations
Added rules processing system (tpriRpsXXX) classes and functionality
Added TPRI.RpsHmi assembly for rules processing system HMI functionality
Updated documentation for rules processing system
Added TSECURITY_MODIFYRPSRULE security mask to TPRI.SecurityDef HMI library class
Added checks to timestamp structure operator functions to avoid divide-by-zero exceptions
Added float and double multiply operator functions to timestamp structure
Fixed parsing of AllowBadDDComVars flag from sys.ini file during initialization
Fixed both tpriDataSetInfo.ocx control and TPRI.DataSetInfo.dll assembly so that axis settings are properly parsed from dataset files
Updated workstation configuration instructions on
NtRtHmiSetup.aspx
web pageMoved LogMsg queue definition parameters from s_LOGMSGCOM structure into new s_LogMsgInfo substructure
Added tpriLogMsg::getLogMsgInfo(..) function to retrieve info about LogMsg commons
Added non-static functions to tpriLogMsg class so it can be used as base class for classes requiring internal logging and message storage functionality
Added LogMsg list popup menu in main NtRtMgr application to allow user to easily view current LogMsg queue disk file or explore log file directory
Added tpriNtRtApp.lib library for applications requiring access to subset of tpriNtRt.lib functions without requiring TSENTRY running in background
Added LogMsg.inl file to standard distribution to provide dummy LogMsg functions for use by applications referencing tpriNtRtApp.lib
Added optional parameter to DumpHex(..) to optionally compress output for repeated bytes
Fixed binary search of tpriGsmDDCom structure types to correctly set upper bounds of search
Modified tpriTrend::reqTrendVar(..) function so that the buffer sizes are not decreased when replacing an existing trend variable that is not forced to the passed trend parameters
Made various fixes to tpriTrendTrig class (affecting TrendTrig process):
Fixed saving of trigger list to sysTrend.ini file on system shutdown so blank lines aren’t inserted between entries
Fixed restore of trigger list on system restart so that all triggers are loaded
Added checks for errors opening temporary trigger data files to prevent process crash
Changed InstallIISCustomFiles.cmd script so that an existing web.config file is not overwritten
Upgrade Instructions:
Before installing, delete all existing files and subdirectories from tpriNtRt\wwwroot and application wwwroot shares
Change all screen links to use the .aspx extension instead of .asp
Unregister obsolete file:
regsvr32 /u %SYSTEMROOT%\system32\TPRI.Cryptcom.dll
Delete obsolete files from
%SYSTEMROOT%\system32\: TPRI.Cryptcom.dll, TPRI.ADSecurity.dll, TPRI.ADSecurity.tlb, and Interop.ADSecurity.dll
If HMI security is enabled:
Run latest TSECURITY installer
Modify the web.config file in the application wwwroot directory to set the AppName key as the system name (typically this matches the name of the virtual web share)
Use the ASCF editor program included in the TSECURITY package to create an ASCF file for the TSENTRY HMI and configure security as desired (see TSECURITY documentation for more info)
Use the ASCF editor program to create an ASCF file for the application screens and configure security as desired
Upgrade the
%TSENTRY_HMI_PIF%\tpriScreens.ini
file to the newest template in\tpriNtRt\Apps\tpriNtRtAdmin\template\
; instructions for each key, new or old, in the file are contained in the comments of the fileRepublish all screens with the new screen template using tpriPublisher
Review any flat htm screens (e.g. menu pages) files to verify desired named sections match corresponding named sections in specified screen templates
Changes:
Fixed tpriPublisher command line processing to print instructions if no valid options are supplied
Changed tpriNtRtEx.dll to use RTX timers if running under RTX, not just if running under RTSS
Fixed cleanup of existing Win32 timers so that changing process rep rate properly works
Fixed buffering of trend variables to disk to prevent overflows under rare circumstances
Fixed trend server to prevent long delays and high cpu utilization processing variables that have failed to properly buffer values to disk
Fixed exception during trend graph initialization for backwards playback under conditions where data returned for different variables have very different timestamps
Fixed color of left cursor in TPRI.TrendCtrl (and TrendX) to match background of values
Fixed TPRI.TrendCtrl to properly format all internationalized dates and times
Moved calcSigDigs(..) function from TPRI.TrendCom object to TPRI.TrendDef module
Fixed tpriSvrConn library to prevent ALT-F4 closures when user is not allowed to close window
Changed format of NtRtCmd/LogMsg files generated by NtRtMgr screen to support empty strings
Changed tpriProcMgr class to parse new NtRtCmd/LogMsg file format
Made various changes/fixes to TPRI.BaseControl:
Added ActiveMode property to allow objects to be ignored by active processing
Added IsInitialized() and OnInitialized() methods to indicate when object is initialized
Added call to SetDisconnected() in OnInitialized() for proper display upon initialization
Changed TPRI.OpcMgr to use ActiveMode property to decide which objects to manage
Changed TPRI.DataDict and TPRI.TriggerEd to use .txt extension for data dictionary initialization filenames and configured default value attributes for object properties
Changed ExportDataDict.cmd script to export data dictionary files with .txt extension
Comment out commands in ExportDataDict.cmd script to copy data dictionary files to application wwwroot directory
Made various changes/fixes to tpriPublisher:
Fixed crash when searching for group directory that does not exist
Fixed bug preventing proper publishing of VB.6-style screens
Changed /bin/ to /tbin/ for default subdirectory in web root for VB.NET screen DLLs
Added code to support retrieval of .NET screen file versions
Added NtRtConfig.xml to NtRtHmiSetup installed files to speed screen download process
Made various changes/fixes to .NET screen htm template:
Moved window_onLoad procedure to tpriCtrlInclude named section to allow easier removal of security code on screens that should not be secured
Added link reference to
NtRtConfig.xml
config file to speed screen download processReplaced TSENTRY version number in screen title with screen version number
Changed /bin/ to /tbin/ for subdirectory in web share for VB.NET screen DLLs
Removed login requirement from NtRtMenu and NtRtHmiSetup screens
Fixed TPRI.DataSetInfo to properly save/restore files on internationalized systems
Made various changes/fixes to TPRI.TriggerEd:
Fixed to properly save/restore files on internationalized systems
Added additional validation of variable names to prevent file parsing errors
Modified CreateUser.vb script to check for existing account instead of deleting old
Modified CheckValidation.inc script to display useful message when passing through security using an unauthenticated account
Added savePersistByList(..) and restorePersistByList(..) functions to tpriGsmDDCom class
Made various fixes to variable persistence functions in tpriGsmDDCom class
Fixed tpriTrendCtrl ActiveX object to properly format international dates and times
Fixed tpriTrendCtrl to reference correct web locations and names for data dictionary files
Built new tpriStdControls.cab file to distribute tpriTrendCtrl fixes
Add tpriStringToChar(..) .NET function to tpriNtRt.lib library
Add tpriUtilNet.h header file to distribution for .NET utility function prototypes
Fixed NtRtMgr dialog object to reduce flicker in other applications when updating LogMsgs
Upgrade Instructions:
Delete \bin\ subdirectories from all wwwroot shares
Delete gsmStruct.ini and gsmVars.ini files from \pif\ subdirectories in all wwwroot shares
For each application screen project:
In Solution Explorer, highlight project, right-click, and choose Properties
Choose Common Properties→Reference Path
For each reference path pointing to an
*\wwwroot\bin\
subdirectory, highlight the entry, change the Folder to refer to*\wwwroot\tbin\
('tbin' instead of 'bin'), and click the Update buttonClick OK
Rebuild project
Delete all application screen *.htm & *.asp files and re-publish using tpriPublisher
Changes:
TSENTRY version numbers changed to x.xx.xx format
Fixed TPRI.TrendCtrl to properly track cursor values
Fixed tpriABPlc connection logic to return connect successful on WSAEISCONN
Fixed refresh of file name display as installation is being executed
Minor cosmetic fixes to installer
Changed TPRI.TriggerEd to use TPRI.DDVarSelectArray class rather than internal private class
Modify various scripts to run without prompting for user input
Fixed credential conflict problem in TPRI.ADSecurity.dll when executing SetSecurityLevel method for a domain account other than APMSDG account (in mfGetSecurityLevelOther)
Added command line version of tpriPublisher (tpriPublisher.com)
Modified scripts in NtRtHmiSetup to check for .NET framework installed
Changes:
Modified ExportDataDict.cmd script to use fully qualified instead of relative paths
Modified ExportDataDict.cmd script to print description of operations
Modified data dictionary project template to remove description of Post-Build event
Made various changes/fixes to InstallIISComponents.cmd:
Fixed to make virtual directories Tsentry and TsentryHelp on website “1” to eliminate problem finding website on foreign language Windows installs
Changed script to use local versions of mkwebdir.vbs and adsutil.vbs
Fixed to ensure TPRI.CryptCom.dll has appropriate security rights for tpriHmi user even after reboot
Moved contents of InstallIISCustom.cmd into two separate scripts InstallIISCustomFiles.cmd and InstallIISCustomSite.cmd to facilitate manual execution of scripts on target systems
Added user callable procedure TsentryConfig.cmd that will re-configure Tsentry after a change in the TSENTRY_SYSNAME variable
Fixed all issues installing TSENTRY on an arbitrary drive instead of always on the D: drive
Made various changes/fixes to TSENTRY installer package:
Upgraded Astrum installer to v2.02
Added option to copy required screen updates (Login, Probe, TrendX, NtRtMgr,...) to application virtual directory
Added mkwebdir.vbs and adsutil.vbs scripts to installed procedures
Fixed CreateShares.cmd to ensure read/write/change access rights properly set for user tpriHmi on shares DataSet, NtRtCmd, and Trigger
Fixed memory leak cleaning up internal variables in tpriTrendSrc class
Added error detection and handling to tpriConnSock class to prevent invalid memory access
Fixed tpriTrend library to restrict a request for a dynamic variable if a previous request for that variable has yet to be serviced
Fixed tpriTrend library to properly destroy a requested variable that hasn’t yet been serviced
Modified tpriTrendMgr library to more aggressively clean dead/unused trend variables as trend variable resources become more scarce
Fixed tpriLogMsg class to make sure file is open before logging lost messages to the disk
Fixed infinite loop in tpriHtm class handling pages with fields exceeding the size of internal buffer
Fixed logic in GsmPifBld for handling embedded parentheses in #define math
Modified WtClient.dll to optimize speed while reading items from local cache
Made various changes/fixes to tpriPublisher app:
Added warnings if user tries to Rebuild a VB.NET or flat htm screen
Added message if user tries to Rebuild or Publish without selecting any screens
Fixed infinite loop if error reading group info for first group in section
Fixed NtRtMgr screen so that the process list does not flicker while attempting to connect to host
Made various changes/fixes to TrendX screen:
Added border to trend graph on TrendX screen
Fixed TrendX to properly handle TrendPlayback object events
Made various changes/fixes to TPRI.BaseControl:
Added Sender parameter to OnActiveUpd(..) event
Changed internal variable mgrIdx as Integer to pMgr as Object to provide direct reference to manager object
Changed 1st parameter of InitActiveVars(..) function from manager index to manager reference
Added checks to InitActiveVars(..) function for consistency between lists
Added AddActiveVar(..) subroutine
Modified all OPC-enabled classes to use BaseControl.AddActiveVar(..) routine
Made various changes/fixes to TPRI.BaseScreen:
Fixed function ReadCookie(..) to correctly parse last cookie in string
Changed name of GoToURL(..) event to OnLinkTo(..)
Made various changes/fixes to TPRI.TrendCtrl:
Renamed TrendInfoObject property to TrendInfo
Fixed invalidation of display following property changes at runtime
Fixed runtime object initialization to properly use TrendInfo object set at design time
Added InitDefaultTrendGraph(..) function to provide default trend graph initialization
Modified to support trend cursors w/out requirement of code on screen
Modified value displays to display more significant digits
Made various changes/fixes to TPRI.TrendCom:
Modified to store TrendCtrl objects internally by reference instead of by parent index
Added exception handling to various functions to prevent crashes while reloading screens
Made various changes/fixes to TPRI.ADSecurity:
Improved error handling
Added code to clean up references to objects to avoid user credential collision
Made various changes/fixes to TPRI.TrendPlayback:
Fixed conversion of internal DateTime to time used by trending system
Fixed background and text color painting on initialization
Fixed detection of changes in start/end times so checkboxes are correctly grayed
Changed type of property playbackMode changed from short to integer
Properly invalidate display following runtime property changes
Made various changes/fixes to TPRI.LogMsg:
Changed various update functions from public to private
Modified to use BaseControl manager object reference instead of index
Enhanced detection of complete log message received to prevent updates from sticking
Made various changes/fixes to TPRI.DataSetInfo:
Changed various public methods parameters from ByRef to ByVal
Changed SaveDataSet(..)to create unique temporary file name instead of fixed file name
Changed file read/write routines to use english color strings in dataset files
Changed various TPRI.CoverageBar public methods parameters from ByRef to ByVal
Made various changes/fixes to TPRI.DataDict:
Added error detection and recovery during initialization file download
Changed default pif files to
/tsentry/pif/*.ini
Modified all other objects using TPRI.DataDict to explicitly use pif files
/tsentry/pif/*.ini
Made various changes/fixes to TPRI.TextBox:
Fixed formatting of values using .NET-style formatting strings
Fixed logic when user presses escape key in a modified TextBox so that correct latest value is displayed and object is correctly marked as unchanged
Added TPRI.TextBoxArray class
Made various changes/fixes to TPRI.Shape:
Fixed painting of borders of width 1
Added TPRI.ShapeArray class
Made various changes/fixes to TPRI.ActiveShape:
Fixed refresh code to properly center label inside object
Fixed mouse click event handle to catch clicks outside internal textbox
Fixed invalidation of display following property changes at runtime
Fixed painting of borders of width 1
Changed default background solid fill color from Transparent to Gray
Changed default BoundIncludeEquals to True
Made various changes/fixes to TPRI.ComboBox:
Fixed detection of user edits/changes selection to correctly modify background color
Fixed parsing of last value/description from tValueList property
Added code to allow property tValueList to be set to Nothing
Fixed invalidation of display following property changes at runtime
Added TPRI.ComboBoxArray class
Made various changes/fixes to TPRI.ToggleButton:
Fixed invalidation of display following property changes at runtime
Modified to use BaseControl manager object reference instead of index
Added TPRI.ToggleButtonArray class
Made various changes/fixes to TPRI.DDVarSelect:
Fixed invalidation of display following property changes at runtime
Added TPRI. DDVarSelect Array class
Increased TPRI.OpcCom main loop timer interval from 1 ms to 20 ms to reduce CPU overhead
Made various changes/fixes to TPRI.OpcMgr:
Modified to store BaseControls internally by reference instead of by parent index
Fixed to ignore exceptions during checks for new messages and updates from OpcCom
Increased main loop timer interval from 1 ms to 20 ms to reduce CPU overhead
Decreased connection reattempt period while waiting for previous connection to close
Removed getRandomId(..) public method
Made various changes/fixes to TPRI.BarGraph:
Fixed update of displayed back color when changing tBackColor
Fixed positioning and sizing of bar zone numbers
Modified property update routines so bar offsets and percents can be set in any order
Forced repainting of bars immediately following any bar graph property change
Upgrade Instructions:
Review above change descriptions for all HMI libraries and make corresponding required changes to screen code (any problems will be listed as errors when HMI screens are rebuilt)
Reinstall NtRtHmiSetup package from the NtRtHmiSetup.asp page on all HMI clients
Changes:
Fixed TPRI.TrendCtrl and TPRI.ActiveShape objects to correctly persist properties on web pages
Modified TPRI.ActiveShape to move Font property into ActiveShapeSetup class
Added ActiveShapeArray class to TPRI.ActiveShape.dll
Fixed logic in ActiveShape to properly detect value updates following an opc reconnect
Added CmdButtonArray class to TPRI.CmdButton.dll
Changed TPRI.CmdButton Click event handler parameters to include Sender and EventArgs
Improved error handling and logging in TPRI.OpcMgr object
Changed name of BaseScreen.Link(..) function to BaseScreen.LinkTo(..)
Added BaseScreen.LinkToMenu() and BaseScreen.LinkBack() functions for screen navigation
Removed tURL property from TPRI.ActiveShape object
Modified various timestamp class functions to prevent overflows and negative timestamps
Modified NtRtMgr process so that NtRtCmd files are only processed at most twice per second
Modified tpriNtRtAdmin task to allow underscores in system IDs, task names, and screen names
Added display and check for system environment variables to tpriNtRtAdmin task
Fixed buffer overrun in GsmPifBld process causing #defines to be incorrectly parsed
Fixed logic in GsmPifBld process for matching #defines that contain underscore characters
Modified InstallIISComponents.cmd script to grant tpriHmi user access to TPRI.CryptCom.dll
Moved inline functions from timestamp.h into timestamp.inl
Updated TSENTRY class overheads and TSENTRY exercises documents with latest information
Updated TSENTRY documentation to reflect above changes and various .NET changes
Changes:
Modified tpriNtRtAdmin task to allow creating a new system into a directory structure that already exists (as that created by the Tsentry installer)
Modified tpriEnvStr(..) function to assume default buffer size if third parameter is not passed
Fixed ValidateUser.asp and PwdChange.asp scripts to correctly reference TPRI.ADSecurity object
Fixed TPRI.TriggerStat object to handle conditions where status file does not exist
Fixed tpriLogMsg class so that disk file is only opened when messages need to be written
Modified NtRtMgr process so that messages are only logged to disk at most twice per second
Decreased width of status column of process listbox display on NtRtMgr so scroll bars are not displayed by default
Fixed validation errors in NtRtMgr process options editor when various waits and delays are set less than zero
Fixed virtual web directory creation script to properly setup tpriHmi user password
Fixed virtual web directory creation script to properly set application friendly name
Fixed installation script to ensure \pif\ subdirectories exist in various \wwwroot\ directories
Fixed TPRI.CryptCom.dll version number to match TSENTRY version number
Changes:
Upgraded all TSENTRY standard HMI controls and screens to Visual Studio .NET 2003
Removed necessity for TSENTRY standard .NET screens to run in virtual directory ‘std’
Modified all login and security scripts
Modified tpriPublisher screen template files
Modified provided names for data dictionary files in TPRI.DataDict, TPRI.TrendCtrl, and TPRI.TriggerEd
Updated tpriPublisher to support .NET HMI objects and screens
Added functionality to create container web pages and link to appropriate DLLs
Added functionality to support publishing of flat .htm and .asp pages
Modified tags in *.htm.template to replace ‘ocxXXX’ with ‘screenXXX’
Fixed bug in tpriHtm class causing incorrect publishing of .asp pages via tpriPublisher
Updated tpriNtRtAdmin to support .NET HMI objects and screens
Created templates for VB.NET screens
Modified system creation process to create new directory structures for .NET screens
Modified system creation process to build Screens.sln solution
Updated tpriADSecurity.dll to .NET and renamed as TPRI.ADSecurity.dll
Fixed bug in TPRI.ADSecurity.dll for handling users whose passwords never expire
Updated tpriCyptCom.dll to .NET and renamed as TPRI.Cryptcom.dll
Changed name of virtual web directory for standard VB.6 distributions from ‘std’ to ‘tsentry’
Modified installation scripts
Modified tpriPublisher screen template files and cab template files
Changed VC.6 tpriDataDict control to reference correct virtual directory
Rebuilt VC.6 tpriDataDict control to incorporate changes made to data dictionary library in v2.29 but which were mistakenly not included in the tpriDataDict control released with v3.01
Changed NtRtMenu screen from VB-based screen to pure .asp page
Added new NtRtHmiSetup page to provide links for HMI client setup
Added links on NtRtMenu screen to NtRtHmiSetup page and TsentryHelp documentation
Modified TPRI.DataDict control to pre-download data dictionary upon initialization
Updated WtOpcSvr.dll and WtClient.dll source code to Visual Studio.NET 2003
Added GetSvrShutdown() exported function to WtClient.dll
Fixed tpriTrend library to use default buffer sizes if trend global common is not mapped as in applications like tpriTrigText
Removed $(RtxSdkDir)\include from include path for Debug and Release versions of tpriNtRtAdmin task project file template
Updated tpriTrigText to convert multiple files in a single batch
Fixed NtRtMgr screen to immediately update active process info when process goes inactive
Modify tpriProc and tpriProcMgr classes to put an RTSS task into error state if attempt is made to activate task w/out RTSS support
Fixed NtRtMgr process to allow changing of process options for processes with Start Order >= 50
Fixed tpriGsmDDCom table searching functions to correctly compare passed names in cases where one complete element name matches the beginning of another (e.g. MYCOM and MYCOM1)
Increased maximum allowed structure definitions in data dictionary from 5000 to 7500
Modified LogMsg text logged when internal clocks drift too far from wall clock
Fixed tpriProc::getWallTime(..) function to ensure reported time never runs backwards
Modified calling parameters to tpriEnvStr(..) to force caller to pass size of optional buffer
Added tpriRdcSer serial driver class to tpriRdc library
Added tpriRdcTcp::listen(..) TCP/IP server function to library
Document list of “C” constructs not supported by GsmPifBld and data dictionary
Merged TsentryVersion.doc with TsentryUpgrade.doc and converted to TsentryVersion.rtf
Modified installer to display TsentryReadme.rtf as readme during installation
Fixed tpriPublisher and tpriNtRtAdmin tasks to display correct version number in help dialog
Added optional third parameter to tpriEnvStr(..) function to specify buffer size
Upgrade Instructions:
Erase all existing post-build instructions in project settings for sysDataDictionary at:
sysDataDictionary → Properties → Build Events → Post-Build Event → Command Line
and replace with the following command (or alternative batch procedure for systems with non-standard file naming conventions):
..\..\..\tpriNtRt\procs\ExportDataDict.cmd
Remove sysDataDictionary from list of project included in build for all Solution Configurations:
Build → Configuration Manager → Active Solution Configuration = Debug
Remove check in Build column for sysDataDictionary
Repeat for Active Solution Configuration = Release, RTSS Debug, and RTSS Release
This will prevent Visual studio from examining the data dictionary project while looking for projects that are out of date before starting a debugging session. However, the data dictionary will need to be manually rebuilt when header files are changed.
Modify any custom tpriPublisher htm templates to replace “ocxXXX” tags with “screenXXX”
Changes:
Included changes for v2.29 that were excluded from v3.00
Modified tpriLogMsg control to display date along with time
Fixed formatting of time difference in tpriTrendCtrl to support international use of commas instead of decimal points for representing fractional seconds
Fixed compiler options for RTSS versions of tpriPio and tpriRdc libraries
Updated to support VenturCom RT-TCP/IP v2.0
Removed RtxTcpIp.lib from TSENTRY distribution libraries
Changed all tpriPio.rtss.lib classes using sockets to call WSAStartup(..) for RTX TCP/IP v2
Removed tpriGePlc setsockopt() call to turn the IPPROTO_TCP timestamp off since this is not supported in RTX TCP/IP v2
Fixed TCP/IP connection routines in A/B PLC, A/B ControlLogix, GE PLC, and Modnet PLC drivers to use select(..) calls for detecting success of non-blocking connection attempts
Modified A/B ControlLogix driver to add readClCip(..) and writClCip(..) functions
Added detailed error messages during connects, reads, writes, and disconnects to A/B ControlLogix driver
Eliminated long delays when authenticating foreign domains for HMI security
Fixed tpriTriggerStat control to map share directory before attempting to read status file
Modified tpriHmi.bas module to attempt to connect with password tpri#1Hmi before trying old password tpriHmi
Rebuilt tpriDataSetInfo, tpriTriggerSrc, tpriTriggerEd, and tpriTriggerStat to include above change to tpriHmi.bas module
Fixed HMI security to properly authenticate local machine accounts and user groups
Modified GsmOpcRSvr to eliminate requirements for MFC and MSVC runtime DLLs
Modified tpriCryptCl.dll to eliminate requirement for ATL runtime DLLs
Added checks to tpriPublisher to verify all constituent files exist before building an included cab
Added delay when automatically restarting TSENTRY to allow O/S to clean up killed processes
Added numerous checks to tpriGsmDDCom functions to verify global common is already mapped
Removed chapter and section numbers from TSENTRY manual
Made copious corrections to TSENTRY manual to reflect latest installation procedures
Upgrade Instructions:
Change password for tpriHmi user to tpri#1Hmi
Edit
\locNtRt\sys\pif\tpriScreens.ini
file to move 'Pwd Expiration Notice' key from the [Domain Setup] section into the [Setup] sectionCopy the following files from the
tpriNtRt\wwwroot\
distribution to your application\locNtRt\sys\screens\wwwroot\
directory:global.asa
Logout.asp
Login.asa
PwdChange.asp
ValidateUser.asp
include\*
Delete all application screen *.htm & *.asp files and re-publish using tpriPublisher
Changes:
Note: v2.29 was release after v3.00, so the changes listed for v2.29 were not included in v3.00
Initial release under Visual Studio .Net 2003
Updated tpriNtRtAdmin task and templates to support Visual.Net 2003
Fixed bug in tpriNtRtAdmin task failing to properly create tpriScreens.ini file from template when generating a new system
Updated to support VenturCom RTX 5.5 (RT-TCP/IP not supported)
Fixed calculation of timer interval percent for processes with non-zero timer delay but with rep rate set to zero
Added support for ProEssentials graphs v5, including cab files and tpriPublisher templates
Upgraded TrendX and ProbeV to use ProEssentials graphs v5
Increased max updates per request on TrendX to 600 to support 1 ms trending
Fixed tpriActiveShape to properly format text via the tFormat property
Added tpriProc::isValidProc(..) function to check for valid application names
Added application-defined shutdown options to NtRtMgr dialog
Optimized portions of GsmPifBldr to speed data dictionary builds for very large systems
Fixed tpriTrend::getDataValidPtr(..) to check return value before setting bit index
Modified NtRtMgr task to display date along with time
Fixed tpriTrendCtrl control to support trending NaN values
Add log of description of failure in case of error mapping shared memory
Modified TrendGsm and TrendTrig processes to set process into error state if failure to map shared memory occurs and TrendMgr task is not up and running
Upgrade Instructions:
Open existing tasks development workspace in Visual.Net 2003 and convert all existing project configurations to Visual Studio .Net 2003
Verify that project settings for RTSS versions of all processes have the following Configuration Properties set in the Project Properties dialog:
C/C++ → Code Generation → Basic Runtime Checks = Default
C/C++ → Code Generation → Buffer Security Check = No
C/C++ → Command Line = /QIfist
Linker → General → Enable Incremental Linking = No
(/INCREMENTAL:NO)
Linker → Input → Additional Dependencies must have $(NoInherit) as the first item
Linker → Input → Ignore Specific Libraries = libc; libcd; libcmt; libcmtd
Linker → Advanced → Target Machine = MachineX86 (/MACHINE:X86)
Linker → Command Line =
/DRIVER /SUBSYSTEM:NATIVE /align:0x20
Upgrade any existing screens using ProEssentials v3 to use v5 controls. Alternatively, if v3 is still desired, verify that all screen sections in
%SYSTEMROOT%\system32\tpriNtRtAdmin.ini
file have a includeCabs key value that includes pe3, such as:
includeCabs=tpriStdControls,pe3
Copy the [AppShutdownParams] section from the latest template file
\tpriNtRt\apps\tpriNtRtAdmin\template\sys.ini
and modify as desired (in most cases, this section will be left empty except for the comments)
Changes:
Added GrantThreadAccessToConsole(..) function for to allow threads to access the console desktop while running NtRtSvc service
Modified tpriSvrConn library to call GrantThreadAccessToConsole(..) function for all threads to prevent TrendSrv and GsmExpSvr crashes when running NtRtSvc
Fixed all tpriSvrConn, TrendSrv, and GsmExpSvr derived classes to call default constructors
Added event logging to NtRtSvc for errors and start/stop
Added checks for running out of data dictionary memory
Increased scratch memory size for data dictionary
Changes:
Fix tpriProcMgr class to correctly delay starting a process with startTime > 0
Increased maximum number of processes from 50 to 100
Optimized tpriDataSetInfo control to parse data sets more quickly
Fixed tpriTrendCom control to handle sporadic errors when server disconnects unexpectedly
Added automatic system restart option to NtRtMgr
Fixed tpriTriggerEd control to handle errors saving trigger files
Fixed tpriTriggerEd control to always read and write fully qualified variable names
Added TriggerStat.txt status file output from historical trend system
Created tpriTriggerStat control for displaying trend trigger status files
Added tpriTriggerStat control to TriggerEd screen to display trigger status files
Added documentation for setting up Windows XP clients to connect to OPC
Fixed tpriDataSetInfo control to use correct
%APPDATA%
define for locating local disk filesFixed tpriDataSetInfo and tpriTriggerEd controls to handle errors writing files to controller
Fixed tpriSecurity.bas module to support various internationalized time formats
Fixed Menu button on NtRtProcEd screen to correctly link to previous menu
Changed return value from tpriCleip::Disconnect(..) to indicate if FwdClose operation failed
Corrected string formatting of time in tpriTrend.bas module to prevent rounding fractional seconds up over the one second boundary
Added timestamp::to1601(..) function to convert timestamps to FILETIME values
Added function tpriCleanDir() to tpriNtRt library to delete all files in a directory older than a specified time
Added options to sysLogs.ini file to specify maximum number of days to keep log files on disk
Modified sysLogs.template.ini file to add default values for above option
Added ‘/q’ option to installSystem32-XXX.bat procedures to run without user intervention
Fixed bug in trending system causing application crashes when using > 25% of trend memory
Fixed bug in NtRtProcEd screen failing to reset debug level after submitting changes
Added data validation for priority and rep rate on NtRtProcEd screen
Added feedback for submit button on NtRtProcEd screen
Added support to WtOpcSvr.dll for registration with a NULL string provided for executable path
Added /regclient support to GsmOpcSvr/GsmOpcRSvr
Changed tpriStdControls.cab to install GsmOpcRSvr using /regclient parameter
Changed tpriGsmDDCom initialization to check for sysVars.ini file errors after reading entire table and sorting for fast searches
Rebuilt tpriDataDict control to reflect changes to initialization of tpriGsmDDCom class
Fixed bug in tpriGsmDDCom::getVarType(..) occasioning incorrectly returning VT_ARRAY
Added optional parameter to tpriGsmDDCom::getVarTypeName(..) to request the structure name instead of the base type name
Added getVarArrDimCnt(..) and getVarArrDim(..) functions to tpriGsmDDCom class
Added calls to tpriProcMgr::updTime(..) during NtRtMgr initialization so LogMsg’s display the correct time following long operations
Modified NtRtSvc to parse environment variable strings from command line arguments
Added ability from HMI security to change user password (if using Active Directory)
Added support for incomplete tpriScreens.ini file as long as security is disabled
Modified tpriADSecurity.dll to reduce window for credential collision errors
Upgrade Instructions:
Update existing
\sys\pif\sysLogs.ini
file to specify max number of days to keep log files similar to template\tpriNtRt\apps\tpriNtRtAdmin\template\sysLogs.ini
fileDelete all temporary files in
\locNtRt\sys\temp\*
Integrate the existing
\sys\pif\tpriScreens.ini
file with the latest template file\tpriNtRt\apps\tpriNtRtAdmin\template\tpriScreens.ini.template
Add “Pwd Expiration Notice=14” key/value pair to the [Domain Setup] section
Replace existing comments in header section with latest comments from template file
Copy the following files from the
tpriNtRt\wwwroot\
distribution to your application\locNtRt\sys\screens\wwwroot\
directory:global.asa
Logout.asp
Login.asa
PwdChange.asp
ValidateUser.asp
include\*
Delete all application screen *.htm & *.asp files and re-publish using tpriPublisher
Changes:
Added trending cursor differences column to tpriTrendCtrl
Changed tpriProc::getWallTime(..) function to return approximate UTC wall time as last value set in global common by NtRtMgr
Added tpriProc::getUndriftedClockTime(..) function to return UTC wall time estimated from real-time clock with drifting effects taken into account
Restored Probe.ocx CLSID to that used in versions <= v2.22
Added support for user-defined HMI security and timeout groups
Changed security level variable from 2-byte integer to a 4-byte integer
Changed use of security level from an incremental number to a bitmask for various different rights
Implemented new security rights on all TSENTRY screens
Updated tpriScreens.htm.template to call checkValidation(..) on screen startup
Updated A/B Control Logix PLC driver to support additional variable types and forward close
Added tpriSvrApp::getPortNum(..) function to return current port number
Corrected tpriConnThread::AttachSocket(..) to properly convert port numbers from TCP/IP network byte order to host byte order
Modified NtRtProcEd screen to edit and write to the procs.ini file all configurable parameters also available through the console NtRtMgr
Added documentation for NtRtProcEd screen
Changed TrendX to force unpause when changing trend source
Removed pre-fetch from tpriLogMsg control to eliminate improper message display
Fixed WtClient.dll to prevent crashes during repeated disconnects/reconnects
Add code signing tools to tpriPublisher distribution
Removed various customer-specific documentation from Tsentry documentation
Upgrade Instructions:
Integrate the latest
\tpriNtRt\apps\tpriNtRtAdmin\template\tpriScreens.ini.template
file with the existing\sys\pif\tpriScreens.ini
fileCopy the section [Domain Setup] and all subkeys to the existing file
Copy the section [Allowed Domains] to the existing file
Copy the section [Security Groups] to the existing file
If HMI security is turned on, fill in the appropriate keys in these sections as instructed in the Installation chapter of the TSENTRY documentation
Change ‘Default Security’ key to appropriate bitmask value (no security = 0x7FFFFFFF)
Restart IIS by running ‘iisreset’ from the command line
Copy the following files from the
tpriNtRt\wwwroot\
distribution to your application\locNtRt\sys\screens\wwwroot\
directory:global.asa
Logout.asp
Login.asa
ValidateUser.asp
include\*
Delete all application screen *.htm & *.asp files and re-publish using tpriPublisher
Changes:
Removed tpriProc::time(..) and tpriProc::ftime(..) functions
Changed tpriProc::lcltime(..) to tpriProc::localtime(..)
Added tpriProc::getWallTime(..) functions to retrieve current UTC wall time
Modified Win32 internals of tpriNtRtEx.dll function tpriGetClockTime(..) to use performance counters instead of ftime(..) function
Corrected tpriTrend RTX timers to account for drift in RTX clock vs. wall clock
Added timestamp::from1601(..) function to convert FILETIME times to timestamps
Changed trending system to make the number of trend sources, number of trend variables, and overall size of global common configurable via sysTrend.ini file
Updated trend system documentation to reflect ini file additions
Modified sysTrend.ini.template file to include new parameters to support above changes
Changed TrendMgr to provide warnings and suggestions when near capacity of internal buffers
Optimized tpriLogMsg class to reduce overhead involved in opening and closing files
Implemented domain-based security on TSENTRY HMI web pages
Added security modifications to tpriNtRtAdmin screen templates
Changed location of distributed tpriNtRtEx.dll to accommodate additional dll’s
Added ‘installSystem32-XXX’ batch files to automatically install required system32 components
Fixed tpriPublisher to support new client encryption/decryption dll
Modified tpriPublisher to add ‘Cancel’ button for most errors
Updated tpriNtRtAdmin to create tpriScreens.ini from template when generating a new system
Updated tpriNtRtAdmin to instruct use of ‘installSystem32-XXX’ batch files
Added Insert/Delete form to tpriTrendCtrl to allow insertion/deletion of multiple rows and special array insertion
Added button to tpriTrendCtrl to sort variables according to the axis to which they are assigned
Added tpriProc functions to set process priority and rep rate
Modified NtRtMgr to allow modification of all configurable process options and option to write parameters back to procs.ini file
Added functionality to ProbeA and ProbeV to view arrays larger than 128 elements
Added button to reset trending cursors to outside boundaries of current view
Fixed tpriDataDict control to remove requirement for additional undistributed msvcp60.dll
Upgrade Instructions:
Clean out \tpriNtRt\bin\ directory before installing new
\tpriNtRt\
directoryCopy
\tpriNtRt\apps\tpriNtRtAdmin\template\tpriScreens.ini.template
to system pif directory as\sys\pif\tpriScreens.ini
Create system environment variable TSENTRY_HMI_PIF and set its value to the fully qualified directory name of your \sys\pif directory (no trailing backslash)
Modify all application screens to support security
Add module ..\..\..\tpriNtRt\modules\tpriSecurity.bas to screen
Add timer to screen, set its name to tmrSecurity, and set its interval to 10000
Add the following two functions to the screen code
' This event is raised by the timer to periodically check if ' the screen's security mask has timed out Private Sub tmrSecurity_Timer() If (checkSecurityTimeout) Then ' timeout has occurred, so reset screen controls Call secureScreen(getSecurityLevel) End If End Sub ' Lock down the controls that should be locked based on the security mask Private Sub secureScreen(ByVal securityLevel As Long) ' lock down controls as desired End Sub
Fill in internals of the second function above, secureScreen(..), to enable or disable screen components based on the passed security level
Add following code to the top of startComm(..)
' initialize security Call initSecurity(window.location.hostname) Call secureScreen(getSecurityLevel)
Copy the following files from the
tpriNtRt\wwwroot\
distribution to your application\locNtRt\sys\screens\wwwroot\
directory:global.asa
Logout.asp
Login.asa
ValidateUser.asp
include\*
Delete all application screen *.htm & *.asp files and re-publish using tpriPublisher
Changes:
Fixed tpriVmic improper variable indexing for checking overlaps
Fixed Allen-Bradley handler to properly read and write large buffers containing short integer data types
Fixed benign buffer error in NtRtMgr that caused message on startup under Visual.NET
Fixed tpriIniFile class to prevent possible infinite loops when searching for key/value pairs
Added additional error messages to tpriPublisher when specifying non-existent htm templates
Fixed bug in GsmPifBld processing #defines that equate to negative values
Fixed bug in GsmPifBld mistaking bad variable definitions for function definitions
Added property to tpriDataSetInfo control to allow disabling of save/delete buttons
Added ReadWriteCookie.bas VB module
Changes:
Further modifications to tpriSvrConn library to manage multithreaded windows issues
Add variable descriptions as tooltips to Probe/ProbeA/ProbeV pages
Corrected error in binary display of certain numbers in Probe/ProbeA/ProbeV
Fixed tpriGsmDDCom to correctly retrieve min/max/init variants for variable names with undefined indices
Corrected typo in tpriNtRtAdmin.ini.template file
Added additional error messages to tpriPublisher
Added LogMsg to indicate when NtRtMgr is shut down from console
Added tpriVmic support for new PCI-5576 card
Added tpriVmic ini file parameter to automatically write the I/O description table and to set endian swap settings
Added tpriVmic support for bit explode/implode to and from vmic memory
Added bit set and reset write types to tpriVmic driver
Added VmicDrv example driver process to samples
Added TsentryUpgrade.doc document for version upgrade instructions
Changed tpriLogMsg control to pre-fetch LogMsgs to speed updates
Reworked tpriOpcMgr and all opc-enabled controls to migrate control-specific updates back into the controls themselves
Added events to opc-based tpriStdControls to allow screen to translate variable requests
Add environment variable processing for #include files in GsmPifBld process
Corrected data dictionary sorting and variable initialization for generalized indices
Corrected errors in trend trigger subsystem for triggers with zero post-trigger trending times
Fixed tpriTriggerEd control to display an error for bad trending times
Changed tpriCtrl::findParentControls to not accept empty control names, fixing bugs in tpriTrendCtrl, tpriTextBox, and tpriComboBox
Fixed memory leak in tpriOpcCom control
Modified GsmOpcSvr self-registration for Windows XP support
Changed tpriBarGraph control to improve initial update speed
Changed tpriTrendCtrl to display a border on the trend color indicator if the trend color is the same as the tpriTrendCtrl background color
Added sys.ini file parameter ‘AllowBadDDComVars’ to allow system to start even if bad variables exist in sysVars.ini file
Added tpriIniFile::getFileName() function to return current file name, if available
Added tpriIniFile::getSectName() function to return current section name, if available
Added tpriIniFile::findNextSection() function to find the next section, if one exists
Fixed tpriTextBox control to format times correctly
Updated Allen Bradley Plc driver with additional methods for PLC reads and writes
Updated Tsentry Class Overheads to v4
Updated and expanded TsentryExercises
Fixed tpriProcMgr process alive detection to support processes that have terminated but still have process handles open
Removed unnecessary logging from tpriTimer routines
Fixed Clear Error process command from NtRtMgr web page
Added form feed and LogMsg buttons to NtRtMgr web page
Various code-level changes to support Visual.NET
Removed debug level DEBUG from dbgdef.h
Changed maximum opc connections to 100
Added display of number of static and dynamic variables to TrendGsm status line
Added additional time formatting to tpriTextBox controls
Changed tpriDataDict control to recover if vars.ini file contains errors
Upgrade Instructions:
Check for and fix typo in
c:\winnt\system32\tpriNtRtAdmin.ini file
; section name should read [tpriStdControls], not [tpriStdContarols]Create NtRtCmd/LogMsg subdirectory in your \sys\ directory or equivalent
Change all LogMsg calls using debug level DEBUG to some other debug level (e.g. DBDEBUG)
Changes:
Added error messages to NtRtMgr startup
Updated command line help for GsmPifBld
Updated tpriTextBox and tpriComboBox for tooltips and special time formatting
Changed to tpriPublisher to allow user cab files
Improved tpriPublisher error reporting
Added optional parameter to tpriEnvStr function to export modified string
Added process priority to both NtRtMgr displays
Fixed trend display bug pausing/restarting/unpausing and not getting any data
Changed tpriTrendPlayback control to automatically unpause when user pushes reset button and to adjust real-time playback rate as user updates value
Changed tpriTrendCom to not update display if playback mode has changed since last request
Modified tpriSvrConn library to prevent ASSERT errors when creating new connection windows
Updated NtRtScreen.htm.template to provide a more descriptive error if screen fails to load
Upgrade Instructions:
Clean out \tpriNtRt\Docs\ directory before installing new \tpriNtRt\ directory
Copy [tpriStdControls], [vs7], and [pe3] full sections from template configuration file
\tpriNtRt\apps\tpriNtRtAdmin\template\tpriNtRtAdmin.ini.template
into active configuration filec:\winnt\system32\tpriNtRtAdmin.ini
Delete all application screen *.htm & *.asp files and re-publish using tpriPublisher
Changes:
Added error messages to NtRtMgr startup
Fixed error activating/deactivating/etc process names containing .’s from web page
Added error messages if failure processing NtRtMgr web page commands
Added error messages if failure activating/deactivating group from NtRtMgr console
Fixed GsmPifBld bug detecting false end-of-file conditions
Fixed GsmPifBld parsing bug for structs/unions/etc spanning multiple lines
Added optional parameter to tpriGsmDDCom::searchTree(..) to specify searching only variable names or descriptions
Added seconds timer function SetSTimer(..)
Fixed $LIBPATH$ and $INCPATH$ template processing in tpriNtRtAdmin task
Changed tpriDataSetInfo to store files in c:\Documents and Settings\user\Application Data\TPRI
Fixed tpriLogMsg class for 100% cpu utilization when invalid LogMsg directory is specified
Added mutual exclusion in multithreaded sections of tpriConnSvr library to prevent ASSERT
Cleaned up thread shutdown sequence in tpriConnSvr library
Added tpriEnvStr function to translate environment variables
Changed tpriProcMgr to parse environment variables from procs.ini file
Changed tpriIniFile to parse environment variables from file name before opening (Win32 only)
Changed tpriTrendMgr to parse environment variables from trend directories
Changed tpriLogMsg to parse environment variables from LogMsg directories
Change NtRtMgr to parse environment variables from command line and splash image file name
Changed tpriPublisher to parse environment variables from the tpriNtRtAdmin.ini file
Added getKeyValueEnv(..) functions to tpriIniFile class
Fixed tpriIniFile::deleteSection(..) to not destroy the file if the section doesn’t exist
Added tpriModPlc::SetPduMaxIoDataBytes(..) to set max data bytes in a single Ethernet frame
Upgrade Instructions:
Manually fix
$LIBPATH$
directory specifier in link options of any applications created from template with v2.20 version of tpriNtRtAdmin.exeManually fix
$INCPATH$
directory specifier in include directory options of any applications created from template with v2.20 version of tpriNtRtAdmin.exe
Changes:
Added support for include directories to GsmPifBld command line parameters
Modified return type of TstTimer(..) function for backward compatibility
Updated tpriGePlc driver for tpriTimer changes
Fixed process group startup sequence when group contains no processes
Changed variable persistence to avoid processing variables set for no persistence
Fixed getVarInit/Min/Max functions for variable names without fully qualified indices
Changed tpriConnSock to use non-static buffer for TCP/IP receives
Added ini parameter to turn off the option to kill existing processes when starting system
Added LogMsgs when starting a system while one already exists
Added check in NtRtMgr for invalid LogMsg times to display as ‘Unknown’
Fixed VC++ project template to link Win32 Debug and Release processes against user32.lib
Fixed WtOpcSvr.dll to prevent removal of OPC variables on fast disconnect/reconnects
Filled in the holes in 04StandardTasks.doc
Added NtRtProcEd screen to list of standard screens
Updated NtRtMgr screen to support process control via web screen
Added tpriComboBox control to standard controls
Updated tpriOpcMgr to support tpriComboBox control
Add cursors to TrendX displays
Updated documentation for trending system
Added user selectable destination directories for task generation in tpriNtRtAdmin task
Added optional compiler and linker flags to tpriNtRtAdmin task
Added creation of NtRtCmd directories and shares to tpriNtRtAdmin task
Added tpriNtRtVersion identifier to text portion of historical trend files
Added ‘-display’ option to NtRtSvc to print current command line
Added TSENTRY web-based help to standard distribution
Upgrade Instructions:
Make changes to support the updated NtRtMgr screen:
Create NtRtCmd directory under your \sys\ directory or equivalent
Share NtRtCmd directory as NtRtCmd
Create NtRtCmd/Proc subdirectory
Add NtRtCmdPath key/value to [AppParams] section of sys.ini file using
\tpriNtRt\apps\tpriNtRtAdmin\template\sys.ini.template
as as example
Create web share TsentryHelp to
\tpriNtRt\TsentryHelp
directory
Changes:
Additional optimization to tpriActiveShape control
Added additional tpriPci::findPci(..) override function to allow scanning for device ID range
Fixed tpriPci::findPci(..) to properly handle index parameter
Modified DumpHex(..) to add LogMsg queue support
Modified DumpHex(..) to check debug level up front
Added additional DumpHex(..) override functions
Updated AllenBradly ControlLogix driver
Added Modicon PLC driver over TCP/IP network under Win32 only (RTSS not yet supported)
Updated tpriHmi VB module to speed up establishing shared connections
Fixed tpriVmic library to correctly produce variable I/O maps
Added ppLed(..) function to tpriNtRt library
Changes:
Increased maximum number of trends on a screen and variables in a data set from 256 to 768
Added unhandled exception processing to optionally provide process crash information
Added pulse timer to detect when a process becomes non-responsive
Added NtRtMtr task for high-priority process monitor functions
Modified NtRtMgr to allow editing of Trap Crash flags and Pulse Timeout value
Modified sysProcs.ini template file for Trap Crash and Pulse Timeout support
Updated documentation for Trap Crash and Pulse Timeout ini parameters
Added GsmPifBld support for #define statements spanning more than one line
Optimized tpriActiveShape to minimize CPU requirements for updates
Optimized tpriTextBox to minimize CPU requirements for updates
Upgrade Instructions:
Add user32.lib to link libraries for all Win32 Debug and Release project settings
Modify sysProcs.ini file to support new file type using
\tpriNtRt\apps\tpriNtRtAdmin\template\sysProcs.ini.template
as example:Import updated comments in file header from template file
Change ‘Record’ column to ‘Trap Crash’
Add ‘Pulse TmOut’ column between ‘Kill Wait’ and ‘CTail’
Add NtRtMtr task to list of system processes
Changes:
Added Allen-Bradley Control Logix PLC handler to the tpriPio library
Corrected tree traversal in tpriGsmDDCom for array variables
Added wait cursors around long drive mappings in standard controls
Changed tpriHmiMap to use localhost\tpriHmi so function doesn’t try a domain logon
Changed tpriDataSetInfo, tpriTrendSrcSelect, and tpriTriggerEd to keep share connections open
Added standard timer functions to tpriNtRt library
Corrected startup sequencing error waiting for tasks to initialize
Fixed bug in tpriRdcTcp::rdClean(..) when > 256 bytes exist to be read
Updated GE PLC handler for Win32 non-blocking connections
Added check in GsmPifBld to prevent setting default packing size to zero
Changes:
Added fix to ignore ‘Esc’ key processing in NtRtMgr if running with GuiOption=NoStopSystem
Added support for CoBox terminal servers to tpriRdc classes
Updated documentation for tpriRdcCbx class
Fixed overflow error in tpriLogMsg control
Optimize tpriOpcMgr control to use binary searching on OPC updates
Corrected GsmExpRcv to allocate large enough receive buffer before sending initial request
Modified NtRtSvc to allow running service as specified user
Changes:
Updated GE PLC handler so Win32 version does not call unsupported setsockopt for timestamp
Changes:
Add NoConsoleLogMsg as GUI option
Fixed OPC dll to allow requests for the same variable twice on a single connection
Move check for debug level earlier in LogMsg to speed no-op return
Modified tpriProcMgr to support group-based process management
Modified template sysProcs.ini to support group-based process management
Added tpriProc functions to start and stop process groups
Modified NtRtMgr.exe to support user-defined process groups
Added tpriProc function to completely stop system and optionally shutdown or restart Windows
Modified NtRtStop process for new tpriProc shutdown API
Fixed initialization of init/min/max for string variables that do not completely specify the buffer
Added tpriGsmDDCom function to initialize all variables in a GSM to their initial values
Fixed NtRtMgr to recognize difference between session logging off and system shutting down
Upgrade Instructions:
Modify sysProcs.ini file to support new file type using
\tpriNtRt\apps\tpriNtRtAdmin\template\sysProcs.ini.template
as example:Add [AppGroups] section with keys for all defined application groups
Ensure that TSENTRY processes are listed in [System] group
Changes:
New website commissioned at http://www.tsentry.com
Implemented RTX v5.1.1 official release
Updated tpriDataDict control to support data dictionary fixes in v2.12
Enhanced tpriDataDict variable search to allow quotes, commas, and spaces
Fixed tpriProc::setDispStatus(..) to prevent access violation if tpriProc not initialized
Changed tpriTrendCom to work around ProEssentials bug when setting full screen of trend data
Fixed tpriTrendCtrl to prevent rescroll of trend variable list when deleting or inserting
Changed name of save trending buffer file to TRENDCOM.bin
Fixed restoring of TRENDCOM to allow a source to change its base period
Prevent restoring of trend variables whose sampling period is incompatible with the base period
Set tpriSvrConn classes to set keep-alives on client connections
Updated documentation for NtRtMgr web page
Updated documentation for GsmExpSvr and GsmExpRcv tasks
Updated courseware slides with some cosmetic fixes
Updated documentation for tpriIniFile class
Added more instructions on tpriNtRtAdmin Generate XXX windows
Added explanations each of the sections in the courseware exercise cookbook
Cosmetic changes to default process NtRtTask.cpp.template
Fixed OPC DLLs so that the number of OPC client connections does not grow unchecked
Fixed OPC DLLs to prevent segment faults under numerous connects and disconnects
Updated OPC DLLs to radically improve variable update speed
Fixed GsmOpcSvr to prevent referencing item handle after its removal
Updated GsmOpcSvr to update variables using lists
Fixed tpriGsmDDCom::mapGsm(..) to use the GSM variable name, not GSMName
Changed interface of tpriGsmDDCom to simplify internals and updated documentation
Fixed incorrect variable sizing for typdef’d arrays in data dictionary
Fixed improper lookup of min/max/init value when GSM and structure have different names
Added sorting and binary search to data dictionary to radically improve lookup speed
Added data dictionary support for unions
Added logging for errors parsing/creating data dictionary variables
Corrected data dictionary to always give true variant type, if appropriate
Trap exceptions caused by inappropriate format strings assigned to data dictionary variables
Corrected GsmPifBld crash parsing structures with no members
Changed command line parameters to GsmPifBld
Do not allow process to initialize itself if another instance is running
Corrected LogMsg to correctly handle printing strings that contain formatting strings themselves
Fixed LogMsg to correct timestamping for skew in RTX clock
Fixed LogMsg to prevent crash from passing strings that are too long
Updated VB screen template to reference latest tpriLogMsg control
Changed title of NtRtMgr to show TSENTRY version number
Fixed crash when starting NtRtMgr while other processes are active
Added check to prevent NtRtMgr from being suspended
Fixed failure to display files when loading DataSet
Added optional text display to tpriToggleButton
Added config file options to modify GUI options
Fixed NtRtStop to properly stop system in various non-standard cases
Added automatic startup with system via NtRtSvc service
Added automatic creation of \cab\ directory by tpriPublisher if it doesn’t already exist
Upgrade Instructions
Upgrade RTX-enabled systems to RTX v5.1.1
Changes:
Changed intervalPct process common variable to intervalPctAvg
Added intervalPct value to process common for storage of current interval
Corrected intervalPctAvg and intervalPctMax statistic calculations
Update NtRtMgr.ocx to reflect intervalPct changes
Fix improper removal of unrequested variables on all three Probe screens
Turned down logging to DBLOG of invalid trend buffer points to disk
Add ability to configure length of build timeouts in tpriPublisher
Increase timeout of dynamic trend variables to 60 minutes
Removed call to WSAStartup(..) from RTSS I/O drivers and examples
Added base sampling period to trend source definition to fix logic forcing new dynamic trends
Fixed problem restoring requested but unclaimed variables
Fixed problem logging messages to disk when message buffer gets overrun
Fixed data dictionary to allow tabs in vars.ini file
Enhanced data dictionary to allow different specifications of init/min/max variables
Increased max number of variable definitions in data dictionary
Increased minimum trend time to 10 min for dynamic trigger & historical trend variables
Initial release of GsmExpSvr and GsmExpRcv data mirroring processes
Upgrade Instructions:
Add #ifdef UNDER_RTSS and #endif around all calls to WSAStartup(..) in RTSS applications as shown in
\Example\Tasks\DemoLts\DemoLts.cpp
Changes:
Implemented RTX v5.1 official and patch
Fixed initialization of trend width, sampling period, and line color in tpriDataSetInfo control
Fixed tpriTrendCom control to request proper sampling period
Allowed dynamic trends to reinitialize upon request with faster trending periods
Fixed Flat Win32 tpriNtRtEx.dll to create “Global\xxx” GSM segments
Added JWC Honorary LogMsg button to NtRtMgr console
Changed tpriLogMsg class to store date/time, process, function, and text independently
Upated tpriLogMsg documentation to reflect new interface
Changed tpriLogMsg and tpriOpcMgr controls to handle new tpriLogMsg class interface
Updated ini file error reporting for tpriPublisher
Update error handling for tpriIniFile class
Fixed VC++ project template to define UNDER_RTSS properly
Upgrade Instructions:
Upgrade RTX-enabled systems to RTX v5.1
Ensure all RTSS_Debug and RTSS_Release build settings define UNDER_RTSS, not _UNDER_RTSS
Changes:
Fixed call to WSAGetLastError() if WSAStartup fails in tpriRdcLts examples
Fixed tpriProc::Deactivate(..) logic that was occasionally returning a mistaken error
Added check not to start RTSS tasks under w/ Flat Win32 version of tpriNtRtEx.dll
Prevent tasks marked as tpriProcError from being automatically restarted
Add console option to clear error associated with a process
Added reconnect delay for tpriRdc classes
Fixed detection of disconnect during tpriRdcTcp::read(..)
Updated documentation for standard libraries
Fixed error handling on system startup, added more descriptive messages
Corrected VMIC driver for true RTSS operation
Added remote address and port number member variables to tpriConnThread class
Pulled out debug statements from tpriRdc classes to prevent forced logging
Changes:
Handle #pragma pack (x) directives in data dictionary header files
Removed use of strtok(..) from LogMsg functions
Fixed LogMsg parsing of multiple queues
Add number of opc variables to GsmOpcSvr process status string
Added/changed many tpriProc functions to make static and useful
Changed creation of shared memory to give everyone full access
Changed tpriProcMgr to assume process is alive if security failure opening process handle
Fix return value for non-blocking tpriRdcTcp::read when no data is present
Changed non-blocking tpriRdcTcp::open to use select(..) to detect connection completion
Increased maximum number of GSM structure entries from 3000 to 5000
Change GsmPifBld to ignore #include files that it cannot find
Added tpriRdcLts::resetConn(..) function to tpriRdc library
Added getLineCount(..) functions to tpriIniFile class
Added option for connection thread timers in tpriSvrConn library
Changes:
Expanded max OPC items per page
Added support for multiple LogMsg queues
Changed tpriNtRtAdmin templates to include sysLogs.ini template file
Added tpriLogMsg to standard ActiveX controls
Added documentation for tpriLogMsg class and control
Various other documentation fixes and touch-ups
Added process common to data dictionary
Added NtRtMgr web screen (system observation only)
Implemented RTX v5.1 beta-release
Removed kernel32.lib from link list in template process makefile
Added RTSS shutdown handler for Windows BSODs
Added tpriVmic process I/O driver and documentation
Upgrade Instructions:
Remove kernel32.lib from link list in RTSS_Debug and RTSS_Release build settings for all application processes
Add tpriProc.h and tpriLogMsg.h to data dictionary root header file as shown in
\tpriNtRt\apps\tpriNtRtAdmin\template\sysGsm.ini.template
Changes:
Fixed buffering of trend variables to disk
Changes:
Initial deployment of website http://www.tpri.com/tsentry
Fixed Public Function ‘Link’ in VB screen template
tpriCmdButton handles error if no Link function is provided in parent function
Updated documentation for adding new user in Windows 2000
Updated documentation for installation of Windows 2000 Server system (errors in VCI install)
Updated documentation for installation of RT-TCP/IP stack and configuration of 2nd NIC
Updated documentation for configuring GsmOpcSrv for access via web screens loaded in terminal services sessions
Added no-items indication on tpriOpcMgr control
Fixed min/max validation in tpriTextControl
Turn off redundant messages from TrendSrv if historical variable doesn’t exist
Changes:
Trending documentation revised with screen shots
Revised v2 of class notes
Class exercises enhanced with screen shots
Cosmetic fixes to various screen and task templates
Updated release of WinTech OPC dll’s
Added tpriOpcMgr property to allow connection to alternate OPC servers
Initial release of static interface to Lantronix terminal server with example
Initial release of RDC interface to Lantronix terminal server with example
Added support for GE PLC RTSS driver
Changes:
Fixed OPC for string I/O
Probe/ProbeA/ProbeV fixes for reading/writing binary data
Fixed trend system for backwards playback
Changes:
First official release of TSENTRY
Initial release of soft real-time and development versions running w/
tpriNtRtEx.dll
Added tpriNtRtAdmin process to facilitate creating a new system/task/screen
Added class notes and exercises
Initial release of Win32 GE PLC driver
- No labels