Jump to content

ShaunR

Members
  • Posts

    4,881
  • Joined

  • Days Won

    296

Everything posted by ShaunR

  1. Nope. But if you are interfacing to TS then changing clusters will break the connector anyway. You are much better off using strings (like JSON or XML) to TS.
  2. You could just draw the cluster on a picture control. You could then easily filter out the "reserved". You wouldn't need to change the UI every time it changes and I expect the user doesn't care what the underlying cluster is. Draw Cluster.vi
  3. What are you expecting? DC is in the extended character set. In the help for the To Lowercase function it states: What it converts to is probably dependent on the code page you are using.
  4. Nicely written but doesn't work for me (LabVIEW 2023 64 bit on Windows 10) using this image: . It hangs and never returns in "Point to EXIF Data - PNG.vi". The while loop never terminates as "Get File Position.vi" returns Error 4 (end of file) and there is no check on errors inside the loop so it keeps going and incrementing "Offset past chunk". Additionally, there is no check on the value of the "Offset past chunk" in case it has increased beyond the number of bytes in the file (optional defensive programming). You also have a custom installer which doesn't create all the palette icons correctly. I would recommend you look at the JKI VI Package Manager which is the defacto standard method for creating and installing addon packages.
  5. Or, in other words, "A Manager". That's all managers are! Your value isn't diminished, you've just been given the opportunity to increase your skill-set.
  6. That's the point where most of us switch to consultancy. For that switch, though, you need good personal relationships with customers and be happy with an irregular income.
  7. Well. If I were your manager then I'd ask you to find a contractor that can do it in a week and task you with managing them. I feel this is a different point. I am a Systems Engineer and a programming language is a tool I use to engineer a system That is different from what I was saying that languages are pretty much all the same. The latter is a poke at the industry lacking diversity in it's approach to programming and that I (and others) only see a difference in syntax and not really in execution. You might argue that Ladder Programming is a different beast to C/C++ (which it is) but both of those are 50 years old. LabVIEW has more in common with Ladder programming than any of the more modern languages which is why many people struggle when they move from a text based language. There are 32 types of hammers but they are all still hammers. That's how I see programming languages.
  8. Are you? What has front end web development to do with Node.js? I'm guessing you have only used Javascript for client-side browser scripting. Don't forget, client-side Javascript is nothing without HTML-itself another language.
  9. I don't see why not Javascript syntax and structures are based on Java and C so it's a much easier transition than, say, to embedded Python. The point here is that it's not the language that makes transition difficult. It's the awareness of the limitations of the environment and how to access the hardware.
  10. They pretty much are, at the end of the day. When you program in windows, you are programming the OS (win32 API or .NET). It doesn't really matter what language you use but some are better than others for certain things. It's similar with Linux which has it's own ecosystem based on the distributed packages. Where LabVIEW differs is in the drivers for hardware and that is where the value added comes from. The only other platforms that have a similar hardware ecosystem is probably something like Arduino.
  11. I always find this kind of question difficult because LabVIEW is just my preferred language. If an employer said we are switching to something else, I'd just shrug my shoulders, load up the new IDE and ask for the project budget number to book to. I think the issue at present isn't really if there is demand for the next 10 years. It's what Emerson will do at the end of this year. You could find that LabVIEW and Test Stand is discontinued this year, let alone in 10.
  12. 3) Used all the good ones in other products. I have a load of icon sets from Tucows which is now defunct. Icon sets are difficult to find nowadays. You used to get 200 in a pack. Now they are individual downloads on websites.
  13. Language ID's SR_IM.vi You may also be interested in some of the other functions instead of asking the user to change the input method.
  14. Oh, I am easily replaceable. The other two know how things work in a "white-box", "under-the-hood" manner. I know how stuff works in a "black-box" manner after decades of finding work-arounds and sheer bloody-mindedness.
  15. Indeed. Which is what you need.
  16. Well. What is your immediate pain? Can you elaborate? Here is an existing file with the first 0x40000000 (d:1073741824) bytes nulled. You can see it only has about 600MB on disk. If I query it I see that data starts at 0x40000000 Now I can do a seek to that location and read ~600 bytes. However. I'm guessing you have further restrictions.
  17. It's a common requirement for video editing.
  18. You can play with fsultil but Windows (A.K.A NTFS/ReFS) doesn't have the "FALLOC_FL_COLLAPSE_RANGE" like fallocate (which helps with programs that aren't Sparse aware).
  19. Indeed. However. Hole punching is much, much faster. If you are talking terabytes, it's the only way really. Set the file to be Sparse. Write 100k zero's to the beginning. Job done (sort of).
  20. A 100kB view will not help you truncate from the front. You can use it to copy chunks like mcduff suggested but The issue with what the OP is asking is to get the OS to recognise a different start of a file. Truncating from the end is easy (just tell the file system the length has changed). From the front is not unless you have specific file system operations. On Windows you would have to have Sparse Files to achieve the same as fallocate
  21. MySQL, MariaDB, SQLite, PostGreSQL are examples of Relational Databases. They consist of tabular data that can be interrogated by their relationships. Key-Value (or Hash lookup) are another type of database and often referred to as NoSQL databases. No global variables. You may think of the database as a global variable containing all information you have acquired or need to know (it's not really but it will suffice). If these concepts are new to you, then perhaps just concentrate on separating the analysis and display from the acquisition - that is the important part..
  22. Not sure about VDM but I did say DVM (Digital Volt Meter). IMO - written abbreviation for "in my opinion": used when you tell someone your opinion, for example in an email. SIC - sic erat scriptum, "thus was it written")[1] inserted after a quoted word or passage indicates that the quoted matter has been transcribed or translated exactly as found in the source text, complete with any erroneous, archaic, or otherwise nonstandard spelling, punctuation, or grammar. It also applies to any surprising assertion, faulty reasoning, or other matter that might be interpreted as an error of transcription. SQLite is pretty fast but huge amounts of raw data are better stored elsewhere and referenced from a relational database. Key-value stores have their place too.
  23. There is a limit to how much you can map into memory. BTW. Here is a LabVIEW mmap wrapper for working with files on windows
  24. What I'm about to say will either "click" or be totally meaningless with respect to what you are asking. But here we go. The No.1 goal should to separate the user interface / analysis from the acquisition. That is, how the information is viewed should be completely divorced from how the information was acquired. To achieve that you will have a surprisingly few number of options with regards to a single, templated architecture. By far the most convenient way is via a database which isn't featured in any classical LabVIEW architectures.. So. We have decided to split the program into 3 halves [SIC ]. The first half (acquisition) will be any method we choose that populates the database with as much information as we need or can elicit. The second half will just be a UI and any analysis that executes queries on the the database and displays it. I am deliberately ignoring configuration but the database also solves this problem for us too. So the acquisition is just a series of operations to populate the database. Our focus isn't on the LabVIEW architecture for achieving acquisition, it is a LabVIEW architecture for populating a database. How do we do that? It depends. It depends on whether in populating the database with a single piece of information we require more than 1 device to do so. For example. If we only have to read a DVM every 10 seconds then we can just call a VI to read the DVM and put the value in the database with the time . If we have to set a voltage, set a temperature, and then read a DVM then we require something more sophisticated to handle state and populate the database not only with the DVM reading and time , but with the voltage and temperature. However. We are not in the straight jacket of, say, Actor Framework or Producer Consumer et. al. To populate that information we can use any classical LabVIEW architectures for that database update. As the program evolves, the reusable portions will reveal themselves and a particular classical architecture will become dominant based not only the demands of acquisition but the preferences of the designer (you). However. We are not limited to that one architecture. This process produces an Emergent Architecture and is greatly expedited by experience. It is what Agile development tries (and fails, IMO) to capture. So: To populate the database if the 5 sensors are identical then you could use "1 Vi re-entering with 5 instances in memory" To populate the database if the 5 sensors are all different then you could "make a Vi that communicates with everyone" (especially if they are SCPI compliant). But there are other options.... To populate the database then you could launch an Actor for each device. To populate the database then you message a Producer Consumer service that handles that device type. -------------------------------------------------------- Now. Because we have separated the UI and analysis from the Acquisition, you can play with the acquisition implementation details or re-architect/reorganise the acquisition without affecting the analysis and presentation, So if you are operating in an agile environment, the acquisition can go through many tight iterations of the acquisition code and still maintain black-box test integrity for regression testing. Other options are also valid such as "everything is an object so do POOP"
  25. Linux only huh? No mention of fallocate? Why do people keep posting junk from ChatGPT? At this point I consider it spam.
×
×
  • Create New...

Important Information

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