-
Posts
335 -
Joined
-
Last visited
-
Days Won
13
Content Type
Profiles
Forums
Downloads
Gallery
Posts posted by todd
-
-
Jack had a neat presentation at NI Week 2013 that demonstrated a few memory issues and pitfalls but I can't seem to find it at the moment.
https://github.com/wirebirdlabs/LabVIEW-User-Events-Tips-Tricks-and-Sundry
- 2
-
Can't find the diagram, but I used composition for communication with a family of devices. Device class contained "transport", "firmware version", "key map", etc. Transport (serial VISA, FTDI dll, custom .net dll) had read and write methods - no abstract parent. Firmware Version parent class had specific functions (one per Byte, kind of thing) for version 1. Version 2 inherited from version 1 - some overrides, some extras. Version 3 inherited from version 2, etc. Key map turned scanned ADC arrays into other things. It worked very well, even at six firmware versions. Selection of each type of object was done via enum/case statement. This allowed direct selection and trial-and-error detection of each object in the device.
-
On the arduino side: LIFA is a good reference design. Use it to roll your own. Check out LINX, too: https://www.labviewhacker.com/doku.php?id=libraries:linx:linx
-
If you are sending ASCII data, check the termination characters.
-
-
I've seen one with a variant attribute table. "Get variant attributes" with no name returned the list of commands. Using a command name returned parameter and return value information via type descriptors.
Another one used xmlrpc as the inter-platform pipe. A "query" command returned the list of functions.
-
LIFA is a good starting point. It's worth looking at. It's a good reference for fixed-length binary serial packets. Make sure the checksum resets, though.
-
I jumped into the middle of two projects and converted them to subversion (I miss Hg!) and "separate". No discernible issues.
- 1
-
Prefixes -> Use libraries/classes instead (you'll get a namespace 'Library.lvlib::Member.vi'), how would that look with prefixes: 'prefix_Library.lvlib::prefix_Member.vi' ( )... You have to organize the files on disk to prevent name conflicts though. If there is a need to prefix everything, just change the library/class name (linking issues are conveniantly easy to solve this way in my experience).
"Me, too", on this one. lvlib for namespacing and encapsulation. Short names for each class and method. One file-system folder per class and it's methods. Virtual folders for grouping by functionality within classes and libraries.
- 2
-
-
After modifying Jack's EventsAndSundry vi #02, I must amend my statement on the NI forum. If a dynamic event is registered but not handled, that does not directly cause a leak. The leak starts if either: the loop in which the event structure resides stops; or the event structure handles events slower than they are generated.
-
I neglected to answer the second question:
Do people do this? How bad would it hurt if we said, "Nope... you can only have one event structure per VI." ?It wouldn't hurt much at all.
-
For reference, here is the cross-post:
http://forums.ni.com/t5/LabVIEW/Help-opening-a-mat-file/m-p/2647099#U2647099
-
Download Jack's presentation (all VIs, no powerpoint), here:
https://github.com/wirebirdlabs/LabVIEW-User-Events-Tips-Tricks-and-Sundry
"Download ZIP" button
-
-
I've used one ES for UI, and another for dynamic events. But I usually push the dynamic ES down to a subVI.
- 1
-
-
TortoiseSVN's "repair move" works, but it's a manual process. In the commit dialog, right-click the "missing" file and delete it. Select both the deleted (old name) file and the added (new name). Right-click and select repair move.
-
If you are on Windows, you may want to look at the "route add" command.
-
Maybe double-check which layer of the button you're importing to. Or if it's just the "decal". System buttons have six states, right? Four for Modern and Classic.
-
When moving LV entities on disk, I always use the Files tab of the project explorer.
-
This post may be relevant to dynamic RT IPs:
http://forums.ni.com/t5/LabVIEW/Getting-a-list-shared-variable-references/m-p/1818125#M624293
-
If I understand what was described above, this may be a useful data point.
In 2013:
fpga.vi writes data to a typedef cluster indicator
rt.vi reads the fpga's typedef cluster indicator and writes a psp variable of the same type
pc.vi reads the psp variable
If the RT build spec has "Disconnect type definitions" selected, everything works.
If typedefs are not disconnected, the RT's psp-write does not put data on the network.
-
My experience is, that in almost every case the IDE is unstable because the sources are not very well designed (see discussions regarding code complexity & dependency trees). So I think as NI should work on stability and performance, we have to work on our own sources to solve bugs and decrease code complexity.
Yes, the IDE is stable until a user does something less than ideal, So instead of a user having to learn what will work, perhaps the IDE can teach us what won't work. Perhaps show the user what's taking so long.
- 2
Need help: want to build a real-time GPS tracker for multiple movers
in Hardware
Posted
Can you count on cell data? Guides can carry Android or iOS phones. BLE beacons can be placed at doorways. Just need a simple change to a proximity app that emails or texts in-proximity beacons to central.