-
Posts
6,203 -
Joined
-
Last visited
-
Days Won
111
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by Michael Aivaliotis
-
Correct! And why is this significant? It is nice because the decal is a clickable object which toggles the logic on the boolean. This is great because you can replace it with a custom graphic and use it as an additional part of the control which can be clicked.
-
To start off, just to clarify. The LAVA Forums are not OpenG. I realize that some OpenG contributors hang-out here but if you want to give praise to OpenG, the best way to do this is to go to the OpenG forums and tell them how much you love them in person. While you're there you can also donate some money : OpenG Website --- OK... About custom controls. Do you know about the control editor? That's the first place to start. There are many ways to access it but the best is to right-click on a front-panel control and select Advanced>>Customize. This will pop-up a window called the control editor. Once your in there you can manipulate all the objects to your hearts content. One thing you have to realize is that each control is composed of many parts. You can manipulate these parts and even replace them with pictures of your own. To see these parts you must click on the icon on the button bar that looks like a wrench. This will cause labview to break apart the control into several components. You will see each element highlited with a white box. If you use your mouse pointer you can click and drag each part of the control and spread it about. So now how do many people create cool controls. Simple, you just hack away at the control using the control editor and replace the parts you want with pictures of your own. The radio button control you mention is actually a slider. Yes! The black dot of the radio button is the slider pointer that has been replced by a black dot. The circles are pictures of circles copied from a dialog button radio control of windows. I hope I gave you an idea of how this is all done. Cheers! :beer: :arrow: Here's a challenge question for you control editor experts out there: Each boolean control has 3 visible parts. The label, caption and boolean text. There is one exception to this, what is it?
-
Here is an example VI (LV7.0) that shows how to manipulate text in a text box. The focus of this example is the Selection Start + Selection End property. This can be very powerful in performing custom live formatting of front panel text. The trick here is to perform formatting on the text after you highlite the section of interest. The Font property is then used within the same property node. text_hi_lite.vi - Image: Download File:post-19-1088657566.vi
-
Flat Sequence Structure Time Control
Michael Aivaliotis replied to Michael Aivaliotis's topic in LabVIEW General
I'm attaching an image that shows a 1000ms (1sec) delay used. Actually, using a sequence structure in this configuration is considered bad form. It is better to use a state machine architecture. If you want more information on state machines then read the FAQ: What is a State Machine? -
Saving Data To a File at Time Intervals
Michael Aivaliotis replied to Michael Aivaliotis's topic in Database and File IO
How about putting the file saving code inside of a loop with a timed delay? If you give a little more description of what you are using already then I can respond with more information. -
Are you using locals to achieve this? I don't see any reason that this doesn't work.
-
I split this post into a seperate thread. For the future please start a new topic thread if you are asking unrelated questions.
-
I'm not sure I follow you. What is bad policy?
-
I thought Alex explained it quite nicely but just to clarify I've attached a dead simple method. I think the main idea is to read the previous data and concatinate the new data to the previous data using a end-of-line between the new and old data. Of course there are other logistics issues you have to take care of yourself but the framework should work as shown.
-
Parallel Running VI's
Michael Aivaliotis replied to MWS's topic in Application Design & Architecture
Ok, being the picky bastard that I am, I decided to post a slightly modified version of your example. It is functionally the same however it's slightly improved on code clarity. Feel free to attack my design... The major change is that I stop the top loop by destroying the notifier Refnum. I check for errors on the wait on notification . Any error (such as a bad Refnum) stops the loop. Another change is that I use the timeout output of the same function to determine if there is a new message. This adds a bit of flexibility since you can easily expand this configuration to decode a number of datatypes (not just a Boolean out). So if there is no timeout that means there is something there... decode it. I'm not saying that your version does not work, it works well. I always like to program-in inherent flexibility (no matter how small) to accommodate system expansion. -
A late response here but I would recommend that you create a VI that counts a fixed number of transitions (low to high crossing a given threshold). Do this for a certain sample set. Let's say 1000 samples. Then I would compare the count of transitions to the total number of samples collected. If you have fewer transitions for the given samples, you have a problem.
-
#define constants in LabVIEW
Michael Aivaliotis replied to lavezza's topic in LabVIEW Feature Suggestions
Yes the Conway-Watts book you refer to has some great examples of this. As far as the value of posted suggestions\wishes, we have quite a bit of influence in the direction of future versions of LabVIEW as long as the wishes get posted to the right location: LAVA wish list policy. My opinion is just that, an opinion and does not indicate right or wrong. Keep those opinions and suggestions comming, they are all welcome! :thumbup: -
When Dynamic Events were introduced in LV7 I tried so hard to figure out a place for them in my design architectures. I am attaching an implementation where a user defined dynamic event is used to pass data from a dynamically called VI to a main VI caller. I actually used this implementation in a real project. Any comments or suggested improvements are welcome. The code is LV7.0. Download File:post-12-1087954972.llb
-
How to disable an element in an array
Michael Aivaliotis replied to Isharryf's topic in User Interface
Yes, for example, if only 10 elements are visible at a time then you can overlay 10 transparent booleans overtop each element of the array. Using logic you can enable\disable each boolean for the coresponding element of the array that needs handling. -
Where can I find the document of Opengoop tools?
Michael Aivaliotis replied to keiran's topic in Object-Oriented Programming
There are some examples and documentation here: OpenGOOP info I've used OpenGOOP in some of my projects and it works well. I suggest you post your question or concern here: OpenG "Pkg - Others" Forum Do you have a specific question or problem? If you post here I can try and give you a an answer. -
#define constants in LabVIEW
Michael Aivaliotis replied to lavezza's topic in LabVIEW Feature Suggestions
I guess there is a place for a new type of constant however I don't feel that it is really such a big issue. Personally I prefer to use a sub-VI for placing constants. I don't understand why you need to have one VI per constant. Most of the time constants belong in groups. For example you would have DAQ settings or Instrument settings. You would then place all constants on the diagram of a subVI. Of course you would put them inside of a cluster then output that cluster to a terminal of the VI. A simple unbundle will give you what you need. If you don't like clusters and unbundle then use multiple output terminals instead. Why is this so hard? There is also a hidden potential here that is not evident at first but I will explain. If you created a VI for each functional group of constants you could easily convert them (down the road) from static hard coded data objects into flexible variables that can be abstracted and manipulated externally, even as a built executable. Each constant VI can be edited and replaced with a read\write from ini file. This allows you to implement code -
Can you include a screencapture of the graph? That would help a lot in figuring this out.
-
Actually, this was impressive at the time and an excellent solution to the problem, however this is now built-in to LabVIEW. This is using a picture control.
-
Sorry, what kind of instrument are you trying to communicate with?
-
Here is a good link to an NI article on serial communications: Serial Communication Starting Point
-
We use a brand new copy of LabVIEW 7.1 Professional development suite
-
Here's the link to the National Instruments Certification Program Tasks and Objectives: Tasks and Objectives If you can handle the above material you should be ok. By the way, most or all of the material is covered in NI Basics 1 and 2 courses. Perhaps the advanced course as well. All of this is specified on the NI website. NI does a good job of clarifying what material is covered. On another note, being self-taught is nothing to be worried about. Most of us learn more on the job and by diving into real projects than the NI support engineers themselves. We're the ones that push LabVIEW to the max and use it in ways that it was not even designed for. The problem with the test may be that you may not know the proper terminology that's used or required by NI in their questioning.
-
The question then becomes, how do you pick the review board?
-
Changes In Ni Technical Support Policy.
Michael Aivaliotis replied to Norm Kirchner's topic in LAVA Lounge
Yes, Alliance members get support now however it can only be registered in one name. So be sure to transfer ownership of the support capability to the engineer who is most involved with technical issues in your company. In our case it was setup to our main sales person which wasn't much help.