Difference between revisions of "Example"
From Proview Wiki
(Blanked the page) |
m (Added section to start application automatically) |
||
(12 intermediate revisions by 2 users not shown) | |||
Line 1: | Line 1: | ||
+ | These are the step by step instructions to create the C++ program from the Proview [http://www.proview.se/doc/en_us/man_dg.pdf "Designer's Guide"] Chapter 14 - Application Programming | ||
+ | Key: MB1 = Left Mouse Button, MB2 = Middle Mouse Button, MB3 = Right Mouse Button | ||
+ | |||
+ | '''Open Proview''' | ||
+ | * Ctrl+E | ||
+ | * MB1 $Hier | ||
+ | * MB2 right panel | ||
+ | * right arrow key on Oxx $Hier | ||
+ | * ObjectName application | ||
+ | * MB1 ProjectReg | ||
+ | * MB2 in application $Hier | ||
+ | * right arrow key on Oxx $ProjectReg | ||
+ | * ObjectName cpp | ||
+ | * Ctrl+E | ||
+ | * Yes | ||
+ | * Yes | ||
+ | * MB3 cpp Open Project... | ||
+ | * Next | ||
+ | * Next | ||
+ | * No | ||
+ | * Next | ||
+ | * Next | ||
+ | * Next | ||
+ | * Next | ||
+ | * Yes | ||
+ | '''Configure RootVolume''' | ||
+ | * Next | ||
+ | * Next | ||
+ | * Next | ||
+ | |||
+ | * MB1 Plant -> $PlantHier | ||
+ | * MB2 right panel | ||
+ | * right arrow key on Oxx $PlantHier | ||
+ | * ObjectName plant | ||
+ | * MB1 AllClases -> pwrb -> XyCurve | ||
+ | * MB2 in plant $PlantHier | ||
+ | * right arrow key on Oxx XyCurve | ||
+ | * ObjectName curve | ||
+ | * Ctrl+E | ||
+ | * Yes | ||
+ | |||
+ | '''''/usr/local/pwrp/cpp/src/appl/ra_myappl.cpp''''' | ||
+ | <nowiki> | ||
+ | #include <math.h> | ||
+ | #include "pwr.h" | ||
+ | #include "pwr_baseclasses.hpp" | ||
+ | #include "rt_gdh.h" | ||
+ | |||
+ | |||
+ | class ra_myappl { | ||
+ | pwr_Class_XyCurve *curve_ptr; | ||
+ | pwr_tRefId dlid; | ||
+ | public: | ||
+ | ra_myappl() {} | ||
+ | void init(); | ||
+ | void scan(); | ||
+ | void close(); | ||
+ | }; | ||
+ | |||
+ | void ra_myappl::init() | ||
+ | { | ||
+ | pwr_tStatus sts; | ||
+ | pwr_tOName name = "plant-curve"; | ||
+ | |||
+ | // Connect to database | ||
+ | sts = gdh_Init( "ra_myappl"); | ||
+ | if ( EVEN(sts)) exit(0); | ||
+ | |||
+ | // Direct link to curve object | ||
+ | sts = gdh_RefObjectInfo( name, (void **)&curve_ptr, &dlid, sizeof(*curve_ptr)); | ||
+ | if ( EVEN(sts)) exit(0); | ||
+ | } | ||
+ | |||
+ | void ra_myappl::scan() | ||
+ | { | ||
+ | for ( unsigned int i = 0;;i++) { | ||
+ | if ( i % 5 == 0) { | ||
+ | // Calculate x and y coordinates for a sine curve every fifth second | ||
+ | for ( int j = 0; j < 100; j++) { | ||
+ | curve_ptr->XValue[j] = j; | ||
+ | curve_ptr->YValue[j] = 50 + 50 * sin( 2.0 * M_PI * (j + i) / 100); | ||
+ | } | ||
+ | // Indicate new curve to graph | ||
+ | curve_ptr->Update = 1; | ||
+ | } | ||
+ | else if ( i % 5 == 2) | ||
+ | curve_ptr->Update = 0; | ||
+ | sleep(1); | ||
+ | if ( i > 360) | ||
+ | i = 0; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | void ra_myappl::close() | ||
+ | { | ||
+ | gdh_UnrefObjectInfo( dlid); | ||
+ | } | ||
+ | |||
+ | |||
+ | int main() | ||
+ | { | ||
+ | ra_myappl myappl; | ||
+ | |||
+ | myappl.init(); | ||
+ | myappl.scan(); | ||
+ | myappl.close(); | ||
+ | } | ||
+ | |||
+ | </nowiki> | ||
+ | |||
+ | Create file /usr/local/pwrp/cpp/src/appl/ra_myappl.h (this file just needs to exist, it should be empty) | ||
+ | |||
+ | '''On the terminal''' | ||
+ | |||
+ | $ sdf cpp | ||
+ | $ cd /usr/local/pwrp/cpp/src/appl/ | ||
+ | $ g++ -g -c ra_myappl.cpp -o $pwrp_obj/ra_myappl.o -I$pwr_inc -DOS_LINUX=1 -DOS=linux -DHW_X86=1 -DHW=x86 -DOS_POSIX | ||
+ | $ g++ -g -o $pwrp_exe/ra_myappl $pwrp_obj/ra_myappl.o $pwr_obj/pwr_msg_rt.o -L$pwr_lib -lpwr_rt -lpwr_co -lpwr_msg_dummy -lrt -pthread | ||
+ | |||
+ | '''On Proview''' | ||
+ | * Shift+Ctrl+B Node + B | ||
+ | * Tools -> Runtime Monitor | ||
+ | * Start Runtime | ||
+ | * File -> Start Runtime Navigator | ||
+ | * right arrow key Database | ||
+ | * right arrow key plant | ||
+ | * MB3 curve Object Graph | ||
+ | |||
+ | |||
+ | '''On the terminal''' | ||
+ | $ ra_myappl | ||
+ | |||
+ | '''Automatically Starting the Application When Proview Starts''' | ||
+ | * Open the file /usr/local/pwrp/cpp/bld/common/load/ld_appl_***.txt | ||
+ | * In the User applications section, add the line: | ||
+ | ra_myappl, ra_myappl, noload, run, ra_myappl, 12, nodebug, "" |
Latest revision as of 06:57, 16 July 2014
These are the step by step instructions to create the C++ program from the Proview "Designer's Guide" Chapter 14 - Application Programming
Key: MB1 = Left Mouse Button, MB2 = Middle Mouse Button, MB3 = Right Mouse Button
Open Proview
- Ctrl+E
- MB1 $Hier
- MB2 right panel
- right arrow key on Oxx $Hier
- ObjectName application
- MB1 ProjectReg
- MB2 in application $Hier
- right arrow key on Oxx $ProjectReg
- ObjectName cpp
- Ctrl+E
- Yes
- Yes
- MB3 cpp Open Project...
- Next
- Next
- No
- Next
- Next
- Next
- Next
- Yes
Configure RootVolume
- Next
- Next
- Next
- MB1 Plant -> $PlantHier
- MB2 right panel
- right arrow key on Oxx $PlantHier
- ObjectName plant
- MB1 AllClases -> pwrb -> XyCurve
- MB2 in plant $PlantHier
- right arrow key on Oxx XyCurve
- ObjectName curve
- Ctrl+E
- Yes
/usr/local/pwrp/cpp/src/appl/ra_myappl.cpp
#include <math.h> #include "pwr.h" #include "pwr_baseclasses.hpp" #include "rt_gdh.h" class ra_myappl { pwr_Class_XyCurve *curve_ptr; pwr_tRefId dlid; public: ra_myappl() {} void init(); void scan(); void close(); }; void ra_myappl::init() { pwr_tStatus sts; pwr_tOName name = "plant-curve"; // Connect to database sts = gdh_Init( "ra_myappl"); if ( EVEN(sts)) exit(0); // Direct link to curve object sts = gdh_RefObjectInfo( name, (void **)&curve_ptr, &dlid, sizeof(*curve_ptr)); if ( EVEN(sts)) exit(0); } void ra_myappl::scan() { for ( unsigned int i = 0;;i++) { if ( i % 5 == 0) { // Calculate x and y coordinates for a sine curve every fifth second for ( int j = 0; j < 100; j++) { curve_ptr->XValue[j] = j; curve_ptr->YValue[j] = 50 + 50 * sin( 2.0 * M_PI * (j + i) / 100); } // Indicate new curve to graph curve_ptr->Update = 1; } else if ( i % 5 == 2) curve_ptr->Update = 0; sleep(1); if ( i > 360) i = 0; } } void ra_myappl::close() { gdh_UnrefObjectInfo( dlid); } int main() { ra_myappl myappl; myappl.init(); myappl.scan(); myappl.close(); }
Create file /usr/local/pwrp/cpp/src/appl/ra_myappl.h (this file just needs to exist, it should be empty)
On the terminal
$ sdf cpp $ cd /usr/local/pwrp/cpp/src/appl/ $ g++ -g -c ra_myappl.cpp -o $pwrp_obj/ra_myappl.o -I$pwr_inc -DOS_LINUX=1 -DOS=linux -DHW_X86=1 -DHW=x86 -DOS_POSIX $ g++ -g -o $pwrp_exe/ra_myappl $pwrp_obj/ra_myappl.o $pwr_obj/pwr_msg_rt.o -L$pwr_lib -lpwr_rt -lpwr_co -lpwr_msg_dummy -lrt -pthread
On Proview
- Shift+Ctrl+B Node + B
- Tools -> Runtime Monitor
- Start Runtime
- File -> Start Runtime Navigator
- right arrow key Database
- right arrow key plant
- MB3 curve Object Graph
On the terminal
$ ra_myappl
Automatically Starting the Application When Proview Starts
- Open the file /usr/local/pwrp/cpp/bld/common/load/ld_appl_***.txt
- In the User applications section, add the line:
ra_myappl, ra_myappl, noload, run, ra_myappl, 12, nodebug, ""