RE: Wanted: #define
At 9:05 -0500 6/17/04, [EMAIL PROTECTED] wrote: Regarding the cluster of constant values from which you can select one using an implicit unbundle: Is it easier to drop one constant [from the palette or file system] and then select which subpiece to use than it is to just select which constant you want [from the palette or file system] in the first place? I'm not opposing your general comments that a simpler way to define and then drop constant values would be useful, I just don't think that the proposed solution goes very far toward simplifying the situation. Well I might think of a combination of these as a good compromise. One VI with a cluster of all the constants for a program. This could then be opened for editing instead of finding each constant file. Then a vi that unbundles by name and returns that constants value. This would be what is dropped on the diagram. This give the simple action of dropping a constant VI and the convenience of being able to open and look at all constants at once. This of course could all be isolated in a sub-folder for clarity when manipulating the files. -Scott
Re: Virtual memory
At 9:46 +0200 6/16/04, Uwe Frenz wrote: Ann, you asked on Tue, 15 Jun 2004 15:27:05 -0400: I get this message sometimes when I run my program: System is low on virtual memory If it is just a rare state it may well be worth just to increase the systems virtual memory. This can be done by inserting some extra RAM (always a good idea, but with some costs) or by changing some settings. These however depend on the machine architecture (a PC, WS, Mac or whatever) and on the OS (Win, linux, OS X etc.). Changing the virtual memory settings does not take no extra costs and uses just a little time. Amount of Virtual memory is independent of RAM unless one is drastically misusing the term virtual memory. Virtual memory is limited by DISK space and the basic addressing limitations of the CPU. Most CPUs can address at least 2 GB for a single process, so having a few GB of disk space available should make that available to LabVIEW. Adding RAM will make the use of the DISK for memory less frequent and give MUCH better performance but it should run without failing. The only other limitation is running out of internal registers to manage RAM but that is very rare and should not be happening unless you are doing some other very very odd stuff. As a couple steps, 1. Check that LabVIEW is really trying to use a lot of RAM. Activity Monitor works well for OS X and I assume that winders has a similar tool. 2. Find out where in LV you are chewing up massive amounts of memory and if this is necessary. The LV profiler works wonders! If you are chewing up a GB of ram in a particular VI it will be very obvious! Windows nowadays has a default setting 'let windows handle this'. Allthough this is foolproof in most situations, it has some drawbacks. One of the major culprits is that AFAIK Windows will just use free space on drive C:. If this free space is limited, Win has to limit the virtual memory. So it is not the worst idea to do a system backup, clean the harddisk and defrag it afterwards. And if one later adds a fixed area as swap file on this or another HD, this swap file size is than fixed and cannot be limited by temporary files an garbage. You can optimize to handle massive memory requirements like this, but it is best to decide if you really need all that resources in the first place! -Scott
RE: Info-LabVIEW Digest - 06/16/04
At 8:04 -0400 6/16/04, Hysell Shannon wrote: If anyone saves their previous posts- can someone forward me the various posts regarding the RTOS using a PC?? I deleted them and now I have a thought! You can search for any previous posting at Brian Renken's EXCELLENT search engine. http://www.searchview.net the subject of the recent discussion was New solution for OS X The info has been incorporated into my LV on OS X web page: http://sthmac.magnet.fsu.edu/labview/LVonMacOSX.html -Scott
Re: Wanted: #define
At 16:23 -0400 06/15/2004, George Gatling (Contractor) wrote: From my days as a C programmer (shudder) I have to say I do miss the #define. I realize LabVIEW cannot really have an exactly analogous feature because the scope of .vi is too different from the scope of .c, but there must be some way to get the same functionality. I figure a global might be the ticket here, but I thought I would ping you guys and see if anyone had something more clever or if there were any gotchas to using a global. I would type my #define values into the global, make current values default, and then read from the global. This particular global would never get written to programmatically. You need to disconnect the global from the running hierarchy to make current values default. You might consider intelligent LV 2 style globals where the first time they are called, they load from a config file. When a global is written to, the corresponding element of the config file is updated. You can use the built in config file management or the tool kit recently offered for sale. :-) The LV style global can check for first run and load the initial values. It can keep an array of keys and return variants for that key. Then for each global make a VI that passes the correct character string key and casts the variant into the correct representation to return to the user. Then each of these VIs can be used just like a read global. A bit more complicated, but very robust and makes it easier to update single values rather than making all values default after stopping and starting the VI. Then forcing the changed VI (defaults changed) to be saved. That being said, I have also made a global to hold constants that I hope never vary. It will work. -Scott
New solution for OS X
Just to publicize a little known solution that lets one use the best development environment with NI hardware. One can use a cheap PC as the host for all the hardware running the PharLap RT/OS as the target machine. This gets around the extreme cost of a PXI crate and embedded hardware. http://zone.ni.com/devzone/conceptd.nsf/webmain/2B20D544723C8F2D86256E8C0071C201 With LabVIEW 7.1 the host PC can be an Apple MacIntosh running OS X! The realtime target can be any cheap PC, though NI lists some systems as recommended it seems that the RT/OS will boot and run on most hardware. Mac OS X and LV 7.1 now support cross compiling for the RT/OS. This can be simply linked to the host thru ethernet. For a good solution one should probably throw a second cheap ethernet interface in the host to keep network problems isolated from data transfer and control. This will allow development in a clean, reliable and efficient environment with compatibility to all of NIs hardware. The only real drawback is supporting the hardware of a cheap wintel box and the time labor associated with that. However the Pharlap OS has a reputation of being fairly clean and robust to avoid the normal problems associated with more common desktop OSs. I hope to get this info added soon to the OSX - Labview info page http://sthmac.magnet.fsu.edu/labview/LVonMacOSX.html -Scott
Re: webcam
At 11:31 +0200 5/27/04, Rolf Kalbermatter wrote: Scott Hannahs [EMAIL PROTECTED] wrote: Actually, I just wrote one using one of the examples Christophe Salzmann's quicktime interface. Works like a dream!!! Cross platform and handles all camera's that have a quicktime driver. Contact Christophe for a copy. The sad part is that under all platforms other than the right one, video digitizer hardware with Quicktime drivers can be counted on one single hand. There is a Quicktime to VfW video digitizer driver for Windows to access VfW hardware in Quicktime but elegant would be something else. Just to discuss availability for the wrong platform. Chris' web pages gives this info: * Under windows you need a proxy vdig to enable QuickTime to see VfW and WDM video capture devices. * WinVDIG (v. 0.99) free ( http://www.vdig.com/WinVDIG/index.html) * Vdig (v 1.1b1) (http://www.abstractplane.com.au/products_vdig.jsp) the first one supports a lot of hardware http://www.vdig.com/WinVDIG/compatability.html. I think you will find that a you are going to need lots of fingers on the single hand! After the 1st hundred or so models (the page above doesn't mention the pixle link ones). Why do you need the 2nd hundred? I am not sure about vfw but this should give the compatibility that is good enough. The sad part is that lack of support is considered good enough. -Scott
PCI-GPIB cards - arrgh...
If you aren't into gory technical details, skip this message. NI has 4 GPIB cards: Looking at the NI web pages there are 4 distinct, PCI-GPIB interfaces. #1 PCI-GPIB for windows 95/NT/200/XP/Me/98/Solaris http://sine.ni.com/apps/we/nioc.vp?cid=5310lang=US #2 PCI-GPIB+ http://sine.ni.com/apps/we/nioc.vp?cid=1875lang=US #3 PCI-GPIB/LP (Low Profile) http://sine.ni.com/apps/we/nioc.vp?cid=10970lang=US #4 PCI-GPIB for Mac OS 9 http://sine.ni.com/apps/we/nioc.vp?cid=1941lang=US However, #1 actually does have drivers for Mac OS 9 as well if you read the product description. But if you just search for OS 9 then they send you to the more expensive one. There seems to be no reason that card #4 still exists as an older card. BUT, my OS X PCI-GPIB driver only works with #4. It should work with #1, think the problem is only because it tests for one specific card. If anyone who has one of these small and can tell me the PCI product ID #, I would like to modify my driver so someone could test this. The driver matches against the PCI name of NATI,pci-gpib Does the smaller newer card with the 5004 TNT chip have the same PCI name? If I had one of the cards, I believe that the Mac OS X system profile utility would tell me the name, vendor ID, Device ID etc. I have no idea how to get those hardware properties under windows but if anyone can figure it out, I would be grateful. Thanks, -Scott
Re: LV7.1 for Linux
At 9:57 +0100 6/7/04, Craig Graham wrote: Why on earth is the timed while loop not in the Linux version? Because it is a windows only function and is only in the winders and pharlap RT versions of LV. -Scott
RE: Recursive Code Challenge
At 12:24 -0400 6/4/04, Junginger, Johann wrote: This is going to be a naïve question after this thread has been going on for so long, but can anyone send me (or point me to) a LV7 (or earlier) example of recursion? It sounds very interesting but I am having trouble wrapping my head around this concept. http://sthmac.magnet.fsu.edu/labview/vi_library.html Near the bottom of the page is a recursive calculation of the factorial function. Versions in LV 6 and 6.1. The factorial is a classic example of recursion since it is a trivial definition recursively. N! = N * (N-1)! ; N1 N! = 1 ; N=1 -Scott
Re: maths problem
At 8:07 -0700 6/4/04, PJ M wrote: If I understand properly you know %co2 and you want to know x right ? Therefore you just have to solve the equation. It's a pure math problem, no a LV one. Let's rename your equation %CO2=(((3.10933*(X*X))+(.5602*X)))/(0.30204-X) like so y=(ax*x+bx)/(c-x) = y(c-x)=(ax*x+bx) = ax*x+(b+y)x-yc=0 Then assuming than D=(b+y)*(b+y)+4yac is positif you have the following: x=[-b+(or-)Sqr(D)]/2a Note! Sqr(D) is really Sqrt(D) the square ROOT of D not the square. But this right, you DO want to use the exact quadratic solution. Also I think D= (b+y)^2-4yac http://www.sosmath.com/algebra/factor/fac08/fac08.html Also for for future reference, equations greater than 4th order that do not have exact solutions like this, you can use the root finding routines built into LV. -Scott
Re: Asyncrhonous Serial VISA
Title: Re: Asyncrhonous Serial VISA The VISA library AFAIK does not allow simultaneous input and output on a single port. The difference between asynchronous and synchronous behavior is getting a bit blurred. Asynchronous calls to the VISA library mean that the execution for that execution engine is not blocked. Thus other nodes (non-visa, or VISA on a different port) can execute. However since there are several different execution engines and now with nice multi-threaded O/S capabilities, it is unclear whether only a single internal thread is blocked by a synchronous node or not. Since several threads can be allocated to a single execution engine it becomes hard to detect the blocking of a single thead. One of the experts may correct my terminology here of threads and execution engines, but this is my understanding. But a write will block until that VISA port becomes available. hopefully this restriction wil be lifted with VISA 4. The other thing you can do, is not to start the read until actual characters are in the buffer. This means that you will not block the port until it is ready to read. This can be extended to only read the number of characters that are actually in the buffer and not use the read timeout waiting for characters. Maybe an NI VISA guru can tell you how to detect the difference between async and sync visa. The question is why every use sync visa these days? It used to be because async was buggy but that has been cleared up a long time ago. -Scott At 11:44 -0700 6/4/04, Jason Dunham wrote: Is anyone having success at running asynchronous VISA calls for serial port reads and writes? I made a simple test VI to read one byte from COM1, and write a continuous stream of bytes out of the same port in a parallel while loop. The write loop stalls until the read command times out. I even tried moving the read to a subvi and changing it's execution system, but to no avail. If I read and write from different ports it the read and write are independent, even if the VISA nodes are set to run synchronously. I'm just not getting the whole asynchronous concept, I guess. I have yet to create a VI which behaves different with sync or async VISA calls. I'm using LV 7.1, VISA 3.1 and Windows XP.
RE: Recursive Code Challenge
At 12:31 -0700 6/4/04, ALTENBACH,CHRISTIAN wrote: Quoting Scott Hannahs [EMAIL PROTECTED] It makes an interesting story but is not the best way to approach the problem. 'glad you brought up your recursive demo. I compared it with my entry in the recent LabVIEW Zone Coding challenge for factorials. ( http://www.ni.com/devzone/lvzone/codechallenge6_results.htm ) For 12! it is 3000x slower (5 ms vs. 2 microseconds) while mine does more because it formats the output to a string. Yes, recursion is better in some cases and not others. Actually for large numbers, the approximation X^X*exp(-x) works fastest! But it can be a very easy thing to program and maintain. A better example is to solve a maze where you follow the turns exhaustively. Almost anything that can be done recursively can be done with arrays. BUT, you save time and reliability in clearer, cleaner code. This form of recursion is deadly slow because VI server is MUCH MUCH MUCH slower than a direct sub-vi. It may be the best way to approach a problem but not the fastest in execution. -Scott
Re: Thermocouple to Pt100
At 10:32 -0400 6/3/04, John Brohan wrote: Hello I have a device which has a PT-100 temperature sensor. The probe of this is too thick for what I need. I want to measure the temperature of liquid in a test tube while I'm adding some reagent. It seems that the PT-100 is a device with some size to it, and is just too bulky to fit in the test tube along with a stir bar. I'd prefer to use a thermocouple. Does anyone know of a way to transform the signals from a thermocouple to mimic the a PT100. Not really. A thermocouple generates its own voltage on a microvolt scale. A PT-100 is a resistor that changes its value which is about 100 at 0C. BUT you can get some small PT-100 sensors. Sensing devices has a pt-12A which we buy a lot of. These are about 1.6 mm in diameter and 12 mm long. I think they also have an 8 mm long one. http://www.thomasregister.com/olc/SmartCat.aspx?az=72980675type=details_orderbacklink=yestemplate=http://www.sensingdevices.com/template.htmcounters=noptno=PT100/12A -Scott
Re: Write Hexadecimal values as ASCII characters
At 10:01 -0400 6/3/04, [EMAIL PROTECTED] wrote: Folks, How does one write a hexadecimal string as ASCII characters on to a file? format into string with a %X format (the create format string pop up will help you). other possiblities are %x, %0X, and %0x depending if you want leading radix indicators and your string in upper or lower case. Then write string to a file. Scott
Re: LV Wishlist
At 22:15 -0500 5/26/04, Greg McKaskle wrote: Actually, the NI wishlist still exists, and while you can post them as many places as you like, keep in mind that NI's site is more likely to get into the feature list. URL is http://sine.ni.com/apps/we/niup.ni?ap=pscloginlang=usdu=http://digital. ni.com/applications/psc.nsf/default?OpenForm%26temp1=%26node= A more compact URL is http://digital.ni.com/applications/psc.nsf/default I will put a link on my pages as well.. http://sthmac.magnet.fsu.edu/labview -Scott
Re: webcam
At 4:12 -0700 5/26/04, Hamid Shojai wrote: Hello, I want to work with webcam in labview. form which point should I start? Actually, I just wrote one using one of the examples Christophe Salzmann's quicktime interface. Works like a dream!!! Cross platform and handles all camera's that have a quicktime driver. Contact Christophe for a copy. -Scott
Re: DAQmx, etc.
At 7:25 -0500 5/25/04, Geoffrey Schmit wrote: For example, I'm not sure what you mean by a LV style wait. I'm not aware of a construct that would allow a thread to wait on a synchronization primitive and yet continue to execute. That is, a thread is either running or waiting. If my definition of an asynchronous call matches your definition of a LV style wait, great. If not, please let me know what you have in mind. Yep. Just like the Wait (ms) node within LV. If that could be called (sort of a cooperative multi-tasking) from a CIN then you could make non-blocking CIN or Shared libraries. Most VIs, including the DAQmx Read VI, operate in this fashion. Good to know, I am not familiar with the new mx stuff and thought it may be different. These two types of calls present fundamentally different API models. In general, synchronous calls cannot simply be converted to asynchronous calls without changing the semantics of the API and adding additional concepts (e.g., call backs, query calls). Ok. I was thinking along the lines of Asynchronous/Synchronous VISA read and write calls that can be switched from synchronous to asynchronous with a pop-up menu selection. I realize that the underlying calls might be different but they present the same wrapper. However, if the thread waits on a synchronization primitive, other threads will not be competing with this thread until this synchronization primitive is signaled and the thread is awakened. This is why I may make my labview calls do a wait for occurrence and pass the occurrence to the library in a reentrant call. The library can signal the occurrence eventually and thus there is a no penalty wait for I/O to complete. However, a call that acquires a more specific lock (e.g., DAQmx VIs that acquire a lock for a specific task) will only prevent other threads that try to acquire that specific lock from executing. So DAQmx has threading and locks at a much finer (task) level rather than the whole DAQ system. While I'm certainly not an NI-488.2 expert, I believe there are both synchronous and asynchronous functions in NI-488.2. Not in the 488.2 spec but in the C library and/or the driver and at the VISA call level. The problem is that there is NO NI-488.2 for OS X (at the moment). So I am developing sth-488.2 based on the incomplete 488.2 DDK toolkit that NI provides. The trick is how to move that asynchronous call in the library (when I get it implemented) into the synchronous nature of a LabVIEW call into a library. Regardless, other threads in your application should be able to execute while a NI-488.2 call is waiting subject to the restrictions I've mentioned. If there were such a thing as an NI-488.2 call! I need to implement that asynchronous call not merely use it. If you're concerned that your PCI-GPIB library is too inefficient when waiting and it is polling, maybe you can change its implementation such that the thread waits on a synchronization object rather than polls (or at least occasionally yields to give other threads more of a chance to use the processor). How do I yield from a C program back to the labview program? It may allow the other threads to run automatically but it blocks the UI thread I think and that is really a significant block If you're concerned that other threads in your application cannot execute because the thread that is waiting has acquired a common lock, perhaps the lock can be eliminated or a finer-grained lock can be used instead. But I can't change the basic locking mechanism of the Labview execution system... Or if I can, I think I would get a big warning message Rusty Nails Ahead!. I think Jason also expressed my problem quite well and outlined the difference between what we can access as a LabVIEW programmer vs. what I get if I dust of my old C programming hat. Presumably you are more of a DAQ-centric person than a LabVIEW-centric person at NI. I'm more of an operating-system-centric person at NI :) NI is developing a new OS?! LabVIEW everywhere indeed! :-) Cheers, Scott
RE: Slow Printing
At 10:03 -0400 5/20/04, Dan Press wrote: Printing takes time, and it wants to run in the UI thread. Now go upgrade to LabVIEW 7.1 and XP Pro. 1999 called; they want their software back. :) Then upgrade to a true multi-threaded system. You know the one, that one based on a multi-threaded, symmetric multi-processing kernel. Upgrading from 1999 to 2000 is not a win. :-) Seriously, consider a alternative platforms when upgrading. The effort of switching is not as large as software companies want you to believe. -Scott
Re: DAQmx, etc.
At 7:58 -0500 5/19/04, [EMAIL PROTECTED] wrote: If the task acquires a finite number of samples and you set this input to -1, the VI waits for the task to acquire all requested samples, then reads those samples. Is this a blocking wait like the non-DAQmx call into a CIN (or LLB) or is it a LV style wait where other LV nodes even in the same thread can execute? That would be nice! Is there a way to do this threading in our own created dlls (frameworks)?. I would like to make my PCI-GPIB library non-blocking but that is not trivial because of this limitation. Is there a way to set up a call back into LV for a non-blocking wait from a CIN or framework? Then again, DAQmx could be ported to all the other platforms since it was written in such a nice modular way that it only needs a trivial stub driver for other platforms. :-) -Scott
Re: LV2 style globals, events. Was Re: DAQmx, etc.
At 6:04 -0600 5/19/04, David A. Moore wrote: At 10:24 -0700 5/18/04, tim wen wrote: another question: i've been using LV2 style globals to pass data between parallel loops and am wondering if a queue is a better way to go? Scott Hannahs [EMAIL PROTECTED] wrote: Probably. If you are just passing data in one direction it can work well. With a LV2 style global you can build in internal processing and value manipulation to the global (ie intelligent global). If you're passing LARGE data, probably not, because LV2 style globals are more efficient than queues i.e. you can avoid making extra copies of the data. Interesting. Does anyone know why a queue would make extra copies of data. I haven't tried pushing MBytes thru queues but there doesn't seem to be any inherent reason that a queue would make extra copies of the data. It should make a copy upon entering the data into the queue and the caller would release it. Upon dequeue the queue should release the memory and the receiving VI would copy it. (Note: these may not be actual copies but passing of pointers). This should be equivalent to a LV2 style global with a USR? The exact same memory allocation/deallocation should take place. I guess the real test is to make a couple of benchmarks and profile it. -Scott
Re: DAQmx, etc.
At 10:24 -0700 5/18/04, tim wen wrote: In LV6 the 'AI read.vi' hogs the CPU waiting for the number of samples requested to be available. someone (sorry for not remembering the name) came up with a 'non-blocking AI read.vi' which i have been using happily. i noticed the new DAQmx 'contgraph.vi' is hogging the CPU also. is there a cure for it ( i think it makes DLL calls)? One version is at http://sthmac.magnet.fsu.edu/labview in the VI library. I think there are a number of these around. I have not updated it for DAQmx since it is not available for my development platform. :-( I don't know if it would be a simple modification to make it work with DAQmx. It is a fairly simple concept and not too complicated code. another question: i've been using LV2 style globals to pass data between parallel loops and am wondering if a queue is a better way to go? Probably. If you are just passing data in one direction it can work well. With a LV2 style global you can build in internal processing and value manipulation to the global (ie intelligent global). -Scott
Re: Dealing with large file
At 13:45 -0400 5/17/04, [EMAIL PROTECTED] wrote: I want to tell excel from LabView to open or import large data file. The data doesn't fit on a single excel worksheet (65500 rows). I really suggest dumping Excel. As the notable Gary Johnson defined it, Excel is a word processor that calculates. It has trouble with large data sets and you should do the reduction to something manageable in a different fashion and then use Excel for formatting the output. When you run into these problems you need to re-think your basic strategy not try to fit the square peg of large data into the round hole of excel. -Scott
Re: Visual source safe - followup question
At 7:19 +0100 5/6/04, Craig Graham wrote: Hmm. This message was posted some days ago and has only just appeared. List problems? No. Problems with sender. I am replying privately with details -Scott
Re: Labview 7.1 released 5/4/2004
At 9:44 -0700 5/6/04, andrew johnson wrote: Is there yet a list of labview bug fixes that 7.1 incorporates? AFAIK, it is NI policy NOT to distribute a list of bug fixes. I have been variously informed this either for competitive reasons or it avoids confusing the users. Standard disclaimer, if you don't like these reasons or want another reason, contact NI and your sales engineer. -Scott
Labview 7.1 released 5/4/2004
List of features at: http://www.ni.com/labview/upgrade.htm
IMPORTANT ADMINISTRATIVE NOTE - LIST CHANGES
As we informed you awhile ago, the Info-LabVIEW is moving. We hope that this will be accomplished with very little disruption. The new list is up and functioning and all the addresses have been transferred. 1. Announce the new email addresses and activate the lists at FSU. That should be what this announcement is telling you! If all is well you should receive 2 copies of this message, one sent to the old address and one sent to the new one. The new list addresses will be [EMAIL PROTECTED] Please UPDATE your address books. Note, replying to old messages will stop functioning at some point. Also note that you will need to update any filters that you use for mail to reflect these new addresses. 2. Set the current machine here to forward list mail to the new addresses (probably active for 30-60 days or so). after 30 or 60 days, 3. Turn off forwarding here and put an autoreply on those addresses pointing users to the new site (again, for some finite period of time). Some time in the future. 4. Shut down the original info-labview list server machine (a 6100/60, ie 1st generation PowerPC, in case you were wondering). -- To send messages send email to: [EMAIL PROTECTED] To subscribe to info-labview, send an email to: [EMAIL PROTECTED] To subscribe to the digest version of info-labview, send an email to: [EMAIL PROTECTED] To unsubscribe to info-labview, send an email to [EMAIL PROTECTED] To contact me (the list manager) send email to [EMAIL PROTECTED] (NOTE: the slightly different domain for this address!!) Tom Coradeschi Tom Coradeschi, Info-LabVIEW List Maintainer [EMAIL PROTECTED] http://www.info-labview.org/ and Scott Hannahs - Dr. Scott Hannahs, Head of User Research Instrumentation - - http://sthmac.magnet.fsu.edu - - National High Magnetic Field Laboratory, Florida State University- - 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 -
Re: source code for 2d cross-correlation fx?
At 11:11 AM -0400 4/15/04, Don J Roth wrote: I know this is a long shot but does anyone have the c or c++ code to compute the 2d (image) cross-correlation fx? (I know that IMAQ VISION has the cross-correlation routine but I am looking to potentially modify the 2d correlation routine to compute something called non-symmetry coefficient and would need to start with the source code). I know this is a long shot, but http://developer.apple.com/Documentation/Performance/Conceptual/vImage/index.html has built in optimized vector libraries that do convolution (which is just a correlation) on 2 D images. Having messed with these libraries they are REALLY FAST. These have been tuned for the hardware and use the vector acceleration when they can. But the problem is that you have to be on the correct platform. Other than that, I think that gnu has some signal processing libraries that you might use. -Scott
List Move Postponed.....
Due to other duties (ie day jobs), the list move has been postponed until next Monday (4/19/2004). This has the added benefit that any problems can merely be chalked up to the Monday Effect! -Scott
IMPORTANT ADMINISTRATIVE NOTE - LIST CHANGES
As we informed you awhile ago, the Info-LabVIEW is moving. We hope that this will be accomplished with very little disruption. The new list is up and functioning and we only need to move the addresses. On Wednesday (April 14) we plan to do the following. There may be some outages and subscribing and unsubscribing may be a problem. Do NOT subscribe now to the new machine since that list will be erased for the transfer. I will send a second reminder on Wednesday. 1. Shut down subscriptions on Tom's machine at k-whiner. pica.army.mil to freeze the subscriber list. 2. Transfer that list to the machine at the National High Magnetic Field Lab at Florida State University and install it there. 3. Announce the new email addresses and activate the lists at FSU. The new list addresses will be [EMAIL PROTECTED] Please UPDATE your address books. Note, replying to old messages will stop functioning at some point. Also note that you will need to update any filters that you use for mail to reflect these new addresses. 4. Set the old machine at k-whiner. pica.army.mil to forward list mail to the new addresses (probably active for 30-60 days or so). 5. Bonus question (what does k-whiner reference?) -- To send messages send email to: [EMAIL PROTECTED] To subscribe to info-labview, send an email to: [EMAIL PROTECTED] To subscribe to the digest version of info-labview, send an email to: [EMAIL PROTECTED] To unsubscribe to info-labview, send an email to [EMAIL PROTECTED] To contact me (the list manager) send email to [EMAIL PROTECTED] (NOTE: the slightly different domain for this address!!) Scott Hannahs - Dr. Scott Hannahs, Head of User Research Instrumentation - - http://sthmac.magnet.fsu.edu - - National High Magnetic Field Laboratory, Florida State University- - 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 - and Tom Coradeschi Tom Coradeschi, Info-LabVIEW List Maintainer [EMAIL PROTECTED] http://www.info-labview.org/
Re: Setting control default value
Depending on how much trouble you want to go to... You can make it a dynamically loaded VI in the built exe. Then when you need to set its default value. Since it isn't running, then set the value, make it a default then save the VI back into the llb. Then when you need the value, just call the VI dynamically and it will return that value. This why bundles of files (or what used be be resource forks) work so well in encapsulating all this in what looks like a single file to the user! -Scott At 12:49 AM +0200 4/10/04, Christophe Salzmann wrote: Well that is exactely what I'm trying to avoid, an additional file! So unless someone has a better idea I'll encode my single default value as a VI name inside my llb.
Re: Request for suggestions on structuring!
At 1:38 PM +0100 4/2/04, [EMAIL PROTECTED] wrote: Dear Group, Please can you educate me, my brain's exploding here. I've been given a huge, old-style procedural flow diagram to code up in LabView 7, to create an automated test environment. (Thanks so far to Chris Harden for your help, but I'm still stuck on details.) See http://www.spherica.demon.co.uk/LabView/basic%20flowchart.gif Ok, here is a start at handling this as an event driven system. This can be either a simple event structure or look at the producer/consumer template for doing the same thing using a queue to pass commands from the user interface to the work loop. pop up a dialog box to get the file name and test data. This is just a sub-vi with the vi properties set to dialog. It just loops until an accept button is pressed and then passes the filename and test data to the main prog. initialize Then big event structure in a while loop with events for (A/B radio button), (C/D/E radio button), (F/G radio button) and a stop button. Start with A/B visible and enabled and the other 2 invisible. When A/B has value changed, use the new value to select a case to hide (or grey out and disable) the C/D/E radio button and unhide the F/G radio button and do calibration procedure 2 (or vice versa for the other case) also hide the A/B radio button. For the F/G radio button event use a case to select a call to process F or G in a loop, for each iteration ask to re-do? in a dialog box or make other test and decide to exit the loop. Store the file and return to the main event loop. For the stop button change event case send the new value of the stop button to the main while loop to terminate. -Scott -- - Dr. Scott Hannahs, Head of User Research Instrumentation - - http://sthmac.magnet.fsu.edu - - National High Magnetic Field Laboratory, Florida State University- - 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 - Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning. -- Robert Cringley (Triumph of the Nerds).
Re: Upgrade from Full to Base version
At 11:38 AM -0400 4/6/04, Stéphane Caron wrote: I'm using LabVIEW 6.1 Full version and I want to upgrade to LabVIEW 7 base version (I have some reasons to do that :-) ). I don't use any feature specific to the full version vs base version. Is it possible to make that kind of upgrade, will the base version be able to open VI made with a full version ? I believe that is true. However you will not be able to edit the features that are part of the full version and not in the base version. Make sure that you are not loosing access to something you need! You will be missing a lot of the analysis tools and the event driven user interface programming! http://volt.ni.com/niwc/common.jsp?page=labview_devchartnode=1381
RE: API Serial Functions
At 1:17 PM -0400 4/6/04, Michael Aivaliotis wrote: Ok, I guess a definition is required for the term VISA because I think we are on different wavelengths. When I speak of VISA, I mean any call (from LabVIEW) of the VISA Read and VISA Write functions. That is my definition as well. But to make them functional you need the libraries somewhere. Regardless, you are still obligated by NI licencing and distribution requirements. I don't want to start another licencing thread... No, no, not that!!! Anything but a licensing discussion! :-) I fairly sure that for the correct platform you can embed the VISA libraries in an executable, This is the first time I hear of this. Embed? Meaning no external DLL's or support files? Even if this is true, you still have to have a valid VISA distribution licence. The DLLs (frameworks) can be placed in the resource directory of the built app. It will look monolithic as a single file. They are technically a support file, but the definition gets fuzzy if such a bundle of files looks like a single file to the user. That might be the only requirement, that the final product just be a single icon that can be dragged onto a machine. Of course another way to approach that is have the application look for the VISA libraries on launch and install them automatically. This will leave traces on the target machine, but to the user there is only one application icon and they just click on it. There apparently are other none NI solutions that incorporate external DLL's, ActiveX controls, .NET assemblies etc. (how about the Mac?). Are any of these Opensource? ;-) The Mac it is trivial. just open up a file to /dev/tty.USA28X1915P1.1 and you are connected to one of the keyspan serial port connectors. Linux would be the same trivial exercise with a different text string. You can set the port parameters with a system call to stty after you open it. However, VISA is still easier. -Scott
Re: Recommendation for USB to Serial Port converters
At 11:33 AM +1200 4/8/04, Tim Streeter wrote: I have been using cheap USB to serial converters, made by 'Planet', and they have an annoying feature/bug of the same device getting alocated a new port number if pluged into a differend USB port. This is not much of a problem if only 1 usb to serial converter is used, but I am using 4 connected to a hub. I know the reason for this 'feature', it is because the devices are cheap and only identified, by the driver, through its place in the USB tree. My question is: Does anybody know of a USB to serial converter, that doesn't suffer from the above feature, that they can recommend. The keyspan twin adaptors do the same thing. However I merely plugged them into all the ports and then for each port configured it to have the same port name using the driver software. (ie modem and printer). I then set up the VISA.ini file to use visa serial ports 1 and 2 for modem and printer. This works fine, except for one bug in the Keyspan driver where you can't repeat this process for more than 8 ports or the configuration software locks up. I think it may be inherent that a USB device is identified by the physical location in the network. -Scott
Re: Setting control default value
At 11:12 PM +0200 4/8/04, Christophe Salzmann wrote: Does anyone know how to set programmatically (via the VI server) the default value of a control, this when the VI is running? That is one of those things that can't really be done since it actually is an editing operation. This means that the VI needs to be in edit mode which is not possible if it is being run.
RE: Alternative info-LabVIEW list (NOT!)
At 2:04 PM -0500 3/22/04, Bookwalter, Dan wrote: I would like to see Info-LabVIEW on a news (NNTP) server. I sure hope this doesn't happen... I have tried and tried to get our IT guys to open up NNTP for me. They simply won't do it... I am sure there are many others in the same situation To everyone For the immediate future, I plan on no major changes to how the list is run. Many people have asked that it stay HTML free but no one has pleaded that they have to have HTML. It will stay text only until things change. Attachments will be still banned as much as possible. Many incorrect attachments can slip thru the filters, but there will be a size limitation. Only members will be allowed to post with a double opt-in subscription as usual to defeat robots (at least so far). It will not become a news group. There is a news group already. Join it if you like. It has advantages and disadvantages, but I do not intend to duplicate its functionality or compete in any way. Mirroring the list to an news server is may be possible, but it would probably be a one way street and people using the news group will certainly not be able to post. This reduces the community and I am not strongly in favor of it at the moment. I will look into it, but trying to make a news group and keep it restricted to members only may be a bit of a job. An archive of ALL messages to info-labview since 2/14/1992 has been established at http://www.searchview.net searching by subject will get most of a thread. Enforcing threading is very hard given the tendency for people to use the same subject while wandering far afield. For those who need threading I highly recommend a good email client. A good email client can thread and expand your digests so you can got to the messages you want. A good email client can filter the LabVIEW mail messages into a separate inbox. A good email client can thread messages based on headers and subject lines. This seems to be most of the functionality that I have seen requested. A good email client can give one almost the same functionality that a newsgroup does. At 10:00 AM +0800 3/24/04, wayne galbraith wrote: If the list adopts the attitude of 'if it's not broke then don't try to fix it' we'll all be ok. That will be the starting point along with the KISS principle! I have been subscribed since that first valentines day message and the current format has been successful and survived the test of time well. Any changes will be carefully considered before implementing them. Of course I still feel it is your list and will take suggestions that don't turn into a full time job for me! -Scott
Re: API Serial Functions
Yes, and I have updated them and they are available http://sthmac.magnet.fsu.edu/labview. The gotcha is that they use traditional serial port calls and since LV 7.0 those calls are now routed thru VISA. There is also a native VISA version that is much more robust and simpler. It is a great package and made the transition from traditional serial to VISA almost trivial! But since the traditional serial port calls have gone away this is not a work around. The best is that there is a serial only visa package that makes things manageable. -Scott At 1:52 PM -0600 3/26/04, Bill Gilbert wrote: How about the NLSerial functions that were written at Philips Research by Albert Geven co? Are they still in the list archives? I still have a copy. Not sure how they would feel about someone distributing them for profit, but you could ask. Here is Albert's address from the doc file(old): Albert Geven, email: [EMAIL PROTECTED] I used these in some applications back when I was really disgusted with VISA and it's documentation for serial stuff. They are still working in old systems we have which have been upgraded as far as LV6.0.2. Thanks again Albert, if you are listening! I'm happy using VISA now, but it is sort of like the Swiss army knife you got for Xmas with 35 blades that requires you to switch to suspenders to hold your pants up. And all you really wanted was a bottle opener. --BG Bill Gilbert, EM Tech UMN School of Physics and Astronomy Tel 612 624 4870 Fax 612 624 4578 C. Allen Weekley wrote: Hello, Has anyone written VI's to perform serial I/O using functions in kernel32.dll? Allen Weekley
[M] PCI-GPIB driver NEW VERSION for Mac OS X 10.3
I apologize for the cross posting, but I have gotten messages from all these groups! There is a new version of the PCI-GPIB driver for Mac OS X. Due to people asking, I have recompiled the driver for Mac OS X and corrected some problems so it now runs under Panther. This has minimal testing so feed back is appreciated! I am trying to get it out there since there seems to be some demand. The new driver can be obtained at: http://sthmac.magnet.fsu.edu/labview/LVonMacOSX.html#PCI-GPIB The new kernel extension will work with Igor and OS X 10.3.3 as well. Follow the read me file about renaming for that. An XOP for Igor is included. The labview libraries are much improved to handle some newly implemented calls (Wait for SRQ etc.). I also, have added a few more emulation routines that make live a lot easier. -Scott
RE: OpenG Coding Challenge - Remove Backspace
I think I have those covered. I don't know enough to shorten my time anymore. I look forward to seeing the other VIs. I have no ideas how to make it any cleaner. It will be some work, but something like the evaluation done by NI on the different submissions. My vote is evaluation for not only minimum time but memory foot print etc. For the 1st NI challenge I was just out of the top 10, but I was about 0.1% of the size of any of the top 10. I always thought that should count for something. next is average speed on multiple platforms. :-) (mine is still in the 20 mS range, but given that the peecee has a factor of 2 better compiler, and this is on an old 800 Mhz machine, it might come close to the posted times). It may be very interesting to create the executable and then profile it with some of the high end (not NI) performance tools. -Scott
Re: Let's have election!It is fun:)
At 2:51 PM -0500 3/17/04, [EMAIL PROTECTED] wrote: Let's have election! Primary?? It is fun:) I'm from Florida, so I'll count the votes! Kathy Harris taught me how to do it! -Scott
Re: MAC driver for PCI-MIO
At 9:08 AM +0100 3/17/04, [EMAIL PROTECTED] wrote: Is there anybody who has written a driver for MAC OSX10.2 for the following cards PCI-MIO-16XE-50 and DIO 96 See the part about RLP (register level programming) on http://sthmac.magnet.fsu.edu/labview/LVonMacOSX.html The DDK has examples to run most cards. Any code you develop I would be willing to make a library of and help distribute to others since I will be getting into the same things soon! Also this is the first public announcement of this web page showing my take on the status of LV on OS X. Any comments or additions welcome. -Scott
Re: Decimal String to Number with DBL Default
At 11:36 AM -0500 3/18/04, Paul F. Sullivan wrote: LabVIEWers, If I use Decimal String to Number with an I32 zero as the default, convert To Double Precision Float, and then Divide by 1000, everything works fine for positive and negative numbers. To save the conversion, I tried using a DBL zero as the default. For unsigned number strings, this works fine as well, but if the string starts with a + or a -, the string doesn't convert and I get the default value (LV5 to LV7). Does anyone know why this happens? Is it a bug? Use Scan from string instead. You don't need a format specifier if there is a default value wired in. But the Decimal String to Number obviously doesn't like +/- and only works on strings of decimal digits and not signs. If you want tighter parsing you can specify a %d format string on scan from string or run it thru the string matching algorithm with [+-]*[0-9]+ to check for a correct format. This is an optional + or minus followed by 1 or more digits. -Scott
Re: Let's have election!It is fun:)
At 7:39 PM -0500 3/17/04, Scott Hannahs wrote: At 2:51 PM -0500 3/17/04, [EMAIL PROTECTED] wrote: Let's have election! Primary?? It is fun:) I'm from Florida, so I'll count the votes! Kathy Harris taught me how to do it! Just to keep everyone informed, I counted the votes last night and it was a simple 5 to 4 decision! -Scott (yes this starting to get to be obscure US political humor, I'll shut up now!)
Re: Let's have election!It is fun:)
No this is not politician speak. And all joking aside, I also am sure that we want one list. Adding features just because it is possible is not always a win situation. Personally, I like the text only format. Otherwise I get email in someone's favorite font that shows up in an unreadble color and very very tiny for my rendering engine. (or a big bold color and HUGE characters) Font specifications are not cross application much less cross platform. Attachments are allowable right now with a single check box option in the software. BUT that is a big problem! One is the obvious virus danger, but the other is that some of us read this list at home over phone lines and in-line graphics and attachments just clog things up. My attachments folder is already full of things that belong there and LOTS of things that should go away! I agree with Michael that we should first get a stable server and then think about changes. But I don't want to leave some of the less technically enabled people behind. I really encourage people to put attachments up on a web site and reference them. I think this could be done with an open upload area. But that just invites problems as well. The only way to prevent mangled attachments from getting thru the list and onto us is by restricting size of a message. Also the double opt-in registration, members only posting and message size limitation all work to keep this list spam and virus free! (Michael, give me a call and we can talk about it) -Scott At 3:37 PM + 3/18/04, = Michael Aivaliotis = wrote: Seriously, the final choice I guess will be Tom's as he indicated. Whatever the decision, I will go along of course. And I think we all agree that one list is the final goal. As far as adding features such as attachments and HTML, this is a major change from the previous operation. The capability is already there in the new location i'm proposing. It is just a checkbox I click on. The question is should we do that? Many people like the existing format because it requires very little bandwidth. So, i think if a change to the behaviour is required, we can take a poll and let the members decide. Like I said, the capability is there and we can switch this on in the future if necessary. For now, the primary goal is to get to a stable server. -- - Dr. Scott Hannahs, Head of User Research Instrumentation - - http://sthmac.magnet.fsu.edu - - National High Magnetic Field Laboratory, Florida State University- - 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 -
RE: API Serial Functions
At 7:31 PM -0800 3/8/04, C. Allen Weekley wrote: Yes. My company manufactures a variety of instruments that communicate solely with serial. We have been using NI-VISA and are happy with it, but NI-VISA requires an installation that is often larger than the application we supply to our customers, and there are licensing restrictions for distribution. I was hoping to develop our own serial functions in a much smaller package than NI-VISA. This is why I am interested in using the Windows API. NI-VISA with its support for so many kinds of instruments seems like overkill for our application. When the customer installs the NI-VISA driver they end up installing features to support GPIB etc. that are not needed for our application. Yes this is a problem. But you are also throwing out support for any other platform! I suggest you bring up these problems with VISA to your NI contacts. Feedback is important! The licensing fee for VISA is supposed to be small (we had a discussion about that here awhile ago). But the libraries can add a lot of size to an application! But then again, so does the LV runtime engine! -Scott
Re: API Serial Functions
At 4:27 PM -0800 3/8/04, C. Allen Weekley wrote: Has anyone written VI's to perform serial I/O using functions in kernel32.dll? Allen, Why re-invent the wheel? Actually the people who did this are the people who wrote the VISA library. Any reason not to use their work? -Scott
Re: Application restarting
At 4:25 PM + 3/2/04, Craig Graham wrote: From: [EMAIL PROTECTED] I have a Labview application which is meant for test and measurement application to test some the units in production, Randomly this application is restarting the system ( running on Win98SE OS Ditch that for a start. Go for an NT derivative- NT4, Win2K or XP. Or a modern Mac. Or Linux. In fact, anything other than the Win95/98*/ME stream. Craig is right! That is normal expected behavior for a DOS derivative O/S! -Scott
Re: Hiding Main VI's Window in built application
Because in A, once you close the front panel there is no reference to the VI, unless it has opened its own reference. At 1:38 PM +0200 3/1/04, Yonatan Tidhar wrote: From my experience (6.1) At the top level VI: A) if I use property node FP.Open and wired False Value to it and the reference input is empty at run time when the property node is called the vi FP is close and the vi executing terminated. B) If I open reference in the top level vi to it self and wire it to the property node the FP panel is close and the vi keep running. C) In the executable app the top level vi FP is show always - I think the show FP when load is ignored. my question are: 1) way did closing the front panel of the vi is stop the vi execution (case A)?.
Re: Hiding Main VI's Window in built application
At 11:41 +0200 02/23/2004, E. Blasberg wrote: A colleague wants to build an application where a Password dialog appears and only if the correct password is entered would the main VI appear. 1) Launch Password which then uses VI server to launch Main VI 2) Embed the password VI in the Main VI, but move the Main VI off-screen 3) Find a way to have the Main VI not show until the password is entered. I think #1 is a clear winner. First you throw up the password dialog, but in parallel, open a reference to Main.VI. This will cause the Main.vi to load while the user is entering the password. This makes things run much smoother from the user perspective it Main.vi is any reasonable size. Then just run main and not wait for it to finish and exit the password VI to get it out of the way. Then just make sure that main will open a refrence to itself so it stays running. This is just a modification of the splash screen technique discussed here at great length, only the splash screen has a password. There are probably some examples in someones archives! -Scott
Re: Reading file names from a directory
At 16:18 -0800 02/18/2004, Lewandowski, James R. wrote: I'm trying to read all file names from a directory into an array and then choose the ones to process. The List Directory vi implies that it will do this but I'm not having much luck. The vi will produce a list of my available drives if I do not give it a path name. Any hints on making it work? Give it a path? Seriously, the VI has to know which directory to list! You may need to build a path from the current directory, the volume info, default directory or something, but you need to give it a directory to list! There is buried in the vi.lib/platform/filemanager and vi.lib/utility/recursiveDirList.llb some useful routines for searching directory structures. Unfortunately I don't believe that the recursiveDIrList utilites are actually recursive. There is also a directory listing VI examination utility at http://sthmac.magnet.fsu.edu/labview/vi_library.html (that is not truly recursive either, but I will redo it someday). -Scott -- - Dr. Scott Hannahs, Head of User Research Instrumentation - - http://sthmac.magnet.fsu.edu - - National High Magnetic Field Laboratory, Florida State University- - 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 - Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning. -- Robert Cringley (Triumph of the Nerds).
Re: Problem withWaveform Chart
At 17:56 -0500 02/18/2004, Scott Hannahs wrote: An example can be downloaded at: http://sthmac.magnet.fsu.edu/downloads/labview/bugs70/ChartSpeedTest.vi And if anyone tried the example, it is now fixed and truly a LV 7.0 file! Sorry about that. If someone wants to try it under LV 6.1, let me know and I will convert! -Scott
Re: Serial Port
At 18:18 -0500 02/13/2004, Subramanian, Shankar, K wrote: How different is it to configure and acquire data using serial port rather than NIDAQ card. Could anyone help me out in this? A lot different. Now the problem is communication with a device rather than configuring a board. Whole different style and problems. The first of all being that any two serial devices will not communicate on the first try! :-) Check some of the simple serial port VIs. You can try the serial library I use http://sthmac.magnet.fsu.edu/labview/vi_library.html which gives a good place to start. -Scott
Re: Picture.
At 20:49 -0300 02/16/2004, Daniel Alejandro Moyano wrote: I would need to know if it is possible to remove the window case in the picture.ctl. I mean, I would like to show a picture less window case. Color the boarder transparent. -Scott
Re: Converting integers to binary
At 15:47 + 02/18/2004, David Macleod wrote: Hi there, I'm a new LabVIEW user and I'm using it in my final year University project (an ultrasonic scanner). Basically I am storing an array of data in LabVIEW and I want to convert it to a suitable state for the imaging software. The software requires a text file which contains the data in 8 bit binary numbers, comma seperated. The array I currently have stores integers. Is there any way that you know of to convert integers to binary in LabVIEW? Or if there's some function that writes binary to text files? I'd appreciate any suggestions anyone has on this. array to spreadsheet file, function and give it a %b format string with a , (comma) delimiter. Convert your array to U8 first so it is only 8 bit values. -Scott -- Dr. Scott Hannahs, Head of User Research Instrumentation http://sthmac.magnet.fsu.edu National High Magnetic Field Laboratory, Florida State University 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 Mac users enjoy a love-hate relationship with Microsoft--in which love is defined as 'resigned tolerance' and hate as 'lava-hot rancor fueled by the fire of a thousand burning suns.' -- Macworld
Re: BUGs
At 23:15 -0600 02/16/2004, Greg McKaskle wrote: Of course this is one of those topics that is difficult to discuss in writing, so please don't use your whiney voice when reading it. I'm simply trying to give insight into our process. This process is not unique. One can substitute any large software software project. I think the process NI uses is the same as almost anyone selling/maintaining software. I don't particularly like the model/existing practice. Maybe I should clarify that the sound track is NOT a whiney voice, but the distant sound of tilting at windmills! LV is a very complicated piece of software. Like most complicated systems, changes can be characterized by cost, risk, and benefit. These are the what the LV team members use to decide what bugs get fixed and when. Of course bug fixes are also weighed against the development of additional features. But what metric is used on the space of cost/risk/benefit? Of course, ultimate responsibility of the corporation to its owners means that cost/risk/benefit are all judged in terms of fiscal income. The argument that this is bad or good is irrelevant, but this is the standard against which those terms are judged. The point of the interview I posted was that bug-fixing is low benefit, high cost using that metric. For me, the high cost is mistakes controlling equipment which for one of the long standing bugs (which is high cost, low return) is that valves get modified on actual equipment at times the operator did not intend to actuate things. This involved a rather kludgy chunk of code to get around, and then it is high cost (to me) to maintain, since explaining this obscure code takes time/effort/cost.This end user cost needs to be translated to cost to NI. When triage is performed, these bugs frequently find their way at the end of the list. That isn't to say they won't ever be fixed, but these are usually batched together and dealt with when a specific feature is reworked. Well, actually for some bugs, they will be permanently on the low end of the scale and never fixed unless that whiney voice implies that there is a cost! The Squeaky Wheel concept is certainly something that is considered during triage. Again, maybe the squeaky wheel factor shouldn't be considered but it is. As an example, units in LV is a unique experiment unlike what I've seen in other programming languages or engineering tools. This is where bugs are actually a design defect and not fixable without a major rewrite/overhaul. Units are somewhat unique in the way LV handles them. Again, NI will sell more copies of LV by adding express nodes than by fixing the units problems until the users start to complain a lot. In some respects the model rewards that whiney voice. I don't like it either. Units and charts are still on the list of things that could stand to be improved, and my advice to you is to make sure that bug reports give the engineer good information so they can make good estimates on the cost, risk, and benefit. In particular, they can judge the risk of changes to a particular area, and estimate the time to make the changes, but it is sometimes hard for them to estimate how much time and how many LV users are bothered by a bug. Maybe a more complete description on how to report a bug and what to do, to debug the bug. So that the information is as complete as possible. The standard report merely asks a few simple questions about hardware/software configuration. Maybe some suggestions for testing when and where the problem does or does not occur. In most cases this is an artI think I have gotten good after 20 years of beta testing various hardware/software solutions but we could all use guidance above the simple level that is posted on NI's web site. I admit, that sometimes I get sloppy and do a bad bug report as well. Of course if you are honest, you may have just relegated your bug to the back of the line And occasionally we get to whine about it! There was a nice article in Tech Review journal about Why is Software So Bad. This was a nice rundown of the drivers for software development and some of the attempts to fix it. In a more perfect world with educated consumers and producers all would be fine, until then I will keep tilting at those dang windmills. They might be giants! -Scott
Bugs, reprise (or one more obscure quote!)
The selfish spirit of commerce ... knows no country, and feels no passion or principle but that of gain. -Thomas Jefferson (1743-1826)
Re: Serial comms
At 12:30 + 02/13/2004, Craig Graham wrote: The next is in the other port settings. The manual specifies 1 start bit, 8 data bits, 1 stop bit, no parity. The VISA serial stuff in Labview 7, which I've only just started playing with, has properties for stop bits, data bits and parity which I've set, but I can find no option for start bits. Is this a problem? On the offchance, I've tried all three numbers for stop bits with no success. One start bit is the only option. I have never seen a device that uses a different number of start bits. But serial is so screwed up I am sure there is someone out there that decided to use pi start bits! The bytestream can contain null characters, so I've found the Discard NUL property and switched it off. Since it's three wire communication- ground, rxd and txd, I've set handshaking to none. I've also disabled the termination character. Again on the offchance, I've tried sending an additional null byte at the end but it didn't help. Does anyone have any suggestions? It seems that your device is not responding because it probably hasn't gotten a complete message from the host. Check the documentation to see if there is a message terminator in the command string? Try a carriage return or lf as a terminator. Try EOT as a terminator. Make sure that the string has the correct check sum (sometimes protocols have the checksum include the string lenght tag, sometimes not). I would guess the problem is in carefully crafting the string since you have tried all the hardware options. Many systems have a way of snooping on serial port communications. I can give you a good way for Mac OS X.. But I am going out on a limb and guess that isn't your host system! :-) Others can suggest software for various winders versions. -Scott
What is the purpose of upgrading?
This contains very discouraging interview with Bill Gates. With a decidedly biased opinion piece, but certainly an educated discussion. http://billpalmer.net/com000144.html The full interview is http://www.jas.com/shame/shame/focus.html Obligatory LV content Do bugs get fixed between versions. Yesterday evening I looked over the bug list for LV from V 6 to 7.X. There are many long standing bugs, that just are not getting fixed! This is in 4 major upgrades of LV (some I know existed in LV 5.1!). A clear example is the thermometer units bug. Now it could be worked around by creating a VI, but it is still clear that it is a bug and fixing bugs in existing software has two drawbacks for a corporations. No glory and no income. References: Item 13, http://sthmac.magnet.fsu.edu/labview/buglist602.html Item 3, http://sthmac.magnet.fsu.edu/labview/buglist610.html Item 2, http://sthmac.magnet.fsu.edu/labview/buglist70.html There are several others as well. (waveform chart drawing, etc). FYI: these have all been reported to NI thru normal channels as well as beta test versions. -Scott (beating the dead horse of software reliability) -- Dr. Scott Hannahs, Head of User Research Instrumentation http://sthmac.magnet.fsu.edu National High Magnetic Field Laboratory, Florida State University 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 Do not meddle in the affairs of sysadmins, for they are easy to annoy and have the root password.
why I hate express vis.....
This is obviously my grumpy morning. And I have even had my prescribed dosage of coffee... I have been working with some software from a major instrumentation manufacturer. It is one of those VIs that tries to do everything with multiple tabbed front panels and lots of user interface controls and property nodes. Opening diagram extends over about 7 screens horizontally and 6 screens vertically (1600X1200 pixel screens). Ok, bad enough, now open the hierarchy window and I see a main VI and about 200 express nodes, that I can't open without converting to sub-VIs. There were 4 actual real non-system subVIs in the whole thing with main VI using about 12 Mb of disk space. Unfortunately the programmer had hardwired the path separation character so it failed on all platforms except the development one. The character was in 26 different places and each place was wired into somewhere between 1 and a dozen string building functions. -Scott
RE: Dual monitors for labview use
At 10:34 -0600 02/13/2004, Scott Serlin wrote: What is the difference in performance I could see between running two separate pci cards, one pci card and one agp card, or one dual-monitor card? Depends on what else you use the PCI bus for. It is slower performance for raw bit pushing than the AGP so if you have a smaller monitor use that one on the PCI bus. If you are also trying to acquire 60 MS/s of data, then I wouldn't recommend the PCI bus. It is a limited resource like everything else.
RE: 60MS/sec- is this possible?
At 11:24 -0500 02/11/2004, Ross, Michael wrote: I have been interested in this thread - it is pretty normal for people (managers/clients) who don't actually use LV or DAQ to ask for something that doesn't make complete sense. Do I risk irritating them by trying to make it make sense from the start (and potentially convincing them that I don't understand their application)? My approach is to start out that I don't know the specifics of the application. I need to know a lot more details and reasons before coming up with an integrated solution. This is a good case, and there may be good reasons for actual data streams of 60 MS/s. But you need to know what the end user really wants in terms of data, and what information is to be extracted. People almost always over specify what they want. Then it comes down to determining exactly what they need. This is usually in a cost/functionality kind of scenario. One of the ways we do RFPs has been particularly useful is to do all requests for proposals as a two part system. The first RFP has our requirements as we see them, but we ask the vendors to suggest options or changes in the requirements that would impact things. Then we incorporate any suggestions we like in a final RFP which is then out for bid. -Scott
Dangers of pipes....
Well I am not talking about skateboard competition here, but interprocess communication. I have found that the LV library manager will hang forever (not hang ten) when asked to list dates of files in a directory that contains a named pipe. This probably causes problems with other types of file VIs upon which the library manager is built. Just a warning to those who are thinking of piping data around. (yes it has been reported to NI). -Scott
Re: tIMER
At 15:43 + 02/05/2004, Nuno Lambuça wrote: I know that the serial data in a parallel port is a loss of 7 databits, but it was the cost :( Yikes. You really wanted to try to send serial data using one signal on a parallel port? I doubt that could be reliable at almost any baud rate! For a few (ie 15) USD, you can get a uart chip and power supply that will convert 8 bit parallel to a serial format. -Scott
Re: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi
At 16:19 +0530 02/04/2004, Dr Sanjay Gupta wrote: Gerd, Why not just add up the complex fft's of the various segments prior to computing the magnitude and phase. Works every time. Works differently. That is a vector addition. For a varying phase it will reduce your signal. For overlapping FFTs phase slip will reduce the signal to zero after enough time. RMS averaging will average the magnitude. Very different. -Scott -- Dr. Scott Hannahs, Head of User Research Instrumentation http://sthmac.magnet.fsu.edu National High Magnetic Field Laboratory, Florida State University 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 Do not meddle in the affairs of sysadmins, for they are easy to annoy and have the root password.
RE: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi
The benefits are that you can see the signal change during the 120 second acquisition time. You could see a 200 hz signal oscillate back and forth for example. This is the approach taken by the JTFA (joint time frequency analysis) toolkit. They use gabor spectrograms that take gaussian windows of the data. There is a tradeoff between response time (ie time to put that frequency on the screen) and accuaracy (ie long data sets). The overlapping FFT with exponential averaging is a tradeoff but it all depends on the requirements of the job. If you want real time display then you can't wait for that long 120 second acquisition time. Also if you want information about frequency changes within that 120 seconds. -Scott At 13:56 -0500 02/04/2004, Bruce Ammons wrote: I don't see any benefit to averaging parts of the signal. If you average within a single revolution, you will lose your phase information. There is no benefit of averaging sections of repeated signals either. Just do a large FFT for each revolution and average them. FYI, you could average the signals themselves or the complex FFTs for repeated signals. I don't recommend averaging magnitude and phase in this case. Bruce -- Bruce Ammons Ammons Engineering www.ammonsengineering.com (810) 687-4288 Phone (810) 687-6202 Fax -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gerd Rech Sent: Wednesday, February 04, 2004 10:26 AM To: Bruce Ammons Cc: Info LabVIEW Subject: AW: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi I have a phase reference pulse once per rev which starts the acquisition. So I should get consistent phase readings for repeated measurements. However, I was wondering if it would make sense to average parts of the signal(using overlapping segments) for speeding up the averaging process. The idea is to make as much use as possible out of the data that I get into the PC. Gerd -Ursprungliche Nachricht- Von: Bruce Ammons [mailto:[EMAIL PROTECTED] Gesendet: Mittwoch, 4. Februar 2004 15:27 An: 'Gerd Rech'; [EMAIL PROTECTED] Betreff: RE: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi The only way to get meaningful phase is to start your acquisition at the same phase for every segment. An example of this would be an encoder pulse. If each acquisition starts at a once per rev pulse from the encoder, they will all have the same phase components. Another possibility is doing order tracking, where there is a fixed number of samples per revolution. If you shift your window by the number of samples per revolution, you will get the same phase again. Any time you have a steady stream of data with no reference point, the phase data is essentially useless. If it is a repeating signal you should be able to identify a reference point. I suppose if you don't have a hardware signal, you could use convolution to identify repeating cycles of data. If phase is important, you should have a reference signal. Bruce -- Bruce Ammons Ammons Engineering www.ammonsengineering.com (810) 687-4288 Phone (810) 687-6202 Fax -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Gerd Rech Sent: Wednesday, February 04, 2004 3:36 AM To: [EMAIL PROTECTED] Subject: Re: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi Hi folks, I know the overlapping average technology from signal analysers. In those cases I used them up to now, phase was not relevant. Now I have an idea about a different use where phase would be important. Scott's comment that phase would be meaningless if overlapping averaging is used is making me thinking. What about this: 1. Cut the long waveform stream into a number of (overlapping) pieces. 2. Use the FFT vi for each piece, which will produce amplitudes and phases for each frequency bin. 3. Average apmlitude and phase for each frequency bin separately. Would this create meaningful phase? I would guess yes, as all pieces were acquired in a consistant stream of data originally. Seems that my mathematical understanding does not reach far enough to understand this completely. Cheers Gerd
Re: [W6.1] RMS averaging with FFT Spectrum (Mag-Phase).vi
You are close to what a waveform analyzer does. It is not mathematically very clean, but it is useful for watching frequency evolution over time. But you need a time averaging buffer. For each of the 6 segments, do an FFT and get the Mag and phase. Have a buffer that is the same length as your phase and magnitude and as each segment is acquired (B is buffer and N is new signal) B' = x*B + (1-x)*N This gives a time average. Where the time constant x goes from 0 to 1. If X is zero, then you are only looking at the new signal. If x is 1 then you are only looking at the past. Usually it is expressed as a Number to average as an exponential average. But this way you can update the average in real time. BTW, this is hardly a windows question! The math involved in FFT is mostly platform independent! :-) -Scott At 15:50 +0100 02/03/2004, Roman Golubovski wrote: I need help/guidance on how to use FFT Spectrum (Mag-Phase).vi to perform RMS averaging on sampled strip(s). DAQ produces strip of up to 120.000 samples (max 120sec at max 1kS/s). After that I am asked to do the following: 1) segment the strip into overlaping segments (equally sized) 2) perform RMS averaging on them I am not familiar with this particular technological background and the customer also cannot explain how it is being done - he just wants me to perform what his signal analyzer does! I am not even sure the segmentation is compatible with the RMS averaging process. Anyway, lets assume the strip length is 200 samples, the egment size is 40 samples and the overlap is 10 samples. Than obviously I can segment the strip into 6 segments starting at strip positions 0, 29,59,89,119,159. What do I do now? I gues I have to turn the segments into waveforms with dt=1/fs and t0=0? I guess I should put the FFT Spectrum (Mag-Phase).vi in a loop with 6 iterations feeding a segment-waveform into the time signal connector each iteration? I expect the output is NOT auto-indexed? How to apply it properly actually?
Re: Labview 7 gotchas
At 12:52 -0600 02/03/2004, Vic Blosser wrote: Missed steps, non-functioning portion of the application. Things will work in the development environment but not after it's compiled. I tried saving as 6.1 but there are too many errors. I'm seeing is code within loops not completely functioning before later parts of the code, outside the loop start. My question, what are some of the major changes between 6.1 and 7.0 that can cause problems? Is racing more prevalent in 7.0? If you have any suggestions I would appreciate hear them. Certainly version 7 may have a very different execution order when it recompiles than something did under 6.1. But the code still should function in correct fashion. Code outside a loop can function before a loop finishes unless there is a direct data connection from the data inside the loop to the code on the outside. Version 7.0 may have more threading than 6.1 and this may be revealing problems in old code? It sounds like you have http://www.laputan.org/mud/mud.html. I have a couple of those projects as well. One that has been brought forward from Version 1 of labview and I hope to get to another major rewrite this year. Saving for previous versions should work fine. What kind of errors are you getting there? -Scott
RE: Labview 7 gotchas
At 13:53 -0600 02/03/2004, Vic Blosser wrote: It in the error log indicating that certain vi's from the user libraries, instrument drivers and of course some of the labview vi's can not be saved in 6.1. It is a fairly substantial list. Right, but all those should still exist as 6.1 files and used substituted 7.0 files when you upgraded. But I am curious as to what features get translated to version 7.0 from 6.1 that can't be translated back. -Scott
Re: synchronize
At 22:41 -0800 02/01/2004, Joe wrote: I'm trying to read data packets from a sensor that is connected through a serial port and is configured to transfer data every 100ms. what is the best way to synchronize the reading intervals? Set up a read to timeout after 200 ms if you know your termination characters, or the message length. If you don't then it gets a bit trickier. It depends on how long your string is and how much dead time you are trying to detect. Then set you time out to a little less than the dead time between transmissions. Then put the whole thing in a loop doing the reads. Pass the data thru a queue to a processing loop so it won't stall your read loop and mess up the timing. It will take a bit of playing around to get the timing right and reliable. If you can handle non synchronous reading of the data, then just keep grabbing however many characters you can and keep pushing them into a buffer then parse the buffer. I dislike serial port intensely becasuse of this lack of handshaking and timing problems! And don't even get started on the myriad of connectors and wiring possiblilities. Recommended Standard Indeed! Pfui! -Scott
Re: Subpanels in 7.0
At 08:47 -0700 01/30/2004, Jim West wrote: It is a mystery to me why the VI cannot be open or running. This eliminates several useful scenarios. It also eliminates the confusion of having two different frontpanels active at the same time. The open one or the sub-panel one! They can be running. The examples show several running VIs. examples/general/controls/subpanel.llb Item 2, is possible. If I am thinking of what you are describing, then I have done that. Item 3,just means removing it from the subpanel before opening its front panel. Or vice-versa. Keep the reference to it open so it stays in memory. -Scott
Re: Subpanels in 7.0
At 09:12 -0800 01/30/2004, PJ M wrote: Another strange thing (to me) is why don't I *automatically* get a subpanel refnum when I create a subpanel (instead of that insert VI method) ? Also, because of that, whatch out for these tranparent supanel with no scrollbar (it is so easy to get more that one on the FP without any indication on the BD). Because the subpanel accepts a vi ref number and not generates it. The ref number is for whatever vi you want to put into it. The subpanel is a sink for references not a source. -Scott
Re: I Really Like Event Structures, But...
At 22:41 -0500 01/28/2004, Cat wrote: I have a front panel with 1024 square-light boolean indicators (8 clusters of 4 clusters of 32 booleans, if that makes any sense). The purpose of this screen is to visually alert the user if a sensor is overloaded. Each light represents one sensor. The number of clusters/sensors visible at any one time is dependent on the test configuration. I would like for the caption of a light to appear if the mouse hovers over it, and disappear when the mouse is elsewhere. Other than coding 2048 Mouse Enter/Leave states into an event structure, what options do I have?? Setting the tool tip string property, automatically in an initialization loop? (or setting all 1024) by hand?
Re: Communicating with a VI in a subpanel
At 13:48 -0600 01/27/2004, Seifert, George wrote: Sorry if this has been discussed before but my search has come up empty. Is there any way to communicate with a VI that's been opened in a subpanel? For instance can the subVI respond to a control in the main VI? I don't see how to pass the reference to the subVI. Since the main VI has the reference to the sub VI, just use the value property and pass it the value. You can even use it to trigger events in the sub vi by usign the value (signal) property. Or you can pass a queue to the sub-vi and then have the main vi enqueue elements. -Scott
RE: Greg's Car
At 11:27 -0500 01/26/2004, Coradeschi, Tom [AMSRD-AAR-AIS-E] wrote: You probably went to the County Line. And yes, there is stuff other than pork on the menu: Beef (it's what's for dinner tonight). There was a crowd of us in that car! And we went to the Salt Lick. There was beef BBQ as well and there was always beer! Malted barley makes for a great meal! -Scott
Re: Off-topic : County Line BBQ
At 11:47 -0500 01/26/2004, Jim Henry wrote: All answers are here: http://www.countyline.com/ Actually http://www.saltlickbbq.com/ Good thing it is Monday and we aren't supposed to be coherent or on topic.
Re: FW: Replacing one instance of a VI versus many
At 16:39 -0600 01/22/2004, Scott Serlin wrote: My VI has a subVI that is called out in many places within the top level VI. How do I get the parent VI to pick up the subVI that has been changed through the entire parent VI in one shot? If you merely modify the sub-vi and resave it then it will call the new sub-vi everywhere. If you want to change the sub-vi to one of a different name then do the following. Open toplevel.vi Open sub.vi save as sub.vi as newsub.vi (do NOT check the box save without updating callers) close newsub.vi and toplevel.vi rename changedsub.vi to newsub.vi in the same directory as newsub.vi reopen toplevel.vi Bingo, it will pickup the changed subVI everywhere it used to call sub.vi. -Scott -- Dr. Scott Hannahs, Head of User Research Instrumentation http://sthmac.magnet.fsu.edu National High Magnetic Field Laboratory, Florida State University 1800 E. Paul Dirac Dr., Tallahassee FL 32310, (850)644-0216/FAX 644-0534 The requirements said: Windows 2000 or better. So I got a Macintosh.
RE: Implaceness (was: Array Wish list)
From the options list http://sthmac.magnet.fsu.edu/labview/LV_Options70.html there is an option called showInplaceMenuItem. Set this to true in your .ini file. Then Launch the Labview application. Then try Tools-Advanced-Show Buffer Allocations This will give you a pop up window and you can check which allocations to highlight with little black dots! This will help you find all those memory eating problems! Have fun! -Scott At 09:32 +1100 01/22/2004, Christopher G. Relf wrote: From NI Developer Zone: If an output is the same size and data type as an input, and the input is not required elsewhere, the output can reuse the input buffer. Using the Show Buffer Allocations tool (I forget where I got it on NI's website) there is no buffer-allocation-dot on the Transpose 2D Array function. This seems to imply that it is an in place operation.
Re: Autostarting LabVIEW VI in Linux
At 13:18 -0800 01/15/2004, Jason Dunham wrote: I'm using Linux (RH8) and trying to get a LabVIEW VI to run when the system boots up. I added a line to /etc/rc.local, but it doesn't seem to have an effect The line was /usr/local/lv70/labview /home/jason/myvi.vi The computer already boots into a normal X-window session Any ideas or tips? Is there a list of command-line switches for LabVIEW/Linux? I am not up on Linux but under OS X (free bsd un*x) the command would be open /usr/local/lv70/labview /home/jason/myvi.vi the open command tells the OS to open the application associated with the VI. You need to launch the application and then tell it to open the document. But I just checked and it can also be done by executing LabVIEW with a VI file as the argument. (again at least on OS X) but I think it works as well on Windows/linux. So for my installation it would be: /Applications/National\ Instruments/LabVIEW\ 7.0/LabVIEW.app/Contents/MacOS/LabVIEW ~/Desktop/PCdynamicevents.vi (all on one line with a space in front of the vi file name). Be sure that the VI is set to auto-run at launch. -Scott
RE: State machine diagram editor
At 14:25 -0600 01/16/2004, Scott Serlin wrote: I do not have any controls to access in my vi state machine. As an example, I control a piece of equipment that labview turns on, gets some measurements, logs those measurements to a database, and then shuts down. I do not access any front panel controls to run my via. All of that is done through a test executive. My state machine is set up by placing a string in each case statement that refers to the next state. The initial string is set outside of the while loop that makes up the state machine. Can I still utilize the strict type def enum solution in a similar manner or better? I think so. If it is an enum then the case statement will automatically allow intermediate states to be created with the correct case when the enum is modified. As an enum you can use the increment primitive to go to the next state in a sequence. As an enum defining the next state to go to is not susceptible to typos. -Scott
RE: Wouldn't it be nice if you could put a tab control in a cluster
At 09:57 -0500 01/07/2004, Chuck Lippmeier wrote: Self explanatory Chuck Lippmeier Self-Explanatory thread: http://messages.info-labview.org/2003/04/28/20.html -Scott