Messages from Usenet group comp.lang.idl-pvwave, compiled by Paulo Penteado
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
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