Jump to content

JKSH

Members
  • Posts

    494
  • Joined

  • Last visited

  • Days Won

    36

Everything posted by JKSH

  1. Hi Sean, When should users use this proposed site, and when should they use the existing LabVIEW tag on StackOverflow? (https://stackoverflow.com/questions/tagged/labview ) IMHO, the example questions (currently 4) fit well on StackOverflow. So do the other NI application families that you mentioned (LabWindows, TestStand, NXG, USRP & VeriStand).
  2. So you want to convey the idea that the code resists/frustrates efforts to maintain and scale it... I quite like brittle that others have already suggested. Throwing some more ideas out there: Inflexible Intractable Tangled/Entangled Over-coupled/Excessively coupled Unmodular(?)/Non-modular Restrictive/Constrictive Unbending Note: The first 2 candidates fit your existing pattern of the "in-" prefix: Incorrect Correct, but Inefficient in performance Efficient in performance, but Inflexible in design If you have time, I suggest asking at https://english.stackexchange.com/ for "harder than necessary" in the context of designing software. You'd get a lot more eyes and brains there.
  3. You have my sympathies. It is always horrible when someone who has authority over you (or has the ability to make your life difficult) doesn't get their facts right. Worse is when they refuse to even look at a piece of evidence that shows them wrong... What will happen if you point IT to the Windows + Git scenario? I don't suppose you can talk to the legal team directly? Your code sounds safe, then. To reiterate: If your code calls VIs (or DLLs) that are licensed under the GPL, then your code has to be GPL too. However, this does not apply simply because you use a GPL'ed program to manage your code. BTW, the term "tool" is quite ambiguous. I suggest referring to the things that you download via VIPM as "libraries"/"packages". Git and the GCC compiler are examples of GPL'ed tools that you can use at work without making your code GPL. This sounds like a reasonable feature request. @Jim Kring? If a project large enough that it depends on lots of different 3rd-party libraries/packages, then it makes sense to carefully track the versions of your dependencies anyway. Doing a blind upgrade puts your software at risk of bugs, regressions, or plain code breakage. I'd say these are much greater risks than a sneaky license change. Anyway, the common open source software licenses (e.g. BSD, MIT, (L)GPL, Apache) don't expire. Once a version of a library has been released to the public under a particular license, you will forever be allowed to use that version of the library under that license. It doesn't matter if future versions of the library are released under different licenses. So, all you need to do when you re-install LabVIEW and your dependencies, is to install the same version of the dependencies that you were using before. Only update the libraries/packages if you want to take advantage of a specific bugfix/improvement -- this is when you should check if the license has changed (and make sure you perform tests for regressions). The requirements are part of the license itself. The BSD license asks you to "reproduce the... copyright notice, [the] list of conditions and the... disclaimer in the documentation and/or other materials provided with [your software]". I'm guessing it's less effort than what's been spent on the NI License Manager framework... I see the value of both FOSS software and proprietary software. Without the FOSS movement, I would unlikely have spent so much time tinkering with software when I was a student, and thus would unlikely have a job today as a LabVIEW developer.
  4. Ah, I just realized that I might have misunderstood the original question. @0_o, could you please clarify: Which do you think is GPL -- VIPM itself, or the tool that you downloaded through VIPM?
  5. The usual disclaimers apply (i.e. "I'm not a lawyer"), but... I am absolutely positive that: If you're just using a GPL'ed tool to manage your code or your workflow (for example, source control) but your code doesn't actually need the tool to function, then you are not required to apply the GPL license to your own code and share it. On the other hand, if you incorporate a GPL'ed library into your code or if you link your code to it (for example, using the GPL package from VIPM), you are required to apply the GPL license to your own code and share it. Your IT department has misunderstood (or is misrepresenting) the GNU GPL. Wrong. Using a GPL'ed tool for source control does not make your code dependent on the tool. Thus, you are not required to apply the GPL license to your code and you don't have to share it. Here are some examples in industry: The source code for Microsoft Windows is now managed under Git (https://techcrunch.com/2017/05/24/microsoft-now-uses-git-and-gvfs-to-develop-windows/). Git is under the GPL license (https://git-scm.com/about/free-and-open-source), but Microsoft is not required to apply the GPL to the Windows source code. National Instruments uses Linux Real-Time in many of its devices, such as CompactRIOs. Linux is under the GPL license, but... NI is not required to apply the GPL to the CompactRIO software's source code. If you write software to run on a Linux-based CompactRIO, you are not required apply the GPL to your source code. (Side note that is irrelevant to your main issue, but is still useful to know: SVN is not licensed under the GNU GPL! https://en.wikipedia.org/wiki/Apache_Subversion Rather, it uses the Apache license, which is more permissive than GPL. Apache-licensed code is permitted in commercial/proprietary code. It is the TortoiseSVN client that is GPL: https://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-preface-source.html ) Correct. Your code uses the GPL'ed VIPM package as a library, so your code must also be licensed under the GPL, which means you must make your source code available to your users.
  6. Have you installed the NI Database and Connectivity Toolkit?
  7. Have a skim through this thread, which discusses some of the quirks of type definition disconnection: https://forums.ni.com/t5/LabVIEW/Application-Builder-What-does-quot-disconnect-type-definitions/td-p/2992511
  8. To clarify @jacobson's comment: In your .lvlib, right-click your variable and select "Properties". Disable "Alarming", "Update Deadband", "Initial Value", "Logging", and "Scaling". Now, your variables will work with LabVIEW Runtime without the DSC module. I'm not sure I understand. The issue would be the same, regardless of whether you use raw TCP or Network Shared Variables, right?
  9. In JSON, square brackets represent arrays. So, this is an array that contains one Boolean element: [true] This is an array containing three Boolean elements: [true, false, true]
  10. There are two broad categories of objects/classes: Values (e.g. numbers, strings, URLs, timestamps, images*, tuples/collections of these) Identities/entities (e.g. file, physical I/O channel, physical device, database, GUI control/indicator/window, state machine) Conceptually, values can be copied but identities cannot. (To illustrate what I mean: Branching a string wire can create a new copy of the string, but branching a DAQmx Channel wire cannot create a new channel) I would use references as a last resort for "value objects", but as a near-first resort for "identity objects". *IMAQ images are by-reference, but they didn't strictly have to be. Genuinely curious: Why do you expect reference-heavy G code to be less performant?
  11. The bar edges look a bit blurry. Try sharpening your image and increasing the contrast. Do these help?
  12. Git + SourceTree, for the same reasons as @LogMAN. I'm not getting JIRA for LabVIEW work, but I'm part of an OSS community that does use JIRA.
  13. I'm guessing it has something to do with the pricing of Application Builder -- NI is selling these for $1500. It's not clear to me: Does purchasing the license of Application Builder for one OS entitle you to the other OS'es...? Also, does the Developer Suite entitle you to LabVIEW on all desktop OS'es?
  14. This year, NI Week has a "Breakfast with the Execs" session, which lets attendees sit down with a high-ranking NI official and talk about specific topics. Omid Sojoodi, the Vice President of R&D for Application and Embedded Software, was taking questions about LabVIEW and SystemLink. I asked him about the Windows-centricity of LabVIEW NXG, and whether NI has considered cross-platform GUI toolkits. This is what he said: NI is currently concentrating their resources on maturing NXG on Windows, because it is by far their largest market. As of today, they haven't picked a solution for macOS and Linux, but are considering using web technologies (HTML + CSS + JS). During the early stages of NXG planning, the R&D team evaluated 7-8 cross-platform GUI toolkits. However, none of them were satisfactory. NI does use Qt internally, so they are familiar with it. It is one of the toolkits they evaluated. According to Omid, it didn't look native enough, so they went with a native toolkit (WPF). Personally, I'm surprised by this; I've used Qt lots and it produces very native-looking GUIs to me. In any case, I would've thought the cost of minor deviations from full nativeness (if any) would be dwarfed by the cost of maintaining separate code bases for different platforms. I also think trying to tack on cross-platform support after the maturation of the Windows version will be a very steep uphill battle, compared to doing it from the get-go. However, Omid did also say (in a different discussion) that LabVIEW NXG is very modular, and the front-end is quite separate from the business logic. Perhaps this means NI is confident of their ability to swap front-ends easily?
  15. Every endpoint needs a name. Network Streams are one-to-one: One writer sends data to one reader. Between this pair, only one needs to specify the URL. I presume that your cRIO's IP address is 10.1.17.201? This is what I recommend: You don't need any context names. On your cRIO, set the reader name to "myreader". On your cRIO, do not wire anything into writer url. On your PC, set your writer name to "mywriter" On your PC, set your reader url to "//10.1.17.201/myreader"
  16. This is not the official NI forum. Very few NI staff (who can actually fix your issue) come here. You're trying catch fish by shooting a rifle towards the sky...
  17. Kudoed. But anyway, have you seen VIMs?
  18. According to http://digital.ni.com/public.nsf/allkb/79CB44F7E228AED88625756E00445151?OpenDocument, "Compact RIO systems have a FPGA in the backplane which prevents DAQmx from being used" But just to be sure, I'd ask NI via official channels to get a definitive answer
  19. I'm curious: What's the rationale for supporting NI clients only? I can confirm that I've used the API to host an OPC UA server on a Linux RT CompactRIO, and this server is accessible to 3rd-party clients. My test client was UA Expert (by Unified Automation). I don't know the exact model of my customer's client, but I believe it was by Matrikon OPC.
  20. Yes, apparently. According to https://opcfoundation.org/forum/opc-ua-standard/clarification-for-index-range-handling-of-readwrite/ the ability to read an array subset (including a single element) is required by the standard. The ability to write is optional, however. I believe it's called "Index Ranges". My previous link shows an example. Here's another: http://forum.unified-automation.com/topic1386.html I don't know of one, sorry This sounds like a recipe for hard-to-detect bugs... Is there any chance of getting NI R&D to change this behaviour (or at the very least provide a way to enable stronger checks)?
  21. May I ask why? Off topic: One reason I still use DataSocket in LabVIEW is because that's the only way (that I know of) to programmatically read/write Modbus I/O server data without having to create bound variables: http://forums.ni.com/t5/LabVIEW/Can-I-write-to-Modbus-I-O-Server-addresses-without-creating/td-p/2848048 I'd love to know if there are any alternatives.
  22. Hi, I wanted to clarify: How do you get the string, "x23y45z3"? Does the user type it into a text box? How do you give the values back to the user? Why?
  23. The way I see it, XControls are for cases where you want to create a custom interactive "widget", and you plan to embed multiple copies of this widget in other front panels. (Unfortunately, it doesn't always work well, but that's a different topic.) So, do you want multiple copies of your custom box? If you don't, then you definitely don't need an XControl. If you do, then I'd consider it. Also, does it have to be an overlaid box? Would you consider a separate pop-up dialog altogether?
  24. This is just a guess, but I think the Control and Simulation (C&S) loop treats your code as a continuous-time model, and does some conversion behind-the-scenes to produce a discrete-time model for simulation. A feedback node breaks time continuity, so it's quite possible that the feedback nodes would interfere with the C&S loop's ability to solve your equations. I don't have the toolkit installed so I can't play with it, but I'm not sure if the C&S Loop is capable of solving such complex simultaneous differential equations like yours. I would still do some calculus and algebra to make your equations more simulation-friendly first, before feeding them into LabVIEW. For example, it's pretty easy to get an expression for x. See: Finding dx/dt: http://www.wolframalpha.com/input/?i=Integrate+A-B*(d^2y%2Fdt^2*cos(y)+-+(dy%2Fdt)^2*sin(y))+with+respect+to+t Finding x: http://www.wolframalpha.com/input/?i=Integrate+A*t-B*(dy%2Fdt*cos(y))+%2B+C+with+respect+to+t ...where y = φ, A = F/(M+m), B = m*l/(M+m), C = constant of integration (related to initial conditions). If you still want to try to get the C&S loop to process your equations unchanged, try asking at the official NI forums and see if people there know any tricks: http://forums.ni.com/
×
×
  • Create New...

Important Information

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