test-beoGrab-master.C
Go to the documentation of this file.00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038 #include "Image/Image.H"
00039 #include "Image/Pixels.H"
00040 #include "Util/Types.H"
00041 #include "Beowulf/Beowulf.H"
00042 #include "Component/ModelManager.H"
00043 #include "GUI/XWinManaged.H"
00044 #include "Util/log.H"
00045
00046 #include <cstdio>
00047 #include <cstdlib>
00048 #include <cstring>
00049
00050
00051
00052
00053
00054 int main(const int argc, const char **argv)
00055 {
00056
00057 ModelManager manager("Beo Frame Grabber Tester Master");
00058
00059
00060
00061 nub::soft_ref<Beowulf>
00062 beo(new Beowulf(manager, "Beowulf Master", "BeowulfMaster", true));
00063 manager.addSubComponent(beo);
00064
00065
00066 if (manager.parseCommandLine(argc, argv, "", 0, 0) == false) return(1);
00067
00068 TCPmessage rmsg;
00069 TCPmessage smsg;
00070
00071
00072 manager.start();
00073
00074
00075 XWinManaged* winA = 0;
00076 XWinManaged* winB = 0;
00077 XWinManaged* winC = 0;
00078 XWinManaged* winE = 0;
00079 CloseButtonListener listener;
00080
00081 smsg.addInt32(1);
00082
00083
00084 for (int rnode = 0; rnode < beo->getNbSlaves(); ++rnode)
00085 beo->send(rnode,smsg);
00086
00087 int32 rframe = 0, raction = 0;
00088
00089 while(1)
00090 {
00091 int rnode = 0;
00092 if (rnode < beo->getNbSlaves()
00093 && beo->receive(rnode, rmsg, rframe, raction, 5))
00094 {
00095 Image< PixRGB<byte> > ima = rmsg.getElementColByteIma();
00096
00097 const std::string info = rmsg.getElementString();
00098 LINFO("received info: '%s'", info.c_str());
00099
00100 if (winA == 0)
00101 {
00102 winA = new XWinManaged(ima, beo->nodeName(rnode));
00103 listener.add(winA);
00104 }
00105 else
00106 winA->drawImage(ima);
00107
00108 beo->send(rnode,smsg);
00109 }
00110 rmsg.reset(rframe, raction);
00111
00112 rnode++;
00113 if (rnode < beo->getNbSlaves()
00114 && beo->receive(rnode, rmsg, rframe, raction, 5))
00115 {
00116 Image< PixRGB<byte> > ima = rmsg.getElementColByteIma();
00117
00118 const std::string info = rmsg.getElementString();
00119 LINFO("received info: '%s'", info.c_str());
00120
00121 if (winB == 0)
00122 {
00123 winB = new XWinManaged(ima, beo->nodeName(rnode));
00124 listener.add(winB);
00125 }
00126 else
00127 winB->drawImage(ima);
00128
00129 beo->send(rnode,smsg);
00130 }
00131 rmsg.reset(rframe, raction);
00132
00133 rnode++;
00134 if (rnode < beo->getNbSlaves()
00135 && beo->receive(rnode, rmsg, rframe, raction, 5))
00136 {
00137 Image< PixRGB<byte> > ima = rmsg.getElementColByteIma();
00138
00139 const std::string info = rmsg.getElementString();
00140 LINFO("received info: '%s'", info.c_str());
00141
00142 if (winC == 0)
00143 {
00144 winC = new XWinManaged(ima, beo->nodeName(rnode));
00145 listener.add(winC);
00146 }
00147 else
00148 winC->drawImage(ima);
00149
00150 beo->send(rnode,smsg);
00151 }
00152 rmsg.reset(rframe, raction);
00153
00154 rnode++;
00155 if (rnode < beo->getNbSlaves()
00156 && beo->receive(rnode, rmsg, rframe, raction, 5))
00157 {
00158 Image< PixRGB<byte> > ima = rmsg.getElementColByteIma();
00159
00160 const std::string info = rmsg.getElementString();
00161 LINFO("received info: '%s'", info.c_str());
00162
00163 if (winE == 0)
00164 {
00165 winE = new XWinManaged(ima, beo->nodeName(rnode));
00166 listener.add(winE);
00167 }
00168 else
00169 winE->drawImage(ima);
00170
00171 beo->send(rnode,smsg);
00172 }
00173 rmsg.reset(rframe, raction);
00174
00175 if (listener.pressedAnyCloseButton())
00176 break;
00177 }
00178
00179 delete winA;
00180 delete winB;
00181 delete winC;
00182 delete winE;
00183
00184
00185 manager.stop();
00186
00187
00188 return 0;
00189 }
00190
00191
00192
00193
00194
00195