Hi Sanny, If you want to communicate via sockets, and 'get' or 'set' properties then this is the page -
http://wiki.flightgear.org/Telnet_usage But to expand that a little 1. server - Need to run fgfs with a command - --telnet=<port> This connects fgfs to localhost:port, but the read/write is only POLLED a few times a second, forget the exact default hertz, but it is very SLOW in relative terms... The full generic 'telnet' command is - --telnet=foo,bar,<POLLRATE>,foo,<PORT>,bar The 'foo' and 'bar' can be anything, and are ignored. If you want the interface polled at your current frame rate, then the POLLRATE used should be greater than your frame rate... I usually use 100, but that does NOT mean it is polled faster than your frame rate ;=)) but at least AT your frame rate... 2. client - a tcp client to connect to the PORT Below I give a working examples in perl, but it should be easy to translate that to C/C++, or any other language of your choice... You have to get to 'know' the hundreds of properties that can be read, and set. Use fgfs MENU Debug -> Browse Internal Properties to see all what is available... Of course setting some property will have no effect if over-written by some other control, input, like setting the elevators, and then moving the joystick, or up-arrow key... And some properties are 'tied' to others, which can effect what happens, and you need to have some awareness of what is returned - a string, double, bool, etc... Lots of fun in learning ;=)) And if thought suitable, maybe the below perl tested example could be added to the wiki... HTH. Regards, Geoff. <fg-telnet.pl> #!/usr/bin/perl use strict; use warnings; use IO::Socket; use Term::ReadKey; # for ReadMode # run fgfs with TELNET enabled # --telnet=foo,bar,100,foo,5555,bar # otions my $send_run_exit = 0; # if you want fgfs to shut down my ($FGFS_IO); # Telnet IO handle my $PORT = 5555; my $HOST = 'localhost'; # or IP address my $TIMEOUT = 3; # some properties my $get_Altitude = "/position/altitude-ft"; my $get_Altitude_AGL = "/position/altitude-agl-ft"; my $get_Latitude_deg = "/position/latitude-deg"; my $get_Longitude_deg = "/position/longitude-deg"; my $get_Track = "/orientation/track-magnetic-deg"; my $nav_stg = "/instrumentation/nav/frequencies/selected-mhz"; # Did not show - maybe the wrong property... #my $hdg_bug_stg = "/autopilot/settings/heading-bug-deg"; my $hdg_bug_stg = "/instrumentation/heading-indicator/heading-bug-deg"; my @warnings = (); sub prt($) { print shift; } sub prtw($) { my $msg = shift; push(@warnings,$msg); prt($msg); } # ### FG TELNET CREATION and IO ### # ================================== sub fgfs_connect($$$) { my ($host,$port,$timeout) = @_; my $socket; STDOUT->autoflush(1); prt("Connect $host, $port, timeout $timeout secs "); while ($timeout--) { if ($socket = IO::Socket::INET->new( Proto => 'tcp', PeerAddr => $host, PeerPort => $port)) { prt(" done.\n"); $socket->autoflush(1); sleep 1; return $socket; } prt("."); sleep(1); } prt(" FAILED!\n"); return 0; } sub fgfs_send($) { print $FGFS_IO shift, "\015\012"; } sub fgfs_set($$) { my ($node,$val) = @_; fgfs_send("set $node $val"); return 1; } sub pgm_exit($$) { my ($val,$msg) = @_; # ... if ($send_run_exit) { fgfs_send("run exit"); # YAHOO! THAT WORKED!!! PHEW!!! sleep(5); } prt("Closing telnet IO ...\n"); if (defined $FGFS_IO) { close $FGFS_IO; undef $FGFS_IO; } ReadMode('normal'); # not sure this is required, or what it does exactly if (@warnings) { prt(join("\n",@warnings)."\n"); } prt($msg) if (length($msg)); exit($val); } sub get_exit($) { my ($val) = shift; pgm_exit($val,"fgfs get FAILED!\n"); } sub fgfs_get($$) { my ($txt,$rval) = @_; fgfs_send("get $txt"); eof $FGFS_IO and return 0; ${$rval} = <$FGFS_IO>; ${$rval} =~ s/\015?\012$//; ${$rval} =~ /^-ERR (.*)/ and (prtw("WARNING: $1\n") and return 0); return 1; } sub fgfs_get_aero($) { my $ref = shift; # \$aero fgfs_get("/sim/aero", $ref) or get_exit(-2); # string return 1; } ### main ### # get the TELENET connection $FGFS_IO = fgfs_connect($HOST, $PORT, $TIMEOUT) || pgm_exit(1,"ERROR: can't open socket! Is FG running, with TELNET enabled?\n"); ReadMode('cbreak'); # not sure this is required, or what it does exactly fgfs_send("data"); # switch fgfs exchange to data mode # now you can read/write properties # ================================= # read a few... my ($aero,$alt,$agl,$lat,$lon,$track,$bug,$nav); fgfs_get_aero(\$aero); # I like to setup little subs fgfs_get($get_Altitude,\$alt) or get_exit(-2); # but direct is ok fgfs_get($get_Altitude_AGL,\$agl) or get_exit(-2); fgfs_get($get_Latitude_deg,\$lat) or get_exit(-2); fgfs_get($get_Longitude_deg,\$lon) or get_exit(-2); fgfs_get($get_Track,\$track) or get_exit(-2); prt("Presently flying [$aero], at $lat,$lon, $alt feet, $agl AGL, on $track\n"); # and say you have set the autopilot to follow the # heading bug, or navaid... $bug = int($track + 0.5); $bug += 20; # swing 20 degrees $bug -= 360 if ($bug > 360); $nav = '118.5'; prt("Setting heading bug to $bug, nav to $nav\n"); fgfs_set($hdg_bug_stg,$bug); # hmmm, no show - maybe wrong property! fgfs_set($nav_stg,$nav); # this works... # etc etc etc until exit pgm_exit(0,"The End\n"); # eof </fg-telnet.pl> On Sun, 2012-06-24 at 12:04 -0500, Sanny wrote: > > Hello! > > My name is Sanny, i'm ecuadorian, i speak spanish and i'm trying to > improve my english apologize me for this :) > > I'm trying to make a flight simulator, but there are certain things > that i don't know. I want to have on my computer a client-server > communication via socket, I want to send data and modify the > properties of the simulator from my socket server, I would like to > know what the operation and what should I do. > > Can you help me? :) > > Thanks! > > Sanny :) ------------------------------------------------------------------------------ Live Security Virtual Conference Exclusive live event will cover all the ways today's security and threat landscape has changed and how IT managers can respond. Discussions will include endpoint security, mobile security and the latest in malware threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ _______________________________________________ Flightgear-devel mailing list Flightgear-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/flightgear-devel