Re: How to count occurences of a certain string in incoming...
Well, thats it, the launch is in T -2.5 hours and counting. Me and some core members have been out in the hangar working all night to weed out some minor problems that crept up during final integration, but I think we got it. For some weird reason, neither the original VI (barebone save data to file) or the visually nice VI created by Joe Guo in express time, works on the computer we had available. The thing is, I know that the simple one works on another laptop, I'll see if I can get my hands on it before the flight and test the software on that one. I'll report back here during the day if I get more interesting and relevant information. A HUGE thanks goes out to Joe Guo for IMPRESSIVE speed and feedback! >From all of those in the ground-station crew and myself (Housekeeping), Thank you!
Re: Show/hide mainVI button in subVI loop
Lihui: >From your sub-vi, you can =93Set Control Value=94 of a Boolean =93hidebutton=94 (just for the lack of better names) in main.vi to true using vi property node. (Or you can also write to a global variable that can be accessed in main.vi) In the main.vi, you can wire it to a case structure (or better yet to a dynamics events structure in LabVIEW 7.0), which has the property node/visible set to false inside it. When Boolean hide button is set to true, you will be able to hide the button. You could set visible to true in when boolean "hidebutton" is false as well if it's convinient for you I hope this helps, FightOnSCTrojan
Re: binary switch dont work outside a loop
Hello, thanks for your answer. But I placed the button outside the loop so that it don=B4t work every iteration. I want to open a com port, start a microwave generator with it or something else - once only or alternativly in very different time intervals - user controlled. Or for example storing data on disk. And not only at the starting of the VI. On the other side I need to control the temperature, the power and so on every second oder millisecond. Thanks
Re: binary switch dont work outside a loop
If you want to do that, then you have to program it... Make a case statement and let the user select when to save data to a file. Or make some logic and start your microwave generator only at certain conditions... All the same programming: make a case statement of it, like in every other language. Best regards, Gerd
Re: setting a single button to do a task in different loops
Notifiers are ideal for this situation. If your two loops don't necessarily run simultaneously (or fast enough), you might want to make a third loop just for the purpose of reading the button and sending the notification each time it is clicked. One thing you'll have to think about is each time you wait on the notifier, whether you should ignore previous notifications or not. The manual will make it clear what the implications of this are.
Pasting an Excel 2000 Chart into Word 2000 using ActiveX
I am slowly getting to grips with ActiveX for Excel and Word and can now display a chart in Excel. However, when I Invoke _Chart Copy it gives a copy of the chart in Excel, but I then cannot Ctrl-V it into Word, i.e. it is not copied to the clipboard. Could anyone tell me how to do this please. Also, what is a good reference for all the various ActiveX options. Would "Excel in a Nutshell" do the job? Thanks Malcolm
Re: binary switch dont work outside a loop
You can use different loops with different timings. One loop with a fixed timing for device controlling, other loop for user interface (using "Wait for front panel activity"). Or the mentioned case statement: use a loop with a small timing value (10 to 50ms) and check for a condition to start your device. Only when the condition is set the case statement is executed. Best regards, Gerd
Re: On Building LabVIEW Execution file
This file holds the default settings of your application. You can mirror your Settings from the LV development system to your application. Some of the settings are only available in the development system some are also useful in an application like checking free disk space during start or setting the default fonts. You can copy this settings from the LabVIEW.ini file from your LV installation to the app.ini file. Be aware that the section has the same name as the application. You can use this file to hold your own app settings. LV will not conflict with other sections in this file. You can change the sections with the program and the runtime will leave it as you have set them. Use the config file VIs to do that. Waldemar
Re: Can Labview execute a VI in background at a constante rate?
> I would like Labview to execute some program code in background at a > constant rate, for example every second. It means the main VI execution is > interrupted every second and this program code is executed. How can I > implement this? If you want it to be a part of your main VI, then put a parallel loop with no data dependence on your main vi diagram. Then put the task in the parallel loop and a wait ms multiple in the loop too. If this is totally independent from your main VI and should run even when your main isn't, make it another VI that gets invoked through the menus, start menu, as a service, etc. Greg McKaskle
RE: Good Programming Practice?
I don't mind at all, and am not even opposed to something along these lines, BUT... :) This still requires several nested structures on the top level together with a case structure that could have MANY cases. Admittedly all this code has to land somewhere, and my aim to to move it out of the top level. When someone looks at that diagram I would like to convey a very high level sense of what sorts of things are going on. And IMHO, putting a bunch of UI update code in the top level doesn't make the picture any clearer. If anything, I think it adds confusion. LCOD is a beautiful tool to help encapsulate data and functionality, but by itself it doesn't help sterilize the top level (no offense to those offended *grin*). George At 01:35 PM 2/26/2004, you wrote: I hope no one minds me bringing up LCOD again - it just seems like a really good solution here. :) LCOD (LabVIEW Component Oriented Design as explained in the book "A Software Engineering Approach to LabVIEW") provides a very elegant solution to this problem. Using LCOD one would encapsulate all user interface updates as messages in a component similar to a LV2 style global. This component can then be called ANYWHERE from ANY vi, without using ANY control references! You end up with a nice 'sterile' main vi, without the control reference overhead. John Howard
Re: Order of occurance within a loop
If the execution order is important, you must use data dependencies to force the order. Otherwise, LabVIEW will determine the execution order using its own algorithm. If the sub-vi's or functions you are using do not provide an easy method for using data dependencies, such as wiring together error terminals, you can use film sequence structures. You can also use single frame sequence structures with data out of one structure wired to the frame of a subsequent structure. "Gyro" <[EMAIL PROTECTED]> wrote in message news:[EMAIL PROTECTED] > Hi, > I need to execute two commands in a loop. After the first command is > executed the system must wait for about 30 seconds before the next is > carried out. In what order with LV execute the elements within a loop? > I am not sure if the program is executing the two commands first and > then waiting. > Any hints / suggestions? > Thanks
Remebering settings in VI
Can anyone tell me what the trick is to having the settings not clear? Example I have a bunch of test boxes and drop down choice menus. When the VI is closed they revert to the first choice and the text boxes clear. Im guessing this could be a property node thing but I can't seem to find it. Thanks.
Re: Getting phase difference...problems
Thanks for addition to my circuit. I tried it out and unfortunately the results don't seem to make much sense. The amplitude part works perfectly. The phase, however, jumps around and is consistantly too high in value. Presently I am inputing a 4v sine wave @ 1 khz. Channel 0 is directly from the function generator. Channel 1 is thru an RC filter. The output at 1khz should be -45 degrees. I am consistently seeing phase numbers like 136 or -223 degrees. Is it possible that there is a 180 degree phase shift added somewhere? Thanks again for your help Dave
Re: LabVIEW 6.00 installation error 1322
Hello km9394 =96 It appears you are receiving error 1322 while installing LabVIEW 6.0. What operating system is this occurring on? Make sure you have administrator access to the OS. What MSI cleanup utility did you use? Did you use MSIBlast? If you had administrator access and MSIBlast did not help, a possible solution may be to manually clean the registry of National Instruments references. Go to Start >> Run and type "regedit" Go to HKEY_LOCAL_MACHINE/SOFTWARE/National Instruments/Common_Installer Delete the related Registry Keys for the components you wish to remove. Note: The keys will appear with similar names and have a long number/letter code appearing after initial text. If these suggestions do not solve your problem, please let me know and I will look into the matter again. Have a great day! Becky B. Applications Engineer National Instruments
Re: Getting phase difference...problems
We are getting there ... 136 and -223 degrees are actually two versions of the same value modulo 360 degrees. You can remove this problem by for example adding 360 to your result and compute the reminder of the division by 360. Or, an easier way to do that is, to add 360 to your result if it is negative. Then there is a 180 degrees problem left. The most obvious cause could be, if you are running differential input in your MIO-board, that one of the input signal wire-pair is swapped. Is this the case? One thing you can try is to change your signal frequency to "move away from 90 degrees" and see if you still have an exact 180 deg problem, in which case you are sure that you have an un-wanted signal inversion somewhere in your signal paths.
Re: Good Programming Practice?
> Okay... some simple benchmarks. numbers are updates/sec for an xy graph of > 2000 points (random numbers) > > 1139 - no update, calculation only > 942 - direct wire > 132 - by value (directly linked property node) > 128 - by reference, same panel > 128 - by reference, sub-vi > 125 - by value, signaling (directly linked property node) > Some benchmarks that are a bit more apples to apples. 45 updates per second using terminal or local write. 38.5 updates per second using the value property, signalling or not. 2500 updates to the terminal when Synchronous Display isn't turned on. This means 2500 data writes, but only 30-40 redraws. In otherwords, it isn't data drawing that is slower, but it is the fact that terminals are less synchronized. Since property nodes are purely UI, they always update synchronously, as do the other properties. If you want to speed this up, by not seeing the data, use the Defer Panel Updates property of the panel. 1360 updates to the signalling
Why does the screen shift to the last tool position
I have a large diagram, so it involves sliding the screen back and fort to see the whole diagram. If I wire an item then slide the screen over to select another item, the item is selected, however, the screen shifts automatically back to were the previous tool position was. Then I have to re-slide the screen to see my newly selected item. It does this all the time with a large diagram. Why does LV do this?
Re: sfm driver
Hello Demitry, Although we do not have a driver for the Rohde & Schwarz SFM, you can submit a request for an instrument driver through our request database at: http://zone.ni.com/idnet97.nsf/instrumentdriverrequest/. Your request may be considered for development. We try to develop instrument drivers according to popularity. Unfortunately, we cannot develop instrument drivers for all the requests we receive. If you would like to try developing your own instrument driver, we have documentation, model instrument drivers, and driver templates to help you in your development. You can find this information on our web site: http://www.ni.com/devzone/idnet/development.htm. If there are any further questions, please email [EMAIL PROTECTED] Regards, Katie Rollo Instrument Drivers/IVI National Instruments
Re: How can I force the close of a third party ActiveX server.
Hello codeman, Thank you for your inquiry regarding closing a third party ActiveX server. It sounds like the third party application is having trouble closing. There are several Windows Utility VIs available that could help in this case. One of the Utility VIs is called Get Window Refnum and should return an instance of a Windows window. The following links are great resources when dealing with this issue. http://digital.ni.com/public.nsf/websearch/136F6B1F34CBB76E852563FC007AEFC7= ?OpenDocument http://sine.ni.com/apps/we/niepd_web_display.display_epd4?p_guid=3DB45EACE3= EF4556A4E034080020E74861&p_node=3DDZ53008&p_submitted=3D&p_rank=3D&p_answer= =3D&p_source=3DExternal Other responses similar to these can be found on the ni.com website by clicking the support tab at the top of the home page. Then search for =93refnum instances=94 from Technical Resources at the top of the page or topics similar to this. I hope these resources help. Let me know if I can further assist you. Shea C. Applications Engineering
Re: Simulink interface!
In order to have S-Functions work in Simulink and the Real time workshop generated code, refer to the section "Writing S-Functions: Writing S-Functions for Real-Time Workshop" in Simulink documentation. In general placing the C source file of the S-Function in the same directory as the model will allow it to be included in the DLL. Another option is to compile the C source (of S function) into a DLL and call it using the Call Library Node in LabVIEW. though it may require you to reengineer the model a bit. Thanks SumitG NI R&D
Re: excel version and Labview
You have to blame Microsoft for changing the ActiveX interface every time they release a new version of Excel. If you wrote a VB or C++ program that used properties and methods of one Excel version and those properties and methods changed with a newer version of Excel, you would have the same sort of problem. The way to go would be to create different Excel interfaces separate from your main program and dynamically load the different VIs based on what version of Excel is installed. You still have to do extra coding but it would be isolated to just the Excel portion.
Re: Sample and hold inputs on 6023e card
There are two ways of correcting for the multiplexing delay of your board. - You can either use the method I suggested in your previous posting http://exchange.ni.com/servlet/Redirect?id=10455451 or - You can re-align your signals so they are "in phase". To do so use the Align Waveforms VIs located in your Analyze>>Waveform Conditioning palette. The output of these VIs will be your time signals resampled so they are aligned. Check-out the example called "Correct for MIO inter-channel delay (continuous).vi". But, as mentioned, this method is "overkill" in your case. I'd recommend you to use the first method which is both faster and more accurate.
Re: I am recieving (analog) load and position data via a DAQ...
Hello mlusmore =96 You can plot load vs. position by using the Plot XY VI. Wire each input into an input in the Build Array VI. Wire the output of the Build Array VI to the data input of the Plot XY VI. Note: The Plot XY VI is not included in the Base Package. Have a great day! Becky B. Applications Engineer National Instruments
Re: Hilight Execution or won't work
When I've seen this happen, it usually turns out to be a timing issue. With Hilight Execution turned on, the program executes much slower than it does when running normally. Try putting some delay between your steps, one at a time to see if that fixes your problem. Your ActiveX calls may be taking longer to return values than your application is allowing for. Ed
Re: can event structures be used w/o property nodes?
Property Nodes really have nothing to do with Event Structures. Property Nodes either Read from or Write to the various properties of the linked control/indicator. Event Structures react to an action from a control/indicator. Drop an event structure and a single boolean button inside of it, configure the structure to the Value Change event for the button and hit run. The program will run, but the structure will stop the program until you click the button to run the event case, no property nodes required. If this is not what you are referring to, provide a few more details and we'll se what we can do. Ed
Re: Can't control the HP3325b (error code:Hex:BFFA0010)
Hello MusicIsLive, Thank you for your inquiry regarding an IVI driver for the HP335b. It sounds like you are receiving an out of range error while running the Getting Started.vi. I have tried to replicate the problem on LabVIEW 6.1 with the Getting Started.vi in simulation mode and have been unsuccessful. I assume that you are not running the driver in simulation mode but you may want to give this a try. This would ensure that all of the components of your system are configured correctly before connecting any instruments to it. Give this a try so we can start from the beginning of the problem. The help file in LabVIEW also gives some useful tips when using IVI drivers. To access this got to Help>>VI, Function, & How-To-Help, and in the Contents tab select Instrument Drivers. Other resources similar to these can be found on the ni.com website by clicking the support tab at the top of the home page. Then search for =93Out of Range IVI errors=94 from Technical Resources at the top of the page or topics similar to this. I hope these resources help. Let me know if I can further assist you. Shea C. Applications Engineering
RE: Queues and strict typedefs
Are you sure the constant is a strict-type? Right-click on it to see. Also, sometimes LV requires you to select "apply changes" from the control editor instead of just saving the strict-type control. Michael Aivaliotis > -Original Message- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of Craig Graham > Sent: Wednesday, February 25, 2004 7:09 AM > To: [EMAIL PROTECTED] > Subject: Queues and strict typedefs > > > When I have a strict typedef as the datatype of a queue, and > I hold the reference to the queue in a global, changes to the > typedef don't propagate to the global reference. Is there a > way to make it happen? A different way of creating the > reference for example? I'm presently using the context menu > "Create Constant" and cut&pasting to the global. > > -- > Dr. Craig Graham, Software Engineer > Advanced Analysis and Integration Limited, UK. http://www.aail.co.uk/ > > > > >
RE: Good Programming Practice?
I am pretty surprised to hear so many people clamoring to keep the top level VI laden with code. In nearly all of the other languages (admittedly those crude text based ones) the convention is to keep main() or its equivalent relatively codeless, except to start the necessary objects or loops. Let me be the first to say the analogy between the top level vi and main is not wholly accurate, but they are certainly similar. But from some simple benchmarks, it is apparent that moving indicator updates out of their "native" diagram is a serious performance hit. This, IMHO, is absurd and should not be. Now, performance aside, why is it so critical to have all of the panel update contained in one potentially mammoth vi? It is no big deal if there are only a few indicators. But when you start really piling them on, managing them becomes a pretty big deal. Now it might not be such a hot idea to scatter front panel writes throughout the application, but I don't think it is a great idea to confine them only to their diagram either, especially when that diagram is the top level. The obvious, to me, compromise it to keep some sort of queue driven UI update, but use references to move that into a sub-vi. Now, since it is by reference, the updates would not have to all be in this singe sub-vi either. Instead, they could be scattered all over the UI update hierarchy. If you are married to the idea of keeping every update in one diagram our goals are intrinsically incompatible. I personally find such an approach impractical, and that is what started this idea in the first place. But I can see how the other end of the spectrum is fraught with confusion. If an update can happen anywhere, it will soon happen everywhere. So it would seem like the idea of globally available references to the top level indicators is probably NOT good programming practice, but I am still latched on to the idea of moving the updates into their own sub-hierarchy and out of the top level. This will incur the by reference performance hit, but for now that is not a big deal for me as I only need about 0.5 updates/sec. And when the time comes that I need better performance I expect NI will have sped up the reference operations ;) Okay... some simple benchmarks. numbers are updates/sec for an xy graph of 2000 points (random numbers) 1139 - no update, calculation only 942 - direct wire 132 - by value (directly linked property node) 128 - by reference, same panel 128 - by reference, sub-vi 125 - by value, signaling (directly linked property node) George Hmm, why is this a mess? It makes perfect sense to me. The only access to the front panel via remote VI's is through a well defined interface. You setup your messages and your data types and the update stays in the main menu as it should. If a VI needs to update the front panel then it posts a message on the queue with a specific update command. Queues have been around for a while and it has been proven by many on this list to be a very efficient method of communication between parallel processes. I would re-think your comment on a queued architecture. Using control references breaks out of the object oriented methodology. Manipulating VI panels directly via other modules means I need to know everything about the Main VI for me to update the panel. In many cases, updating the front panel involves more than just dumping data to a control. It may involve processing the data and possibly changing several parameters of the Main VI. It is best to let the Main VI do what it does and knows how to do. Using the control reference approach means I now have my Main VI scattered in 100 different places. Where do I go to fix a bug? Also, can two programmers work on the same code at the same time? To comment on the use or overuse of references, I would have to say that on the totem-pole of efficiency, they rank on the bottom of the list as far as update speed. The order of efficiency would be (correct me if I'm wrong): 1-Wire directly to terminal (ah yes, the good ol' days) 2-Wire to a local variable 3-Wire to a "value" property node on the same diagram as the control. 4-Wire to a "value" property node via a cotrol reference The reasoning behind what approach to take depends on the situation of course. One thing to consider is, will the application ever be augmented? If so, you want to implement a strategy that will accommodate future growth without sacrificing speed or code clarity. I think a balanced approach is preffered over a strict rule of methodology. Personaly I use "all of the above" in some form or another. My main communication "engine" is a queue and at the local level I use control references and locals wherever modularity and code reuse permits it. Nothing however beats method#1. I use this whenever large amounts of data are being pumped to a graph. Graph updates are always bottlenecks. How do I use method#1 and still pass data via sub-VI's to the front
Re: LabVIEW 6.00 installation error 1322
Hello Becky, Thanks for you reply to my question. I found reg key "HKEY_LOCAL_MACHINE/SOFTWARE/National Instruments/Common/Installer" and there is no entry of LabVIEW except a key in the "Product". However it have no effect after i delete this key. The MSI Clean up utility I used is provided by Microsoft. It enable user to delete windows installer entry software by software. I have not use MSI Blast, and I can't find its information from web? is it freeware? Thank you very much, indeed.
Re: Good Programming Practice?
In article <[EMAIL PROTECTED]>, Greg McKaskle <[EMAIL PROTECTED]> wrote: > } Okay... some simple benchmarks. numbers are updates/sec for an xy graph of > } 2000 points (random numbers) > } > } 1139 - no update, calculation only > } 942 - direct wire > } 132 - by value (directly linked property node) > } 128 - by reference, same panel > } 128 - by reference, sub-vi > } 125 - by value, signaling (directly linked property node) > } > > Some benchmarks that are a bit more apples to apples. > > 45 updates per second using terminal or local write. > 38.5 updates per second using the value property, signalling or not. > > > 2500 updates to the terminal when Synchronous Display isn't turned on. > This means 2500 data writes, but only 30-40 redraws. > > In otherwords, it isn't data drawing that is slower, but it is the fact > that terminals are less synchronized. Since property nodes are purely > UI, they always update synchronously, as do the other properties. If > you want to speed this up, by not seeing the data, use the Defer Panel > Updates property of the panel. > > 1360 updates to the signalling > Oops, butterfingers. 1360 updates to signaling or normal value properties with panel updates deferred. Greg McKaskle
Re: [W] Getting IP address of a local network interface
> Does anyone know of a way to get a list of the IP addresses associated > with network interfaces on a Windows PC running LabVIEW? I could call > IPCONFIG with a System Exec node and parse the output but that's a dirty > hack, so I'd rather not. > I don't know what will happen with multiple cards, but if you leave the string into the String to IP blank, it will return the one for your local computer. You can use other names too, and you can also go from IP to string, even looping through looking for machine names. Greg McKaskle
Re: Getting phase difference...problems
The fact that the amplitude components of your two signals are detected correctly make you think that the VIs are used correctly. Phase difference problems can be caused by different things like: - If you are using two different boards, they need to be triggered. Obviously the two signals need to be acquired at the same time to give a meaningfull result. - If you are using a multiplexed MIO board, you'll have to correct for the multiplexing delay, that is the slight time difference between the two acquisitions. This time is reflected by the difference in the two signals timestamp (t0). The resulting phase error depends on the frequency f of your signal, so overall you'll have to correct your phase difference result with: phi_correction(deg.) = (t0_1 - t0_0) * f * 360 - Finally your un-expected result could simply be wrapped around with 360 degrees (??) If none of this helps you identify your problem, could you post a simple VI with sample data and the results of your measurements?
Re: Getting phase difference...problems
When you plot the two signals on a time series graph, do you see the phase difference in the time domain? This might be a good way to check what is going into the FFT where you are calculating magnitude and phase. Also, insure your phase outputs are in degrees, this typically helps visualize the phase differences, as compared to radians. Just some ideas for additional testing. prestonj
Re: explore transfer functions
Hello comerford1, Thank you for your inquiry regarding using PIDs in LabVIEW. I understand that you would like more help with some of the transfer functions. Specifically what help do you need with the functions? There are many great resources on the ni.com website that may be able to help you. The one below seems to have a lot of relevant information regarding getting started with using PIDs. http://zone.ni.com/devzone/conceptd.nsf/webmain/F0A8687D6706719686256D6D005= F9C56?opendocument Other responses similar to these can be found on the ni.com website by clicking the support tab at the top of the home page. Then search for =93transfer functions PID=94 from Technical Resources at the top of the page or topics similar to this. I hope these resources help. Let me know if I can further assist you. Shea C. Applications Engineering
Re: How to programatically find duplicated VI names?
Hello LegalEngineer, Thank you for your inquiry regarding VI instances with the same name. It sounds like the wrong VIs are getting loaded into Testand because they have the same file name. There are several Windows Utility VIs available that could help in this case. One of the Utility VIs is called Get Window Refnum and should return any instances of a window. The following links are great resources when dealing with this issue. http://digital.ni.com/public.nsf/websearch/136F6B1F34CBB76E852563FC007AEFC7= ?OpenDocument http://sine.ni.com/apps/we/niepd_web_display.display_epd4?p_guid=3DB45EACE3= EF4556A4E034080020E74861&p_node=3DDZ53008&p_submitted=3D&p_rank=3D&p_answer= =3D&p_source=3DExternal These should help you get started in finding instances of VIs with the same name. After this is implemented it shouldn=92t be hard to use a dialog box to notify the user that some of the instance names match and there could be a problem loading the correct VI into Testand. Other responses similar to these can be found on the ni.com website by clicking the support tab at the top of the home page. Then search for =93refnum instances=94 from Technical Resources at the top of the page or topics similar to this. I hope these resources help. Let me know if I can further assist you. Shea C. Applications Engineering
Re: Reference of the Bessel Equation
Hello Yossi Zana =96 It appears you are looking for the specific mathematic equation used in one of the Bessel VIs. I recommend you open the sub-VIs of the particular Bessel function you are interested in by double clicking on the VI. One of the sub-VIs will call a dll which contains the theoretical equation used. You can also review the LabVIEW Analysis Concepts pdf file found in Help >> Search the LabVIEW Bookshelf and selecting the link to this file under the Concepts and Techniques Header. If you would like me to further investigate a Bessel equation, please let me know which Bessel VI you are interested in. Have a great day! Becky B. Applications Engineer National Instruments
Re: Displaying a custom graph
Hello, What you will want to do is the following: 1) First, place a waveform chart on the front panel by right-clicking on the panel and selecting a Waveform Graph under the [Graph Inds] panel 2) Press [Ctrl]+[E] to go to the block diagram 3) [Right-click] on the diagram and choose [Signal Manipulation] >> [Split Signal] 4) You will want to wire the signal split icon to the output of your PCI device. 5) Now, you can compare the signals to determine the instantaneous maximum and plot the resultant signal. To do this, place a "waveform min and max.vi" SubVI on your block diagram. You can find this subVI by [right-clicking] on the block-diagram, selecting [All Functions]>>[Waveform]>>[Analog Waveform]>>[Waveform min and max.vi] Finally, you can use the "max" output of the subVI to plot the instantaneous max value of all incoming waveforms. I hope this helps. You may want to refer to the following discussion thread for example programs that perform similar actions: http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RNAME=ViewQuestion&HOID=5065000800B99A&ECategory=LabVIEW.LabVIEW+General Please let me know if you need further assistance. Have a great day! Kind Regards, Joe Des Rosier National Instruments
Re: Storing and using arrays with case function
Hello RS232 Question, Thank you for contacting National Instruments. You have a similar post with a different answer at the following link: http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=5065000800C0C1&UCATEGORY_0=_49_%24_6_&UCATEGORY_S=0 Have a great day. Sean C. Applications Engineer National Instruments
Re: Real time feedback control using E series DAQ
Sandhya, You might want to check this post out: http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=506500080073C1&UCATEGORY_0=_33_%24_12_&UCATEGORY_S=0>Real Time Feedback using NI 6025E I believe it addresses the same issue. Good luck! If you have any further questions please post back. Craig H. National Instruments
Re: Controlling VI or front panel size when published to a web page
If you have 10 controls and 5 indicator on your front panel. Group your controls close together, group your indicators together and move them beside the control group. Now, resize your front panel so that it is large enough just to display all the elements. (To resize the panel, move your mouse to one of the corner of the window, the mouse shape will change, click and hold the left mouse button, drag mouse.) Finally, save your vi. Joe
Re: How to perform an action after a delay, based on a software trigger
Hello Rickm, Thank you for your inquiry regarding time delays in LabVIEW. It sounds like your application is making calculations immediately after the speed reaches 50. I am having a hard time deciphering your code without taking a lot of time to understand it. Could you supply a simpler example that demonstrates the same issue? One possible solution is to use a sequence structure with the delay placed in the first frame and the data to be processed wired through that case to the next case where the calculations are done. Other responses can be found on the ni.com website by clicking the support tab at the top of the home page. Then search for =93YOUR TOPIC=94 from Technical Resources at the top of the page or topics similar to yours. I hope these resources help. Let me know if I can further assist you. Shea C. Applications Engineering
Re: Controlling VI or front panel size when published to a web page
When you use the web publishing tool to create the html it uses the current window size of the VI to create the correct width/height dimensions for the LabVIEW object in the html code. Following is an extract from an example html file created using the web publishing tool: ftp://ftp.ni.com/support/labview/runtime/windows/7.0/LVRunTimeEng.exe";> http://www.ni.com/webappdemos/lv";> Hope that helps.
Re: Create windows-like Scrollbar/Slider?
Hi Janet637, Here are some links and examples that you might find useful to create custom scrollbars http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RNAME=ViewQuestion&HOID=50650008003642&ECategory=LabVIEW.LabVIEW+General";>Without ActiveX For ActiveX, you may want to try using a Microsoft Flat ScrollBar Control. For more information on ActiveX, http://zone.ni.com/devzone/conceptd.nsf/webmain/C07371DABABCE77B862568F700563C97?opendocument";>here is a reference document to read. Good Luck! Jeremy L. National Instruments
Re: Simulink interface!
Dear Badhri, I came across your support request and realized that I've seen a similar circumstance occur in the past. A customer was having problems building a MatLAB simulink DLL using a LabVIEW toolkit. http://ae.natinst.com/operations/ae/public.nsf/fca7838c4500dc10862567a100753500/0e0740a80c80af3286256ae300735efd?OpenDocument I hope this helps. Please feel free to contact me if you need further support. Have a great day! Kind Regards, Joe Des Rosier National Instruments
Re: How do I resize the VI in my web page?
You need to change the window size of the VI, you can do this by going to the LabVIEW menu: File >> VI properties Then Category >> Window Size Under Minimum Panel Size specify the dimensions. After closing this you need to resize the VI window manually anything down to the previous specified dimensions. When you run the program the window size will be what it is currently in development mode. One thing to note also is that When you save the VI it will store its size also, which it uses when you reopen it.
Re: Error message and crashing of LabVIEW 5 when controlling K-Teams Khepera robot
Sam, Unfortunately, this is not a LabVIEW error. You have a memory conflict within Windows. The previous response to your thread is an excellent evaluation of the problem. Because the error is a Windows registry-level error, I cannot provide support for this issue. You may want to contact Microsoft for further support after evaluating the possibility of this being a hardware issue. Have a great day! I hope you get the robot back to a healthy state in soon time. Kind Regards, Joe Des Rosier National Instruments
Events to Push Data into VI?
What I am trying to accomplish is to 1) launch a vi dynamically that uses event structures for interaction with the user interface, 2) sometimes update the display on this dynamically launched vi by using another vi (opens a VI reference and invokes the set control method). It seems I could use some sort of event generated by the vi that sets the control value to fire the event handler in the running vi and thereby update the display, but I have had no luck. I have tried setting the value(signaling) property of a registered control, but this doesn't work because the waiting event blocks the value from the dynamically updated control from ever updating the value(signaling) property of the registered control. The best I have come up with is periodically timing out the event structure (which forces the value(signaling) property to update which generates an event for the registered control) but this is just a backhanded way of polling for a changed value and violates the idea of an event driven program. My other attempt was to create a user defined event when I launched the VI dynamically and pass it into a ref on the called vi, then fire the user event on subsequent calls to update the control. I could get this to work on the first call, but subsequent calls would fail (I would get an error when I tried to fire the event - something about an invalid event reference, I think - I don't have the code in front of me). Any ideas out there? Mark
Re: Queues and strict typedefs
Perhaps not what your looking for, but all the same... A while back I created some queue and notifier templates that have been VERY useful. The template is one reentrant vi to enque and deque. It stores the refnum in a USR on first call, and names the queue according to the name of the VI. Everywhere I want access to the queue, I drop an instance of this vi. By using the name of the VI (via the property node) I never accidentally name the queue incorrectly. I usually use just enque/deque, but it would be simple to add more functions. A copy of the template is attached. George At 07:09 AM 2/25/2004, you wrote: When I have a strict typedef as the datatype of a queue, and I hold the reference to the queue in a global, changes to the typedef don't propagate to the global reference. Is there a way to make it happen? A different way of creating the reference for example? I'm presently using the context menu "Create Constant" and cut&pasting to the global. -- Dr. Craig Graham, Software Engineer Advanced Analysis and Integration Limited, UK. http://www.aail.co.uk/
RE: Good Programming Practice?
I hope no one minds me bringing up LCOD again - it just seems like a really good solution here. :) LCOD (LabVIEW Component Oriented Design as explained in the book "A Software Engineering Approach to LabVIEW") provides a very elegant solution to this problem. Using LCOD one would encapsulate all user interface updates as messages in a component similar to a LV2 style global. This component can then be called ANYWHERE from ANY vi, without using ANY control references! You end up with a nice 'sterile' main vi, without the control reference overhead. John Howard >>> George Gatling (Contractor) 02/24/04 10:51AM >>> I am pretty surprised to hear so many people clamoring to keep the top level VI laden with code. In nearly all of the other languages (admittedly those crude text based ones) the convention is to keep main() or its equivalent relatively codeless, except to start the necessary objects or loops. Let me be the first to say the analogy between the top level vi and main is not wholly accurate, but they are certainly similar. But from some simple benchmarks, it is apparent that moving indicator updates out of their "native" diagram is a serious performance hit. This, IMHO, is absurd and should not be. Now, performance aside, why is it so critical to have all of the panel update contained in one potentially mammoth vi? It is no big deal if there are only a few indicators. But when you start really piling them on, managing them becomes a pretty big deal. Now it might not be such a hot idea to scatter front panel writes throughout the application, but I don't think it is a great idea to confine them only to their diagram either, especially when that diagram is the top level. The obvious, to me, compromise it to keep some sort of queue driven UI update, but use references to move that into a sub-vi. Now, since it is by reference, the updates would not have to all be in this singe sub-vi either. Instead, they could be scattered all over the UI update hierarchy. If you are married to the idea of keeping every update in one diagram our goals are intrinsically incompatible. I personally find such an approach impractical, and that is what started this idea in the first place. But I can see how the other end of the spectrum is fraught with confusion. If an update can happen anywhere, it will soon happen everywhere. So it would seem like the idea of globally available references to the top level indicators is probably NOT good programming practice, but I am still latched on to the idea of moving the updates into their own sub-hierarchy and out of the top level. This will incur the by reference performance hit, but for now that is not a big deal for me as I only need about 0.5 updates/sec. And when the time comes that I need better performance I expect NI will have sped up the reference operations ;) Okay... some simple benchmarks. numbers are updates/sec for an xy graph of 2000 points (random numbers) 1139 - no update, calculation only 942 - direct wire 132 - by value (directly linked property node) 128 - by reference, same panel 128 - by reference, sub-vi 125 - by value, signaling (directly linked property node) George >Hmm, why is this a mess? It makes perfect sense to me. The only access >to the front panel via remote VI's is through a well defined interface. >You setup your messages and your data types and the update stays in the >main menu as it should. If a VI needs to update the front panel then it >posts a message on the queue with a specific update command. Queues have >been around for a while and it has been proven by many on this list to >be a very efficient method of communication between parallel processes. >I would re-think your comment on a queued architecture. > >Using control references breaks out of the object oriented methodology. >Manipulating VI panels directly via other modules means I need to know >everything about the Main VI for me to update the panel. In many cases, >updating the front panel involves more than just dumping data to a >control. It may involve processing the data and possibly changing >several parameters of the Main VI. It is best to let the Main VI do what >it does and knows how to do. Using the control reference approach means >I now have my Main VI scattered in 100 different places. Where do I go >to fix a bug? Also, can two programmers work on the same code at the >same time? > >To comment on the use or overuse of references, I would have to say that >on the totem-pole of efficiency, they rank on the bottom of the list as >far as update speed. The order of efficiency would be (correct me if I'm >wrong): > >1-Wire directly to terminal (ah yes, the good ol' days) >2-Wire to a local variable >3-Wire to a "value" property node on the same diagram as the control. >4-Wire to a "value" property node via a cotrol reference > >The reasoning behind what approach to take depends on the situation of >course. One thing to con
test message
Sorry for the inconvenience , but , I haven't received a post in two days... if this gets through can someone email me directly ?? our internet filters have been changed and I fear that info-labview may be blocked... thanks Dan Bookwalter N8DCJ Hi-Stat a Stoneridge Co. 345 South Mill St. Lexington, Ohio 44904 (419) 884-1219 Phone (419) 884-4172 Direct (419) 884-4195 Fax [EMAIL PROTECTED] _ This electronic mail transmission contains confidential information intended only for the person(s) named. Any use, distribution, copying or disclosure by any other person is strictly prohibited. If you received this transmission in error, please send an electronic mail message to [EMAIL PROTECTED]
Re: Good Programming Practice?
George Gatling wrote: > I am pretty surprised to hear so many people clamoring to keep the top > level VI laden with code. In nearly all of the other languages (admittedly > those crude text based ones) the convention is to keep main() or its > equivalent relatively codeless, except to start the necessary objects or > loops. Let me be the first to say the analogy between the top level vi > and main is not wholly accurate, but they are certainly similar. > (...) > Now, performance aside, why is it so critical to have all of the panel > update contained in one potentially mammoth vi? It is no big deal if > there are only a few indicators. But when you start really piling them > on, managing them becomes a pretty big deal. Separating the user interface from the functionality it drives does indeed make for a more scalable design. But LabVIEW has this very convenient front panel/diagram abstraction: throw controls/indicators on the front panel, and directly wire up the terminals on the diagram. Want to find out what a knob does? Just pop-up and select "find terminal" to see what it is wired to. Such ease of use and transparancy is worth a lot. Doing everything by reference requires much more infrastructure and is harder to analyse. On the other hand, doing everything on the front panel's diagram does not scale. Personally, I try to have the best of both worlds by attempting to stick to these rough guidelines: * Pure user interface logic goes on the diagram associated with the front panel (typically a state machine state or event case per control or indicator). * Non UI application logic, application data, and background processes are accessed via subVIs, LV2 style globals, queues, VI server, and so on. * Make user interface VIs as small as possible by splitting the application into multiple windows and dialogs, each with only a single limited purpose. * Organize the separate windows into a whole using a start menu. Grouping them as subpanels might be a good alternative, but I can't vouch that yet. Albert-Jan --- Dr. A.C.J. Brouwer CIT Egineering Nederland BV http://www.citengineering.com
RE: Running VIs on lesser version of LabVIEW
In LV 6, event handling worked on the base package. You couldn't edit the events or any part of the structure, but it ran properly. I assume LV 7 is the same. If you use library VIs which are only part of the Full Edition, your VIs will not load successfully in the base package. I'm sure you knew this already, but I'm just trying for a complete answer. Jason Dunham SF Industrial Software, Inc. -Original Message- From: Simon Whitaker [mailto:[EMAIL PROTECTED] Sent: Wednesday, February 25, 2004 7:41 AM To: [EMAIL PROTECTED] Subject: Running VIs on lesser version of LabVIEW If I design a VI in LabVIEW 7.0 Full Edition, using features not available in the base edition (e.g. event handling), will the VI run on a PC that only has LabVIEW 7.0 Base Edition installed? Simon Whitaker <[EMAIL PROTECTED]> Software developer, Tiab Ltd tel: +44 (0)1295 714046 fax: +44 (0)1295 712334 web: http://www.tiab.co.uk/
RE: Events to Push Data into VI?
> What I am trying to accomplish is to 1) launch a vi > dynamically that uses event structures for interaction with > the user interface, 2) sometimes update the display on this > dynamically launched vi by using another vi (opens a VI > reference and invokes the set control method). It seems I > could use some sort of event generated by the vi that sets > the control value to fire the event handler in the running vi > and thereby update the display, but I have had no luck. I > have tried setting the value(signaling) property of a > registered control, but this doesn't work because the waiting > event blocks the value from the dynamically updated control > from ever updating the > value(signaling) property of the registered control. The > best I have come up with is periodically timing out the event > structure (which forces the > value(signaling) property to update which generates an event > for the registered control) but this is just a backhanded way > of polling for a changed value and violates the idea of an > event driven program. Mark, Check ou this method of using value changed signaling event. Let me know if this is what you are doing: http://forums.lavausergroup.org/index.php?showtopic=139&view=findpost&p= 307 If you read through the post you will find other methods. Thank You Michael Aivaliotis
Re: Good Programming Practice?
>This sounds like a positively cryptic way to structure a VI. Not necessarily. >What is good about a BD or FP that is pretty or clean or sterile, >if it communicates nothing about its function? Well what it does communicate is a structured and designed approach, and my argument would be that a simple diagram will always communicate it's function. (See my comments below). I would argue that having a non-sterile BD doesn't necessarily include the case that it communicates the VI's function! You could also argue that you can always work out what's going on, but taking the time to work out what's going on is exactly the reason to make it sterile and easy to read - to reduce this time. >And further, can such a VI be composed that doesn't require a large >recomposition to clean it up to this state? Mostly, I never get >to do anything over. So it is all experimental. Then when it works I >don't have the luxury of rewriting it for aesthetic reasons. Because LV >is self-documenting to a great degree if you habituate yourself to a >few things, like naming states and sub-vis cogently, why would I want >to make that stuff any harder to get to? > >I am actually offended by the ideas of a sterile top level. Hmm. I guess this probably comes back to software development origins or development constraints. In programming for whatever the reason (time/money/research based/experience), the development process is predominantly incremental and when you arrive at the end point you're done. A structured approach is only possible with some sort of planning and some sort of requirements before the development begins. Often this is not possible (as well I know;-), but even the most rudimentary "unspecified" project can benefit from planning. And incremental doesn't mean that it has to end up non-sterile. The primary benefits here are maintainability and extendability. Neither of these are requirements in a project that only has one goal; eg a research based or sole functional target, where it is never going to be maintained or enhanced. However if the complexity grows and grows, one day you will find yourself restarting from NULL because you cannot possible add that one last feature a client has requested. Having developed in the non-sterile way and the sterile way I would prefer sterility ;-) As my wife once said having looked over my shoulder, "How boring, all your code looks the same." I was pleased but I think she meant to it as a jibe! In our company, it is no longer acceptable to program in such an ad hoc fashion. Not because this doesn't achive results, but because the additional benefits of the a structured design are that (1) all members of the development team know where everything is located in any project (2) there is decreased learning time on software when the structure follows one of a pre-selected set of design patterns. These lead directly to a decreased development cost. cheers, Alex.
Search string in Array
I have one 1D array in that array the elements are started like 04_02_26LS1004(format is yy_mm_ddserialnumber).I Dont know the array size. It may go more than 6. I want to search the elements which are all matching for the first 8 characters(yy_mm_dd).I don't need to compare one element by one element using for loop.Please Suggest. with regards R.sathiyanarayanan
Search string in Array
I have one 1D array in that array the elements are started like 04_02_26LS1004(format is yy_mm_ddserialnumber).I Dont know the array size. It may go more than 6. I want to search the elements which are all matching for the first 8 characters(yy_mm_dd).I don't need to compare one element by one element using for loop.Please Suggest. with regards R.sathiyanarayanan
IDL DrawWidget Control
I am trying to link IDL with labview via ActiveX. I have a tutorial walking me through it (from NI) however when I try to import IDL DrawWidget control, I receive an error that I do not have a file named image.c Is there anywhere I could download the newest version of this component (I didn't install the component origionally and it is IDL DrawWidget Control 2.0, there is supposedly a 3.0 out). I have looked with no success for the install for this ActiveX component. Thanks for any help you can grant- -Ryan
Re: Can you find and replace all sub-VI's in memory at once?
Close LV. Rename your old VI and name the new VI the same as the old one and have it in the same location. Start LV and load your VIs. The VIs will now find the new VI. If you want the new VI to have a different name from the old one open the VI and keep all the other loaded. Save the new VI with File >> Save As... under the new name. Be sure that the checkbox at the bottom of the dialog is not set. This way you will get the VI with the new name and all loaded VIs will reference to the new name. Then you can delete the new VI with the old name and rename the old VI to its original name. Waldemar
Visa serial read with no terminator character
Using VISA serial read, I do not wish to have a terminator character as the returned data includes all codes possible (other VISA features are required). I have read the documentation and am unable to determine if it is possible to configure the VISA port without a Terminator character. I have set the termination character to 0 but believe that with 0, it is looking for a NULL as the terminator character. Do you have any experience / advice Thanks.
Re: How to put "expire time" property when build a stand-alone LabView application?
Some thoughts are http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=5065000800FD75&UCATEGORY_0=_49_%24_6_&UCATEGORY_S=0";>here. http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=135&HOID=5065000800B8C1&USEARCHCONTEXT_CATEGORY_0=_49_%24_6_&USEARCHCONTEXT_CATEGORY_S=0&UCATEGORY_0=_49_%24_6_&UCATEGORY_S=0";>The same question is here so look at these answers too. Another solution is to use third party licensing software like the FlexLm license manager which will be used by NI. I don't know if there is a llb to interface to FlexLm in your own application. Waldemar
Re: High speed data logger VI
Hi Mondeep, In response to your second question, the 4472 card is NOT supported by the VIs found on the linked webpage. The 4472 running at full speed on all 8 channels generates approximately 3.2 MB/s. HSDL generally increases throughput from standard DAQ and LV disk tools by about 30%, so you can see some difference. Also, there is not much documentation on it. So, if you are not aching for the extra 30% of bandwidth, I would recommend looking at this http://sine.ni.com/apps/we/niepd_web_display.DISPLAY_EPD4?p_guid=B88E116E27D32034E034080020E74861&p_node=DZ52258&p_submitted=N&p_rank=&p_answer=&p_source=External";>simple logging example for the 4472 instead. However, if you really need that extra bandwidth because of channel count or speed, let me know and I can provide you with the VIs that take advantage of this. As for your first question, I am unclear as to which data your are referring to. Are you referring to data output from performing a high speed data read, a data file, or from the DSA card? Thanks! Jeremy L. National Instruments
Hilight Execution or won't work
I am using an ActiveX control to read an EPICS channel: I use AutomationOpen to get a ref # to my ocx control, then use a flat sequence to: Add a channel, check it is connected, read something on that channel, each one by calling methods in my ActiveX control, then close the reference. If I single step, or run the vi with the Hi-light bulb enabled, everythinng works as supposed, and I get a readback value off my equipment. When I try and run it normally (Hi-light bulb off), the vi runs, but does not really do anything: the indicator shows the channel is not connected, and it doesn't read any value. I checked already to see if there's an inadvertently braekpoint set, or pause button checked, and everything is as it should be. I'm at a loss. Any ideas ? Thank you Larry T.
Re: Error message and crashing of LabVIEW 5 when controlling K-Teams Khepera robot
I'm not an expert per say but this could be a Windows corrupted hard disk fault. Perform System Backup!!! Empty re-cycle bins Delete Temporary files Run disk check Defrag hard disc reboot Defrag hard disc Rationale A page fault is either memory or memory being paged to hard disk. An error in allocation raises this issue. I have seen it most often when the hard disk is heavily fragmented and or mis-allocation of hard disk space as a result of the aforementioned and Microsoft Word leaves temporary files around that have caused these kinds of issues. There is a smaller possiblity that you have faulty memory but that's much less likely I would think. Run a load of apps like Notepad with BIG files in them to cause the system to fill up and page to disk then see if you get the same issue.
Re: High speed data logger VI
Sorry for the broken message! In addition, most computers are able to stream to disk at about 20 MB/s. So it should be able to write and handle the output of the 4472 just fine, without needing the HSDL. Jeremy L. National Instruments
Re: explore transfer functions
Hello, Do you already have the LabVIEW PID Control Toolkit? If not, please visit the following link for more information about this excellent package: http://sine.ni.com/apps/we/nioc.vp?cid=1394&lang=US Also, I found some more information regarding the use of transfer functions. Please see the following discussion: http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RNAME=ViewQuestion&HOID=5065000800CF2C&ECategory=LabWindows%2FCVI I hope this helps. Please let me know if you need further assistance. Have a great day! Kind Regards, Joe Des Rosier National Instruments
Order of occurance within a loop
Hi, I need to execute two commands in a loop. After the first command is executed the system must wait for about 30 seconds before the next is carried out. In what order with LV execute the elements within a loop? I am not sure if the program is executing the two commands first and then waiting. Any hints / suggestions? Thanks
Re: Labview window scrollbar won't enable
Hello, Are you referring to the scroll bars on the front panel or the block diagram? By design, the scrollbars become disabled when the entire front panel or diagram fits in the window. As you've discovered, moving an object close to the edge of the window will cause the scrollbars to become enabled. You can also left-click and draw a selection box towards the edge of the screen to scroll. Or, if you have a wheel mouse, you can scroll vertically by rolling the wheel up or down. To scroll horizontally, put the cursor over the (disabled) horizontal scroll bar and roll the wheel. For more information on insane object errors, see http://digital.ni.com/public.nsf/websearch/AFA28DCC3DE89839862566B200594E8C?OpenDocument";>What Does an "Insane Object" Error Mean and What Should I Do? If you continue to see insane object errors, please call technical support for further assistance. To initiate this procedure, Go to http://www.ni.com and click on Support at the top. In option 2, select "Phone NI" and click Continue. Fill out information regarding your system and click "Solutions." Click the "Call NI" button in the top right. Happy coding, Grant M. National Instruments
Re: Is the output from an auto power spectrum complex valued?
Hello, It sounds like you've sorted out your questions through the two excellent response posts. I found a couple of knowledge base entries regarding FFT analysis in LabVIEW, and I thought you may want to reference them for further information/instruction. Please look at the following links. http://www.ni.com/support/labview/toolkits/analysis/analy3.htm http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/eb86c3f027df072186256db0006c3612?OpenDocument I hope this helps. Please let me know if you still have any questions. Have a great day! Kind Regards, Joe Des Rosier National Instruments
Re: Controlling VI or front panel size when published to a web page
Answer was not clear to me. Please explain again.
Re: Communicating Between Built LV App.s
Dear Neal- I think that you can implement queues to communicate between LabVIEW app's on the same computer. Queues are one of the newer LabVIEW features, and I feel that they will be much easier to use than a Data Socket. LabVIEW includes several excellent queue operation examples, which can be accessed from a front panel by clicking [Help]>>[Find Examples] and searching for "queue." Also, you can find more information in the online discussion forum. To access this database, goto www.ni.com, click [KnowledgeBase], click [Search all entries], and search for "queue." One thing to note: If you're using multiple executables, the queues will not comminucate with each other properly. You must be working within the development environment if you want to use queues to pass data between various VIs. See this link for more information regarding queue limitations with executables: http://digital.ni.com/public.nsf/3efedde4322fef19862567740067f3cc/ecf9af864fada3e286256d81005e59dc?OpenDocument I hope this helps. Please feel free to contact me for further assistance. Have a great day! Kind Regards, Joe Des Rosier National Instruments
Re: Labview Locks Up Opening Chart Properties
Dear Kirk- What are your machine specs? I'm thinking that this problem may be fixed by increasing your system RAM, processor speed, and/or video card. One of these system parameters could undoubtedly be bottlenecking your refresh processes if any of your hardware components are outdated. Another thing you may want to try is changing your monitor resolution to a lower refresh frequency (60Hz), 256 colors, and lower screen resolution (800x600). I hope this helps. Please let me know if you need any further assistance. Kind Regards, Joe Des Rosier National Instruments
RE: Filter question
Gary and Scott; I seem to be unable to deliver to the Labview Forum, so I'm attempting to contact you directly I hope this is alright. (BTW, I am reposting to the forum also, in case it get revived, so I apologize if for the multiple copies). Please see message below. Thanks Rick -Original Message- From: Mahoney, Richard C Sent: Monday, February 23, 2004 1:45 PM To: [EMAIL PROTECTED] Subject: RE: Filter question Gary,Scott, et al. Thanks for the responses Scott, I am well aware of the fact that "that is what windowing does...". My question was, if I'm measuring the Self noise of a sigma delta A/D converter, which if any windowing function should be used? Sorry, I should have worded it better. Gary, This "Hann or Hamming is recommended" is what I was looking for, but even these have a difference in output Although not really that considerable. Dies this recommendation come from the "LabVIEW Signal Processing" source you cited in your message? The fact that the values can change by so much based on the windowing chosen, speaks volumes about the importance of choosing the correct window. My actual requirements reads similar to: "The self-noise at the output of the A/D converter over the band of interest shall not have an amplitude greater than -XX dBV and have a total energy that is no greater than -XX dBV within the band." For the first measurements I've implemented an FFT Power Spectrum function, and the 2nd an FFT Power Spectral Density function, but The windowing function based on what I select has the ability to change the Pass/Fail status of the measurement. This is why I'm asking. I could just code to PASS, but I want it to be right! Thanks for any additional input Rick M. -Original Message- From: Scott Hannahs [mailto:[EMAIL PROTECTED] Sent: Monday, February 23, 2004 10:48 AM To: Mahoney, Richard C; Info LabVIEW Subject: Re: Filter question At 07:15 -0500 02/20/2004, Mahoney, Richard C wrote: >Is there a summarized list somewhere of why one particular windowing function would be used over another >in DSP measurements. I know if I select Hanning vs Hamming vs Exact Blackman vs any other type >that my returned values can vary by as much as 3dB! > >I am particularly interested in the accuracy of measuring a VME A/D converter Board (of the sigma delta variety) >Self Noise parameter (with differential inputs shorted together). I've written a meas VI that implements the FFT >Power Spectrum and FFT Power Spectral Density VI's but the windowing function can change the results dramatically. Well, that is what windowing does. It is a problem of quantization in frequency space. If you have a pure tone that is not one of the frequency points but lies between two points, you will get amplitude in neighboring frequency bins of sin(w-wn)/(w-wn) where wn is the freqency of the nth bin and w is the pure frequncy. This also changes the amplitude in the various bins. Different windowing functions will changed the way that this signal bleeds into different bins. Some preserve signal height, some signal width and some integrated power. What windowing function you need depends on what you are trying to measure. Get a good book on FFTs. (Bendat and Peirsol, Brigham, or Bracewell are ones I used long, long ago, but the results haven't changed). The other reason for windowing is that your signal is assumed to be infinite and repetative at the signal length (ie all the values between the frequency points are zero). Thus unless your last point is the same as the first point, there will be a big discontinuity in the repetative signal. To get rid of this the windowing function will make the signal go to zero at the ends. (actually these two reasons are mathematically identical). -Scott -Original Message- From: Gary W. Johnson [mailto:[EMAIL PROTECTED] Sent: Monday, February 23, 2004 1:09 PM To: Mahoney, Richard C; [EMAIL PROTECTED] Subject: Re: Filter question >snip For noise measurements, Hann or Hamming are recommended. Always use the highest-level VIs for your measurements. They incorporate the correct scaling for effective noise bandwidth so that amplitude measurements are consistent and accurate. VIs from the Waveform Measurements palette in LV 6/7 are great, such as FFT Power Spectrum, which includes a selector for the window type. The new Express "Spectral Measurements" VI will also do very nicely. -- Gary W. Johnson Electronics Engineer [EMAIL PROTECTED] Lawrence Livermore National Laboratory (925) 423-01567000 East Ave., P.O. Box 808, L-183 Fax (925) 423-5804Livermore, CA 94551-0808
RE: LabVIEW PDA for iPAQ HP 5550
Hello... The emulator is not a function of the PDA Model and/or its Make. You must install the LabVIEW patch (Version 7.0f1) and you must also install the MS Embedded Visual Tools 3.0 (it is a free download from MS). You must locate the Visual Tools download (through the NI website) and then enter a rather long registration code to actually install Visual Tools Ver 3.0 to your computer. The Reg code and installation instructions can be found on the NI website. Please note, your Pocket PC (HP 5550) uses Pocket 2003. Hence, the automatic download/install from LabVIEW to the PDA will not work. The emulator was built for Pocket 2002. To overcome this, simply copy your built application to a shared folder that gets synchronized with the PDA. You can then run the built app from there (it will not be installed under Start/Programs). Regards, Guy R. Hughes Controlink Systems, LLC -- www.controlinksystems.com -Original Message- From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of [EMAIL PROTECTED] Sent: Wednesday, February 25, 2004 10:34 AM To: [EMAIL PROTECTED] Subject: LabVIEW PDA for iPAQ HP 5550 Hi Is there someone who has experience wit LabVIEW for PDA with iPAQ HP 5550 (Windows 2000) My problem is that the emulator does not work I have already installed the update for PDA Any help Jürgen GKSS research center Jürgen Buhrz Max-Planck-Str. 1 21502 Geesthacht Germany Tel. +49 (0)4152 87 2708 FAX +49 (0)4152 87 2727 Mail [EMAIL PROTECTED]
Bug in string control
Infrequently, about a dozen times over the past few years, I have noticed garbled data appearing at the end of the text in the string control when deleting or cutting a text selection. (LV 6.1 and 7, Windows). The number of random characters at the end of the string appears to be roughly the same as the selection size, and they are editable. Has anyone else seen this? A wild guess would be that, under rare conditions, the size of the string is not updated after performing a NumericArrayResize. If so, further edit actions would be able to corrupt the memory beyond the string allocation. Possibly, it is a race condition: the string length for the display update is read before the string, and the delete/cut action happens inbetween on rare occassions. The policy of our local NI support seems to be: if it is not reproducible it's not worth considering. Is this the party line? Albert-Jan --- Dr. A.C.J. Brouwer CIT Egineering Nederland BV http://www.citengineering.com
Re: Stream data to disk (LabVIEW RT and NI PXI-5122)
LV-RT is not required unless you are doing something else in addition to the acquisition. I will assume you will only be collecting one channel of data. If you do some math you will see that the acquistion alone will eat up a large portion of the PXI bus bandwidth. If you throw in saving to disk at the same time, you are going to be pushing things a bit. If you settle for just acquiring the data into memory durring the 10 minutes (!) and then writing the buffer to file after the acq is done, I believe this task is do-able! The OS you use to run the app really will not matter much provided you code allocates enough memory ahead of time. I would start by doing a quick test where an acq is started and the I/O is configured to read 1 or 2 minutes of data. Yes the app will "hang" while waiting for the data. If this works I would then repeat the test for the desired 10 minutes. Your system will need about 512M of memory just to buffer the data. Less than that will present problems. If the test app does OK on the above mentioned (repeated multiple times) test, you may be in buisness. You will just have to write the 1/2 Gig file and you are done. If the above fails, do not give up! First keep us informed of how things are going and we may be able to get around sticking points. Note: While spec'ing hardware for app like this, I will usually have NI sales support verify the hardware will do what I want and provide an example program that proves the functionality I need. I have never attempted to queue up an I/O reading 1/2 a Gig of data so you will be exploring limits I have never seen. If the above does not work, then I suggest a "divide and conquer" approach. This approach would use two DAQ boards and external clocking to acquire half the data on one machine and the other half by another. One of the boards should sample on the rising edge of a clock, the other system acquires on the falling edge. The resulting data would then have to be merged to give you all of the data. NOTE: The preceding technique should work but it will not be simple to implement. I will watch this Q's to see if you have any issues. Please let us know if you figure this out and any techniques that made it possible. Trying to help, Ben http://exchange.ni.com/servlet/ProcessRequest?RHIVEID=101&RPAGEID=261&HRedirected=True&HUserId=101_3529&RFORMNUMBER=6";>Ben Rayner http://volt.ni.com/niwc/common.jsp?page=products_certification_cld&node=10638";> Certified LabVIEW Developer www.DSAutomation.com
Triggering a DIO line based on AI value.
I am using Labview 7 with an E-series DAQ card. The system is reading a waveform from a function generator. It needs to trigger a DIO line (set it high for few seconds) when the value at Analog input is at certain value (e.g @ peak or zero crossing set by a control on front panel) It's going to be one shot operation. I was wondering if it can be accomplisghed without adding any external hardware/circuit to E-series DAQ card. Thanks
Sample and hold inputs on 6023e card
I am using a 6023E card and need to input 2 similiar channels into Labview and see the amplitude and phase differences. I have the program working for simulated inputs but the problem (according to NI) seems to be that the time delay in switching between channels causes the phase numbers to be wrong. Has anyone used a sample and hold vi or something like it that will allow both signals to be read with respect to the same reference? I realize that there are better cards that will do this but this is a student lab and we need 16 of them so cost is a big problem. Any suggestions would be appreciated. Thanks Dave
Re: Enums and loops
On your VI diagram, right click on the enum control and select Create->Property Node, then select the property "Strings[]". This will return an array of all the choices in the enum. You can then feed this array to a For loop and inside that put a case statement for each possible choice (if each choice does something different). Inside the For loop, you can program whatever you want, actually. Is this more what you're looking for? Rob
Re: Pasting an Excel 2000 Chart into Word 2000 using ActiveX
"Excel 2002 Power Programming" and "Excel 200 VBA" are two of the books I use from time to time. The VBA Editor help file in Excel is also an excellent soure. You may need to write some VBA code yourself to "copy" a Excel chart into word. Joe
Re: Run-time licenses
We had meetings about this. It was in the package that we got that was marked "Only for distribution in Canada." Maybe their lawyer were working overtime figuring what the licensing should be for different countries - I don't know. But we definitely had a couple of meetings to discuss this. I don't have that package anymore, but I'll see what I can find. Rob
Re: Getting phase difference...problems
Thanks for the suggestions. I just got off the phone with NI and the engineer thinks that the problem is with our hardware (PCI-6023E). The phase problem seems to be related to the time the hardware switches between channels, thus adding to the phase difference. He suggested trying to set up a sample and hold interface but was unable to help me with a fix at that time. I will post a new question with that problem next. Dave
Re: excel version and Labview
For the Excel (.xls) file itself. If it is created with Excel97, then there should be no problem of opening it in any later version of Excel. Normally, when you use Excel components in your VI to create or read Excel file, you need to re-compile for each version of Excel. However, we have been successful so far to compile the VI using Excel 97 and be able to use it under Excel 2000 and XP. My guess would be if the VI is compiled with a lower version Excel, it would (or most of the time) work with later Excel version. Joe
Re: Accessing a .Net IList's IEnumerable methods and properties .Net in LabVIEW 7.0
Hello again, Not too surprisingly, we've run into a more serious problem with this: in one case we have, the actual object implementing an interface is internal to an assembly, so we can't typecast to that class. Has this problem been addressed by the LabVIEW development team? Thanks, phil
Re: Example Finder fails to access examples
Hello Neojim, I apologize for the extreme delay in responding to your support request. There was a problem with my email notification and I did not recieve notification that you had responded. Thank you for sending in the additional information and the screen shots. I think that this is potentially a fundamental software problem, as you mentioned. I would like to make a report to R&D to have them investigate it. However, it would help to have several other pieces of information. What is the system configuration for the machines that you have tried? (processor, memory, operating system). Do you see any other strange problems with LabVIEW, or does it seem to be isolated to the Example Finder? Please provide this additional information so that I can make the most complete report to R&D as possible. Again, I apologize for the delay. Thank you! Liz F National Instruments
Re: I pull fiftyfour bytes of data from MicroProcessor's EEPROM...
I would check the instrument manual to see if there is a limit on the maximum number of bytes that it will send in one packet. Still try getting it to send 255 bytes and see if that works. If it does, then try 256 bytes to see if the limit is there (a one-byte counter for number of bytes sent). If so, then you may have to get the instrument to send data in multiple packets and put the data back together in your program. Rob
Re: How to count occurences of a certain string in incoming...
The package count I used was to count # of BEXUS, not the complete package, replace the 2 with 1 should count each data package. The data file shows the time from 00:28:09 to 00:28:59, then went to 00:00:01 and then to 00:03:59. The VI assumes the package format as (each complete package is about 128 bytes long): BEXUS H M S BEXUS H M S Data (112 bytes) If this is not the case, then the VI need to be modified. Joe
Re: RS232 questions...
The only catch to this method is if for instance, the normal desired setting for a control is ENABLED, and during the vi run, it is set to DISABLED, and the vi is saved (before the method is called). The default setting will be DISABLED assuming that the vi is then closed. When the vi is later loaded, the control will be DISABLED (by default). With Proper programming, one can avoid that. Another thing, this method did not work with stand-alone LV executables under LabView 6. I think it works now under version 7. Just a thought.
Re: enter to move between controls
The quick answer is yes. You can move to a control from a control using the enter key... but you only can do the following method once unless you are willing to do some extensive programming. What you can do is create two controls. Right click on the second control and goto Advanced>>Key Navigation. Set the navigation to the enter key. Place these controls in a while loop with a stop button and run it. Enter a value in the first control and then select "Enter". This will move the key focus to the second control. Unfortunately you can't assign multiple controls the key navigation of "enter". Is there a reason you want to use the enter key? Another solution would be to maybe use a table. After each entry you can hit enter and it will go to the next field just like in excel. Hope this helps.
Re: excel version and Labview
Hello, >From research on Microsoft's web page, and working with 2002 and 2003 versions of the Office programs, I would agree with you. I think that it would require two compilations, because the ActiveX controls are different versions as well. Hope this helps! Liz F National Instruments
Re: I want to make a arrow picture blink when The Load cell is travelling down
Skegsy, Hello again. I'm a bit confused as to what you mean by "my load indicator doesn't truly clear itself." I noticed that you use a case structure that is designed to clear the peak-load indicator. Once you press the 'clear peak load' button on the front panel, your indicator will temporarily clear itself. However, the indicator will continue to display data once this 'clear' button is depressed until the outermost FOR loop stops iterating. If you're looking to temporarily halt the display of the peak load once the 'clear peak load' button is depressed, you will need to modify the mechanical action of the button. To do this, simply [right-click] on the button within the front panel, choose [Mechanical Action], and test various configurations until you find the one that best suits your needs. Are you looking to clear the array history of all previous 'peak load' data once the button is depressed? -or are you just wanting to clear the indicator? Please provide a detailed description of your problem, and I will do my best to help you reach a solution. Have a great day! Kind Regards, Joe Des Rosier National Instruments
Re: RS232 questions...
Great idea!!! Smart and Speedy way to clear panel. Thanks Joe!!!
[W] Getting IP address of a local network interface
Does anyone know of a way to get a list of the IP addresses associated with network interfaces on a Windows PC running LabVIEW? I could call IPCONFIG with a System Exec node and parse the output but that's a dirty hack, so I'd rather not. Simon Whitaker <[EMAIL PROTECTED]> Software developer, Tiab Ltd tel: +44 (0)1295 714046 fax: +44 (0)1295 712334 web: http://www.tiab.co.uk/
Re: Queues and strict typedefs
LV2 style globals will update with the type def. John Howard >>> Craig Graham 02/25/04 07:09AM >>> When I have a strict typedef as the datatype of a queue, and I hold the reference to the queue in a global, changes to the typedef don't propagate to the global reference. Is there a way to make it happen? A different way of creating the reference for example? I'm presently using the context menu "Create Constant" and cut&pasting to the global. -- Dr. Craig Graham, Software Engineer Advanced Analysis and Integration Limited, UK. http://www.aail.co.uk/
Running VIs on lesser version of LabVIEW
If I design a VI in LabVIEW 7.0 Full Edition, using features not available in the base edition (e.g. event handling), will the VI run on a PC that only has LabVIEW 7.0 Base Edition installed? Simon Whitaker <[EMAIL PROTECTED]> Software developer, Tiab Ltd tel: +44 (0)1295 714046 fax: +44 (0)1295 712334 web: http://www.tiab.co.uk/
Re: Has anyone developed code to communicate with caterpillar CCM modules?
Hello, If you only want to capture data from your RS485 port, communicate through Datasockets. or you can use a RS-485 to RS-232 converter and Address to a RS232 port, such as COM1, then you use VISA to communicate via RS232 using ASRL1::INSTR. National Instruments sells RS485 board that that plugs into a PCI slot: http://sine.ni.com/apps/we/nioc.vp?cid=1363&lang=US I hope this helps. Regards~ Mathews
Can Labview execute a VI in background at a constante rate?
I would like Labview to execute some program code in background at a constant rate, for example every second. It means the main VI execution is interrupted every second and this program code is executed. How can I implement this? Thanks for your help. Philip
Getting phase difference...problems
I have read every post regarding how to obtain the phase difference between 2 input signals of the same frequency. I am using Labview 7 and have simulated the signals into my vi and everything worked great. I then input a signal into the 2 channels and used an RC filter to induce a phase shift and I can't get the phase results to work, althought the amplitude component works great. I have tried extracting the phase info by using 3 methods a)tone measurements interface in 7 b) spectral measurements interface in 7 c) extract single tone information.vi All of the above methods produce the same result, which unfortunately is incorrect. I have set up the 2 inputs with DAQ Assistant and the signals are good and 90 degrees out of phase. After extracting the phase info from each signal using any of the above methods, I subtract one from the other . I have tried both ways of subtraction and no difference. Any ideas? Do I have to trigger the signals externally or something like that? Any suggestions would be greatly appreciated. Thanks
Re: passing data to subvi
How about using a queue?