Re: Frame Grabbers with IDL [message #7515] |
Tue, 26 November 1996 00:00 |
kak
Messages: 16 Registered: February 1995
|
Junior Member |
|
|
Troy Klein <troy.klein@jhuapl.edu> writes:
> Rolando Raqueno wrote:
>>
>> Does anybody have experience with having IDL control a frame grabber
>> (any recommendations) hosted by a PC?
>>
> 2) IDL on the PC seems to break up its memory allocation for variables
> into 64KB chunks.
> That is, you can't transfer more than 64KB of data at a time.
> Has anyone else run into the 64KB limit on a PC, or am I dreaming?
I had the same problem with transferring frames from a CCD camera
memory board (16MB per image series). This is a limitation of Win31
because as a 16bit operating system it cannot simply allocate
memory chunks > 64kB. There are of course workarounds but they did
not work with IDL.
My advice: change to Win95 or better to WinNT4.0 and use IDL 4.01.
In that combination you work completely in a 32bit environment
and programming that stuff is a breeze - after you learned it ;-)
One disadvantage: the upgrades will cost you quite a lot and it's
some days work to get your computer working again with the new
operating system.
Still, IMHO it's worth the effort.
Karl
|
|
|
Re: Frame Grabbers with IDL [message #7523 is a reply to message #7515] |
Mon, 25 November 1996 00:00  |
Troy Klein
Messages: 4 Registered: April 1995
|
Junior Member |
|
|
Rolando Raqueno wrote:
>
> Does anybody have experience with having IDL control a frame grabber
> (any recommendations) hosted by a PC?
>
> Thanks
>
> RVR
It can be done. I'm currently grabbing frames using IDL 3.6.1 on a 486
PC running
Windows 3.1 with a Dipix frame grabber.
There were two main problems encountered:
1) IDL call_external uses the argc, argv calling convention, while the
windows
library supplied by Dipix does not. So I had to have someone write
a library to
convert the function calls.
2) IDL on the PC seems to break up its memory allocation for variables
into 64KB chunks.
That is, you can't transfer more than 64KB of data at a time.
More explanation of 2):
The images that I am grabbing are exactly 128KB. If I create space to
hold the image
( IDL> im=intarr(256,256) ), and then pass the variable to the DLL, it
is passed by
reference, i.e. the DLL gets the address of the first element of image.
I can then
start filling the image with valid data from the DLL. However, when I
cross the 64KB
boundary, bad things start happening. Apparently the last 64KB
allocated for the image
by IDL do not directly follow the first 64KB in memory address space.
Therefore, I must
transfer each image in two pieces. Not a big deal, but it took us a
while to figure
out what the problem was.
Has anyone else run into the 64KB limit on a PC, or am I dreaming?
--
Troy Klein, Johns Hopkins University / Applied Physics Laboratory
Johns Hopkins Road, Laurel, MD 20723
E-Mail: troy.klein@jhuapl.edu
|
|
|