From octave-graphics-request at bevo dot che dot wisc dot edu Fri May 3 16:16:48 2002 Subject: tcl->octave with sockets From: Paul Kienzle To: octave-graphics at bevo dot che dot wisc dot edu Date: Fri, 3 May 2002 17:16:27 -0400 --nzBZO5zC0uMSeAMf Content-Type: text/plain; charset=us-ascii Enclosed is a socket implementation of a tcl-octave connection. Here is an example session: ## Start the server: # compile the server mkoctfile listen.cc # start the server octave listen(3132); ## Test the client: wish source talk.tcl octave $ localhost:3132 ;# localhost:3132 is the default # evaluate a command in octave $ eval { a = [1,2,3,4,5] } # return a result from octave $ expr a(2) # return a result as a BLT vector (requires BLT) package require BLT $ vector y a(2:4) set ::y(:) # grab a matrix as a tcl image $ eval { load sample.dat } $ eval { colormap(ocean) } image create photo sample $ image sample imagesc(sample) $ sync ;# wait for photo to arrive pack [button .b -image sample] # close the connection $ close exit # I haven't yet written # $ capture command ;# show the output of the command # $ console ;# open up a direct console to this interpreter ## An example application: (with the octave server still running) ./matrix.tcl # At "Command:" type "load sample.dat" # The matrix should now be displayed. You can # play with the colormaps, click with the middle # button on the image to show a slice, click with # the left button to zoom, click with the right # button to unzoom. Change the matrix, e.g., # "x = log(sample+1)" at "Command:" followed by # "x" at "Octave Matrix Name:" The main conclusion is that sockets (the way I'm handling them anyway) are too slow for good interactive response on callbacks. They are probably fine for console and plotting, but for mouse dragging they are too slow. Yes I could throttle down the mouse, but with pthreads and shared memory that isn't necessary. The table refresh is also much too slow --- this would be easy to fix by moving the matrix over to the tcl side, but again with pthreads and shared memory this wouldn't be necessary. I welcome any suggestions for improving the speed of the link with sockets, but if none are forthcoming, I think pthreads is the only way to go. Paul Kienzle pkienzle at users dot sf dot net --nzBZO5zC0uMSeAMf Content-Type: application/x-tar-gz Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="tcloctsock.tar.gz" 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 GT7DZ/gMn+EzfIbP8MHn/wF5leEbADACAA== --nzBZO5zC0uMSeAMf--