Jump to content


  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by smithd

  1. what? @Aristos Queue may be interested in and/or be able to shed light on how to do this better?
  2. Today I learned that labview aborts connections immediately even if you dont wire in abort, because... " abort is reserved for future use. " (help)
  3. reshape array + index, inside of a diagram disable structure reshape array takes any dim array and returns 1-dim array. Index takes 1dim array and returns element. Disable structure makes sure the code doesn't run and that you always get the default value for the data type. any aggregation function (add array elements, array max and min, etc) will work too, but I think the reshape/index is clearer.
  4. Many of the calls are documented in the help, so yes I'd say we are supposed to know. Some of the pointer calls are wrapped here Chapter 6 of this also describes the functions all in one place, although its quite old: http://www.ni.com/pdf/manuals/370109a.pdf
  5. Strangely enough its just a property: https://knowledge.ni.com/KnowledgeArticleDetails?id=kA00Z0000004Aa2SAE I dont know if we are thinking of the same thing, but what came to mind with software triggering was this procedure: Change trigger mode on camera to software trigger Read buffer # Set exposure time read back exposure time (poll until = new value) fire software trigger ignore that new image turn trigger mode back to hardware triggering (or free run if thats what you use). Seems like this would be a pretty fool-proof way of ensuring
  6. the thread just below this would be a possible option (its not browserless, just doesn't need a plugin).
  7. Dont know if its exactly what you're looking for, but octopus deploy has some features in common. Ansible does too, but I think its more like salt in terms of needing more dev effort. Edit: oh, and puppet
  8. If the value is null, you could probably just leave it out from the insert (ie insert using a 3 element array and a 3 element cluster, leaving out the null value). Worst comes to worst, you could create the insert string yourself and execute it, but I know thats not ideal.
  9. I may be misreading it but it sounds like you just want to: Clone the repo Delete all the code (leaving the .git folder and presumably the readme/etc if one exists) Copy in your code Commit (git add -all; git commit)
  10. Theres also...a "solutions" folder on the github
  11. Depends on what you mean by "test data". If you just mean data, theres a small company that has a web service platform (I think they do hosted AWS but I may be wrong): https://www.daq.io Or you could ask your sales rep about the NI data management software suite: http://www.ni.com/data-management-software-suite/ You could also use a more non-labview option, like influx cloud: https://www.influxdata.com/products/editions/ If you mean test data like "textual logs of stuff", then the common open source option would probably be elastic search https://www.elastic.co/products/elasticsearch
  12. I don't know how secure the database itself would be when exposed to the internet. I suppose in theory it could be hardened, but theres a lot of surface area you have to understand. I'd lean towards a web server myself, as this lets you tightly restrict what you're going to let clients do. For encryption, I know the labview http client supports tls, and it looks like mysql does too, if configured. From labview you'd have to use the odbc/activex connector, since labview doesn't have built-in tls support (just the http client). Https is almost certainly more firewall friendly.
  13. You have a 2-hour build? I would die. I think my worst single-exe build time has only ever hit 15 minutes, and thats for classes on RT (truly, a mistake).
  14. I dont know if theres a guide, but generally writing a wrapper that is (trivially) labview compatible means: Determining thread safety of the underlying code (and trying to keep things thread safe if possible -- the alternative is that every DLL call needs to run in the UI thread) Only exposing simple return values (void, numeric, pointer) -- don't try to return a struct by value Only exposing simple parameter values (string, numeric, string array, numeric array, or pointer) -- trying to pass a struct by value can be done, but you'll have to think about byte alignment on diff
  15. You could probably get better results by using the quotient function you have down below as your double value, rather than doing a floating point multiply. You can also just continue with the pattern you have followed for subsecond values divide seconds by days, days by years, and find the offset from 1904. The hard part is handling things like leap seconds. You could try to use the seconds to date time after converting to a standard timestamp using one of these methods: 1. The fpga timekeeper has a nanosecond to labview time conversion: https://forums.ni.com/t5/Sync-Labs/N
  16. I tried to (and succeeded, for a given value of succeeded) use teststand as a semi-headless sequencer with a network front-end, but often think may have been a mistake. The driving factor behind my reconsideration is I've now used it for a few months and the API is a pain to use and its pretty buggy in important areas. We're not going to switch at this point because I did eventually get it to work fairly consistently, but that could change if new requests come in -- every new feature seems to take more and more time to get right. The buggy part is easy to describe: occasionally my whole l
  17. Its not so bad, you just need to think of it as a hash table that gets displayed as a tree. I think people get into trouble when they try to think of the tree control as a tree.
  18. I don't know if its for continuous measurements, but Eli's example here is I think a nice reference to look at: https://forums.ni.com/t5/LabVIEW-Development-Best/Measurement-Abstraction-Plugin-Framework-with-Optional-TestStand/ta-p/3531389
  19. Oh yeah, if you have performance needs writing directly to the database can be quite poor (depending on exactly how you have the database set up, the indices involved, the disks involved, etc). Rather than logging to sqlite as shaun does I just write my data to a binary file as fast as I can, and have a background service shove it into the database as fast as it can. Essentially using the disk as a queue.
  20. Technically, although this is absolutely terrible and they should be ashamed, you can copy the package manager + package cache to an offline machine. And yes, this is honestly what they suggest you do: http://www.ni.com/tutorial/53918/en/ My online:offline device ratio is about 1:30 so a few weeks back I found out that you can, and immediately did, clone the entire cRIO linux package repository
  21. well specifically its the return data thats the issue, and the answer is you have to benchmark for your data set. I'd expect the crossover point to be <1 MB but its been a while since I tried it. For inserting data, or fetching configuration, or asking the database to give you a processed result (avg of x over time period T) this works great, for grabbing data in bulk out of the db its uselessly slow.
  22. These are part of the design of the database, I wouldn't imagine any api-level tool to have "support" for them except as a direct SQL call. I would absolutely do what you're doing and use a GUI to design the database, and then access it through the API. Mysql workbench is pretty powerful, but can be confusing. I've always used a tool called HeidiSQL for working with mysql/mariadb databases. Its nicer in my opinion for learning with. Some other thoughts: Mysql has a TCP server https://decibel.ni.com/content/docs/DOC-10453 which is faster for small interactions the mysql c
  23. I've not used them for anything real in a while, but I don't remember seeing any issues when I did use them except that they're kind of a memory hog -- on the low end controllers (9066) it was about 20% ~ 25 MB which for me was the difference between moderate and worrying usage levels.
  24. ^^I think its already compiled in Try creating a memory database and executing one of the sample queries like "json_array_length('[1,2,3,4]')" which should return 4. If I'm remembering correctly, these queries just worked with the vi package.
  25. Thats what this page is suggesting: http://www.ni.com/tutorial/12666/en/
  • Create New...

Important Information

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