-
Posts
75 -
Joined
-
Last visited
-
Days Won
2
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by GoGators
-
As long as the application works, you pretty much pass the CLD. Do NOT leave the exam with a broken arrow. Everything else is the difference between a 70 and a 100.
-
It has been a while since I have done this, but also take a look at remote front panels : http://digital.ni.com/public.nsf/allkb/7F95D43D3F50FCAC8625710E000068E1?OpenDocument They are a little tricky on RT targets, but otherwise I thought they worked decently.
-
So I was playing around with Unicode in LabVIEW stuff, and for some controls and indicators you need to append the BOM to the front of the string. In LabVIEW that is typically 0xFFFE to the front of the string. It worked for the tree contro and table. Here is an example. Tell me if it works for you. UnicodeTable.vi
-
LapDog - an open source mid-level api for LVOOP
GoGators replied to Daklu's topic in Object-Oriented Programming
I find the lack of certain basic structures to be annoying too. Ideally each pattern should be easy to digest in under 10 minutes. More complex ones should be allowed later on though. Yes. Yes 3-5 hours a week. More if the class lines up with a current project. Consultant/Developer. I'm not cocky enough yet to say Architect. -
Take the FFT of the signal. It works out best if you take full periods rather than fractional periods. Then looking at the magnitude of the FFT, you can decipher what it is. Typically with some sort basic algorithm. A sine will have a single tone, a square will look like the sinc(x) funtion, etc. Another option is a "matched" filter. Essentially make a filter that will cancel out the all signals except the one you are trying to detect. Typically this is done by finding the impulse response for each of your signals, then convolving them through one by one till you find your match. These work well if you know ahead of time what you are expecting. Good luck.
-
How to make self referencing objects?
GoGators replied to Black Pearl's topic in Object-Oriented Programming
Just delete message.ctl. It doesn't do anything. StarUML is Daklu's suggestion, and I like it so far for the class diagram. There is apost somewhere around here about everyones favorite UML tool. -
How to make self referencing objects?
GoGators replied to Black Pearl's topic in Object-Oriented Programming
The main reason why I place the entire object into the DVR instead of just the object properties is because I am working on recursive functions. In particular I call method X on object A. Object A has a ref to the next Object B, so then method X recurses on object B, and so on and so on. If the DVR only encapsulates the data and not the entire object, I don't think you can do that. But yes, the casting of DVR references is annoying. -
How to make self referencing objects?
GoGators replied to Black Pearl's topic in Object-Oriented Programming
I am so glad you asked these questions because they all are relevant. Because hijacking threads is never a good way to present information, I will start a new thread with what I intend to present. <Edit> So I started to repost and realized my code was not yet ready to warrant a new topic. Here are the answers to your awesome input but note that everything is not yet ready so I'll do my best. A possible presentation? Was your proposal accepted? Yes. For alliance day the systems engineers get to put on some topics of relevance. Mine will involve Machine Control with use of linked lists, trees, and graphs via LVOOP and DVRs. -duplicateBranch.vi creates a new branch and adds it as a sibling of the branch it is copied from. What if I want to copy a branch and add it to a different node? Or what if I want to copy a branch and make a new tree out of it? Yup. Can do, but my intention was for configuration editors where that is common. Maybe a better solution is to just duplicate and leave it up to the user whether to add it back on or make it its own tree. -readTreeFromFile and writeTreeToFile combine the process of flattening the tree to xml and writing the xml to disk. I (as your api user) want to flatten the tree to xml and store the xml string in memory to support undo actions. Good call. It is there but I should make it more evident. -SaveTree and LoadTree each pop up dialog boxes requesting user input. I'm planning on using this api in a remote system where users might not notice a dialog box for days. How can I make it just log an error if the path input isn't correct? Once again, didn't think about that case. I tried to keep the API easy, and missed it. -I see a Node class and a Tree class, but some of the Tree vis refer to "Branches" yet have Node inputs and outputs. How is a Branch different from a Node? (The answer, I now realize, is nodes and branches are the same thing. I actually asked myself this question when first looking through the code because I expected different functionality for different terminology.) The goal is to move the API to use the terminology of branches. Nodes should be independent and "floating" and thus rarely used. But branches indicate structure. -graftBranch adds a single branch to a single node. graftBranches adds multiple branches to a single node. Where are the methods to add a single branch to multiple nodes or multiple branch to multiple nodes? (That's a trick question... I really don't want those methods. I think graftBranches is unnecessary.) Graft branches was added for a specific reason. Assigning IDs (or GUIDs) and then assuring they were unique to the the tree was very costly speed wise. The act of graftBranches would assign IDs at he beginning of the operation to eliminate redundate searches for unique IDs. If your example is intended to be reusable code, I think you'll be better off providing a small set of fundamental capabilities and let the users combine those fundamentals into higher level functionality that makes sense to them. Really all the tree needs is three core functions: addNode, removeNode, and copyNode. Good call, but for the presentation I need application rather than "Look what I can do" Those functions are common for a configuration editor, thus they were included. </Edit> Thoroughly high-jacked now. -
How to make self referencing objects?
GoGators replied to Black Pearl's topic in Object-Oriented Programming
Yes. I have been through a few iterations trying to make it as best as possible. The latest makes it so you can save the tree in Native LV XML even though it uses DVRs. It works well for making class upgrades due to LV versioning. I thought about it, but it didn't really seem like a node and tree should have the same functionality, more that a tree was an aggregation of nodes. But yes, the overlap did make me consider it. I made it for a possible NIWeek Presentation on alliance day on advanced data structures. The linked list is complete, but the graph is taking quite a bit longer. Just so I know, is a tree what the purpose of your self-referencing object was going to be used for? I know you mentioned namespacing, so I was kind of interested to hear what that was related to. -
How to make self referencing objects?
GoGators replied to Black Pearl's topic in Object-Oriented Programming
I may be reading into it a little too far, but is this very similar to a by-directional tree data structure? Each node is self-referencing in the tree. If not then what is the use case for what you are describing? Tree.zip -
Accessing MySQL from a RT VxWorks target?
GoGators replied to 2muchwire's topic in Database and File IO
Dang it. I love it so much I want to add it to http://zone.ni.com/devzone/cda/epd/p/id/6287 I guess I should add one more to the work queue. -
Tree or ListBox or Array of Strings
GoGators replied to LHarris's topic in Application Design & Architecture
In both tree and multicolumn, if you are dynamically adding items make sure to use the "Defer front panel updates" property. The refresh on both is killer, and the deferring seems to make the performance go up quite a bit (in my case 5x for 100 sequential added items). Personally the multicolumn is easier to use, but the tree often times makes more logical sense. If it is internal I'd use multicolumn to save time, and tree is it is a requirement. -
Sounds like a DCOM settings problem. If you use Server Explorer or OPC Quick Client, can you connect to it? If not then I would definitely say DCOM setting. Look at the computers that work DCOM setting and try to emulate it on the others.
-
Accessing MySQL from a RT VxWorks target?
GoGators replied to 2muchwire's topic in Database and File IO
I wrote an article about 6 months ago about this. Check it out here: http://zone.ni.com/devzone/cda/epd/p/id/6287 On top of that another systems engineer figured out a way to do a plugin direct connect to MySQL. It hasn't been added to the article, but hopefully it will be in the future. I alerted him about this post, so hopefully he will reply in the next week with some example code. -
Create Shared Variable from VI
GoGators replied to mike5's topic in Application Design & Architecture
Go to the LabVIEW Example Finder and search for 'shared'. The "Create Online Process.vi" example seemed like the most basic to get started, and then there was a more advanced one. -
Statically calliing a dynamic dispatch
GoGators replied to GoGators's topic in Object-Oriented Programming
That is one possible workaround, but the bonus of DD is that it allows Call Parent method. Without DD it is not allowed thus I can't simply be adding on more and more to the methods. -
I was looking for a way to statically call a dynamic dispatch. That or a dispatch once and then reuse many. My use case is that I want to build up a nice hierarchy of inheritance for DAQ devices. During the Acquire method they call their parents methods as well as add their own bit of code. It looks like it is going to work really well except that dynamic dispatch is about 10x slower than static dispatch. Since I'm inside the acquisition loop, the DAQ device is not going to be changing classes. It would be nice to dispatch the method on the first call, and from then on continue to use the same method (thus improving performance). Here is my benchmark VIs to compare the speed of dispatch. Benchmark.zip
-
Here is the Challenge presentations I could find. http://decibel.ni.com/content/docs/DOC-10134
-
Conditional Disable in build settings
GoGators replied to Ton Plomp's topic in LabVIEW Feature Suggestions
On top of that I was wondering if any has run into the problem of conditional disable structures influencing dataflow. Essentially in other languages when you conditionally disable something (like in C with #if) the code is entirely taken out of the build. In LabVIEW I have seen that the code inside is not built in, but the structure influences dataflow (i.e. structure doesn't execute until all inputs to the structure is ready). If it is not a large enough problem then maybe I won't make a suggestion. No need for Idea Overload. -
I was wondering if anyone who attended the CLA conference this week knew if there was a location to find the presentations? I heard there was a good one on error handling that I was interested in. I tried to sneak into a session or two, but work kept me back. Edit: Also I was wondering what you guys thought about it. In particular the most useful thing you learned or saw.
-
cRIO TCP/IP Bootloader with VI-Server
GoGators replied to KoBe's topic in Remote Control, Monitoring and the Internet
Sorry about that. The Multiprocess engine was my code. In trying to get it to do everything, the example looses a lot of its simplicity. I believe another way to look at the problem is to think of your application as a plug-in. Tomi wrote an article about LVOOP plugins on expressionflow : http://expressionflow.com/2008/06/02/extending-labview-built-applications-with-lvoop-plugins/ Just another idea. -
Turns out the issue is you can call a windows form through the Show method, but it has to be in a single threaded apartment (STA). In other words the VIs execution system should be set to the User Interface to make it single threaded.