07-30-2005 05:19 AM
Does a C, or VB or whatever compiler have DDE support? No. They allow to write applications which support DDE. So does Labview: see under ..labview\examples\comm\ddeexam.llb and find some small apps that do DDE. The DDE support is there since LV 3.0 or 4.0, I believe, but since DDE is sort of out-dated (more or less replaced by ActiveX) the DDE VIs are no longer found in the functions pallette, though they are still there.
@larimert wrote:
It would be nice if Labview exposed some ?Handles? to windows so that DDE clients and/or servers could "POKE" into them. I have an application that I'm writing which talks to a server that requires me to "DDE Execute" with a "source|topic!Item" as part of the string and it then "DDE Pokes" the data into that location. The problem is that since LV doesn't have anything exposed that I can "Poke" into, I actually have to have the data "Poked" into an Excel workbook and then read it from there. This, of course, necessitates going thru the song-n-dance routine of opening and setting up the Excel workbook with a named range and etc. I have not come across any work around other than that,but it would be nice if there was one such that LV could handle everything on its own.Thank you,Tom Larimer
07-31-2005 01:47 PM
07-31-2005 01:56 PM
08-01-2005 03:59 AM
08-01-2005 08:41 AM
You can start by opening a new thread if you have a question and not posting it to this one, where the question doesn't belong.
Other than that, when built into an EXE, the EXE serves as an LLB (a VI library). So, if your VI path was c:\foo.vi, for the EXE it will be c:\foo.exe\foo.vi. This means that if you rely on the VI path to get the file path, you need to do another strip path when running the EXE. To do this, create a property node from the Application Control palette. Select the Application>>Kind property and wire it into a case structure. For the default, wire the path through. For the run-time system, add a strip path inside the case.
08-01-2005 09:50 AM
08-01-2005 10:11 AM
Locals\globals - the way I understand it, when you read the local into a wire, the data in the wire can no longer be associated with the data in the control. Therefore, you need a copy of the data.
Large arrays - apparently, when allocating memory for anything, LV needs a contiguous memory block. Finding 500 free and contiguous MB can be tricky if your memory is fragmented, even if you have 2 GB of RAM.
I'm not sure about the Initialize Array thing.
08-01-2005 10:36 AM
08-01-2005 10:45 AM - edited 08-01-2005 10:45 AM
Message Edited by Raistlin on 08-01-2005 10:46 AM
08-01-2005 11:58 AM
@Raistlin wrote:
The problem is that, as I understand it, there is a certain need to make LabVIEW more of a generic purpose programming language.
"Need" is problematic. Many users want this (including me), but as far as I know, NI makes most of its money from hardware and so [guess] places more emphasis on making it easier to quickly build programs and work with hardware than on making LV more general purpose (and it's their right) [/guess]. When the patents wear off (which should be soon), maybe someone will make another G compiler which will be more "general" (or maybe LV 8?), but I doubt that (unless it will be an open source one).
The automatic memory management is both one of LV's strongest points and one of its weakest. As long as you don't have any large data structures (multiple tens of MBs or a single hundreds of MB) you should usually be fine, but when you run into those large ones you have a problem. I assume you also saw Damien Gray's presentation on the subject, but if you didn't, search his posts for it.
The memory management has improved over time, but some things probably can't be avoided (for example, the local variables thing). If you have any concrete suggestions for memory management improvement, you can try making a product suggestion, but without knowing the source code for LV, I doubt you will come up with any ideas that the NI people haven't thought about.