Station global object references
Are station global object references stored in a file like other station globals? If so, how?
Can the values of attributes of the object be recovered?
Solved!
Go to Solution.
The values of references are not persisted to files. This is not technically feasible in the general case, since a reference can point to just about any ActiveX or .net object.
Message Edited by James Grey on 08-06-2009 10:05 AM
Similar Messages
-
Expected Object Reference?
Hello,
I am attempting to create my own version of modelsupport2.dll's parallel UUT dialog. (It will use the TestStand Sync Manager to enqueue requests just like the existing Parallel model's parallel UUT dialog does.) I am faced with a couple issues right off the bat that don't make a whole lot of sense to me.
For one thing, despite the fact that my dialog box (written in VB .NET by the way) is initialized in a sub-sequence of the TestUUTs execution entry point that is configured to run in a separate thread, the TestUUTs sequence still hangs around and waits for the dialog box to close before continuing on. (This is clearly a problem since the whole point is to have the main thread continually process requests while the dialog box on a separate thread is busy enqueuing requests...) Does anyone have any idea why that could be happening? Maybe other sequence settings that I'm not aware of?
Another problem I'm having (although I wasn't initially having this problem) is the following error message: "Expected Object Reference, found Object Reference". The error code shows "-17308; Specified value does not have the expected type". This happens in the .NET action step in which I call my .NET assembly to create the object representing the dialog. The object reference specified for the create object call is a parameter called CustomDialogRefParam - a parameter of type Object Reference. The TestUUTs execution entry point has a CustomDialogRef local variable of the same type, and it passes it by reference to the Run UUT Info Dialog subsequence... The idea was that the Run UUT Info Dialog subsequence would create the object, and from that point on, it would be available to the TestUUTs sequence. Is there anything fundamentally wrong with this idea, or does anyone have any suggestions as to what may be causing this sort of error?
Thanks for any suggestions. Let me know if I need to clarify anything.Hello,
Thanks for the feedback. I actually fixed the problem with the thread not operating independently, (although I can't say I'm completely sure why I needed to do what I did). The function call that starts the dialog is passed the sequence context from TestStand. In order to allow TestStand to continue I had to set the sequence context's thread to the "externally suspended" state. I can now get it to work in a very simple fashion. (Basically, all it does is open up and wait for the user to click the exit button. When that happens, the dialog uses the sync manager component to enqueue the appropriate requests to cause TestStand to stop all test sockets and exit the "process dialog requests" consumer loop. Only problem I have now, is that for some reason, if I put a break point in the sequence after the dialog has been initialized, execution on the main thread stops as expected, but then attempting to step into, step over, or continue cause it to just hang. (I can't even terminate the process - I have to actually close TestStand entirely.) So long as I don't pause execution though, it runs flawlessly.
I'm still stuck on the passing of the .NET object reference though. Oddly enough, it seems to work if I reference the object reference in a subsequence using the following syntax:
RunState.Caller.Locals.CustomDialogRef
But if I try to create an object reference parameter and pass the custom dialog ref by reference, it still fails with this strange "type mismatch"... I still can't find any solution that works for accessing the object reference from sequences that are started on a separate execution... Maybe I can store the reference in a station global... I hate using globals though - it goes against my idea of good programming.
Anyway, thanks again, and any additional suggestions are certainly appreciated. -
Station Globals modified externally are not reflected
Hi,
I am having an UI developed in CVI(EXE1) which runs a teststand sequence. The flow of sequence is controlled by Station Globals.
The Station Globals i am trying to control from another user interface so that the flow in EXE1 will be exrcised. But some reason the updated station globals are not reflected in EXE1.
In the sequence i have used Engine.ReloadGloabls() but some reason the values are not reflected.
Anyone can help me out on this.Hey ramjeev,
Are you certain that the globals are being saved from the location you edited them before you call the Engine.ReloadGlobals()? Also, as mentioned in the function help here, you should clear or destroy your existing references to the globals before calling the ReloadGlobals() method. This is because any existing references will retain their values rather than being updated with the method call.
However, I'm not sure if this is the best approach for your application. Typically, Station Globals are used for configuration settings, particularly those that need to persist between executions. Since you're wanting to control this test sequence from another user interface, I wonder if UIMessages or a synchronization object such as a queue or notifier would be better for this purpose. Have you explored any of these options?
Daniel E.
TestStand Product Support Engineer
National Instruments -
TestStand station globals sharing between two applicatio​ns
Hi,
I am having two applications developed with CVI 8.5 and TestStand 2010. Both are accessing same station global variable”ESSX2_0.Aux.Status”. Please create a station global in TestStand 2010.
The idea is the Write application shall get the status of the Aux status control at an interval of 1 sec and updates the station global. The Display application shall read the station global and displays the value of the station global.
The write application is updating the station global and I can see the status in Teststand Sequence editor. But my updated value is not getting reflected to my Display application unless I restart the application. I am understanding that the status of the station global variables is taken at the time of the application start in my display application and is not getting refreshed to get the changes from external applications till we restart.
Please help me out so that the display application keeps looking for the updated values.
Attachments:
Aux Display.zip 1759 KB
Aux Write.zip 1760 KBStation globals are not shared across processes unless you pass a reference to them across processes. There are several ways to do so. The easiest thing to do is create a TestStand sync object like a notification or queue which can transfer a reference to the station globals across processes. Or use the notification or queue directly as your communication mechanism. TestStand sync objects whose name you start with an asterisk '*' character are automatically shared across processes. You can use Engine.GetSyncManager() to get the appropriate sync manager and then use the SyncManager API. Please see the help for more details.
-Doug -
Error while accessing station global in LabVIEW
I am trying to access the teststand station global value in the LabVIEW using activex methods.
If I am reading default station global (TS.LastUserName) i am able to read the value.
However if i am trying to read the value of the string station global which i am updating through running sequence i am getting an error as follows:
"Unknown variable or property name 'ExecutionTime'.
Error accessing item 'ExecutionTime'. in GetGlobal.vi" where ExecutionTime is the name of my station global.
Error code is -17306.
What is going wrong?Couple of suggestions for you:
If you are trying to read the execution time in your user interface, I suggest: http://zone.ni.com/reference/en-XX/help/370052K-01/tsapiref/reftopics/obsolete_thread_postuimessage_... method to pass data to UI
Also, station globals are not dynamic like other variables (Locals / FileGlobals etc) which means that you wont get an updated value until the stationglobals.ini file is saved. So depending on what you are trying to read, this may or may not be your best choice.
Beginner? Try LabVIEW Basics
Sharing bits of code? Try Snippets or LAVA Code Capture Tool
Have you tried Quick Drop?, Visit QD Community. -
Hi All,
Could you please help me here? On my Laptop which is running on windows 8.1 Operation system, I enabled the Hyper-V client feature and setup the Windows Fail-over Clustering using Windows 2012 Standard Edition. So, there are three machines which are running
on the Hyper-V. Below are the machine details;
1st machine - Working as Domain controller and its name is "ACONDomainGroup" and allocated to
1GB RAM to use.
2nd machine - Working as Node1 and its name is "AconNODE1W2K12STD"
and allocated to 2.5GB RAM to use.
3rd machine - Working as Node1 and its name is "AconNODE1W2K12STD"
and allocated to 1.5GB RAM to use.
and the windows virtual cluster name is "AconWinCLTR". While I am doing the SQL Cluster Installation, I am getting below mentioned error. all systems have 4.5 .net installed. May you please guide me where and what i am missing to complete sql clustering.....
Update Source: MU
User Input Settings:
ACTION: InstallFailoverCluster
AGTDOMAINGROUP: <empty>
AGTSVCACCOUNT: <empty>
AGTSVCPASSWORD: <empty>
ASBACKUPDIR: Backup
ASCOLLATION: Latin1_General_CI_AS
ASCONFIGDIR: Config
ASDATADIR: Data
ASLOGDIR: Log
ASPROVIDERMSOLAP: 1
ASSERVERMODE: MULTIDIMENSIONAL
ASSVCACCOUNT: <empty>
ASSVCPASSWORD: <empty>
ASSVCSTARTUPTYPE: Automatic
ASSYSADMINACCOUNTS: <empty>
ASTEMPDIR: Temp
COMMFABRICENCRYPTION: 0
COMMFABRICNETWORKLEVEL: 0
COMMFABRICPORT: 0
CONFIGURATIONFILE:
ENU: true
ERRORREPORTING: false
FAILOVERCLUSTERDISKS: <empty>
FAILOVERCLUSTERGROUP:
FAILOVERCLUSTERIPADDRESSES: <empty>
FAILOVERCLUSTERNETWORKNAME: <empty>
FEATURES:
FILESTREAMLEVEL: 0
FILESTREAMSHARENAME: <empty>
FTSVCACCOUNT: <empty>
FTSVCPASSWORD: <empty>
HELP: false
IACCEPTSQLSERVERLICENSETERMS: false
INDICATEPROGRESS: false
INSTALLSHAREDDIR: C:\Program Files\Microsoft SQL
Server\
INSTALLSHAREDWOWDIR: C:\Program Files (x86)\Microsoft SQL Server\
INSTALLSQLDATADIR: <empty>
INSTANCEDIR: C:\Program Files\Microsoft
SQL Server\
INSTANCEID: <empty>
INSTANCENAME: <empty>
ISSVCACCOUNT: NT AUTHORITY\Network
Service
ISSVCPASSWORD: <empty>
ISSVCSTARTUPTYPE: Automatic
MATRIXCMBRICKCOMMPORT: 0
MATRIXCMSERVERNAME: <empty>
MATRIXNAME: <empty>
PID: *****
QUIET: false
QUIETSIMPLE: false
RSINSTALLMODE: DefaultNativeMode
RSSHPINSTALLMODE: DefaultSharePointMode
RSSVCACCOUNT: <empty>
RSSVCPASSWORD: <empty>
RSSVCSTARTUPTYPE: Automatic
SAPWD: <empty>
SECURITYMODE: <empty>
SQLBACKUPDIR: <empty>
SQLCOLLATION: SQL_Latin1_General_CP1_CI_AS
SQLSVCACCOUNT: <empty>
SQLSVCPASSWORD: <empty>
SQLSYSADMINACCOUNTS: <empty>
SQLTEMPDBDIR: <empty>
SQLTEMPDBLOGDIR: <empty>
SQLUSERDBDIR: <empty>
SQLUSERDBLOGDIR: <empty>
SQMREPORTING: false
UIMODE: Normal
UpdateEnabled: true
UpdateSource: MU
X86: false
Configuration file: C:\Program Files\Microsoft SQL Server\110\Setup
Bootstrap\Log\20140420_052344\ConfigurationFile.ini
Rules with failures:
Global rules:
There are no scenario-specific rules.
Rules report file: C:\Program Files\Microsoft SQL Server\110\Setup
Bootstrap\Log\20140420_052344\SystemConfigurationCheck_Report.htm
Exception summary:
The following is an exception stack listing the exceptions in outermost to innermost order
Inner exceptions are being indented
Exception type: System.NullReferenceException
Message:
Object reference not set to an instance of an object.
HResult : 0x80004003
Data:
HelpLink.EvtType = 0x9AF1AE5E@0x44A889F9
DisableWatson = true
Stack:
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.ShouldRuleRun(Rule
rule)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.IsRuleSkipped(Rule
rule)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.LoadRule(String
ruleId, List`1 ruleProperties, XmlSchema ruleSchema, XmlElementParserFactory elementParser)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.LoadRules(IEnumerable`1
ruleIds)
at Microsoft.SqlServer.Configuration.InstallWizard.RunRuleProgressController.Initialize()Dharmendra, the log details are incomplete are not sufficient enough for I guess anyone to help. Besides, from the details above, I can see that the Failover Cluster Disks are not selected:-
FAILOVERCLUSTERDISKS: <empty>
FAILOVERCLUSTERGROUP:
FAILOVERCLUSTERIPADDRESSES: <empty>
FAILOVERCLUSTERNETWORKNAME: <empty>
Please mark the answer as helpful if i have answered your query. Thanks and Regards, Kartar Rana -
SQL 2012 install fails with 'Object reference not set to an instance of an object.'
Hi, I'm trying to install SQL 2012 RTM Enterprise on a Windows 2008 R2 single node cluster.
The installer starts goes through some checks and then fails with the message 'Object reference not set to an instance of an object.' It happens while the small 'wait while...' dialog box is
showing, another window pops up briefly (I think the feature selection window - can't really tell as it doesn't draw before disappearing). Then the ‘Object reference not set’ message comes up.
From the summary log file..
Overall summary:
Final result:
Failed: see details below
Exit code (Decimal):
-2147467261
Exit facility code:
0
Exit error code:
16387
Exit message:
Object reference not set to an instance of an object.
Start time:
2012-09-26 08:52:53
End time:
2012-09-26 08:54:08
Requested action:
InstallFailoverCluster
Exception help link:
http://go.microsoft.com/fwlink?LinkId=20476&ProdName=Microsoft+SQL+Server&EvtSrc=setup.rll&EvtID=50000&ProdVer=11.0.2100.60&EvtType=0x9AF1AE5E%400x44A889F9&EvtType=0x9AF1AE5E%400x44A889F9
Exception summary:
The following is an exception stack listing the exceptions in outermost to innermost order
Inner exceptions are being indented
Exception type: System.NullReferenceException
Message:
Object reference not set to an instance of an object.
Data:
HelpLink.EvtType = 0x9AF1AE5E@0x44A889F9
DisableWatson = true
Stack:
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.ShouldRuleRun(Rule rule)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.IsRuleSkipped(Rule rule)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.LoadRule(String ruleId, List`1 ruleProperties, XmlSchema ruleSchema, XmlElementParserFactory elementParser)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.LoadRules(IEnumerable`1 ruleIds)
at Microsoft.SqlServer.Configuration.InstallWizard.RunRuleProgressController.Initialize()
I have rebooted, tried different media, tried uninstalling the setup files and rerunning but always get the same result.
Any help would be gratefully accepted.
Thanks,
Bruce.Hi Alberto,
Whenever I am trying to install SQL 2012 with SP1 clustering, I am getting below error. Can you please advise on this.
Additional information are
Windows Servers Version and Edition - Windows 2012 Strandedition
SQL Server Version and Edition - SQL 2012 with SP1
All the machines are running on Hyper-V and Passed the cluster validation test successfully. there is no issue. The servers' (Nodes) names are;
DomainServerName - ACONDomainGroup (1gb ram allocated)
Node1 - AconNODE1W2K12STD (2.5gb ram allocated )
Node2 - AconNODE2W2K12STD (1.5 ram allocated allocated)
WindowsClusterName - AconWinCLTR
Below is Summary.txt Error
Update Source: MU
User Input Settings:
ACTION: InstallFailoverCluster
AGTDOMAINGROUP: <empty>
AGTSVCACCOUNT: <empty>
AGTSVCPASSWORD: <empty>
ASBACKUPDIR: Backup
ASCOLLATION: Latin1_General_CI_AS
ASCONFIGDIR: Config
ASDATADIR: Data
ASLOGDIR: Log
ASPROVIDERMSOLAP: 1
ASSERVERMODE: MULTIDIMENSIONAL
ASSVCACCOUNT: <empty>
ASSVCPASSWORD: <empty>
ASSVCSTARTUPTYPE: Automatic
ASSYSADMINACCOUNTS: <empty>
ASTEMPDIR: Temp
COMMFABRICENCRYPTION: 0
COMMFABRICNETWORKLEVEL: 0
COMMFABRICPORT: 0
CONFIGURATIONFILE:
ENU: true
ERRORREPORTING: false
FAILOVERCLUSTERDISKS: <empty>
FAILOVERCLUSTERGROUP:
FAILOVERCLUSTERIPADDRESSES: <empty>
FAILOVERCLUSTERNETWORKNAME: <empty>
FEATURES:
FILESTREAMLEVEL: 0
FILESTREAMSHARENAME: <empty>
FTSVCACCOUNT: <empty>
FTSVCPASSWORD: <empty>
HELP: false
IACCEPTSQLSERVERLICENSETERMS: false
INDICATEPROGRESS: false
INSTALLSHAREDDIR: C:\Program Files\Microsoft SQL Server\
INSTALLSHAREDWOWDIR: C:\Program Files (x86)\Microsoft SQL Server\
INSTALLSQLDATADIR: <empty>
INSTANCEDIR: C:\Program Files\Microsoft SQL Server\
INSTANCEID: <empty>
INSTANCENAME: <empty>
ISSVCACCOUNT: NT AUTHORITY\Network Service
ISSVCPASSWORD: <empty>
ISSVCSTARTUPTYPE: Automatic
MATRIXCMBRICKCOMMPORT: 0
MATRIXCMSERVERNAME: <empty>
MATRIXNAME: <empty>
PID: *****
QUIET: false
QUIETSIMPLE: false
RSINSTALLMODE: DefaultNativeMode
RSSHPINSTALLMODE: DefaultSharePointMode
RSSVCACCOUNT: <empty>
RSSVCPASSWORD: <empty>
RSSVCSTARTUPTYPE: Automatic
SAPWD: <empty>
SECURITYMODE: <empty>
SQLBACKUPDIR: <empty>
SQLCOLLATION: SQL_Latin1_General_CP1_CI_AS
SQLSVCACCOUNT: <empty>
SQLSVCPASSWORD: <empty>
SQLSYSADMINACCOUNTS: <empty>
SQLTEMPDBDIR: <empty>
SQLTEMPDBLOGDIR: <empty>
SQLUSERDBDIR: <empty>
SQLUSERDBLOGDIR: <empty>
SQMREPORTING: false
UIMODE: Normal
UpdateEnabled: true
UpdateSource: MU
X86: false
Configuration file: C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Log\20140420_052344\ConfigurationFile.ini
Rules with failures:
Global rules:
There are no scenario-specific rules.
Rules report file: C:\Program Files\Microsoft SQL Server\110\Setup Bootstrap\Log\20140420_052344\SystemConfigurationCheck_Report.htm
Exception summary:
The following is an exception stack listing the exceptions in outermost to innermost order
Inner exceptions are being indented
Exception type: System.NullReferenceException
Message:
Object reference not set to an instance of an object.
HResult : 0x80004003
Data:
HelpLink.EvtType = 0x9AF1AE5E@0x44A889F9
DisableWatson = true
Stack:
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.ShouldRuleRun(Rule rule)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.IsRuleSkipped(Rule rule)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.LoadRule(String ruleId, List`1 ruleProperties, XmlSchema ruleSchema, XmlElementParserFactory elementParser)
at Microsoft.SqlServer.Configuration.RulesEngineExtension.RulesEngine.LoadRules(IEnumerable`1 ruleIds)
at Microsoft.SqlServer.Configuration.InstallWizard.RunRuleProgressController.Initialize() -
RE: Global Object -- the last word
Chris,
You are correct. My apologies for not testing my reply sooner. The
OLM.RegisterObject method does touch the NameService, but OLM caches
registrations and therefor OLM.BindObject is a local call. So there is one
network call, but that's all (unless the cache entries are aged out).
Andrew,
After testing all of the proposed solutions, using task.part.apptitle seems
the easiest one to implement. Subclass from TextNullable and add an
attribute to hold the reference to LocalCache. Remember, TextNullable can
not be anchored.
Caveat, you are relying on a Forte feature which may not be guaranteed to
work the same way in the future.
At 01:59 PM 10/17/97 -0500, you wrote:
Where would the network traffic come in? The object location manager
is local, and if you assume the cache object is also local (there is
one on each partition), I don't see where the network hit would be.
Would you please enlighten me?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Chris Johnson
BORN Information Services Group
Forte National Practice
Direct: 612-404-4409
Fax: 612-404-4441
http://www.born.com
mailto:[email protected]
From: David Vydra[SMTP:[email protected]]
Sent: Friday, October 17, 1997 12:42 PM
To: [email protected]
Subject: RE: Global Object
Guy,
At 11:35 AM 10/17/97 -0500, you wrote:
Another approach would be to use the partition's object locationmanager
(task.part.objectLocationMgr) to register the partition's local cachecontainer object (LOCache) under a name based on the
partition's name. Tasks needing the cache container can use the"bindObject" method to get the reference back.
I believe this would generate network traffic for each bind, and if
the
objects in need of the local service are transient the overhead may be
considerable.
========================================
David Vydra
Education Consultant
Forte Software, Inc.
[email protected]; phone: (510)986.3593Possible problems with using task.part.appTitle.
1) Isn't appTitle part of the task? If it is, what happens when the
task goes across a partition boundary? Does the appTitle get serialized
and deserialized by Forte? As long as the cache itself is anchored this
reference held in the appTitle is only a proxy. (But a TextNullable
cannot be anchored.) If the cache is not anchored, won't the entire
cache get serialized and deserialized at each partition boundary?
2) If the appTitle goes with the Task when it crosses a partition
boundary, what happens when some piece of code in the other partition
attempts to use the cache? If the cache was able to be anchored,
wouldn't there a network hit at this point? Also, haven't you just lost
the 'local'ness of the local cache.
3) What about serialization problems when you enter a partition that
does not know about the cache object. Won't you get a deserialization
error when you enter a non-application partition such as the Node
Manager or Forte's run-time compiler?
4) Version 3 provides appContext which can be used to hold any Object.
This should probably only be used for very small objects or anchored
object that are used infrequently on a different partition. Since
appTitle cannot be anchored, why would you use it rather than
appContext (Version 2 is a different story)? AppContext appears to be a
more generic solution to the global object problem, one that Forte will
support. Neither AppContext nor appTitle appear to be solutions to a
local cache problem.
John G. Bielejeski
Born Information Services Group (http://www.born.com)
Forte National Practice
Voice: (612) 404-4116
Fax: (612) 404-4440
mailto:[email protected]
From: David Vydra[SMTP:[email protected]]
Sent: Sunday, October 19, 1997 7:04 PM
To: [email protected]
Subject: RE: Global Object -- the last word
Chris,
You are correct. My apologies for not testing my reply sooner. The
OLM.RegisterObject method does touch the NameService, but OLM caches
registrations and therefor OLM.BindObject is a local call. So there is
one
network call, but that's all (unless the cache entries are aged out).
Andrew,
After testing all of the proposed solutions, using task.part.apptitle
seems
the easiest one to implement. Subclass from TextNullable and add an
attribute to hold the reference to LocalCache. Remember, TextNullable
can
not be anchored.
Caveat, you are relying on a Forte feature which may not be guaranteed
to
work the same way in the future.
At 01:59 PM 10/17/97 -0500, you wrote:
Where would the network traffic come in? The object locationmanager
is local, and if you assume the cache object is also local (thereis
one on each partition), I don't see where the network hit would be.
Would you please enlighten me?
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Chris Johnson
BORN Information Services Group
Forte National Practice
Direct: 612-404-4409
Fax: 612-404-4441
http://www.born.com
mailto:[email protected]
From: David Vydra[SMTP:[email protected]]
Sent: Friday, October 17, 1997 12:42 PM
To: [email protected]
Subject: RE: Global Object
Guy,
At 11:35 AM 10/17/97 -0500, you wrote:
Another approach would be to use the partition's object locationmanager
(task.part.objectLocationMgr) to register the partition's local
cache
container object (LOCache) under a name based on the
partition's name. Tasks needing the cache container can use the"bindObject" method to get the reference back.
I believe this would generate network traffic for each bind, and if
the
objects in need of the local service are transient the overhead maybe
considerable.
========================================
David Vydra
Education Consultant
Forte Software, Inc.
[email protected]; phone: (510)986.3593 -
Dear Support,
I have two questions regarding the parallel sequence model:
I am trying to find a global variable or any variable that can be universally read from any thread / step . For instance:
- Parallel sequence Model
- 2 UUTs
- The main sequence has 20 steps
- I am looking for a variable that can be read universally across both UUTs in any step. I have tried many, even the station global variable - as a Boolean - for "Abort" . But that did not work either.
Question TWO: How can I bring out this universal variable to the UI ? Can you point me to an example? Do I use the "Lookup" ,. I could not get that to work. Can I use the "Label" ? I could not get that to work neither.
Thanks! Brad
Brad Whaley
LabVIEW Certified Engineer1. http://digital.ni.com/public.nsf/allkb/21368C716B06780A86256A5C007075DB
2. Post UI Message http://zone.ni.com/reference/en-XX/help/370052K-01/tsapiref/reftopics/engine_postuimessage_m/
Beginner? Try LabVIEW Basics
Sharing bits of code? Try Snippets or LAVA Code Capture Tool
Have you tried Quick Drop?, Visit QD Community. -
Can't write to station globals in deployed system
When I run Teststand distribution on the target system, I can’t write to the station globals from my custom application that uses the Teststand engine. The following are the facts:
When I run my custom application, my sequence can’t write to any of the station globals. The function TS_PropertySetValString returns : -2147024890.
I made sure that my distribution included the sequence editor. When I run my sequence in the editor, I don’t get any errors AND the fields in the station globals are actually updated with the correct values.
I have updated all of the users using the “User Viewer” in the sequence editor to make sure that the “Edit Station Globals” and “Grant All” are true. I have added code to my custom application to query the engine for these flags and display them in a popup, the flags are TRUE.
I also made sure that the “Check User Privileges” under the “User Manager” in the sequence editor is OFF. It made no difference
I am at a total loss. Any ideas?
ToddInside my custom application EXE that launches the teststand engine, the following call works:
tsErrChkMsgPopup(TS_PropertySetValString (m_oGlobals, &errorInfo, "TestConsoleInfo.Operator", 0, sText));
The above call uses a globals object
Inside the DLL, that is invoked by the sequence file being executed by my custom application, the following function fails with totally bogus info in the tsiErrorinfo structure. And yes, the sequence handle is valid because this same sequence handle is used to read from the station globals, we just can't write to the station globals.
iStatus = TS_PropertySetValBoolean(g_iTSseqHandle, &tsiErrorinfo,
"StationGlobals.ErrorInfo.CurrentError.Occured",
0, 1);
The above call uses a sequence object
Todd -
Good morning!
I was wondering how you Java gurus make nice solutions for accessing variables and objects from outside its own class. An example:
I have a mainframe extending JFram with (for instance)some textareas that I want public to classes cooperating with this mainframe. Up til now, I've set these textareas static so I can access them outside of my mainframe. Is this good practice? Pros & cons? Is it a better idea to pass the mainframe as a parameter to other swingclasses making objects(/references) of it?Look, it really depends what you want to do. But first let me try to clarify two things. Consider your example, you have a class MainFrame, with a global variable textArea:
public class MainFrame
JTextArea textArea = new JTextArea();
}and in some other class, say TestFrame, you have an instance of MainFrame somewhere:
MainFrame mf = new MainFrame();
.1. Access specifiers: public
Now, what is the difference of making textArea public or not? If it's public, you can access it in TestFrame directly via the instance of MainFrame, i.e, you can directly manipulate
mf.textAreaYou should be aware, though, that this gives full access to everything that's public in textArea, and textArea might be manipulated outside your mf instance in ways you might not want or cannot accept for mf to function properly. Therefore, it is generally best practice to expose only those fields and variables which you really do need to manipulate from outside. And the way to do this is via getter and setter methods for these fields.
I suggest you read up a little on acces specifiers public, "none", protected and private in any basic book on Java, or in the documentation your find on your left.
2. The meaning of static:
Of you declare the variable textArea to be static, you say that all instances of MainFrame shall share one instance of textArea. That is, if you have two instance of MainFrame and you manipulate the static variable textArea in one of them, the other's textArea is changed as well (since it is the same, doh!). There are good reasons for using static variables and methods, as for instance in the example given by gdub, when you want a singleton object, i.e., when you want to make sure there is only one instance of a particular class in your application.
There's much more to static, of course, but again I suggest you best read it up in a decent book.
Now to your original problem: Somewhere in your TestFrame class you want to manipulate the textArea in a MainFrame Object. So if you have a reference to that object, make the appropriate field in that object's textArea available via getter and setter! And if you don't have a reference, I strongly suspect that your overall OO architecture is rather poor.
Cheers, HJK -
Hi all,
i have two classes 'super' and 'sub'. 'sub' inherits from 'super'.
I have got a reference of type 'super' which points to an object of type 'sub'.
How can i cast the reference from 'super' to 'sub' without knowing the class 'sub'???
With RTTI i just got the name of class 'sub'....
thx in advance.
Regards,
MarkusHello Markus,
I think you cannot cast the second object reference, since you cannot define an object reference of the actual type of the subclass as target (because the type is not visible statically when it is defined in another program).
However, you can dynamically create an object of such a class by using its absolute type name:
CREATE OBJECT go_sub TYPE ('\FUNCTION-POOL=THE_FUNCTION_POOL\CLASS=THE_LOCAL_CLASS').
Afterwards, you can invoke methods dynamically:
CALL METHOD go_sub->('THE_METHOD').
Of course, the syntax checker cannot verify these method calls during design time. To ensure that a specified method is callable for a given object during runtime, you can use RTTI before doing the call.
As already discussed in this forum, it is not good practice to use local classes from other programs. They can have dependencies to their context (e.g. a global variable of the program where they are defined).
Hope this helps,
David -
I am using flash MX and looked in the actionscript dictionary
and it came with that example:
function Book(name, price){
this.name = name;
this.price = price;
book1 = new Book("Confederacy of Dunces", 19.95);
book2 = new Book("The Floating Opera", 10.95);
Now the problem is I want my object to be globaly usable by
other movieclips
I tried
function _global.Book(name, price)
and it wouldn't accept it
I tried:
_global.Book = new function (name, price)
but obviously it wasn,t an object that it gave...
So my qustion is how do I make global objects or
classesYou're second try was very close. Check F1 reference:
Learning ActionsScript 2.0 in Flash > Functions and
Methods > About functions and methods > About types of
methods and functions > Writing anonymous and callback functions
----------[ From F1 reference ]----------
To write an anonymous function:
Create a movie clip on the Stage, and then select the clip.
Open the Property inspector, and type my_mc into the Instance
Name text box.
Select Frame 1 of the Timeline, and type the following code
into the Actions panel:
var myWidth = function () {
trace(my_mc._width);
//later in code you can add
myWidth();
Select Control > Test Movie.
The width of the movie clip is displayed in the Output
panel. -
Station Globals in Deployed System
Hi,
Do StationGlobals get deployed automatically as do other variables? I'm trying to deploy a system that uses a property loader to load several values into StationGlobals within the "Setup" sequence. It works fine in the sequence editor but when deployed, a run-time error occurs saying the station global doesn't exist. Do I need to do something different during deployment? (I'm using the TS deployment utility and am using a LV operator interface)
Thanks, AdamHi Adam,
The best place to look in the TestStand Reference Manual (found inside the TestStand Bookshelf). Here, Chpater 14 covers Deploying as well as some common deployment situations. There is also a section in the TestStand Help that discusses deployments and the Deployment Utility.
Thanks,
Caroline
National Instruments
Thanks,
Caroline Tipton
Data Management Product Manager
National Instruments -
Update Station Globals from LAbWindows/CVI user interface
Hi,
I am having a requirement such that i need to update a station global variable to true or false based on the click on a button present in User Interface.
My Setup:
Labwindows/CVI 8.5
TestStand 4.2.1
Please advice me.
Solved!
Go to Solution.Hi,
first thing, why have you posted this query twice, http://forums.ni.com/t5/NI-TestStand/Update-Station-Globals-from-CVI-UI/m-p/1317023
to be able to update a StationGlobal, you first need to get a reference to the Engine, this can be done using ApplicationMgr.GetEngine()
Once you have that reference you can then get a reference to the StationGlobals by the use of Engine.Globals(). this returns a PropertyObject.
So now you can use the SetVal methods to set your boolean, eg PropertyObject.SetValBoolean("MyBoolean", 0, True)
hope this helps
Regards
Ray Farmer
Maybe you are looking for
-
Multiple ipods one itunes; repeat registering
I had a ipod that just died. I am adding a new one to my computer at the same time I happen to be setting up my kids for christmas gifts. I have done the multiple libaries fine however now when I plug each on in to make updates itunes asks me to regi
-
Why is my battery life so short on Iphone 4?
Why is my battery life so short on my new I phone 4 with Verizon?
-
I want to play my xbox using my 27 inch brand new imac , any ideas?
-
Can I use a 6 GB/sec sata drive in Mac Pro
Will I have any operating problems installing additional hard drive with 6GB/sec speed in a Mac Pro? The Mac Pro manual says the computer reads at 3GB/sec.
-
i cant find my ipod i searched my dads house for six hours and cant find it can u help me find it