Jump to content

Rolf Kalbermatter

Members
  • Posts

    3,903
  • Joined

  • Last visited

  • Days Won

    269

Everything posted by Rolf Kalbermatter

  1. The refnum is clearly disposed of and also disposes of the object. The refnum can then be reused for a different resource since its numeric value is really a 16 bit magic identifier and a 16 bit index into an array of resource pointers.
  2. I actually leave the global system setting in LabVIEW alone and program on LabVIEW function level explicitly. If you know an instrument will send decimal point then set the scan from string and format into string to explicitly use that format instead of relaying on the user to have his system setup accordingly. Because if you work with multiple instruments and systems at the same time you will be switching the settings back and forth continuously. If you operate on user data, such as files coming from the system let it work by default with the system settings, because most applications having created that file will also use that setting. Of course if you get input from files or such from a different system all bets are off, and you will need to define a certain standard. You also can make the parser smart but that only works so far and gives sooner or later ambiguous results.
  3. I have in the past few months steadily worked on a network library for LabVIEW with following features: - Be as close as possible to the functionality, operation and semantics of the built in LabVIEW library - Support IPv6 operation - Support SSL encryption - Support ping operation right in LabVIEW (through use of raw sockets) - and of course be better than the built in functions The included library does most of these things already but will need some more work over the next few months to fully have all these features. As such it is clearly in a preliminary state and not yet ready for released software. Please be adviced that this library will cease to operate after end of June because I expect to have new releases out there before that time. In spite of the preliminary state it does work and does do already quite a few things and it even implements the LabVIEW TCP read modes exactly as the native functions. I have included an OpenG package of the library. To install it you best use the VIPM application from JKI Software as it will take care to place everything where it should be. Due to some features I'm using it will be necessary to restart LabVIEW after installation of this library in order for the library to work properly. When installed you should see a new ESI-CIT logo in the main function palette and in there a network icon. In that network palette are all the new and exciting functions. The functions have for a large part already some online help information inside, which you can see by opening the floating help and hovering over the icons or front panel control elements. I'm working on an online help file to install along with the library but it is not yet finished. This help will also outline some of the more low level operations which at the moment may appear a bit obscure. This release is only for Windows 32 Bit systems. Sorry to the Linux and Macintosh users but porting such a library is a true pain in the a** and especially for the Macintosh I'm not yet sure how to go about it, as there are several ways to skin that cat The library will work in LabVIEW 7.1 and newer versions. readme.txt citlib_lvNetCon-0.9-1.ogp
  4. It doesn't other than you implement it. For LabVIEW a service is just another process so to access a service you have to provide a means of interapplication communication such as TCP/IP, shared memory, even DCOM, or whatever else you can come up with. My preference is clearly TCP/IP as it is the most platform independant interapplication communication channel I know of and also has the benefit of inherent remote access ability without compilicated RPC setup and initialization. Actually you are probably misunderstanding something here. LabVIEW does not do reference counting on refnums based on VIs storing such a refnum. It couldn't really do that anyhow since a refnum is just a number that can be stored in many different formats that do not necessarily have to be refnums at some point. LabVIEW disposes a refnum as soon as the top level VI in whose hierarchy the refnum was "created" goes idle, independant how many times you stored that refnum in global VIs, global variables, locals, shift registers or whatever.
  5. WinXP has a lot more support for USB devices on board. First it comes with drivers for most USB controller chips out there. Second it supports at least HID, COMM, Still Image, PTP, Mass Storage and Printer USB class devices out of the box. Does it come with everything? Of course not because USB allows to define new classes as any manufacturer wishes and if you register them with the USB consortium they are even official standards eventhough nobody but you may using them.
  6. The Open VI Reference function is a very bad function to call in a tight loop. Don't do that ever as it needs to execute in the UI thread and will slow down your loop tremendously.
  7. Are you using the LabVIEW DOM library from the Internet Toolkit or simply accessing an XML ActiveX interface? In both cases you may be running into LabVIEWs automatic garbage collection for refnums. Once the top level VI in whose hierarchy a refnum was created goes idle (stops executing) LabVIEW will automatically dispose of that refnum (and the objects they reference). I'm not familiar with X controls nor how they work but if your XControl creates the refnum in some initialization state that goes idle afterwards the object goes invalid at the moment your initialization stops. How to solve that? Initilize the object in a context that will stay running for the desired lifetime of your object.
  8. You should be able to do that with some FPGA logic and last time I searched on the NI board they did actually already have a sample project or two which implemented I2C on FPGA and in RT software and I believe even based on a DAQmx interface. So many options to pick from without needing to reinvent the wheel.
  9. Yes, and your PCMCIA-USB comes with drivers that install a raw USB driver in the system (because Windows 95 certainly didn't have USB support on board, it was an addition to the Win95 OEM SR2 that was rather unstandardized). Raw USB is just that, raw. many different USB devices have many different requirements and therefore there exist many different USB device classes, such as mass storage devices, human interface devices, still image capture, printers, serial communication devices etc. Each of them has a different protocol on top of the USB bus and therefore needs different drivers to allow Windows or any OS to do something with them. Your PCMCIA driver CD likely will install a USB mass storage device driver that makes such devices available to Windows as volumes. It most likely also comes with a human interface device driver, that allows mice and keyboards to be recognized by Windows. It may not come with an USB communication device driver, which would be needed to make a USB COMM class device appear as an additional RS-232 port in your computer. And it will most likely not come with more specialized drivers such as still image class devices or printers or network devices. All that said it will be very difficult nowadays to find a PCMCIA-USB interface and even more difficult to find one that still supports Windows 98 or even worse Windows 95 since Windows 95 had no USB support in any of its standard releases.
  10. As mentioned earlier you can adapt LabVIEW Embedded SDK to just about any 32 Bit platform but it will in most cases not just be an install and run experience. New supported targets are of course always nice but someone has to do them, and NI can't do them all nor will they do any if they do not see some potential market. But there is a catch 22 problem here. The cheap targets are usually used for mass production and there hardware components matter down to the penny. LabVIEW generated code is not exactly lightweight so you do need some minimal amount of memory to even be able to download a simple solution. Those targets supporting more memory are usually not the low cost hardware systems. Also low cost is used for high volume hardware usually and those developing for such a market may often exchange the ease of development with LabVIEW with the memory efficiency of a native C program to save a few more pennies in hardware costs. If they go for an expensive development system they usually go for one of the specific commercial embedded development systems and the hobbiest will go with a gcc based toolchain anyhow.
  11. That is really not so easy. An icon consists in fact of up to four resources namely an icongroup resource, and an icon resource for each of the 3 possible bit depths 1, 4, and 8 bits. For the principle you best check an old Inside Macintosh Volume since LabVIEW binary files are more or less Macintosh OS 9 type resource files, with some minor modifications and of course many non Macintosh type resources in them. But since LabVIEW version 8.2 there is a private application method to extract the icon of a VI without loading it. Get VI Icon.vi
  12. If you already have an analogue output you could simply do the entire function generator in LabVIEW software and output the desired signal through that output.
  13. Because with the USB interface in your computer you are possibly not even halfway done. You need the driver too. Maybe the device installs itself as USB-COMM device which modern computers will install as virtual RS-232. But I'm really not sure USB was that major and far along when Windows 98 was released so even if the device is a USB-COMM class device the Windows 98 computer may not recognize and install it as Windows serial port device. If it is not an USB-COMM class device then you would need the according system drivers for Windows 98 (.vxd which are different than the drivers needed for NT based Windows systems such as 2000, XP and newer) and then also create a Modula2 module to access that driver. But manufacturing a device that is produced in 200 pieces a year at 40 $ each does not sound like a good business to me either.
  14. Are you asking us to develop this all for you???? We are not a free consulting service here. I'm sure what you want can be done in LabVIEW though not everything in a very easy way. Expect to spend a few months of programming to get everything as you show in your screen shots. And if you have no LabVIEW experience triple that amount of time. Or you can hire a LabVIEW alliance member in your area to do the work for you.
  15. I've done this in the past with customer specific fonts (containing their company logo etc) by simply adding the font in the distribution and setting its target to <windows directory>/Fonts. I guess there might be an issue about localization sometimes but it worked so far for the systems that was used on.
  16. Yes you can't delete sub parts from a control nor adding any. The actual internal structure of a control is very static and specific to each control class.
  17. Have you done some benchmarks first to make sure 1500 variables is going to fly? I have no idea about the latest LabVIEW DSC versions, but from what I know they are based mostly on the shared variable engine technology and I have in fact some doubts that technology scales well. So before going through all that hassle I would make sure I can operate with a reasonable amount of variables first. As to automating the binding to front panel controls you might be able to get at that information through the scripting API. In that case you could fairly easily create a little tool yourself that does whatever automation you feel is right.
  18. Refere to this and this communication on the NI boards to get more information about that. There is currently no standard support for DICOM in LabVIEW. I would suggest next time to first use the powers of Internet such as Google before posting here such a request. That is how I came up with these links and in fact many more that might be maybe interesting.
  19. Quite some time ago I played with HelpMaker from Vizacc software. The interesting things about this package were the ability to use the LabVIEW generated RTF as starting input, the possibility to create both help files and documentation from the same sources and it's being free. Haven't followed up on that completely since there had been other projects that were more pressing or tempting since. Seems Vizacc got into some serious disagreements with the original developers and they are redesigning the software currently from ground up in C++, while the original software was written in Delphi. And they seem to not want to give it away for free anymore once the new C++ version is released (when?). So using that software may be now a bit of a timebomb it seems.
  20. I always wished there would be a Search 1D Array that uses bisection algorithme when you know that the incoming array is actually sorted. Not sure if an optional input would be good, since someone might enable that on unsorted arrays and get of course strange results I wrote long ago my own for the most common data types but of course it doesn't adapt to the any datatype like a native function would. EDIT: Thinking about it this is not so much the Search 1D Array function but the Threshold 1D Array. Haven't checked that lately but it may use bi-sectional search now. At the time I did a lot with that function (LabVIEW 6 or so) benchmark showed that the algorithm had to be linear since the time grew linear with the index in the array where the searched threshold was.
  21. Yes likely! The LAVA search suffers from the problem earlier search engines had. If you entered multiple words there it gave you all the pages that contained one of them. You had to prepended an explicit + sign to every term to indicate to the search engine that you intended this to be a logical AND. Google was one of those who found that this kind of search syntax wasn't exactly intuitive to anyone but shell script hackers and put in an algorithme that first ranks all the results that contain as many search terms as possible and then lists those that have only one or a few of them. Haven't much tried to play with the LAVA search yet but it may still use this somewhat ancient syntax.
  22. The LAVA search too!!!
  23. Good observation. If it is not LabVIEW the arrays will throw a wrench into the wheels. LabVIEW expects for any array in a bytestream an int32 telling it how many elements will follow. For creating a fixed size array you have to resort to a cluster of that type with as many cluster elements as you want to have fixed size array elements.
  24. Sorry for that! It has been some time that I had to play with that. The {MySQL ODBC 3.51 Driver} is in fact an alias to another section in the registry that eventually points the ODBC manager to the original DLL as you have tried it out first. I was under the assumption that a direct driver path should work too, but have to admit that I can't say for sure. Maybe it is also a Windows version thingie too.
  25. Bascially what you should do to get the right direct connection string is to configure a database with the Windows ODBC Configuration and then go and look in the registry what that results into. "HKEY_CURRENT_USER\Software\ODBC\ODBC.INI\ODBC Data Sources" lists the installed user DSNs, while "HKEY_LOCAL_MACHINE\Software\ODBC\ODBC.INI\ODBC Data Sources" lists the installed system DSNs. Under the "HKEY_<user or system>\Software\ODBC\ODBC.INI\<DSN name> you will see a list if keynames and values that you want to put into your direct connection string, separated by semicolons, to get the same effect as when you would specify an according configured DSN name.
×
×
  • Create New...

Important Information

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