[comp.sys.amiga.programmer] AREXX Question: Reading ser: port

schur@isi.edu (Sean Schur) (04/23/91)

I am trying to use AREXX to control a Lyon-Lamb Minivas. This is a single
frame recorder controller for single framing images to videotape. The
MiniVas has a standard RS232 port. It accepts standard ASCII characters
for control. I have had complete success in using AREXX to control the
MiniVas. I have an AREXX script that will display a series of images
one by one on the Video Toaster and tell the MiniVas to grab the frame
once it is displayed. No problem.

Now I want to turn things around. Supposedly the MiniVas also sends
out standard ASCII characters reporting on it's current state. What I
want to be able to do is to have the MiniVas tell the AREXX script when 
it gets to a particular frame, then activate the Toaster at that point
to do a framegrab. The reason I want to do this is to be able to grab
a series of images to do animated image maps for Lightwave. So, for example
I could grab a series of 60 frames of a movie, then have those frames
play on the screen in an animation in Lightwave.

The problem I am having is how to run tests to figure out what ASCII 
characters are being sent by the MiniVas at exactly what point. For my
earlier script (to send characters TO the MiniVas) I could set up a 
simple script that would open the SER: port as a logical file, then
pull a character from the keyboard and do a "writech" to send the
character to the SER: port. Easy enough to do a loop so I could type a
"+" and it would start to play, and a "<" and it would rewind. I had
direct control over the MiniVas from the keyboard. 

I want to be able to do the same thing now, to send characters to the 
MiniVas, but I also want to be able to find out what the MiniVas is 
sending back. Optimally I would like some process watching the SER: port 
for any incoming characters while I send out characters as well. I can't 
run two separate AREXX scripts. If I have one running that has the SER:
port open and I run a second, the second one fails when it tries to
access the port.

The other option is to run one script in a loop. Allow me to send
a character to the MiniVas then look for a response, if there is none
let me send another character, etc. The problem I am having with this
(and it is probably AREXX ignorance) is that after sending a character
with "writech" I am using "readch,1" to look for a single character.
The program isn't receiving one and the script completely freezes, I can't
get out of it at all without rebooting. I am pretty sure that I need to
send a particular character first to tell the MiniVas that I want it
to start sending it's status. The documentation for the MiniVas is
pretty bad and I need to be able to try several different things before
I figure it out.

So, how do I tell AREXX to TRY to read a character, if it doesn't get
one within a specified length of time, to return control of the program
to me so I can type another character. It would also be desirable to
have the script echo the character to me immediately as opposed to 
writing it into a file to look at later.

Any suggestions and help would be appreciated.

Thanks.

=======================================================================
Sean Schur		    			USENET: schur@isi.edu	
Assistant Director Amiga/Media Lab		Compuserve: 70731,1102	
Character Animation Department			Plink: OSS259	
California Institute of the Arts
=======================================================================

tell@oscar.cs.unc.edu (Stephen Tell) (04/24/91)

In article <17683@venera.isi.edu> schur@venera.isi.edu (Sean Schur) writes:
>I am trying to use AREXX to control a Lyon-Lamb Minivas. This is a single
>frame recorder controller for single framing images to videotape. The
>MiniVas has a standard RS232 port. It accepts standard ASCII characters
>for control.


>		The problem I am having with this
>(and it is probably AREXX ignorance) is that after sending a character
>with "writech" I am using "readch,1" to look for a single character.
>The program isn't receiving one and the script completely freezes, I can't
>get out of it at all without rebooting. 

>So, how do I tell AREXX to TRY to read a character, if it doesn't get
>one within a specified length of time, to return control of the program
>to me so I can type another character. It would also be desirable to
>have the script echo the character to me immediately as opposed to 
>writing it into a file to look at later.

The problem is with the SER: handler; it just isn't designed for this
"give me a character if there is one, or else time out" sort of operation.

I have had good luck writing quick & dirty serial applications from C
by opening up UUSER:, a driver that comes with the AmigaUUCP package.

I use open(), and then when I try to read() a single character the read times
out with an error if there is no character to read after the timeout specified
in the open string (somthing like "UUSER:serial.device/1/R500/C0/G0" for 500
millisecond timeout).  This should work with Arexx if it handles errors from
the AmigaDos I/O routines reasonably and lets you read and write from the same
filehandle.  From C, its easier to use the lower level I/O functions, like
open() or Open() as opposed to dealing with stdio and fopen(), which don't do
bidirectional I/O quite as gracefully.  I have Arexx, but haven't used it
enough to comment on it directly.

UUSER: is designed to run under the getty program also in the UUCP package,
but it seems to work fine by itself.

>Sean Schur		    			USENET: schur@isi.edu	
>Assistant Director Amiga/Media Lab		Compuserve: 70731,1102	
>Character Animation Department			Plink: OSS259	
>California Institute of the Arts

Steve

-- 
Steve Tell       tell@cs.unc.edu    H: +1 919 968 1792   #5L Estes Park apts
CS Grad Student, UNC Chapel Hill.   W: +1 919 962 1845   Carrboro NC 27510
Duke Blue Devils:  1991 NCAA Basketball National Champions! We're Number 1 !!
UNLV 90-91 record:  "34 and DUKE."  

dac@prolix.pub.uu.oz.au (Andrew Clayton) (04/24/91)

In article <17683@venera.isi.edu>, Sean Schur writes:

> So, how do I tell AREXX to TRY to read a character, if it doesn't get
> one within a specified length of time, to return control of the program
> to me so I can type another character. It would also be desirable to
> have the script echo the character to me immediately as opposed to 
> writing it into a file to look at later.
> 
> Any suggestions and help would be appreciated.


I would like to see this information as well. 

[Sorry, no email at the moment]

Dac
--

dillon@overload.Berkeley.CA.US (Matthew Dillon) (04/25/91)

In article <3397@borg.cs.unc.edu> tell@oscar.cs.unc.edu (Stephen Tell) writes:
>In article <17683@venera.isi.edu> schur@venera.isi.edu (Sean Schur) writes:
>>I am trying to use AREXX to control a Lyon-Lamb Minivas. This is a single
>>frame recorder controller for single framing images to videotape. The
>>..
>
>UUSER: is designed to run under the getty program also in the UUCP package,
>but it seems to work fine by itself.
>
>>Sean Schur					USENET: schur@isi.edu
>>Assistant Director Amiga/Media Lab		Compuserve: 70731,1102
>>Character Animation Department			Plink: OSS259
>>California Institute of the Arts

    It does but I'm phasing it out, I haven't had the time to get it to
    look more like a console device and instead will concentrate on FIFO:
    in combination with Getty which, while still buggy, has a greater
    capability.

    Just to let you all know that UUSER: isn't going to be supported re:
    bug fixes.

>Steve
>
>--
>Steve Tell	  tell@cs.unc.edu    H: +1 919 968 1792   #5L Estes Park apts
>CS Grad Student, UNC Chapel Hill.   W: +1 919 962 1845   Carrboro NC 27510
>Duke Blue Devils:  1991 NCAA Basketball National Champions! We're Number 1 !!
>UNLV 90-91 record:  "34 and DUKE."

					-Matt

--

    Matthew Dillon	    dillon@Overload.Berkeley.CA.US
    891 Regal Rd.	    uunet.uu.net!overload!dillon
    Berkeley, Ca. 94708
    USA

caw@miroc.Chi.IL.US (Christopher A. Wichura) (04/25/91)

In article <17683@venera.isi.edu> schur@isi.edu (Sean Schur) writes:
>I am trying to use AREXX to control a Lyon-Lamb Minivas. This is a single
>frame recorder controller for single framing images to videotape. The
>MiniVas has a standard RS232 port. It accepts standard ASCII characters
>for control. I have had complete success in using AREXX to control the
>MiniVas. I have an AREXX script that will display a series of images
>one by one on the Video Toaster and tell the MiniVas to grab the frame
>once it is displayed. No problem.

A long time ago, I picked up rexxserdev.library.  This was a function
library for ARexx scripts that let you talk to the serial ports without
having to play games with SER:.  As I recall, about 3 revisions came out
within a weeks time.  A quick search of my system shows I still have the
function library, but none of the docs for it.

If someone knows where to find the most recent distribution of this
library, I'd like to know about it as well.

-=> CAW

Christopher A. Wichura                Multitasking.  Just DO it.
caw@miroc.chi.il.us  (my amiga)                          ...the Amiga way...
u12401@uicvm.uic.edu (school account)

jay@deepthot.cary.nc.us (Jay Denebeim) (04/28/91)

In article <caw.9533@miroc.Chi.IL.US> caw@miroc.Chi.IL.US (Christopher A. Wichura) writes:
>
>A long time ago, I picked up rexxserdev.library.  This was a function
>
>If someone knows where to find the most recent distribution of this
>library, I'd like to know about it as well.

Its available on deepthot, call or use the file request mailer.

>
>-=> CAW
>
>Christopher A. Wichura                Multitasking.  Just DO it.
>caw@miroc.chi.il.us  (my amiga)                          ...the Amiga way...
>u12401@uicvm.uic.edu (school account)

--

 |_o_o|\\
 |. o.| || The           Jay Denebeim
 | .  | ||  Software
 | o  | ||   Distillery
 |    |//        Address: UUCP:     mcnc.org!deepthot.uucp!jay
 ======                   Internet: jay@deepthot.cary.nc.us
                 BBS:(919)-460-7430      VOICE:(919)-460-6934