-
Posts
3,432 -
Joined
-
Last visited
-
Days Won
289
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by hooovahh
-
Remembering to version can be an issue, which is why I made a prebuild VI that runs which prompts you for the version. It also sets all installers to have the same version as the EXE you are setting, and I modified it so it sets the build number to the commit number in SVN.
-
OpenG is free as in beer, and free as in speech. It is licensed under a BSD agreement, The majority of it is licensed under a BSD agreement, which basically means you can use it in commercial applications, edit it, change it, do as you please, as long as you attribute the creator (leaving in the text on the front panel) and there are a couple of other considerations when distributed as a binary.
-
http://sine.ni.com/nips/cds/view/p/lang/en/nid/209027
-
Yup, when I have to do something similar I make sure there is only one VISA resource open, and one close. Every read/write calls into an Action Engine that uses the VISA resource. Sure you can get into cases where loop 2 is waiting to perform a write then read, because loop 1 is already waiting on the read to return, but in the end you really only have one port. Data is going to come in and out for multiple devices and a lock of resources must happen at some level. If you truly need 3 loops to run in parallel, and not block each other, then you need 3 VISA resources one for each piece of hardware.
-
I don't have 2011 installed so I can't test that this opens correctly, but I back saved it into 2011. Again be sure and have OpenG stuff installed. ClusterView 2011.zip
-
run myrio vi from PC vi
hooovahh replied to parth's topic in Remote Control, Monitoring and the Internet
Not really. I mean when you run your host VI on your PC you would need to compile the RT VI for the target, and optionally any FPGA compiling that needs to take place, then deploy it. I think it might be possible but probably isn't what you want. A better solution might be to just write your code for the myRIO, and then have it run on startup. Then your myRIO is always running, and always looking for a request to do something. Sorry I don't have any specifics I don't have a myRIO to test with, or any available RT hardware. -
Is what I said: Is what I meant. I can see how I wasn't being clear.
-
That's what I was trying to say. I like that I can do that with an NI VI. Just hit run and start interacting with the front panel for debugging. But this version looks like you have to perform a separate compile operation, which makes the bit file, and then you have to write host code to talk to it.
-
I partially know what you mean. I know I am more than just where I work (it's Samsung by the way). But I appreciate knowing when a user works at NI. It's a badge, or a hat, or some other flair that other can appreciate. In either case I don't have control over it.
-
I'm sure there is. And looking at the Hand-RIO videos I'd say it too does some similar tricks with the Xilinx compiler.
-
Resource usage for inactive tabs on a Tab control
hooovahh replied to Christian Butcher's topic in User Interface
I've absolutely done the list box approach. Similar UI as you where the listbox is on the left and populated at run time, then the subpanel can be loaded in the main UI. Each of these subpanels VIs can be poped out and pinned too, but that's only done during debugging so you can look at two manual panels at the same time and see how changing one effects another. Another good example of this type of UI is the configuration dialog, which is seen in the Tools >> Options dialog in LabVIEW. All of these are more modular approaches than a static tab control, but I don't think this answers the original question. -
A text file can be opened in Excel if columns are separated by commas "," and then the file is named with a .csv file extension. This is by far the easiest solution, but the most simple. For more control over the look and format you can use the Report Generation Toolkit (included with 2014 and newer I think, and a paid add on before that). This uses the ActiveX API to read and write data so Excel must be installed on the machine. There are a few free wrappers for this API as well. There is also XLR8, a 3rd party company that makes a toolkit which creates the file using the documented format, not ActiveX so then you don't need Excel installed on the machine. And starting in 2014 the Write Measurement File has a .xlsx option. But don't expect a lot of control, it works similar to the XLR8 toolkit. Oh and you can make a TDMS file and then use the free NI add-on to open it in Excel. This all really depends on what type of data you have, how you want it to look, and the amount of time and money you want to invest.
-
Very interesting. Certainly parts of the work flow are different from the NI implementation, like being able to just run the FPGA from the front panel, instead of having to compile it, then create a host to control it. Also the change to using your own custom (XNodes I assume) for the interfacing. Also is it me or does the transfer of the bit file seem slow? I mean you show a very basic program but it seems to take a while to download. Beyond that I'm not aware of any precedence being set by NI on these clone hardware. Plenty of DAQ devices have been made by 3rd party vendors, most with a simple interface via a DLL wrapper, or VISA calls to the hardware. LabJack is one that comes to mind. Then there is the more advanced clones like the mentioned Hand-RIO. I've not heard of a time when NI has come down and not allowed a company to make a product, but then again some of these advanced ones that clearly use the NI tool chain in ways that NI didn't intend, are out of countries that NI is not headquartered in. I'm not a lawyer, but I would not make a business out of these types of products, due to concerns that NI would sue the pants off of me.
-
Why do you want it removed? Do you not work for NI? I don't think changing the email will change your status. That is a thing manually set on the profile by an administrator. It doesn't look like I have access to change that part of a users profile so I'll contact Michael and see if he can change it.
-
It probably would be possible. But as mentioned earlier a limitation of the API at the moment is all users share the same front panel displays. So having multiple users connected wouldn't work well, unless you can modify it to serve different pages to each user connected to the host.
- 137 replies
-
Resource usage for inactive tabs on a Tab control
hooovahh replied to Christian Butcher's topic in User Interface
In regards to tabs, there is an idea exchange item to have them fit to pane which I think would be very helpful. https://forums.ni.com/t5/LabVIEW-Idea-Exchange/Fit-to-pane-Fit-to-tab/idi-p/932452 Aside from that I have come up with a solution, where there ware two tabs, in two panes. The bottom tab has no control, and is just changed when the top tab value changes. Then I hide everything on the top tab, other than the tab controls, and the bottom tab I had the tab controls but leave the tab content. This allows for the objects in the tab to fit to pane, and resize as you would expect. In this tab you can still have a subpanel that fits to the pane, or graph, chart table, or whatever. It is just another example of UI work arounds in LabVIEW to make a good UX. -
So I haven't looked into it completely, but it would probably be possible to install VLC, which has an ActiveX control. So you maybe able to insert that on the front panel of a VI, then tell VLC to open a stream.
-
For PDF generation I've been using this toolkit for several years and love it. https://decibel.ni.com/content/docs/DOC-10952 It has the ability to paste in front panels, and individual controls, but it also can just add a table, or text, as normal PDF tables and texts, that can be selected. No PDF printer needed.
-
I think what rolfk is trying to say, is if you have an error when i=2, then that error will be passed back when iteration is equal to 3, and passing an error into 99% of the functions that use the error in, will not perform the operation. So if you have an error when i=2, you will still go to i=3 and i=4, but that same error will be passed around each loop iteration, and those other runs of the loop will likely do nothing (or very little). You can code around this with clearing or ignoring errors but if that is what you wanted to happen, then you probably wouldn't use a shift register to remember the previous error anyway. The other thing that can cause a loop to stop is the conditional terminal, and in some cases the developer will wire the error to the stop, which will stop running the loop if an error is seen. So if an error occurred with i=2, then the loop will not execute i=3, doing effectively the same thing but better, since it will not run the other iterations at all. EDIT: Oh and I don't know of any restriction on new user file uploading.
-
No worries, we were all beginners at some point.
-
That is an odd one. A repair of the LabVIEW install would probably fix it if you want to go through that process. You can still edit an Enum just from right clicking it. You can remove items, and add items before or after. Also to add several things at once you can type Shift+Enter to add after. Still this is a temporary solution and something is probably messed up in your IDE.
-
Yup you could do that. Properties are only scalar values, so keep that in mind too. So maybe I have a property that is total number of failed and total number of passed tests in the file. If I run more tests I can write those two properties again, overwriting the previous values those properties had. You can of course flatten any data type to a string and write that so the scalar limitation is only applicable for the native data types, and anything else won't be human readable in normal viewer.
-
Actually TDMS is quite robust. I'm not saying you can't break it, but I had a few tests where multiple references were opened and closed in parallel, and reading and writing took place in an uncontrolled way, and there wasn't any data lost on the writes. This suggests to me that there is a central driver that all API calls go into which handles the reading and writing. This isn't to say data loss can't happen in odd cases of multiple reads/writes in parallel. These cases should be avoided. I just wanted to mention that in my experience it is quite robust. The TDMS read has an offset and range for performing a read. So you can graph a subset of the data without having to read all of it. But for something like decimate you will likely need to read all values of the range you want, and then decimate it in LabVIEW, which is likely less memory efficient than a database call that has that built into the select statement. Also getting something like a Min or Max in TDMS can be less efficient than a database call, if you have open ended queries. By that I mean if you know you want to have the min and max of all channels, then when you are performing the writing of those channels, you can also write properties of the channel that is the min and max. Then when you are reading the file these properties are already written in the file and can be read without having to read every data point. These are sorta like queries where the result is written in the file, knowing that you may want to look for them later. For queries you know you'll want to do this is great, but if you don't know what you are going to want to look for in a post-processing way, then you will need to read all values, and calculate the result. For me each channel, and each sample has a Pass or Fail associated with it, and I want to know if a test passed in every cycle, meaning that every sample of the channel was a pass. Instead of reading every sample, I just write a single Pass or Fail property on the entire channel. If that is Pass then I know every sample of that test passed. I can also combine this and look at if every test has this passed property, and if it does then write a Pass property on the entire file. Then I just need to read this one property to know if the entire file passed. I knew I would want this query like information available, so I wrote it into the program that writes the TDMS files. If I now wanted to know every time a sample was above 0.5, I would have to write custom code to read every sample and get the results, because that isn't a property I wrote into the application.
-
Topic moved, feel free to use the report to moderator feature in the future.
-
The following file in the report generation toolkit performs the Save As function: <vi.lib>\Utility\NIReport.llb\Excel\Save Report to File.vi It has a case constant that uses the following values, I'm unsure if these same values can be used for the document save function. xls -4143 xlt 17 htm, html 44 xlsx 51 xltx 54 xlsm 52 pdf 57 csv 6