Jump to content

Rolf Kalbermatter

Members
  • Posts

    3,871
  • Joined

  • Last visited

  • Days Won

    262

Everything posted by Rolf Kalbermatter

  1. QUOTE (mesmith @ Mar 5 2009, 02:05 PM) I use SVN in several applications for some of our customers to version control Lua test scripts that they write. If they do not have a fully blown Apache server available to run the SVN repository on, I just have them install the SVN service on a regularly backed up spare machine. Usually their IT dep does the maintenance of that. This allows as many test stations as they want to be synchronized with the central repository. Each test station does a SVN Update on startup and an operator can easily force a manual Update from the application menu at any time. The application also allows to visualize the status of the local repository (modified, stale, conflict, up to date) and all individual scripts and also allows maintenance including committing changes, but most people seem to prefer SVN Tortoise to do that :-). I first intended to write an intermediate DLL to access the SVN API directly from LabVIEW, assuming this to be a cleaner solution than the command line tool. But time constraints made me opt for a System Exec approach instead for a start and it is working so smoothly I guess I won't consider going back to get the DLL interface ready. The SVN DLL API while very powerful is also quite involved (and certainly in no way suited to be interfaced directly through the Call Library Node). So I have a hard time to justify the rather big time investment since the command line tool works so good. Rolf Kalbermatter
  2. QUOTE (mesmith @ Mar 4 2009, 03:02 PM) That is because a proxy is only meant for HTTP (and possible other similar protocols like FTP sometimes). The LabVIEW TCP/IP nodes access directly the Winsock library and the thing that does for IP what a proxy does for HTTP is called a network router . So it is not a problem of the LabVIEW TCP functions but simply a question of proper setup of your network. Basically a proxy simply acts as a web server that does hand the HTTP requests through to the end server (that could again be another proxy and so on). The way to handle such a case in LabVIEW is by making a thin layer above the TCP/IP nodes. By the way the OpenG HTTP functions do some proxy server handling. But it seems they have not been packaged yet, however they are on the OpenG Toolkit CVS server repository on sourceforge. Basically you open a connection to the proxy instead and then you have to parse every HTTP request and prepend the actual end address of the desired server to every relative URL in there. Rolf Kalbermatter
  3. QUOTE (stevea1973 @ Mar 13 2009, 03:53 AM) No! LabVIEW has no way of guessing the padding of data structures and consequently it does not try to do that at all. LabVIEW itself always uses fully packed data (with possibly one exception on the VxWorks PPC real time targets but I haven't verified that for sure since I don't have the hardware handy and haven't really run into an issue with that yet). Another explanation why it does work without those padding bytes might be a #pragma pack(1) statement in the relevant header file before declaration of the data structures (and an according #pragma pack() after that, I would hope). Rolf Kalbermatter
  4. QUOTE (ACS @ Mar 11 2009, 03:38 PM) When you say it returns an array pointer do you mean returning it as function return value? That would be a very ugly way for an API to return such a parameter!! And if those process identifiers are really strings that parameter is anyhow not for direct LabVIEW consumption, really! However I would assume that they contain instead 32Bit integers for all practical OSes nowadays (possibly excluding 64 Bit versions). At least under Windows and Unix, OS Process Identifiers (or PIDs) are simply 32Bit numbers that can be passed to other APIs to identify a specific process. But since it is an array you will first need to know how big it is anyhow, before you can do anything. Can you give us the function protoytpe so we can see how it looks and what direction we will have to look for? Rolf Kalbermatter
  5. QUOTE (JustinThomas @ Mar 9 2009, 09:55 PM) 1) You could use some Install Builder like Install Shield to bundle all 3rd party libraries into one installer to be run. 2) Or you could write a small LabVIEW app that executes the various extra installers and launch that. 3) The poor mans choice would be to create a patch file that calls the multiple installers and have that executed instead. The OP of this thread however explicitly did not want to run that extra installer at all. Just bundle it on the CD so it can be installed manually if the need arises. Rolf Kalbermatter
  6. QUOTE (Jorge Moreno @ Mar 9 2009, 05:20 PM) ActiveX components need both be installed and registered on the PC you want to run them. Your Automation Nodes most probably throw errors (in the error out cluster) that you might have forgotten to handle, so the LabVIEW application tries to tell you that it can not load, initialize, or execute the ActiveX component but your lack of error handling hides that from you. Since a VB component also needs the according VB runtime installed it would be best to create a component installer in VB for your component which will also take care about bundling the right runtime and possibly other support libraries and on installation register all the necessary components on the target system. Then run that installer along with the installer for the LabVIEW application. Rolf Kalbermatter
  7. QUOTE (CzaroK @ Feb 24 2009, 11:10 AM) There are a few caveats with this for sure. First you can not add a System ODBC Data Source if you do not have administrator or at least power user rights. So I doubt this is what you want to do in a built executable. Also you can simply format the parameters that would otherwise be created with the ODBC Data Source Manager dialog into a string and pass that string to the Open Database function as connection string, instead of a name to an ODBC data source. To see what you would need to put in a string you can basically configure on your development machine such a datasource through the ODBC manager and then fgo into the registry and look at the keys in the section for your data source in HKEY_CURRENT_USER\Software\ODBC\ODBC.INI for user data sources and HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI for system data sources. You basically just put each value in there in a format <keyname>=<keyvalue> and separate each such expression with a semicolon and you should be fine. No need to create a Data Source and you can even format the actual path to your .mdb file no matter where you have it installed. Rolf Kalbermatter
  8. QUOTE (Joshuatronics @ Mar 6 2009, 10:21 AM) A program not crashing is absolutely no indication that everything is alright. Calling functions that take a buffer to return some information where the buffer is not allocate large enough, can cause anything from no problem at all until you do something else, crashing on exit only, crashing at a point much later than where the actual corruption occurred to crashing at the moment the memory corruption happens, but it could also have more subtle problems such as overwriting actual data used elsewhere in your program so that some subVI suddenly seems to return wrong results. This could theoretically go as far as corrupting some non crashing information in a VI or other file in memory and then after you save the file to disk you have a corrupted file on disk, that might not even be loadable anymore. So unless you did something you can securely attribute to having caused the lack of crashes now, I would be very uneasy about the fact that the application is not crashing anymore. Rolf Kalbermatter
  9. QUOTE (Bjarne Joergensen @ Mar 3 2009, 03:25 AM) Yes that can't work. The VI's inside an LLB are each compressed with an NI specific (by far not as good as zlib but at least something) algorithme into a resource and added to the LLB file. So the resource stream and therefore the LLB file does not contain intelligible ASCII characters due to that compression. This is so since the beginning of LLBs although NI added also an uncompressed LLB resource stream variant to the LLB format at around LabVIEW 8 but that seems only getting used when creating in the Application Builder the LLB that gets later turned into an executable. Rolf Kalbermatter
  10. QUOTE (Bjarne Joergensen @ Feb 27 2009, 10:00 AM) It won't work in LabVIEW 8.6 AFAIK. They compress most of the information in a VI file. Freee text labels on the front panel for instance can not be found anymore in this way. Rolf Kalbermatter
  11. QUOTE (torekp @ Feb 25 2009, 03:43 PM) While a path can be relative in itself the browse function does not work that way directly. You could instead use a hidden control whose browse button you make visible and then monitor the Value changing and whenever it changes make the necessary absolute to relative conversion and display it in the visible path control. There would need to be some error handling if the user decided to browse outside that directory as LabVIEWs File Select dialog can be not restricted directly to a certain subpart of the file hierarchy. Such small but rather cumbersome trivialities are probably the reason the Path control does not allow browsing relative paths. Rolf Kalbermatter
  12. QUOTE (Joshuatronics @ Feb 25 2009, 02:20 PM) There is no obvious reason for this to crash. According to the doc the 100 character input buffer for the error string should be enough. - Maybe try to make that buffer 1000 for a trial. - Maybe the error VI is supposed to only be called when not NULL. - WINAPI calling convention if not right would certainly crash this VI every single time. - Are you sure it is the error function and not one of the other VIs that crashes? There are enough other functions that get called. While WINAPI convention would badly crash if the number of parameters was not right it might be the actual value passed to the Open or Start function. Rolf Kalbermatter
  13. QUOTE (KiranVSutar @ Feb 25 2009, 05:04 AM) As I tried to explain to you, you can use some other more flexible MSI Builder. Not sure if the VB6-MSI is that much more flexible than the LabVIEW Application Builder, otherwise you would need to get something like Install Shield or similar. Basically you use the Application Builder to create your executable with all the necessary support files and then add them to your install build script for whatever MSI Builder you use. If you want to make sure that the installer also takes care about installing the LabVIEW runtime engine you would also add the according MSMs as mentioned earlier. This could however possibly cause troubles nevertheless if the custom MSM you want to add would rely on other modules such as the Visual C Runtime libraries that the LabVIEW modules might want to try to install too. Rolf Kalbermatter
  14. QUOTE (Mark Yedinak @ Feb 24 2009, 04:58 PM) Make a product suggestion at the http://digital.ni.com/applications/psc.nsf/default?OpenForm' target="_blank">Product Suggestion Center. The fact that it is there for so long (I don't think 3.0 had any printing capabilities that you could call home about so not sure it was there already ) tells me however that there is probably a very fundamental problem with this that might be hard or almost impossible to remove without causing quite a bit of other problems. But I do not know the details of it, just noticed it long ago and watched my installed printers ever since if the dialog started to get slow. Rolf Kalbermatter
  15. QUOTE (ejensen @ Feb 23 2009, 01:21 PM) Unfortunately that does not work for MSM files. They are simply MSI merge module and in fact the LabVIEW support files such as the Runtime Engine and many others that you can select in the Installer Tab are also provided as MSMs in the applibs\distkit\redist\modules (for LabVIEW 7.1). But the application Builder does not allow to add your own custom MSMs to the list of possible modules to merge into an installer. The solution is actually to use the Application Builder only to Build your executable and then use some MSI Builder (Install Shield or similar) to create your installation from there. You can add the necessary MSMs from above mentionen directory to your MSI build if you do not need to go to complicated. lvruntime.msm would be the obvious module to include into a MSI Build to add installation of the LabVIEW Runtime Engine. It does depend on other modules from that directory but that should be handled by your MSI Builder automatically if it is good for anything. You might also want to include the mkl.msm if you make use of any Advanced Analysis Library functions in your application. Note: This is only valid for LabVIEW < 8.0. The LabVIEW 8.x Project Environment/Application Builder is a lot more involved and pulls in the modules from various places including "Program Files\National Instruments\Shared\ProductCache". Rolf Kalbermatter
  16. QUOTE (wildcatherder @ Feb 19 2009, 08:07 PM) No there isn't so far such an option. The reason is probably twofold. For one whatever format the developer would come out with to print information it would be always critizied to not contain the information in the format specific users wanted. Second the information in the project window is quite involved and you can think of a myriad of things to print from that. What you can do is going with some of the Project VI Server property Nodes and methods to do your own project information enumeration and create a text file of some sort with the specific information you are interested in. Rolf Kalbermatter
  17. QUOTE (Shazlan @ Feb 22 2009, 04:49 AM) In order for IMAQdx to be able to see your camera you need to associate it with the IMAQ Firewire driver that comes with the Visions Acquisition Software. You can do that in the Windows Device Manager. Rolf Kalbermatter
  18. QUOTE (SSST2009 @ Feb 21 2009, 09:13 AM) Then you should read some of the internet RFCs (Request for Comments). They are open documents that describe just about any protocol and aspect of the internet and although sometimes a bit difficult to read the authoritive source about how a protocol should be implemented. QUOTE Maybe I didn't explain in a good way my problem, in fact I will receive an e-mail in a e-mail account (like hotmail or yahoo) and from there I must save in a folder on my PC the attachment of this mail. I found how to read the e-mail but I have no idea how to save the attachement. Can you help me a little bit more? I'm surprised that you say you are using this library to read messages from hotmail or yahoo. They to the best of my knowledge will not allow clear text password logins and that is for a good reason. You should not do anything like clear word passwords over any other network than your internal and firewalled home or office network. As far as I know there is no real LabVIEW POP library out in the wild for free that does allow more than basic (clear text and possibly Base64 password authentification) which are all basically clear text. Most people having to deal with either SMTP or POP login did usually resolve to using ActiveX to use the Outlook email API to do all that. Rolf Kalbermatter
  19. QUOTE (jzoller @ Feb 20 2009, 02:19 PM) Yes I don't think there is any way .Net could call back into LabVIEW to let it know that it has autodisposed a refnum. But then they might want to do that for their Visual Basic environment so maybe, but I doubt it would be officially documented. QUOTE My tests were very simple: create a lot of sub-refs, then attempt to orphan them by closing the top level without closing the sub-refs. Repeat a few thousand times. Monitoring memory while this happens doesn't show any particular increase. Unless .Net can call back to LabVIEW to let it know about the the disposal of the objects there would need to be some memory allocation for the LabVIEW .Net refnum, as long as the returned object is not static. So maybe you tried with something that is static, meaning it always returns the same object and does not instantiate them. I believe LabVIEW knows about if an .Net object is static and might handle it differently than normally instantiated objects. Rolf Kalbermatter
  20. QUOTE (crelf @ Feb 20 2009, 05:49 PM) No way. They exist since before the Picture control was released. But I guess the field edit option has a redrawing problem when dealing with transparent background. Of course deep down there is C code and to enable editing of the field they probably do use the trick of creating a temporary text entry field but fail to account for the case where the table background is transparent and simply copy the table background to the edit control in all cases, which would be certainly desired behavior for non transparent backgrounds. Rolf Kalbermatter
  21. QUOTE (hari001 @ Feb 21 2009, 01:40 AM) http://msdn.microsoft.com' rel='nofollow' target="_blank">MSDN is your friend for detailed information about specific .Net functionality. For learning how to program it I would recommend you to get a good book about it from publishers like McGrawHill, Prentice-Hall or similar. Rolf Kalbermatter
  22. QUOTE (bmoyer @ Feb 20 2009, 08:02 AM) Well the VIs are there in the executable embedded. But they are all broken because they try to load the NI Vision DLL and that gets only installed by the NI Vision runtime (or the Development Module but that is here not of interest). Rolf Kalbermatter
  23. QUOTE (Mark Yedinak @ Feb 20 2009, 11:24 AM) LabVIEW offers no such access for sure. You could try to use netsh command line tool available in 32 Bit Windows installations. something like this executed with System Exec should work: netsh interface ip set address "Local Area Connection" static <local address> <subnet> <gateway> 1 netsh interface ip set dns "Local Area Connection" static <dns server address> primary netsh interface ip delete dns "Local Area Connection" all netsh interface ip set address "Local Area Connection" dhcp netsh interface ip set dns "Local Area Connection" dhcp Local Area Connection is the name of your network interface as Visible in the Network Connections. Rolf Kalbermatter
  24. QUOTE (neBulus @ Jan 22 2009, 09:35 AM) There are more than a handful of patents that cover LabVIEW. Some quite new and some quite old. One of the first patents issued for LabVIEW run out one or two years ago but NI applied for extension and it was granted. QUOTE Keeping Scripting limited NI can maintain its control over enhancements to LV and force anyone attempting to make a better version of LV (LV writtien in LV?) they will have to work for it. I think this is one valid and actual reason they do not feel like opening it up completely. Note there seem to be people with access to it outside NI, but one needs to have a very compelling reason for that. Another one is that it has still quite a few sharp edges and trap falls. Also it does often not seem to be engineered in any specific way but sometimes looks more like ad-hoc methods and properties sprinkled across the object hierarchy of LabVIEW like it got added whenever an internal tool developer found a new hook he needed to create the next LabVIEW tool feature or addon. Sometimes obvious methods are missing that seem logical in conjunction with others that do exist. Not in the sense that one requires the other but more in why implement a method for a specific object but not for others where it does make just as much sense. Also I have a few times gone into it to solve a specific problem looking and searching for the right methods and properties only to find out that the key method threw a not supported error. Yes going to the next LabVIEW version often remedies that error but at the same time things tend to break regularly when upgrading scripting code to a new LabVIEW version. QUOTE (neBulus @ Jan 23 2009, 07:13 AM) I'll add an arguement for scripting I have an app that uses SCRAMNet and maps 2 Meg of memory for up to about 50 devices. This mapping is documented in a standard form. The mapping can change when engineerings decides it needs re-mapped. It took two developers 3 days to re-map the data fields the last time there was a major change. I wrote Script that was capable of redfining the clusters associated with the mapping and it worked on machine at home. At work it gave me an insane object error while doing the demo for my boss.... I abandoned scripting. This sounds more like an argument against releasing scripting right now. But a more realistic solution would be to write a flexible driver in the ways of Tag based addressing, where you do use the Device Names/Tag Names in your LabVIEW code and on start up load that list into a Vi that can do the TagName<->MemoryAdress translation. It's a bit of work to do that in a good way but hardly more than writing a tool that can read your address list and change all the VI code using scripting. Rolf Kalbermatter
  25. QUOTE (Ton @ Jan 22 2009, 01:58 PM) How could this work? It does not know in any way for which VI it should open the property dialog? Rolf Kalbermatter
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.