Jump to content

hooovahh

Moderators
  • Posts

    3,388
  • Joined

  • Last visited

  • Days Won

    283

Everything posted by hooovahh

  1. Well that's not good. Is this PC a 100M connection as Shaun asked earlier? I doubt you'd be using up 90% of a gigabit connection. Is this a PC that can handle a PCIE network card that is a gigabit to test out with?
  2. That's the minimum to install the IDE, it isn't the minimum for any application you can write. I can clearly write an application which requires more processing power than that. In this case MAX isn't doing anything else. I'd say evaluate your code, find slow parts, and inefficiencies. An atom just might be under powered for what you want. Oh and your low power PC might not have a GPU that the vision toolkit or OS might be using for rendering.
  3. A pretty common technique that works for the simple cases, is to use the OpenG Write Panel to INI, and Read Panel From INI. This will take all the control on the front panel and save their current values to an INI file. The reverse can take the INI file and put the values back on the controls. These functions are found in the Variant Configuration OpenG package.
  4. Oh the pain of resizing LabVIEW UI's. I learned tons of work arounds to make useful UI and UX in LabVIEW and several involve using having controls fitting to panes and using splitters, and subpanels in VIs. If you do go with the Maintain Proportions of Window that ensegre suggested, I'd recommend starting with you UI as small as you expect to support, and then turn that setting on. It tends to work a little better if you only make controls get larger, then resize back down to the original size. If you have a UI and then try to make it smaller things get squished and overlap, then when you make it large again things are out of place.
  5. I use this feature all the time to make code more reusable, being able to find all labels, data types, and values of each element in a cluster quite easily. It's getting back that can be more tricky, where you need to take the array of variants, turn it into a cluster (using the array to cluster setting the size correctly) then a variant to data going from the variant to the cluster. I made an XNode for it a while ago that just sets the cluster size as you wire it up.
  6. Here is a good example. It is a bit more complciated than it needs to be but the main thing is that after a value change it hides the invisible path control, and then if your mouse leaves the chart, then it makes the invisible path control shown. http://forums.ni.com/t5/Example-Program-Drafts/Windows-Explorer-in-your-front-panel/ta-p/3492301
  7. Sorry if I came off as too defendant of LabVIEW, I didn't mean to post these solutions as ways of saying "See LabVIEW can do it, you just need to work harder." It was meant to say "Here is a solution". Often times on the forums a user will post a question and I'd like to find a solution, to get discussions going so others can also post their solutions which are often times better than the first ones I came up with. Not supporting gifs with varying timing, longer than 1s delays, and extension blocks feels short of being able to say LabVIEW supports gifs. Having LabVIEW support PNGs without alpha layer transparencies is a similar shortcoming that I've found work arounds for. But again it doesn't mean I'm happy about it. The dragging files to a control from explorer has similar work arounds that I'm sure you've found involving transparent and hidden path controls, floating on top of the control which will have value change events when dropped. These are incomplete features of LabVIEW and I agree NI should fix them.
  8. There's a few reasons I don't like this method but might meet the needs of others. This means the gif you load must have even timing between frames, and you need to export the gif frames before hand. I'd prefer a method that you give the path to a gif and it takes care of the rest, but if this method meets your needs go for it. I've also seen images pre-loaded into a picture ring and then write to the terminal which image to show.
  9. I whole wholeheartedly agree. That being said customers don't really care what kinds of hoops I have to go through to make something work, they just care about it working the way they think it should (with my input of course). I don't remember a customer putting any kind of requirement on my software to have an animated gif that is clickable, that sounds more like the kind of thing I would look into in my spare time. Because I think it would set my software apart from other LabVIEW software they had seen, and show an expertise in the field. Yes LabVIEW should be able to to do this, and we can complain to NI, vote on it, and tell them all we want. But I'm sorta in the opinion of also trying to come up with a solution that works mostly well with the tools I have today. Then trying to wrap that functionality into a easily reusable example. I did make a thread on the dark side asking about PictureBox animation. One suggestion is to use the ActiveX container for the web browser which has other dependencies but I think could be made to work. Clearly you could do this with an array of images you are updating, but I wanted to avoid polling and timing and updating, and have that off load to some other tool. Attached is an example using the ActiveX web browser and a sub panel. GIF Click Test.zip
  10. Oops missed that, like given. Well some tricks could try to be done to detect mouse down and detect where the mouse is clicked, but not getting the gif animated in the first place is a bit of a show stopper anyway.
  11. These gifs don't look like the kind of thing the user is clicking. These look like loading gifs or things to look at while stuff happens in the background. If you really needed to detect interactions with the animated image, a picture ring, with changing values, would be suggested but that wouldn't be able to be dynamically loadable either. It all depends on your needs. I was just trying to suggest a way to display an animated gif from a file, on the front panel, that adhered to better timing needs.
  12. I tried once getting a gif to load in a .Net picture box but I couldn't get it to animate, I wonder if that would be a better solution. Here is the basics of the code I used to load an image into a picturebox. It looks like it should animate but it doesn't, maybe I'm missing something.
  13. I don't think it is. I can't say for certain but if it was I'd assume one of the NI R&D engineers I've talked to would have been excited about it and mentioned it. Are you part of the technology preview? I'm asking of course for a completely unrelated reason and has nothing to do with the current discussion we are having about vector based FP and BD. And sorry no 4K here.
  14. Great example Gavin. I had one recently where a subVI would be used to log data into a report. For all most all logged data we have a pass fail criteria so one input is an enum of the different limit types (Greater, Greater or equal, Less, Less or equal, Equal, Not Equal, In Range, Out of Range, or Within Tolerance). But there are a few times when we want to log the data, but not have a limit condition. I could have made a separate function that logged but didn't have a limit, and I could have had a case where my enum had a "None" option, but this enum is used in other places where the None doesn't make sense. So I had my limit set to NaN and I check to see if it is a number and if it isn't then I assume it is unwired, and to not have a limit. It would have been nicer to be able to detect the limit enum was unwired, and to therefor log the data but don't perform any pass/fail checking on it.
  15. Odd, I'm unaware of any reason this wouldn't work. Perhaps you need to have a set number of posts, or been a member for so long. I'm sorry I don't know.
  16. Don't click See my Activity, just on that page you can enter a message, attached image as an example.
  17. When signed in if you click on your profile in the upper right corner and go to Profile you'll see your page. Here you'll find your feed that others can view, and subscribe to follow. I believe in the last rounds of forum updates the simple status update was turned into a more facebook like page with content you follow and posts you've made.
  18. I've wanted this feature on several occasions. I had a discussion on LAVA about it a while ago that I can't find and the suggestion by Darren was to use the VI analyzer to find when subVI terminals weren't wired...he clearly didn't understand what I was requesting. So in my project today as a lone developer I probably have 10-20 VIs that I could use this feature on if it existed. Instead I'm usually forced to do something like set the default value and check against it. For doubles this isn't a big deal, I just set the default to NaN and check for that. Arrays I look for an empty array, strings I look for empty strings. But integers I don't have a good solution for and will sometimes make the input a double, and set it to NaN. Admittedly in my cases most could be resolved if wanted to bother with polymorphic VIs. So I may have something like convert a typed cluster to a string that is human readable. But I also might want to convert an array of those clusters into a scalar string. So I'll have a VI that has both the scalar and the array of clusters and look to see if the array is empty, and then operate on the scalar cluster instead. Most examples I have are derivatives of this. Having a path, VI refnum, and string input is another one I remember. If the VI refnum is valid perform some VI server call on it. If it isn't but the path control isn't empty then open a VI reference then operate on that. If the VI refnum is empty, and path are empty, do a open VI reference on the VI name. There are a few advanced string functions I wanted to create for getting string subsets. Where things like unwired inputs meant the rest of the string, mirroring some of the LabVIEW primitives. Of course in these cases I usually have a numeric input that has the default set to -1 and then have the check for <0 and if so do something special. This one is pretty common for getting subsets of other data too like arrays or circular buffers. I would use this function if it existed to make more intuitive code that mirrors some of the palette functions today, and I'd use it to help skirt around the weaknesses of polymorphic VIs. Once you realize how the delete from array function works, you like the fact that it behaves differently when some inputs are unwired. I'd like my code to have similar abilities some times.
  19. Very interesting, all the GIFs I was testing with had the same delay between all frames. Wonder if NI this could be an issue brought up to NI and have a CAR assigned if it is related to short frame length, or varying frame length in the images.
  20. So what I suspect here is that you were using the TDMS write over and over again but the buffer never caused a flush to disk, and you never explicitly called the flush function. Then the program crashed and no file was written to disk. If your file did at one time flush to disk then you'd have some data to look at. If you have a file but it has an error on open, then you might be able to still pull out chunks of the file and recover some of the data. I tend to have a logging module (actor) that will periodically flush to disk, then check for fragmentation, and close, defrag, and reopen the file if it gets fragmented. This is in parallel to the test running so data will pile into a queue while this is happening. This helps make TDMS a bit more robust, because as you found if you have the whole file in memory and then the system crashes, or there is a power outage, then the file is lost. Flushing to disk periodically help keep at least some of the data.
  21. Settle down buddy, posting the same question in 3 threads isn't very polite. As far as I know you can't use DETT on EXEs. EXEs don't contain source, or the block diagrams, and many front panels are missing. This makes debugging them very difficult. If the application is stable in source, it would be very odd if it wasn't stable as an EXE. Apparently you can and Mads has the details.
  22. It's not that they expect it to break, they just would like one less thing to worry about. Maybe for other industries it wouldn't be a big deal, but I doubt I could get my boss to agree to used equipment in a test system. Maybe for basic prototyping, but for that NI is pretty good on loner equipment. Sorry I can't really help.
  23. So with a little help, I was able to upgrade the RT Linux part of the system to have LabVIEW 2015 SP1, and with it I was able to add the target, connect, deploy code which ran bash commands, and got the result. Still no UI and there is a good chance that just wasn't included in the package anyway. And still no way to install more software through MAX. After you install the OS using the NI provided ISO, boot up the VM using the network adapter Host-only. Hopefully when it boots it will show the IP address and it can be pinged from your Windows OS. Using Filezilla connect to using "sftp://<IP Address>", username "root" and blank password. Navigate to /usr/local/natinst/labview and delete or rename the lvrt file, and delete the symbolic link liblvrt.so.15.0 (the file can remain) I wanted to upgrade to 2015 SP1 so I transferred over the lvrt and the liblvrt.so.15.0.1 files from the following directory: C:\Program Files (x86)\National Instruments\RT Images\LabVIEW\2015sp1\Linux\x64\ Next we need to set the permissions on these two transferred files, so in Filezilla right click and set the properties of these newly transferred files to 755. Next we need to recreate the symbolic link we deleted earlier. So using putty log into the VM, and navigate to the /usr/local/natinst/labview folder and execute the following command. ln -s ./liblvrt.so.15.0.1 ./liblvrt.so.15.0 Then reboot the controller. Then in LabVIEW 2015 SP1, create a new project, and add a new target or device. Specify it with the IP address, and specify the type as a Real-Time CompactDAQ >> 9135 (this is a controller with x64 RT Linux). You should now be able to connect, and deploy, and run code to the RT system. I tested it running the system exec "ls" and it listed files as bash should. I've also been able to deploy code that uses TCP, UDP, WebDav, Network Streams, DataSocket, and VISA functions so these libraries are installed with the ISO, but no DAQmx, not that this VM needs it. In my mind the most benefit is from being able to use and call into 3rd party libraries and test deploying network code.
×
×
  • Create New...

Important Information

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