Table of Contents
Writing a script for the DataHub is not difficult, particularly when you follow a few basic principles. Working directly with DataHub points and the Gamma interpreter environment creates special opportunities, and you can take best advantage of them by using the suggestions offered here.
Most of the examples in this chapter use DataSim, which is installed with the DataHub. You should ensure that it is connected and sending data to the DataHub before attempting these examples. For more information, please refer to DataSim in the Cascade DataHub manual or the OPC DataHub manual. |
The best way to write a DataHub script is to create a single class in which your entire script runs. This keeps all variables and functions (methods) local to the class and isolated from any other script running in Gamma. Rather than create the class from scratch, the DataHub writes a template for you that contains what you need. Here's how it works:
will generate no sample code.
will generate code to help you create windows.
will generate code for doing linear transformations and other data manipulation.
/* All user scripts should derive from the base "Application" class */ require ("Application"); /* Get the Gamma library functions and methods for ODBC and/or * Windows programming. Uncomment either or both. */ //require ("WindowsSupport"); //require ("ODBCSupport"); /* Applications share the execution thread and the global name * space, so we create a class that contains all of the functions * and variables for the application. This does two things: * 1) creates a private name space for the application, and * 2) allows you to re-load the application to create either * a new unique instance or multiple instances without * damaging an existing running instance. */ class MyApp Application { } /* Use methods to create functions outside the 'main line'. */ method MyApp.samplemethod () { } /* Write the 'main line' of the program here. */ method MyApp.constructor () { } /* Any code to be run when the program gets shut down. */ method MyApp.destructor () { } /* Start the program by instantiating the class. If your * constructor code does not create a persistent reference to * the instance (self), then it will be destroyed by the * garbage collector soon after creation. If you do not want * this to happen, assign the instance to a global variable, or * create a static data member in your class to which you assign * 'self' during the construction process. ApplicationSingleton() * does this for you automatically. */ ApplicationSingleton (MyApp);
The following sections explain how to edit this template and run the finished script.
Copyright © 1995-2010 by Cogent Real-Time Systems, Inc. All rights reserved.