Jump to content

Rolf Kalbermatter

Members
  • Posts

    3,789
  • Joined

  • Last visited

  • Days Won

    245

Everything posted by Rolf Kalbermatter

  1. QUOTE(robijn @ Jul 4 2007, 10:44 AM) I was pretty sure that LabVIEW terminated strings on return on the first NULL character already in LabVIEW 7 and I think even in LabVIEW 6. I did rely in 6.x several times on that, so not sure why you would see something else. If that is not desired you need to use byte arrays. Rolf Kalbermatter
  2. QUOTE(PeterB @ Jul 4 2007, 07:50 AM) You don't! LabVIEW can NOT do anything with lib and obj files. That is for C compilers only and even then you have to have lib and obj files that are compatible for your C compiler, eg. meaning they should have been created by the C compiler you want to use them with too. You can't create a LabVIEW DLL and hope that LabVIEW will link to your lib file magically. A LabVIEW DLL is really a LabVIEW LLB with very small exported C wrappers around those VIs inside the LLB. There is no way you can influence the C wrapper generation made through the LabWindows CVI runtime engine to somehow include your lib file and even if you could it wouldn't help either, as the wrapper code generation does not know how to link to other lib files than what is necessary to wrap the VIs such that they can be called as a DLL export function. If this lib file is only an import library to the actual functionallity in a DLL then you could instead link to that DLL through the Call Library Node. Otherwise there will be no way around creating some C code to be put in a DLL and that can be called by LabVIEW that links with your lib file. In that case you need to create a DLL in Visual C, that you can call from LabVIEW and you want to include that lib file into that Visual C DLL project. I hope I didn't confuse more than help but it's simple! If the actual functionality of your lib file is not located in a DLL file for which you have documentation and the API interface, then you WILL have to create a C DLL first. Ok I reread the first post once more and I see that you want to create a DLL to be integrated in VisSim and that the DLL needs to link to vissim32.lib. This can't work without Visual C. In fact their statement that any environment that can create DLLs should work is mostly wrong. Besides Visual C there is only LabWindows CVI and proabably Borland C that can directly link with vissim32.lib. lib and obj files are binary files that can come in many flavors and Visual C will generate and require so called COFF format, while Borland will generate and prefer OMF format. LabWindows CVI used to support both formats for generation and linking but you needed to decide whith format you wanted during installation. LabVIEW can not generate obj files. What it can and does do is generating Visual C compatible import libraries for the LabVIEW generated DLLs. So what you can do if you need to generate Vissim callable DLLs that incorporate LabVIEW code is to generate the LabVIEW DLL and then generate another C DLL that also includes the lib file for vissim32.lib and your LabVIEW DLL import lib file. Rolf Kalbermatter
  3. QUOTE(PeterB @ Jul 3 2007, 11:49 PM) Well if you create a DLL you always link with lib and/or obj files unless you never use any library functions, be it LabVIEW External Code functions, C runtime functions, or Windows API functions. But in Visual C you don't need to specify the C runtime library and Windows API import library specifically since most of them are added by default to a project and the Visual C linker picks from them whatever he needs. An obj file is the compiled form of a single .c or similar file and a lib file is just a collection of several obj files. EXEs and DLLs are the combination of all obj and lib files with some extra startup stub and possibly resources and other custom stuff put into. Basically you want to add your custom library file to your project somehow. You can do this by adding it explicitedly to the files that your project consists of, or in the project settings add the name of the library under Linker Settings and also provide a path to the directory where Visual C can find that library. Rolf Kalbermatter
  4. QUOTE(communityguy @ Jun 29 2007, 03:27 PM) Actually it's more something like LabVIEW 5 or 6 . But it could have been BMP only (PICT etc on Mac) back then. Rolf Kalbermatter
  5. QUOTE(ZZZZZZ @ Jun 29 2007, 02:16 PM) There are only so many TCP-IP ports but each server/service that needs to be IPC accessible needs to have one. Now NI can't go and register 200 well known IP ports for itself as that would not be tolerated by others nor would it be possible at all. So NI, and MS LM etc does the same, deviced a Service Locator. All this service does is listening on a well known port for service registrations with service name and not well known port number and then other applications/services (LabVIEW, online HTML help, Time Synchronization Service, Domain Security Service, Logos data protocol which I think is the base for Data Socket and Shared Variables, etc) can ask this service locater for the not well known port number of another service. On Windows this service locater is a native executable installed as service, on other platforms it used to be a VI based TCP IP server. Rolf Kalbermatter
  6. QUOTE(vinamra @ Jun 28 2007, 10:44 PM) I would say you have to ask the guys from Girder. LabVIEW can do just about anything you could do in Visual Basic or similar and a lot more so ask them if you can control their stuff in VB, if they haven't heard of LabVIEW. If they say it can then ask them for examples. I would guess that the Girder package might have an ActiveX Automation interface somehow that you could use. As to the hardware it does not say if the IR Detector will be installed as a virtual COM port. So I have a hunch that it isn't and you will need to get some API (DLL or raw USB protocol stream) in order to control that device directly from within LabVIEW. Not sure what you could gain with that as you would still have to know about the data format of the different IR commands too, which I suppose are manyfold depending on the remote control manufacturer. Rolf Kalbermatter
  7. QUOTE(orko @ Jun 27 2007, 06:44 PM) Each wire individually doesn't sound intuitive to me. Usually every user action is considered an Undo Transaction and selecting your wiring cleaner tool in the menu would seem to me one single user action. Imagine your tool doing 500 wire modifications and then the user realizes he wants to undo the operation just before he selected your tool. Ouch!!!!!! Rolf Kalbermatter
  8. QUOTE(orko @ Jun 27 2007, 04:06 PM) Have you tried these? Rolf Kalbermatter
  9. QUOTE(yen @ Jun 26 2007, 02:35 PM) Nice to see you finally :-) A big mystery lifted and now we can all go back to our work and finally continue to write great programs. You did create a big enigma over at the dark side. And it was fun to read those that were mulling over what sex this overactive forum member might be. Unfortunately I won't make it to NI Week this year but have fun there. Shouldn't really be to hard with all those people from here and other LabVIEW related places. Rolf Kalbermatter
  10. QUOTE(Sherif @ Jun 26 2007, 10:05 AM) Well that is so true for some people! :-) Rolf Kalbermatter
  11. QUOTE(Nullllll @ Jun 24 2007, 07:07 AM) <br /><br /><br />Has the door of your home any mechanisme to control it at all???? I mean this is the most basic question and I haven't seen mentioning you anything in detail about that fact yet. You ask about if you should use a motor, yes and that tells me it hasn't such a mechanisme built in so maybe you should try to contact the tech workshop at your place first and talk with them about the mechanical construction to allow your door to be opened at all. Then when they have given you a solution to open that door somehow we can talk further about how to control it from LabVIEW. Rolf Kalbermatter
  12. QUOTE(Aristos Queue @ Jun 22 2007, 08:18 PM) Actually there is a primitive somewhere that returns the file name for a given file refnum. So it would be possible to find out the file name and open a new refnum to that file, provided the access and deny rights from the initial open allow for that. Rolf Kalbermatter
  13. QUOTE(Thang Nguyen @ Jun 22 2007, 01:58 PM) Not sure about your problem. Since it is UDP, routing should probably not be a problem. It either works (if it is on the same subnet) or it won't. However maybe your network, device or whatever could be slow and the default timeout won't work. Ever tried to increase the timeout? And about the LabVIEW version, higher LabVIEW versions can open lower version VIs. They have the diagram and all so you can do that conversion simply yourself. The changes were mostly in DNET UDP Get Devices.vi apart from some minor cosmetic ones. Do a VI compare on that one to see the difference. Rolf Kalbermatter
  14. QUOTE(Thang Nguyen @ Jun 22 2007, 12:08 PM) . Welcome to this library from yours truly. Why you would have to call the Open twice I'm not exactly shure. It isn't necessary for me and most probably is the cause for your runtime error since error 60 means that there is already a connection open to that specific address/port pair. Also I recently found a bug in this library that prevented it to work with PLC Direct systems equiped with the ECOM100 interface. Attached version (LabVIEW 7.1) fixes that so that it also works with that module. Also your attachment wouldn't help anyone not having the library much as it is missing utility functions located dnetudpu.llb. Rolf Kalbermatter
  15. QUOTE(yen @ Jun 19 2007, 04:18 PM) I do this for the Autorun program on CDs that installs my application (whose installer does use the normal NI installer technology). Basically it depends on the LabVIEW version but I use for this 7.1 and need following files: dir autorun.exe obviously my LabVIEW autorun program autorun.ini just for having the HideRootWindow=True lvapp.rsc lvrt.dll mesa.dll Probably only necessary since I use the "modern" 3D controls there vidialog.rsc models box_inc.ptc This is the graphics definition for the modern 3D buttons that are used Obviously if you go and use other 3D controls you will have to include more files from the models directory. Other things that could be necessary are lvstring.rsc (LabVIEW error messages and many more), lvobject.rsc (for other LabVIEW controls), lvpng.dll and lvjpeg.dll if you make use of jpeg or png functionality, lvanlys.dll for Advanced Analysis functions, but this won't really work as it also needs an intall of the MAth Kernal Library and that is also a question of correct registry settings for LabVIEW to be able to find that). If you use IMAQ too you also should forget about trying to get this all right yourself. It is not trivial at all. LabVIEW 8.x makes this all also a bit more complicated as the numbers of files that the LabVIEW rt system absolutely needs are growing with each version again. Rolf Kalbermatter
  16. QUOTE(Justin Goeres @ Jun 18 2007, 01:33 PM) Well it might have had to do with the fact that they misappropriated the BSD socket implementation when they wrote the TCP/IP socket library for Windows NT. As silly as it sounds considering that socket library was under the BSD license, they simply "forgot" to follow just about the only requirement that the BSD license asks for, namely to mention in the docs about the software origins. That they might be a bit paranoid about GPL I could understand. After all I'm sure the FSF wouldn't stay silent when they had reasonable suspicion that MS violated their license. But the whole idea about being contaminated just by having seen code under a certain license is rather something that MS promoted themself indirectly in the first place through thier shared source license. Rolf Kalbermatter
  17. QUOTE(Eugen Graf @ Jun 14 2007, 02:56 PM) To cut it even shorter you can't really. LabVIEW controls are just that: LabVIEW controls. As far as Windows is concerned they are just a few graphic lines inside a LabVIEW window. The closest you can get is embedding a LabVIEW front panel inside another Windows window, ActiveX or not. And that has some very tricky implications, one of them being message queue thread starving if you don't do it exactly right. Basically I would not think it worth the trouble to try it and yes I did attempt this a few years back, but with newer LabVIEW versions I would not expect this to having gotten easier, rather the opposite. Rolf Kalbermatter
  18. QUOTE(njkirchner @ Jun 16 2007, 07:04 PM) It's not a quirk. It's a convention. The picture control expects 16bit aligned scan lines. Windows bitmaps expect 32bit aligned scan lines. This is called padding and as with anything about bitmap formats these are simply conventions used for some simplification/speed up of certain operations. For nowadays computers this probably doesn't really make any big difference anymore but it could have a big impact a few years ago. Rolf Kalbermatter
  19. QUOTE(Karissap @ Jun 12 2007, 11:07 PM) This statement is wrong in more than one way. First LabVIEW does not necessarily have to be significantly slower than C. It will never be faster provided you use comparable algorithmes but much slower is a statement that holds simply not true for many algorithmes. I've done bitmap import and export back in ~94 completely in LabVIEW including supporting simple compression schemes such as RLE etc and the routines where actually faster than calling Windows 3.1 16 bit APIs for doing the same. The problem in LabVIEW is almost always not that it is in itself slow but that it is so easy to come up with a terrible algorithme that usually seems to do what you want but with a bad performance. Doing the same in C you do need to have a good understanding of what you want to do, how you are going to do it and how the C compiler will deal with certain thngs in your code. All this is most often absent when I see someone implementing an algorithme in LabVIEW and complaining afterwards about its performance. Also it is wrong in that writing an algortihme in C is never going to be faster than doing it in LabVIEW. It's runtime performance can be and does sometimes be significantly faster but the implementation is definitely a different thing. Of course assuming that you know both LabVIEW and C equelly well. Rolf Kalbermatter
  20. QUOTE(crelf @ Jun 14 2007, 02:08 PM) I have had one other reason in the past for a huge Datalogger application I had developed for them: We use Linux for just about anything else in our automation departement except for desktop PCs in adminstration. But even that didn't get the project finally ported as the application had to be installed on notebooks and the low budget notebooks they used back then were not very well supported by Linux. Just for clarification this was back when LabVIEW 6.0 and 6.1 were still the actual development version. Nowadays I'm sure it would be almost a no brainer to do, but after some 6 or 7 years of being used to Windows it's not likely they will want to change to Linux that fast anymore for that application. Rolf Kalbermatter
  21. QUOTE(ragglefrock @ Jun 14 2007, 11:28 PM) I'm pretty much sure you are right here. Wouldn't make sense trying to use a constant value directly as default input value instead of allocating the necessary memory space and initializing it accordingly. As such it could of course have a serious impact if the controls default data was not one of LabVIEWs default default data but rather an 100 MB data array. Rolf Kalbermatter
  22. QUOTE(Eugen Graf @ Jun 14 2007, 04:56 PM) I haven't exactly done this but it is not impossible. A WDM driver is however a driver that uses an object oriented architecture. Not something you could directly access in LabVIEW. Also a WDM driver runs in the context of the Windows kernel. What this all means is you will have to write a user space DLL, that does access the WDM driver and provides a standard C API to be called by LabVIEW. Rolf Kalbermatter
  23. QUOTE(PaulG. @ Jun 12 2007, 08:30 AM) Ohh those good old days with my C64. But then I didn't really do much with it's Basic. Was learning Pascal for my vocational education and didn't feel Basic could keep up with it. Even dabbled into C64 assembly for a short amount to try to do the really funny things, but my younger brother was way better at that. Later did a Turbo Pascal program during an internship and immediately after that got exposed to LabVIEW in 1992 and felt at easy with it the first instant. Even did at some point rewrite in LabVIEW the app I had done for the most part of my 4 months internship in something like half a day. Of course it had been an app reading in acquired data from binary disk files and displaying them in a wafeform graph. Doing that in Turbo Pascal had been a major thing to do as I had to write the code to draw a complete waveform graph on screen and then rewrite it to a plotter in HPGL. Ok I didn't do the HPGL part in LabVIEW :-) at all. Printing out the front panel was good enough. Rolf Kalbermatter
  24. QUOTE(crelf @ Jun 12 2007, 08:09 AM) Will with nowadays MultiGigaHz CPUs it is definitely more in the order of a few 100 ns than many us. Rolf Kalbermatter
  25. QUOTE(dbyers3 @ Jun 12 2007, 09:08 AM) Could be a policy setting disallowing the change of the desktop background. Window policy editor does allow a myriad of settings being changed, that control such things as this. Rolf Kalbermatter
×
×
  • Create New...

Important Information

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