-
Posts
823 -
Joined
-
Last visited
-
Days Won
25
Content Type
Profiles
Forums
Downloads
Gallery
Posts posted by Norm Kirchner
-
-
Oh, most definitely has room for improvement.
Doing the string operations in-place is the best especially if you are doing color replacement, text replacement, or line moves; the user just has to keep a dictionary of 'desired element to offset' lookups.
If the code for doing the color replacements or other high performance modification operations is desired, make the request here, and i'll add onto it.
Double up on the recommendation for making 'layers of picture controls' to give the ability to show an element moving/ being modified, while the original stays in place.
The application this came from had upwards of 5 layers for different things.
-
- Popular Post
- Popular Post
Ok,
Check out the demo in the ZIP file
It's not hack code, but is definitely missing documentation.
So in lieu of that, here is a narrated story time
http://screencast.com/t/dJsMkZkDA0
http://screencast.com/t/9dgIuC97LZwP
Ports back to LabVIEW 7.0 at least (original code from 2003)
~,~
The Captain Was Here
- 4
-
Which version of LV are you working on?
I have just the thing that you're looking for.
Also, how many elements are on the picture?
a lot of line art, or a bunch of images? -
Is using the win32 'child window' declaration a hard and fast requirement?
-
-
lEver wanted to communicate with VI which are across context boundaries?
Those typical boundaries, are
- different LabVIEW project
- LabVIEW into LabVIEW EXE,
- EXE to EXE
- PC to PC across a network or even the internet
Usually to get around these boundaries, we have to flatten to some easier transport mechanism like a string and then unflatten on the other end.
There are a whole other host of situations and and reasons why cross context boundary communication is useful and not just a simple slam dunk using existing primitives in LabVIEW
REx (Remote Export Framework) is a useful framework that you can take advantage of to eliminate the typical boundaries
Instead of spend 45 minutes trying to describe it, see the linked videos below, (also in the PPT) until more written content gets made.
Basic Demo - Current App http://screencast.com/t/JbW2mM3jx
Creating & Using a New Command http://screencast.com/t/GhkE2CEx4Ip
Send into EXE http://screencast.com/t/bxbI0B4l8Xs
EXE to EXE http://screencast.com/t/xCJw2B39mFQr
Debugging Ports / Services http://screencast.com/t/E0RXrgM3YexUsing Service Dump Info http://screencast.com/t/oTUSH5aFqo9SNetwork Communication http://screencast.com/t/KuTPTKA8rmC1Rebuild of EXE (addendum) http://screencast.com/t/36oWmrybjRMj*******************1/12/15 Update: attached new VIPC which upgrades REx to 1.14.0.31 to address the issues w/ things not moving into the tools menu properlyRemote Export – REx Framework.pptx
REx Installation Full.vipc
01/31/22 Update: Added update to Error handling on response, required- 2
-
Based on the limited information associated with the post, I would also recommend using a Queued Driven Message Handler (QDMH)(Template available via the 2012 sample/template projects)
I presume you're a relatively new developer and as useful as the QDMH is in making sure your application can do what you want, it has a variety of key flaws for handling flow control, especially if it's event driven from the Front Panel.
For simplicity sake, it might be best to defer to a basic state machine and simply index the enumeration +1 for each itteration of the loop.
Also, based on experience, Shaun's response is probably not what you'd choose right now because you're likely sharing a variety of pieces of information between each one of the steps and you don't feel comfortable making each of these calls into their own unique SubVI or making a well structured TypeDef cluster to store all this information.
However, on the latter point of my previous comment, whether or not you use a QDMH or a basic State Machine, I would HIGHLY recommend that you use a 'Mother Cluster' going through a shift register to share information from step to step of your sequence.
The QDMH template project and TLB http://lavag.org/topic/14164-discuss-tlb-top-level-baseline/ are good examples of this practice.
Best,
Norm
~,~
ps. Good luck and straighten your wires out! They have too many random kinks in them. (people like to help people more who write cleaner code)
-
What do you need to test on these devices?
Are you a developer of these chipsets or are you simply using them and want to validate their performance? (I assume the latter)
Or rather are you trying to ensure that the bits that you are sending out / receiving are correct? (not really measuring, just sending and receiving data)
Also, what hardware do you have that can't be interfaced to LabVIEW? (there isn't much that is 'impossible' for LabVIEW to interface with)
Are you simply saying that there are not LabVIEW drivers for what you are working with? Are there c or .NET dll?
What modulation scheme are you planning to use with these transceiver?
Which measurements do you want?
Do you know how good of a piece of test equipment you need?
I'd like to help, but we need some more information beyond what you've supplied to give valuable answers.
Best RegardsNorman Kirchner
Senior RF Systems Engineer
National Instruments
~,~
-
Yeah, isn't finding available hot keys a real PITA?!
Wouldn't it be easier if there was a more natural way to have a deep set of commands w/out needing to divine a magically unused hot key pairing?
~,~
- 1
-
Due to many requests I have added the QSM evolution code shown in the video detailing why the common design pattern of the QSM is a faulty bridge.
The attachment is added along w/ the original post up top
-
-
http://forums.ni.com/t5/LabVIEW-Idea-Exchange/Automated-creation-of-polymorphic-VIs/idi-p/2111968
Make sure to Kudo it
==================
Now to the idea of generics, I think one thing that would be help along these lines, would be to be specific of the "Killer App" that's not even possible without generics in LV.
One of these things that Brian Powell mentioned recently that made all the difference to me, is that we've got a limited number of things that we can focus on, and those can be the things that are not possible at all, or those things that we can do, but want easier.
Sure, life would be grand if we could do everything, but this is a much much harder problem to solve than you might imagine.
And when I say 'solve' I mean, do right, not make possible with a Multitude of bugs and limitations and gotchas (including corrupting your codebase)
So when it comes to having this feature, it would likely take a huge chunk away from making the impossible, possible.
But if you make a case where this is a huge benefit which is completely impossible, things start to get interesting.
So if you've got one of those, or even several, Make Them Known.
Wish I had a better answer, but as an aside, if this is something not going into a product and you'll just use to make your life developing other code possible.....you might want to ping me offline
- 1
-
Jeff,
I didn't realize that the version that I have is unreleased.
I never liked the idea of forcing the copy of the AMC library into the templates and such, but has proven very useful over time.
I think I only use the current version of the AMC in either the template creator or in the QuickView example.
If it is wrecking your world then I suppose I could build a unique version that has no dependencies, but if we could do that just for you for the moment, that'll work. Hit me up w/ a PM and we can go from there.
It should be quick enough for me
~Norm
-
I was going through the process of modifying QuickVIew today and realized it was a prime opportunity to expose the thoughts and process for tweaking a program based on TLB`
Video Part 1
http://screencast.com/t/MgrPRMq0a
Video Part 2
http://screencast.com/t/ZgJ6yQmNxR16
I hope this helps you all understand how to do a minor modification to a program and how nice it is to separate the mental process of flow from what is going on in the system.
-
- Popular Post
The hallmark of an experienced LabVIEW developer is the usage of their or others templates which prevent the ubiquitous blank block diagram symptom where time is wasted doing the same thing that they have done before.
Attached and linked you will find the TLB` (prime) template which, after a little learning what the parts are, can take you from zero to 60 in no time the next time you need to create a Top-Level application or interface.
This template can be used from the ultra simple UI to a fairly complex application.
Many questions and comments have been made about the original design (TLB) which is located here
http://lavag.org/topic/14164-discuss-tlb-top-level-baseline/
This reason for the update in this design is detailed in the presentation "Rebirth of the LabVIEW State Machine" which is accessible here
http://lavag.org/topic/16091-ni-week-2012-videos/page__view__findpost__p__97844
Installing and Creating
http://screencast.com/t/vtlFgLhQqT
Review of Examples
http://screencast.com/t/XLIN0yjS
Structure of Code
http://screencast.com/t/5RtMhPVujS
Basic Flow of Operational Code
http://screencast.com/t/1QGFRRuSf0nT
Adding a control to the system
http://screencast.com/t/IJTxEQ28
Adding an action to the system
http://screencast.com/t/5984lGlMjM
<More to come soon>QSM Evolution.zip
Code used in presentation video detailing why the typical QMH is fraught with issues that we have all run intoCredit to Daklu for it's creation and sharing
ni_tool_tlb`-1.2.0.23.vip Most up to date version of TLB`
- 9
-
I have looked at the code and can not determine why it's not working for you.
The only thing that could be suspect is that I am invoking a recursive chain of VI in the closing, but all VI involved in the process are shared clones, so there should be no deadlocking.
I don't doubt that you're seeing this, but I have as of yet to see it live on a system so it's making it hard for me to find the issue.
Have you tried turning on debugging as well to see what you get?
Also....technically speaking....although it's a hack.... you could just skip that call on the close. All it does is clean up event references and LV is about to terminate anyway so you can let its autocleanup deal with it for now.
~Norm
-
I haven't tried it on an XP system.
However if I'm not mistaken the API should still fly.
I'm presuming you are holding down one of the hot key combinations while trying to say the commands?
How long did you let release session run for? Sometimes the shutdown of the speech engine takes a long long time.
However the release session shouldn't be doing anything other than closing references....
Do you have a win7 system you could try it on as well?
-
- Popular Post
- Popular Post
And on behalf of the NI RF Team, once again I'll be offering up a flight around Austin, time weather and schedules permitting.
You will get the chance to view our beloved Austin from the air and take the controls of N2817F, a High Performance Cessna Skylane 182.
Any training on aviation, RF or PXI along the way is an extra kicker out of the kindness of my own heart.
- 3
-
Just to kick this alive for those who care, I've released a very simple version of LVSpeak without quick edit.
http://lavag.org/topic/15955-labview-speak-basic/
It delivers a very simple API for adding speech to any application.
A future release will have the full featured capabilities and will have QuickEdit included.
along with installer
along with a command set
along with more and more and more
but for now, this is all ya get.
~,~
-
Based on the squeaky wheel programming paradigm, I finally broke down and created a very very basic version of LVSpeak which simply enables speech detection in LabVIEW.
Refresher
This version of LVS is fully decoupled from the QuickEdit engine which enables you to speak common commands to LV and operate on GObjects (front panel and block diagram items)
This should be packaged into a VIPM package but is not yet.
It has imported its dependencies (ESF and REx) so that no other downloads are needed for the moment.
Dependencies would be handled in the future through VIPM
I'm posting for a specific person, but want to share w/ everyone.
There are many more things that I have in the full version of the LVS Engine, but for simplicity sake, I wanted to boil this down to the least common elements.
Enjoy,
Norm
~,~ The Captain was here- 1
-
Just bought mine.
If you don't buy yours, you are missing on the chance possibly win a free flight around Austin.
~,~
The Captain was here
-
Perfect! Thanks JG
-
You need to use the XY plot.
You'll need to sort your data according to whatever you declare your X axis to be
This VI will allow you to take an XY plot and order it by X points Order XY Points.vi
This is an example of it in action on the XY Graph:Mouse Down event
<!-- copy and paste. Modify height and width if desired. --> <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/f2f65ae2-3013-4a8d-b30b-f046dbc98a45/2012-01-12_1530.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/f2f65ae2-3013-4a8d-b30b-f046dbc98a45/2012-01-12_1530.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/f2f65ae2-3013-4a8d-b30b-f046dbc98a45/2012-01-12_1530.png" width="848" height="379" border="0" /></a>
Good Luck,
~,~
The Captain was here
<!-- copy and paste. Modify height and width if desired. -->
<object id="scPlayer" width="796" height="746" type="application/x-shockwave-flash" data="http://content.screencast.com/users/NJKirchner/folders/Jing/media/e1f666fc-d269-4a1c-8cb7-5f6a9301740d/jingh264player.swf" >
<param name="movie" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/e1f666fc-d269-4a1c-8cb7-5f6a9301740d/jingh264player.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#FFFFFF" />
<param name="flashVars" value="thumb=http://content.screencast.com/users/NJKirchner/folders/Jing/media/e1f666fc-d269-4a1c-8cb7-5f6a9301740d/FirstFrame.jpg&containerwidth=796&containerheight=746&content=http://content.screencast.com/users/NJKirchner/folders/Jing/media/e1f666fc-d269-4a1c-8cb7-5f6a9301740d/2012-01-12_1532.mp4&blurover=false" />
<param name="allowFullScreen" value="true" />
<param name="scale" value="showall" />
<param name="allowScriptAccess" value="always" />
<param name="base" value="http://content.screencast.com/users/NJKirchner/folders/Jing/media/e1f666fc-d269-4a1c-8cb7-5f6a9301740d/" />
<iframe type="text/html" frameborder="0" scrolling="no" style="overflow:hidden;" src="http://www.screencast.com/users/NJKirchner/folders/Jing/media/e1f666fc-d269-4a1c-8cb7-5f6a9301740d/embed" height="746" width="796" ></iframe>
</object>
Something like this?
I know it doesn't look like your plot in excel, but your plot in excel is EXTREMELY misleading.
In any Cartesian plot, an axis in 1 direction is Always increasing or Decreasing.
Your plot in excel has the X axis be completely randomly ordered
It almost sounds like you want 2 plots on the same graph, showing both Instr 1 and Force collectively vs sequence #
But in either case you have an answer to both scenario
<!-- copy and paste. Modify height and width if desired. --> <a href="http://content.screencast.com/users/NJKirchner/folders/Jing/media/970befbf-eaa8-4109-a5f0-08c6e4bb87b7/2012-01-12_1544.png"><img'>http://content.screencast.com/users/NJKirchner/folders/Jing/media/970befbf-eaa8-4109-a5f0-08c6e4bb87b7/2012-01-12_1544.png"><img class="embeddedObject" src="http://content.screencast.com/users/NJKirchner/folders/Jing/media/970befbf-eaa8-4109-a5f0-08c6e4bb87b7/2012-01-12_1544.png" width="1049" height="670" border="0" /></a>
Best,
Norm
-
I can't answer your question specifically, but there is a great deal of knowledge on classes, inheritance and packed libraries contained here.
I would give a 68% chance you'll find your answer in there
Plug-in design using LVLIBP https://decibel.ni.com/content/docs/DOC-19176
Good Luck
~Norm
- 1
TLB' - Top-Level Baseline Prime Application Template
in Code In-Development
Posted
Please try the attached file here.
If it works for you, I'll update the main one up top.
https://www.box.com/s/8f8hw6gyjpubcy12yapi
(attahcment wouldn't work)