Jump to content

smithd

Members
  • Content Count

    763
  • Joined

  • Last visited

  • Days Won

    42

Everything posted by smithd

  1. Wow that is really nice looking and exactly what I'm looking for. Doing it all custom sounded like a big pain but you've made it look a lot easier than I thought The other advantage this provides is I had a request to be able to visualize the dTs for selected channels. Originally I had a separate tab where users would just have to select two channels, but if drawing it manually it probably wouldn't be too hard to overlay a dT. Thanks a lot! I don't totally comprehend -- I have all the data I need and I can easily generate data for a digital waveform or xy chart, the challenge
  2. Hey all, I'm looking to make a user interface for digital triggers and I want to display a chart where each trigger is displayed vs the others on the same time scale. The problem is that I have a potentially very long time scale, so to get a reasonable resolution (say a 10 ns trigger displayed against a 100 ms period) I need a lot of samples per channel. I may have N channels, and that difference in period may vary wildly. However each channel will only likely have something on the order of 2-100 transitions, so I'd like to store the information in this sparse form (even my initial '
  3. Correction: you cant use .net *from labview* on a cRIO. You can always install mono, maybe even the .net standard or core or whatever they call it. Admittedly this doesnt help marcos, but... Someone made a native amqp client, which is here: https://github.com/tweeto/AMQP-Client Never used it myself, but they say they tested against rabbit. Edit: it looks like the user did not actually include their code...just the lvclass files :/ I think there used to be a native amqp implementation on the community but I can't find it since the switch over. I dont know if the above is t
  4. If you grab the latest code before NI week its been pretty stable for me in lv15, although the 2017 VIs seem to have prettier icons in some cases I didn't dive too deep, but it looked like the VIMs just wrapped the variant functionality, so it probably wouldn't be too much of a challenge to remove the vims and just use one layer lower -- unless I missed something important. We'll probably eventually bump up to 2017 but its such a chore to update all the devices and json is at the lowest dependency layer.
  5. My vipm version is 2017.0.0.2007 feb 03 2017
  6. I tried to install this new version into 2017 and the library seems to have been improperly disconnected. Lots of those "library does not claim to own this vi" messages. I tried reinstalling, same result. Edit: tried converting to zip and just extracting to VI lib, worked perfectly. Very weird.
  7. Not totally sure what you're asking, but it sounds like it might be a good idea to make sure the format of an ini file is clear? Its: [section] key1=value1 key2=value2 In your case, the key names are known, the section names may not be. I'd suggest using get section names, and then calling read key 4 times with the keys you listed, for each section name. Stepping back a bit, you are reinventing the wheel. If you want to just take a labview type and save/load it from an INI file, use moore good ideas' MGI read/write anything library which you can download from vi pa
  8. Oh I meant "in theory, but really", not the theoretical max. Theres the bus max physical, then theres what is achievable for most people, then there is what labview fpga achieves.
  9. Rust seems to focus on moving references around and passing ownership between chunks of code, which isn't far off from dataflow. The thing rust can do that labview can't (through dataflow) is retain a read-only reference to a mutable object elsewhere. I believe the recent changes to the IPE (http://zone.ni.com/reference/en-XX/help/371361P-01/glang/inplace_datareference/ concurrent read only access) allow this though, but you're still stuck with the horror of the IPE and you have to do extra work to make it read only.
  10. Its possible to overflow the buffer on the fpga just from fpga use, but its hard. The zynq chips can DMA something like 300 MB/s so I could imagine overflowing that only if you have images you are processing. The older targets have a PCI bus which I think should in theory support something like 80 MB/s of data but I vaguely remember getting more like 40. The highest speed analog module (except the new store and forward scope) generates 2 MB/s/ch, so a full chassis would be 8*4*2 = 64 MB/s ch. So basically if you have old hardware and abuse it, you can hit the limit.
  11. well locally I think the only real option is sqlite. For a central server, unless you have strenuous requirements it probably doesn't matter. If you need to write to a database from a vxworks crio, then mysql/maria is right since they have a simple raw tcp connector. Postgres seems to be the current favorite. For time series data I dont have an answer, I looked around as well and wrote what I found here: The one I'm most excited about is https://www.timescale.com/ which is built on top of postgres, but another interesting option is mariadb's columnstore format. The disclaimer to thi
  12. Interesting, the same holds even if you do the following: Pull out the string and read array size pull out string and use split string (at char 0xFF) but only read offset Inside of top (writing loop) in-place manipulate data of string (convert to byte array, replace element 0, byte array to string, rebundle) To force labview to do an allocation, I had to go so far as to pull the data out of the DVR and manipulate it and use the manipulated data (I used the same byte array replace index + split string) . They really did a solid job with the optimization here. Yes i
  13. Given your other post is it safe to assume this is an xnode? In that case, maybe you can use this https://lavag.org/topic/19781-xnode-owning-diagram/ to get a ref to the VI you're dropping on and then use that vi ref to get the application context and from there go crazy with property nodes across application contexts?
  14. Well the nice thing about his is that you dont have to copy the entire data structure, just the portions you care about. Note that he unbundles inside the IPE structure. For known names that you want to support (like always unbundle the thing called "waveform") the VIM would work, but its not arbitrary like the xnode could be.
  15. Interesting, you have users who bother to read your documentation? Most documentation i write is for the purpose of checking a box on someones checklist. And I think this is the problem. Its hard to write useful documentation for something you're actively working on. The right answer is another programmer, but since everyone hates making documentation you can't do that. Unless you have a fairly big organization behind you, I imagine its difficult to get a tech writer and my experience with tech writers has been that they are not tech enough anyway. So you end up writing something that
  16. If you havent seen, this is a slightly old but still useful resource: http://www.ni.com/compactriodevguide/ For example it would inform you that there is no reason to copy data from the DMA directly into another fifo, because the real-time side of the DMA can be as large as you need it to be. As for your transfer mechanism, prefixing your data rather than null terminating is the better plan, as C has been teaching us over and over for 40 years. In either case if you lose any data all future DMA data is invalidated, so you have to set it up so that the FPGA never loses a packet of dat
  17. It looks like most of those references are identically named to the cluster in which they are stored. You can pretty easily use the data type parsing VIs to take each cluster, get all the element names out, then get all front panel control references and just match the strings. I'm not sure how you'd get the generic control reference back to the specific types in the cluster but I bet you could type cast or use ->tovariant->variant-to-data-> to accomplish it.
  18. Presumably there is an inverse of this function: https://forums.ni.com/t5/LabVIEW/Excel-ActiveX-password-encryption/td-p/3599665 I can't speak to the openG library specifically, but a typical pattern for labview front panel items is to indicate the default in parenthesis (hence the "error in (no error)" you see on most VIs). I would say in general that you should only follow this pattern if the default is unexpected, so a default of no password would not require an indication. For the AES, you could pad the result although I dont know how that effects the strength https
  19. Thats fine, I just don't see a reason for it (continue if true) I think the feedback vs while loop performance changes based on the surrounding code, and it fluctuates from version to version. For example my test in 2012 for a specific use showed feedback nodes as faster, The difference is so minor as to be unimportant.
  20. it also has a false and continue if true for the while loop, also odd. I would guess its based on old code written in an older style (i think openg or some similar package has that same function). feedback nodes are great.
  21. Depending on what you're wanting to do with the image in imaq, it could be easier to compile a little c# or vb module using opencv/http://www.emgu.com/wiki/index.php/Main_Page Its also not crazy difficult to make a 10 line class which take the ptr reference in c# and calls the imaq dll directly or calls the tdms api directly (http://digital.ni.com/public.nsf/allkb/A3663DE39D6A2C5A86257204005C11CA) or if you have measurement studio (http://www.ni.com/white-paper/8032/en/) Getting one managed to allow a language without pointers to directly manipulate its memory in order to generate a
  22. I don't think thats possible. If I remember ecat correctly, in your scenario one of the devices that is forwarding the data packet has been removed, so the packet never returns to the host (http://www.ni.com/white-paper/7299/en/). You'd have to probably rescan modules to update the configuration (so it knows the last device is gone) and then change mode back to active. Supposedly beckhoff claims to have a 'hot connect' feature but I don't think NI has that.
  23. For windows you wish to hide, I believe you also have to disable allow users to minimize window. That may not be the case if the window itself is set to hidden.
  24. I can't speak for him, but the concept of queued actors has been around for a long, long time. The two c# actor-type frameworks I'm aware of are: http://getakka.net/ Which is based off the java framework of the same name (about a decade old now), which in turn was inspired by erlang (30 years old). Akka seems to be extremely popular, and their website has an obscene amount of documentation. https://dotnet.github.io/orleans/ Is slightly unique in that its intended for distributed systems (their claim to fame is that various xbox game services like halo 4 and 5 use it). Similar to
  25. I agree, except thinking about it made me realize thats a pretty common need if you're interfacing with another device. Instead of "bad parameter" its "you connected to the device successfully, but it says that you gave it a bad parameter" or "you connected to the device successfully but it had an internal error processing your request", etc. There will always be some protocol or application specific errors to be sure, but having a generic family of "this standard error happened, but it didn't happen here it happened on the remote system" makes sense to me. And of course I realized thats almos
×
×
  • Create New...

Important Information

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