00001 /* --------------------------------------------------------------------------- 00002 Phission : 00003 Realtime Vision Processing System 00004 00005 Copyright (C) 2003 Philip D.S. Thoren (pthoren@cs.uml.edu) 00006 University of Massachusetts at Lowell, 00007 Laboratory for Artificial Intelligence and Robotics 00008 00009 This file is part of Phission. 00010 00011 ---------------------------------------------------------------------------*/ 00012 #include <FLDisplayTest.h> 00013 #include <phission.h> 00014 00015 /* ------------------------------------------------------------------------ */ 00016 int usage() 00017 { 00018 printf("\n\n\tUsage:\n"); 00019 printf("\t\t\t--help\t\t\tdisplay usage\n"); 00020 printf("\t\t\t--test <value>\tsleep 'value' seconds and then close test\n"); 00021 printf("\n\n"); 00022 00023 exit(1); 00024 } 00025 00026 /* ------------------------------------------------------------------------ */ 00027 int main(int argc, char *argv[] ) 00028 { 00029 phFUNCTION("main") 00030 00031 int displaysOpen= 1; 00032 int trycount = 1; 00033 int tries = 4; 00034 /* Utility class to ease the starting and stopping of displays, captures and 00035 * pipelines */ 00036 phSystem system; 00037 00038 FLDisplay display(320,240,"FLDisplayTest"); 00039 00040 /* Remove the code below when using this code as an example. 00041 * 00042 * This just checks whether "--test" has been specified with 00043 * a time value argument. It's for testing all the examples 00044 * without the need for human intervention. */ 00045 int test = 0; 00046 00047 phArgTable *arg_parser = new phArgTable(); 00048 00049 /* Setup and parse all the arguments */ 00050 rc = arg_parser->add("--test",&test,phARG_INT); 00051 phCHECK_RC(rc,NULL,"arg_parser->add"); 00052 rc = arg_parser->add("--help",(void *)&usage,phARG_FUNC); 00053 phCHECK_RC(rc,NULL,"arg_parser->add"); 00054 00055 rc = arg_parser->parse(argc,argv); 00056 phCHECK_RC(rc,NULL,"arg_parser->parse"); 00057 00058 00059 rc = system.addDisplay(&display); 00060 phPRINT_RC(rc,NULL,"system.addDisplay(&display)"); 00061 00062 00063 /* 1.) Open and close test */ 00064 /* startup */ 00065 phPROGRESS("1.) Open & Close Test\n"); 00066 00067 rc = system.startup(); 00068 phPRINT_RC(rc,NULL,"system.startup()"); 00069 00070 phMSleep(1000); /* 1 second */ 00071 00072 rc = system.shutdown(); 00073 phPRINT_RC(rc,NULL,"system.shutdown()"); 00074 00075 00076 00077 /* 2.) Open and wait for user to close... test */ 00078 phPROGRESS("2.) Open & Wait for user to close Test - try %d of %d\n", 00079 trycount, tries ); 00080 00081 /* Display startup */ 00082 rc = system.startup(); 00083 phPRINT_RC(rc,NULL,"system.startup()"); 00084 00085 while (displaysOpen) 00086 { 00087 /* Sleep a while, don't loop tightly */ 00088 00089 phMSleep(100); 00090 00091 /* Yielding is optional. This gives up the thread's timeslice 00092 * to prevent slow response in other threads. It consumes more 00093 * CPU cycles than sleeping. Use it instead of sleeping if 00094 * this loop is processing anything */ 00095 00096 /* phYield(); */ 00097 00098 displaysOpen = 0; 00099 if (display.isOpen()) 00100 { 00101 displaysOpen = 1; 00102 } 00103 00104 /* Reopen the window X times */ 00105 if ((displaysOpen == 0) && (trycount < tries)) 00106 { 00107 rc = display.open(); 00108 phPRINT_RC(rc,NULL,"display.open"); 00109 00110 displaysOpen = 1; 00111 trycount++; 00112 00113 phPROGRESS("2.) Open & Wait for user to close Test - try %d of %d\n", 00114 trycount, tries ); 00115 } 00116 00117 /* Remove this if block when using this code as an example */ 00118 /* Set the loop control value to end the loop when testing */ 00119 if (test > 0) 00120 { 00121 displaysOpen = 0; 00122 phSleep(test); /* test's value should be a time (in secs) value > 0*/ 00123 } 00124 } 00125 00126 /* Display shutdown */ 00127 rc = system.shutdown(); 00128 phPRINT_RC(rc,NULL,"system.shutdown()"); 00129 00130 error: 00131 phDelete(arg_parser); 00132 00133 return phSUCCESS; 00134 }
Copyright (C) 2002 - 2007 |
Philip D.S. Thoren ( pthoren@users.sourceforge.net ) University Of Massachusetts at Lowell Robotics Lab |