Jump to content

hooovahh

Moderators
  • Posts

    3,388
  • Joined

  • Last visited

  • Days Won

    283

Everything posted by hooovahh

  1. Really? This doesn't exist still? I was sure it was there but I go and look and I couldn't find it. I did find a thread 9 years ago that talks about it. Sorry I can't help with the original issue.
  2. All the more reason I'd like to have the ability to develop and test for it without needing the hardware. Thanks for all the other information you gave.
  3. hooovahh

    Pop-up VI

    What have you tried? This sounds like a Menu Ring, or Enum.
  4. Yeah clearly the major benefit of this is not deploying and testing DAQmx code. It is more writing and debugging code that has a UI on this platform (testing and seeing the limitations), any 3rd party tool kits, or packages (related to LabVIEW or Linux), and anything network related (network streams, TCP, web servers, etc). I'm might not be fully informed, but assuming I was able to make a hard drive image, and boot that in a VM, I was hoping that MAX would just see that PC as a remote target, and allow me to install software to it just like any other target. Sure it is a different processor, but it is in the same family (Intel x64) and I'd hope that all the libraries made for the x64 platform would install through opkg using the NI package repository or any other found on the internet. Which includes all the tool chains NI already has compiled. NI already has some package groups made for the common development tools, which I've used on the actual hardware successfully.
  5. We are starting to get a bit off topic, so I posted what I tried on getting a VM of the Linux RT x64. (spoiler I haven't figured it out)
  6. So there was some discussion of the Linux RT running in a VM and I figured I would try a few things. I have a cDAQ 9134 which is an atom based target running the Linux RT OS. I thought I might be able to perform an image of the hard drive, then boot that image in a VM but I wasn't successful. Here is what I tried. I logged in with SSH and performed this... dd if=/dev/zero of=0bits bs=20M; rm 0bits To zero out the drive, this makes compressing the image better since the dd will image the drive bit for bit, and will be unnecessarily big. Then I ran this command... dd if=/dev/sda | gzip > /media/sdb1/image.gz To make the hard drive image and put it on an SD card. I then copied the image over to my Windows PC, extracted the gz which gave me a single file named "image" (no extension). I then used this command to turn the hard drive image into a vmdk... VBoxManage convertdd "C:\<Path>\image" vmdkname.vmdk --format VMDK But this drive wouldn't boot in Virtual Box using the IDE or SATA controller. I also tried extracting the "image" file which extracted a single file named "0.img". Turning that into a vmdk using the same command from earlier created an image that also wouldn't boot. In both cases Virtual Box complained about not having a bootable device. Any suggestions are appreciated, but as I said in an earlier thread I don't know about if I would be able to share a virtual machine if I do get it working.
  7. So without having actually tried, I suspect I can help out with this. I have a cDAQ 9132 on hand which is the x64 atom based controller running Linux RT. I feel like I should be able to install some software that allows me to take an image of the hard drive, and then boot that hard drive image in a VM. My concern with this the legality, of me sharing it, and the distribution method for a large HD image
  8. As far as I know there have been no community examples of making custom channels yet, other than this recent one posted by Stephen. I believe the hooks or standards for making custom channels hasn't been published yet. (I was wrong documentation was posted by smithd) http://forums.ni.com/t5/LabVIEW-Channel-Wires/A-new-channel-template-Event-Messenger/gpm-p/3460575 That one in particular is a new type of channel wire that supports registering for a dynamic event.
  9. Okay after some searching I finally found the NI Week 2016 presentation I was talking about. http://forums.ni.com/t5/2016-Advanced-User-Track/TS9524-Code-Optimization-and-Benchmarking/gpm-p/3538653
  10. Oh that is interesting. Well you aren't dealing with any graph type because what you want to show isn't an X axis. An axis on any graph type always increases to the right and decreases as you go left. To make a UI like this I can think of a couple of solutions, but most are going to be very static and won't resize with the UI. Adjusting the number of points on the UI will likely break things. The only thing I can think of that will scale well, would be to make a 2D picture control, then increasing or decreasing the font size of the numbers on the bottom based on the size of the image, and number of points. This will give the most amount of control for things like rotating the font, which in LabVIEW is generally more difficult than it should be. As for the graph part, yes that should probably be a Waveform Graph since each point is the same distance apart, which in this case the units and size don't matter since the real X axis is not shown.
  11. The variant attributes is probably the fastest way for any decent sized table. Otherwise you are using the search 1D array. You can run some speed and performance testing to see which is faster for the data you have. I'd recommend you watch some of the 2016 advanced user track videos on Benchmarking and Optimization...but NI's site is a bit broken at the moment and I can't find hardly anything, but this is where the session content is, videos are a bit harder to find. http://forums.ni.com/t5/NIWeek-Session-Content/TS9524-Code-Optimization-and-Benchmarking/ta-p/3321074
  12. Well you are using a Waveform Graph. This means that every X value is separated by the same amount. This is generally used for displaying something like DAQ measurements where you know each sample is always separated by some amount of time like 1ms. So you have a start time and date, you have the amount of time between samples, and you have an array of Y values which are every increasing on the X axis. If your data always adheres to these restrictions then you can use a Waveform Graph. I'm still not fully understanding what the data is so I can't say for sure, but I suspect you actually want an XY graph, where you specify the X and Y value for each point to be displayed. Do you want three lines? You also claim column "2, 3, 6" are X and 5 is Y. Do you mean index 2, 3, and 6, or the second, third, and sixth column? Remember LabVIEW starts counting at 0. But even so lets just look at "column 2", where are the Y values for this axis? Are they the same for all three X axis? Attached is a version that uses an XY graph, setting up the minimum and maximum as the values seen from index 1, 2, and 5. Three lines are shown each using one of those X Axis, and all using the same Y data from column index 4. These are constants on the block diagram. gg Hooovahh Edit.vi
  13. What have you tried? There are Waveform Charts, Waveform Graphs, XY Graphs, and Mixed Signal Graphs, which are you using? What is the data type of the data you have? Do you have an example VI with sample data? It should be possible it would just be nice to have more information before attempting to help.
  14. That doesn't sound too terrible if it can be wrapped into a single function, with a defer and undefer front panel updates at the beginning and end (so the user doesn't see weird resizing of array controls)
  15. Yeah I suspect you'll hear from NI lawyers at some point. I suspect what others are saying about Xilinx is correct, and NI is likely bound by a contractual agreement somewhere, to take action and prevent this type unauthorized use of the compiler. On technical merit, good for you, it seems neat. On the NI side they are the gatekeepers, and decide (to a large extent) where LabVIEW can go. If it can go on an x86 processor it is because they allow it to. If they don't want it to be on <$100 hardware (other than for home use like Pi) then they can probably put a stop to that as well.
  16. Yeah I'm an Approach #1 guy. Starting in 2010 I think the application builder settings allow you to change the GUID, before that you could edit the .lvproj file in a text editor. So I just copy the GUID from one to the other, so Windows believes the program is an upgrade. So if I install 1.0.0 full (with all RTE and dependencies) and then install 1.1.0 upgrade (just app) Windows knows to remove the old app and replace it with the new, and in add remove programs it only shows the 1.1.0 version installed. I'm not sure I'm a fan of the "Full" and "Upgrade" naming but it is what I've been doing for years. So I will have a "Test Application 1.0.0 Full", then "Test Application 1.1.0 Upgrade" There could of course be a 1.1.0 Full (with all dependencies) but it seems unnecessary to release a full with every version. But the reason I don't like the naming of Full and Upgrade, is because to me that implies an upgrade can only be installed after a full. And for me there are some applications that only require the RTE and that will likely be on the test machines already. So in this case I'll know I just need to install the Upgrade, but other engineers may not know that and will take the time to install the full, then upgrade. Another issue I've seen is when engineers don't know the steps to get the latest on a fresh machine because of multiple Full installers. Lets say I made a 1.0.0 Full, then 1.1.0 Upgrade, then a 2.0.0 Full, then a 2.1.0 Upgrade. It isn't clear what should be installed to get to 2.1.0. Do I need to install 1.0.0 Full, then 2.0.0 Full, then 2.1.0 Upgrade? I can't think of a good name that is short and basically means with dependencies. Of course knowing what those dependencies are and if you have them is another issue so I probably just won't change anything for now. Other than these minor issues I'm pretty happy with the solution. The other approaches you mention sound fine but this seems pretty easy to manage, and works by just using the NI tools (like no inno setup to manage).
  17. Confirmed the behavior in LabVIEW 2015 SP1 f3 and LabVIEW 2016. An easy fix for this is to just add the Always Copy function on the error wire between loops. But clearly this should be fixed since you can't always know when that is needed until an issue occurs.
  18. So I don't have any spare time to improve this at the moment, but I do have this running on the embedded RT Linux with UI. Before running the VI I needed to transfer the contents of the www folder to /usr/local/natinst/labview, and I needed to specify the IP address host in the example VI using the IP to string function. I'll admit things aren't 100% but I do have the example VI running on the Linux RT target, and after mapping a network drive to it in Windows (using Webdav) I can open the webpage and see the VI running on my RT machine from chrome on my Windows machine. Not all of the controls look quite right, but interactions seem to work. Then I installed Firefox on my Linux RT target by downloading it from here, and updated soundlib2 as described here. The result is a similarly looking, semi-broken but interactive web page running on the embedded target. Again looking a little broken, with images not being sent over, but even if this can't be correctly fixed, there are other solutions for controls with a limited number of images like picture rings, and buttons. This is pretty exciting to me because it can mean that the same interface for interacting with a VI on the embedded UI, can be the same interface for controlling the same VI from any web browser that can access that target.
  19. Merged topics. This is not your personal website, please do not spam the forums with your products.
  20. Oh now it's clear. I thought you had the for loop in there processing multiple items for some reason. In that case I'd say that's a perfectly fine way to check for an abort condition, and then stop if a new request comes in. The abort example really only seemed like a good idea in an example like the one I posted. Where maybe you were doing some image processing to display to the user, which might take a long time, where a purely computational operation could be aborted without any concern.
  21. Okay here is an example of the abort technique. Attached is a VI that will perform an Add every time a button is pressed, but the add takes 2 seconds to operate. If you click Add within the 2 seconds, it aborts the current add, and then process the new add that was requested. Keep in mind aborting a VI like this can have bad consequences depending on what is happening. You shouldn't just abort a VI that is dealing with references. You should go through a cleanup process. Of course you could just pass references already opened in to this VI and I think things would still be fine. Abort Test.zip
  22. The sequence structure you have shown there is likely a whole lot of stuff right? Is it a single subVI that takes a long time to return? If so pass the queue reference into it and check there. Then in your subVI use a state machine architecture that periodically checks to see the size of the queue. A more clunky solution could also be to call the Calculate subVI as an asynchronous process, and then abort it if your queue gets an element.
  23. hooovahh

    Wait. What?

    Oh and you already missed out on the early bird special...which there was about a 1 week window between being announced and closing. One of the reasons I heard this change was coming, was because NI used to get deep discounts at the convention for going in the summer, but those discounts aren't there anymore. That and people have been complaining about how hot it is. Still I think it will be weird for a few reasons. The academics will be considerably lighter since...well school will still be in. Professors will also likely not be able to get time off so attendance will be down for that group even more. And what about What's New In LabVIEW 2017? Is 2017 going to be released in May? Usually there is a SP1 in February, is NI going to be able to push out a new full release (develop, review, document, beta test, etc) in time? It'll probably be for the better in the long run, but I wouldn't be surprised if attendance is down this year.
  24. You mentioned remote desktop. What's wrong with just using that? If you do something custom you will likely run into issues where taking an image doesn't quite work right. Like I suspect that the right click menus won't be included in a method on the VI reference to get an image of the front panel. Maybe invoking a screenshot with kernel32.dll will include it. What you are describing is probably possible, but the amount of effort involved would be a lot, and there are already other tools for sharing a computer (VNC, RDP, TeamViewer, etc.) and would work probably just as well.
  25. Glad you figured it out. The Open, Operate, Close paradigm (with operate taking place in a loop) is pretty common in LabVIEW and is often see for File I/O, VISA, and other hardware stuff. I'm guessing with simulated hardware an Open and a Close just takes much less time than communicating with actual hardware. There are times when open and close can take place in the loop, but it is generally useful when you only call the operate once in a great while, allowing for the hardware to be used for some other task.
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.