From: Marques, H. G <hg...@es...> - 2006-03-28 14:37:54
|
Hi Radu... I downloaded the changes you made to the CVS but now I have a = javaclient2.xdr.OncRpcException (see bellow). I tried the new code in my = yesterday's example (lineSize =3D 32, if you remember) and I also made a = simpler example (see code bellow) but I keep having the exception. The = example you sent me in the weekend works fine, but that is because the = number of points you used is >=3D 64. I tried to see what was the = problem in the Graphics2DInterface but the manipulation of the bytes you = used for encoding the information is a bit confusing for me as I'm not = familiar with the neither the xdr encoding nor the format of the = messages exchanged with player/stage. =20 sorry about the insistence man... :( cheers, hugo ******************************************** BEGINNING OF CODE = ********************************* robot =3D new PlayerClient (host,port); graphicsInterface =3D robot.requestInterfaceGraphics2D(0, 1); robot.runThreaded(-1, -1); =20 graphicsInterface.clearScreen (); PlayerGraphics2dCmdPolyline p =3D new PlayerGraphics2dCmdPolyline (); PlayerColor color =3D new PlayerColor (); color.setAlpha (0); color.setRed (0); color.setGreen (0); color.setBlue (0xff); p.setCount (2); PlayerPoint2d[] points =3D new PlayerPoint2d[2]; points[0] =3D new PlayerPoint2d (); points[0].setPx (-1.0f); points[0].setPy (-1.0f); points[1] =3D new PlayerPoint2d (); points[1].setPx (1.0f); points[1].setPy (1.0f); p.setPoints (points); p.setColor (color); graphicsInterface.drawPolyline (p); try { Thread.sleep (100); } catch (Exception e) { e.printStackTrace(); } ******************************************** END CODE ***** BEGINNING OF = EXCEPTION ********************************* Exception in thread "main" javaclient2.PlayerException: [Graphics2D] : = Error while XDR-encoding draw command: javaclient2.xdr.OncRpcException: = ONC/RPC buffer overflow at = javaclient2.Graphics2DInterface.drawPolyline(Graphics2DInterface.java:181= ) at Agent.testGraphics(Agent.java:368) at Agent.initRobot(Agent.java:305) at Agent.initialize(Agent.java:136) at Agent.main(Agent.java:441) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at = sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java= :39) at = sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorI= mpl.java:25) at java.lang.reflect.Method.invoke(Method.java:585) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:90) Caused by: javaclient2.xdr.OncRpcException: ONC/RPC buffer overflow at = javaclient2.xdr.XdrBufferEncodingStream.xdrEncodeInt(XdrBufferEncodingStr= eam.java:181) at = javaclient2.xdr.XdrEncodingStream.xdrEncodeFloat(XdrEncodingStream.java:3= 34) at = javaclient2.Graphics2DInterface.drawPolyline(Graphics2DInterface.java:156= ) ... 9 more ******************************************** END OF EXCEPTION = ********************************* ---------------------------------------------------- Hugo Gravato Marques, University of Essex, PhD Student PHONE: +44 (0)7854917241, England or +351 962482416, Portugal ADDRESS: University of Essex, Department of Computer Science, Wivenhoe Park, Colchester Essex, CO4 3SQ, UK WEB: http://privatewww.essex.ac.uk/~hgmarq/ =20 -----Original Message----- From: jav...@li... on behalf of Radu = Bogdan Rusu Sent: Mon 27/03/2006 23:12 To: jav...@li... Subject: Re: [Java-player-users] Graphics2D interface =20 Ok, since the fix seems to affect more than one file (Player-wise),=20 ignore changing your player distribution for now, and use the latest=20 Javaclient2 CVS version. I just commited the latest changes which should = work with the *current* Player version (CVS). Once Player 2.1 is out, I=20 will change it. Best, Radu. Radu Bogdan Rusu wrote: > Aham!!! Evrika! ;) > > We just found another Player bug. The fix for this one is trivial=20 > though. I envision Player in a few months being 99.99% bug free at=20 > this rate! :) > > Unfortunately I don't have commit rights to that part of the=20 > repository (libplayercore)... so I'll ask Brian to do it for us now. > > If you don't want to "cvs" Player... go into player.h yourself, search = > for the player_graphics2d_cmd_points_t,=20 > player_graphics2d_cmd_polyline_t and player_graphics2d_cmd_polygon_t=20 > structures, and modify the first member from "uint16_t count;" to=20 > "uint16_t points_count;". Then recompile Player, and that should be = it. > > There is one small fix for Javaclient2 as well... I am committing it=20 > now, and then waiting for Brian to patch Player, and probably test=20 > again in the morning. > > Cheers, > Radu. > > Marques, Hugo G wrote: > >> Hi Radu... >> >> first of all thank's for the quick implementation of the interface... = >> I really needed it in order to continue my experiments... >> >> I tryed to run your code and it works perfectly... but if I try to=20 >> use an PlayerGraphics2dCmdPolyline object with the number of lines=20 >> smaller than 64 it simply does not show anything... I tryed to show a = >> simple line on Stage with only 2 points using the same idea you used=20 >> in the example and it did not work... Then I hacked slightly your=20 >> code (see bellow) in order to print only part of the circles and it=20 >> did not worked as well... >> >> I then tried to solve the issue with the class=20 >> PlayerGraphics2dCmdPolygon but I had the same problem. I tried to=20 >> went through the source code of playerclient and the=20 >> graphics2DInterface and it seemed fine to me... >> Another thing that you might want to have a look in the class=20 >> PlayerGraphics2dCmdPolygon is that if you do not setFill_color it=20 >> gives an exception, when it could probably use a default=20 >> (transparent?) value... >> >> Thank you very much Regards... >> Hugo >> >> ************************************* CODE ******************* >> >> PlayerClient robot; >> Graphics2DInterface graphicsInterface; >> >> robot =3D new PlayerClient ("localhost", 6665); >> graphicsInterface =3D robot.requestInterfaceGraphics2D(0, 1); >> robot.runThreaded(-1, -1); >> >> graphicsInterface.clearScreen (); >> >> PlayerGraphics2dCmdPolyline p =3D new PlayerGraphics2dCmdPolyline (); >> >> PlayerColor color =3D new PlayerColor (); >> color.setAlpha (0); >> color.setRed (0); color.setGreen (0); color.setBlue (0xff); >> int lineSize =3D 32; >> p.setCount (lineSize); >> >> for (double r =3D 0; r < 1.0; r +=3D 0.05) { >> PlayerPoint2d[] points =3D new PlayerPoint2d[lineSize]; >> for (int j =3D 0; j < lineSize; j++) { >> points[j] =3D new PlayerPoint2d (); >> points[j].setPx ((float)(r * Math.cos (j * Math.PI / 32))); >> points[j].setPy ((float)(r * Math.sin (j * Math.PI / 32))); >> System.out.println(" Point: "+points[j].getPx()+",=20 >> "+points[j].getPy()); >> } >> >> p.setPoints (points); >> p.setColor (color); >> >> graphicsInterface.drawPolyline (p); >> >> try { Thread.sleep (100); } catch (Exception e) { >> e.printStackTrace(); } >> >> ************************************* END CODE ******************* >> >> >> >> ---------------------------------------------------- >> Hugo Gravato Marques, University of Essex, PhD Student >> PHONE: +44 (0)7854917241, England or +351 962482416, Portugal >> ADDRESS: University of Essex, Department of Computer Science, >> Wivenhoe Park, Colchester Essex, CO4 3SQ, UK >> WEB: http://privatewww.essex.ac.uk/~hgmarq/ >> =20 >> > --=20 | Radu Bogdan Rusu | http://rbrusu.com/ | http://www9.cs.tum.edu/people/rusu/ | Intelligent Autonomous Systems | Technische Universitaet Muenchen |