AnsweredAssumed Answered


Question asked by VRFuser on Aug 19, 1997

Ari Hamalainen
University of Helsinki, Department of Physics

I am using VEE for developing physics education software. I use mainly a
Vernier ULI as the data acquisition system (see, if
interested). ULI is is connected to a serial port. Direct IO is used in
VEE. I have a Pentium 120 with 32 MB for program development.

I recently upgraded to VEE 4.01, and have run into some trouble in serial

It seems that in VEE 4.01, it is not possible to have a receive buffer
size larger than 1024 bytes. The Advenced Device Configuration dialog
accepts values up to 32727, but the actual buffer size is still 1024. It
is possible to set the size smaller than 1024.

I have tested it like this. First, I send various numbers of data to VEE,
and stopped the transmission before actually reading any data in VEE. As I
understand, the data should go to the receive buffer. Secondly, I read and
count the received data. Since HP VEE Labs probably do not have an ULI,
and from where the data is coming is unimportant anyway, I list here only
the part of my program that reads the data to the end, and counts the

| Until Break  |----+
+--------------+    |
      |        COM1 ( @ 9)           |
      |--+--------------------+------|          +-----------+
      |  | READ BINARY x BYTE |   X  |----------|           |
      |  |                    |======|          | Collector |---+
      |  |                    | Error|--+-------|           |   |
      +--+--------------------+------+  |       +-----------+   |
                    |             +-----+                       |
                    |             |                             |
                 +------+     +-------+                         |
                 | Next |     | Break |                         |
                 +------+     +-------+                         |
      |     +------------+   +--------------+
      |  +--| TotSize(x) |---| AlphaNumeric |
      |  |  +------------+   +--------------+
         |                   +--------------+
         +-------------------| AlphaNumeric |

The maximum amount of data that this fragment receives in VEE 4.01 is 1024
bytes. And yes, I have checked that the ULI sends more than that. Even not
tested it, I am quite sure that the problem did not occur in earlier
versions of VEE.

Without going into deep detais, it is quite important for my applications
to be able to transfer several kilobytes of data uninterruptedly. Could
you please check if there really is a bug in VEE 4.01 in here.


I have also things to ask about the serial IO actions EXECUTE BREAK,
EXECUTE CLOSE and EXECUTE RESET. I have not found a _detailed_ explanation
about what do these commands actually do. Expecially, I'd like to know
what, if any, bytes do they send to the device, and do of do not they
empty the receive buffer.

EXECUTE CLOSE for serial IO seems to be a new action in VEE 4.0. I have
not found any documentation how it should be used. When experimenting with
it, I discovered that after EXECUTE CLOSE is run first time in a program,
serial data read transactions always stops when a <LF>, or 0x0a, is
received. This of course ruins a binary mode transmission. It seems that
EXECUTE CLOSE "poisons" the the whole VEE environment, since the only cure
is to close and restart the VEE. And even more bizarre was that when _two_
VEE environments were open simultaneously, with programs using EXECUTE
CLOSE, the "poisoning" occurred _only_ in that VEE where the program was
first run; the other instance worked OK.

Univ. of Helsinki, Department of Physics
tel +358 9 191 8311 (desk), +358 40 514 3867 (mobile), fax +358 9 191 8680