#VLT & QuickB
14 messages in this thread
Does anybody have a VLT script to download weather maps from CIS?
I am trying to write one, to run unattended (ie, batch mode, early in the
morning), and I want to use CIS QuickB (to make it fast as possible), but
VLT or the xprquickb.library insists on putting up interactive requesters
asking for filename, buffer size, and other parameters.
Does anybody know how to turn all these off? Presumably by specifying
everything in advance…
AdThanksVance! Thanks in Advance 😉
I can't really say what might be wrong, my VLT/quickb doesn't do that.
If you'd like to post the script, or send it to me though CMail, I'd be
glad to see if I can find the problem!
Bob Comer — Cruising the nets on Autopilot!
Cheyenne, Wyoming U.S.A.
Ok, you asked for it! 🙂 This is just the first cut. I had this working
originally with Xmodem, but that is kind of slow. I want to speed it up
by using QuickB. BTW, which xprquickb.library are you using? Maybe I
have a different quickb lib, or an older version. The version command
tells me mine is "XPR Quick B v1.2". It is 15016 bytes long.
/** GetWeather.vlt **/
trace commands
userid="73227,2656"
password="**********"
/* Add libraries if necessary */
if show("l", "rexxarplib.library") = 0 ,
then do
call addlib('rexxsupport.library', 0, -30, 0)
call addlib('rexxarplib.library', 0, -30, 0)
call addlib('rexxmathlib.library', 0, -30, 0)
end
/* First define some text strings and procedures. Here we assume * a
Hayes compatible modem. If you have a different modem, you should * be
able to change just the following three strings.
*
* Here's a set of responses that is given by Hayes modems: */
response = "OK"
connectstr = "CONNECT 9600"
busystr = "BUSY"
nocarrierstr = "NO CARRIER"
/* build a date-time string for report names */
rptdate='.'||compress(date('o'),'/')||'-'||time('h')
forecastname="Forecast" || rptdate || ".txt"
/* Here is a hangup script that may work for Hayes modems.
* You could also just drop DTR if that works for you:
*
* hangupscript = "hangup" */
hangupscript = "on (OK) continue; send (+++); delay 2; send (ATH); "
hangupscript = hangupscript || "on (OK) (); delay 1; send (*R*R)"
/* This script I use to get the modem in line after changing parity. *
You may be able to get away with not doing anything, like this: *
* retrainscript = "" */
retrainscript = "on (OK) exit; $1: delay .3; send (AT*R); goto $1"
/* name of VLT rexx port */
vltport="GetWeather"
/* Okay, to the real work. First set the port to that of this invocation
* of VLT. */
address command "runwsh VLT:VLT +u 2 +n" vltport
address command WAITFORPORT vltport
address value vltport
/* Check if we're set up correctly without requesters coming up. * If
not, call the setup program */
call pragma('W','NULL')
/*
*
* Preset the cancel flag to something, announce who we're calling, *
set baud and parity. Then do the first (predial) set of commands. */
vlt.CANCELFLAG = "start"
"message (Dialing CompuServe…)"
"baud 9600"
"parity 7E1"
"handshake Xon"
"ansicolormode off"
"volume 0"
"buffersize 8192"
"rendermode quick"
"transfer Mode image"
"transfer protocol Quickb"
"xpr INIT OY"
/* "xmodemmode 128 CRC" */
/* We may have changed parity, and the modem may need some time. */ if
retrainscript ~= "" then retrainscript
/* Send the modem string if any. */
"on ("response") continue; send (ATE0 Q0 V1 *X2AE1 X4*R*N); delay 5"
/* Set up the "CONNECT" trap. Make it start postdial set of commands *
if there are any. */
"trap add 314 install ("connectstr") (graphicslock on;screeng off; echo
off; cancel $vltphone_wait connect)"
/* Set up the BUSY and NO CARRIER traps. Note the use of the new feature
* of the CANCEL command. */
"trap add 315 install ("busystr") (cancel $vltphone_wait busy)" "trap
add 316 install ("nocarrierstr") (cancel $vltphone_wait nocarrier)"
/* Send dial string and wait until the "pause" gets cancelled */
"$vltphone_wait: send (ATDT650-5143*R); pause"
/* We got cancelled. See which event cancelled us. */
event = vlt.CANCELFLAG
/* Remove the traps but only the ones we used. */
"trap remove 314 315 316"
/* If we got connected, then do our thing. */
if upper(event) = "CONNECT" ,
then do
"message (Connected to CompuServe)"
"send (*R)"
"wait (Host Name:) 3"
"send (CIS*R)"
"wait (User ID:) 3"
"send ("userid"*R)"
"wait (Password:) 3"
"send ("password"*R)"
"wait (!) 15"
"send (go weather*R)"
"wait (!)" 60
"send (1*R)"
"wait (MORE !) 8"
"cd AP:Headlines"
"send (1*R)"
"wait (local:) 5"
"capture" forecastname
"send (*R)"
"wait (!) 15"
"capture flush; capture off"
"send (*R)" /* get weather menu again */
"wait (MORE !) 4"
"cd AP:WeatherMaps"
"send (4*R)" /* radar map */
"wait (!) 3" /* protocol */
"send (6*R)" /* xmodem */
"wait (is complete) 5"
"send (Radar.wmap*R)"
"file receive Radar.wmap" /* do the receive */
call grabamap(7,"ConusSat")
call grabamap(9,"00_Weather")
call grabamap(10,"24_Weather")
call grabamap(11,"48_Weather")
call grabamap(13,"Night_Lows")
call grabamap(14,"24_Highs")
call grabamap(18,"SCen_NA")
"send (bye*R)"
"wait (Host Name:) 20"
hangupscript
end
/* If we need to resume, send a few hangups. */
if upper(event) = "RESUME" then hangupscript
/* Check if we got an abort event. If so, quit. */
if upper(event) = "ABORT" ,
then "message (Aborted!)"
"exit VLT quiet"
exit 0
grabamap: procedure
mapnum=arg(1)
mapname=arg(2)
"wait (MORE !) 3"
"send ("mapnum"*R)"
"send ("mapname".wmap*R)"
"file receive" mapname".wmap"
return
Nice script!
I've found your problem with the interactive quickb protocol requesters.
It's just a matter of quickb is an autostarting proto call, so you don't
want to do a "file receive" to start it, all that has to be done, is to
send the file name<CR> at the CIS file name prompt, CIS will then start
the transfer.
Then you'll have to have VLT trap for the file transfer done message, to
go on to the next map(s). (I'll fix up this part tonight, and if you
want, I can send you what I've got.)
Another couple of things I see in the script, is that your setting the
parity to 7e1. This should probably be set to 8n1 unless you've got a
wierd feed into CIS. You should also send the VLT command "strip on" to
not get the garbled characters at startup that you would normally get if
you login at 8n1 parity. (my modem couldn't handle the change to 8n1 to
start the download with a parity of 7e1)
Also, CTS/RTS handshaking might be a bit faster than Xon/Xoff.
Bob Comer — Cruising the nets on Autopilot!
Cheyenne, Wyoming U.S.A.
Wow… Thanx for all the advice. BTW, I cannibalized this script from
someone else, so I can't take all the credit. Yes, by all means when you
get yours going, send it to me or upload it (I am sure there might be some
other folks that would like to have these scripts.) Once I get mine going
to my satisfaction, I shall upload it too.
Here's the meat of your code back… It works pretty well now, though
it's not waiting for the ":" character correctly, so I just put in a delay
of 1 second to make things work. It probably could be sped up a little if
I could figure out why it doesn't see the ":"'s.
if upper(event) = "CONNECT" ,
then do
"message (Connected to CompuServe)"
"send (*R)"
"wait (Host Name:) 3"
"send (CIS*R)"
"wait (User ID:) 3"
"send ("userid"*R)"
"wait (Password:) 3"
"send ("password"*R)"
"wait (!) 15"
"send (go weather*R)"
"wait (!)" 60
"send (1*R)"
"wait (MORE !) 8"
"cd AP:Headlines"
"send (1*R)"
"wait (local:) 5"
"capture" forecastname
"send (*R)"
"wait (!) 15"
"capture flush; capture off"
"send (*R)" /* get weather menu again */
"wait (MORE !) 4"
"cd AP:WeatherMaps"
"send (4*R)" /* radar map */
"wait (!) 3" /* protocol */
"send (6*R)" /* xmodem */
"wait (is complete) 5"
"wait (:) 1"
"send (Radar.wmap*R)"
call grabamap(7,"ConusSat")
call grabamap(9,"00_Weather")
call grabamap(10,"24_Weather")
call grabamap(11,"48_Weather")
call grabamap(13,"Night_Lows")
call grabamap(14,"24_Highs")
call grabamap(18,"SCen_NA")
"send (bye*R)"
"wait (Host Name:) 20"
hangupscript
end
/* If we need to resume, send a few hangups. */
if upper(event) = "RESUME" then hangupscript
/* Check if we got an abort event. If so, quit. */
if upper(event) = "ABORT" ,
then "message (Aborted!)"
"exit VLT quiet"
exit 0
grabamap: procedure
mapnum=arg(1)
mapname=arg(2)
"wait (MORE !)"
"send ("mapnum"*R)"
"wait (:) 1"
"send ("mapname".wmap*R)"
return
Bob Comer — Cruising the nets on Autopilot!
Cheyenne, Wyoming U.S.A.
I eventually converged on this code also. However, QuickB just doesn't
seem to work on an A2232 board. I am seeing exactly the same symptoms
under VLT that I see with AP: the script sends the desired map name to
CIS, and then several garbage characters appear, and the download gets
stuck waiting. I guess I'll have to rearrange my ports, and put the modem
back on port 0 (the original serial port).
Have you tried the bplus protocol? Maybe its implementation will work
with the A2232.
The code is pretty similar, but it might be worth a shot.
Bob Comer — Cruising the nets on Autopilot!
Cheyenne, Wyoming U.S.A.
The XPR BPlus library is extremely buggy … I would not recommend it.
-sja
FX: Wakes up blinking…
Now that's interesting – no-one has reported XPR Bplus as being "extremely
buggy" to me.
There have been problems using it with NCOMM, but then this was so for
Quick B too. The program seemed intent on filtering out the important
control sequences before the protocol could see them, a problem I could
never work around. It has always worked OK for me with TERM, both on an
A500 and more recently on an A4000/030. I tested it on an earlier version
of VLT and it worked fine then. I can't say for any later versions, I have
stuck with TERM since for my interactive sessions.
I was offline for quite a while last year, not the fault of BPlus I must
add, so perhaps I missed the threads where BPlus was flamed to cinders?
At the risk 3rd degree burns, what have other peoples experiences been?
For serious CIS use, of course, everyone should use Autopilot if possible,
as I do. 😉
Terence,
When I used it, it crashed and burned on me often, I switched back to the QB
library. If you are interested, I could send you C source for a BPlus module
(not XPR format) that is a relative stable implementation and includes realtime
GIF display.
>I was offline for quite a while last year, not the fault of BPlus I must
>add, so perhaps I missed the threads where BPlus was flamed to cinders?
>At the risk 3rd degree burns, what have other peoples experiences been?
i have used term and the xprbplus.lib (v1.0) for about 1.5 years without
any serious problems. i used xprquickb.lib for a year before that, again
with out any major problems. i've used a hayes ultra & usr sportster 14.4k
fax with baudbandit.device v1.4 and my modem locked at 19.2k.
bob – 1:226/600.3@fidonet.org
– zooming by in his TIE Interceptor on AutoPilot
Of course, AutoPilot will automatically display the weathermaps as they
are being downloaded and allow you to save or not save them once they're
on the screen.
— Dale L. Larson, Intangible Assets Manufacturing
— INTERNET:dale@iam.com
Uh, not really. I am running this on a CBM a2232 multi-serial board, and
there is (was, still?) a known problem with downloading weather maps from
CIS with an A2232 port. Besides, as I said, this is done early morning
via a cron task, and I don't want to be there at 0-dark-30 when it runs.
However, this reminds me to check if this is still broken in AP with an
a2232 board…..