Jump to content

Lipko

Members
  • Content Count

    34
  • Joined

  • Last visited

Everything posted by Lipko

  1. Is it still an issue or have you solved it? It's not entirely clear that the error is random, or occurs "reliably" after the 3x45 hours. How is your time sampled? Is it possible that the hardware clock and software clock not being perfectly synchonized causes the problem? Is there any middle data processing bewteen DAQ and voltage checking? The 0.0000 is in the middle of a DAQ read chuck or at the begining/end? Or maybe a whole chunk, so for some reason the buffer is not ready when you read it? Sorry, I'm no expert in NI DAQ, for little quircks like this (and it
  2. If you are a student, I'm pretty sure there are boring tasks that can be automated. Something that's special so you are not likely to find existing tools. But since you are a student, simply reinventing something, cloning a board game you like (I make minesweeper in pretty much any programming languages I work with), remaking msPaint is not a "stupid" decision as it would be as a pro. For example for work, I did a picture manager program. Pictures can drag+drop sorted, comments can be assigned, picture entries can be colored (for marking purposes), images can be cropped with arbitrar
  3. I just couldn't resist. Not optimized in any way, but I guess for data that has to be visualized, this is not a problem.
  4. Yup, that's pretty messy. One mistake: you don't have auto indexing on the input but do have on the output of the outer loop. Or the code is that messy I misunderstood. I would use auto indexing, and have a bool flag (shift register) inside the outer loop. Init it to false and set it to true if the cell is not emply (otherwise don't change it's value). Then fill the cell with "0%" if it's empty AND the flag is true.
  5. Hi, What I would like to see (sorry it I missed that and there is a workaround) is to be able to load only data that is relevant for displaying. I don't know how do explain properly, like google maps, for example. Given the width of the graph in pixels, the min and max time value the graph would display only what is relevant (min and max value of the data at a given pixel and only in the given timerange). And of course this should be quite fast, running in the background I will look into the functions in the toolkit, thanks for posting!
  6. I'm sure other's have more general solutions, and I thought open-sourcing is not just tossing the code into the wild. Programming is not my main task, so maintaining an open-source project is out of question. Once I shared a project for fun (okay, it was only a fun game projecjt) and I got zero feedback. Maybe I can post in the code-in-development section though. But I can tell you the code for all my projects is very messy. As programming is only a tolerated activity of my job, all my projects are rapidly prototyped stuff.
  7. I could, if anyone is really interested. And I know my comment was OFF, but many comments were similar (story telling with no actual use for the OP), sorry.
  8. We also went for home-grown test controllers and sequence editors as the task for us was too simple and specific for the Test Stand mammoth, and all members of our test team has to create and run their own sequences (no dedicated sequence coder person). Coding a sequence controller for our certain controllers (NI cDAQ +0-10V AOs and DOs, native Labview support) and for our preferred measuring aplifiers (HBM QuantumX, pretty good Labview support) was only a matter of days with Labview. Coding a simple sequence editor was also a matter of days. Sure, it was a bit tedious to use at the beginnin
  9. Hmm, it looks totally different on my system. Nevermind, the disabled structures have to be removed (I don't know why they are there)
  10. It's not entirely clear what you are trying to do, but I don't see anything in the code that makes sure that the Y coordinates of the two sub-groups are different. I mean the ActualXxxxx bars are simply obscured by the other stack. When bulding the ActualXxxxx stack, add some offset to the i iterator inside the last loop to offset Y a bit. You have to fiddle around the other stack too probably, it will by quite tricky to fine-tune the properties to get the graph you want, but should be doable if the number of stacks and the size of the graph is fixed. I think... For these types
  11. Hi all! This is a small miesweeper clone, a game that I implemented in every major languages I programmed in. The code is not pretty I only had a day to make it, the game itself is a bit slow and I didn't optimize it (not sure if it's the logic, or that a huge table control is being formatted cell-by-cell), but I thought I share it anyway. The window setup may be a bit strange but this is actually just a dialog in a bigger project, an easter egg. All controls of the original Windows Minesweeper are implemented, flags and auto-explore (simulaneous left+right click on a discover
  12. Are you sure there's no race condition of some sort? Calling this VI parallel with another instance of it? Though it would mean that you set it reentrant and I think it would throw file permission errors, but at first glance I don't see other problems. Another idea is that your wiring is wrong but fooling you: you have a junction of file_handle and error before the case structure, and the close VI is not after the case but parallel (sometimes before).
  13. By "then something else broke" what kind off breaking do you mean? If replacing that Mean with my own solved the problem for me (no .dll error, the exe runs without obvious strange behavior), can I feel safe? My role is not a programmer, but a mere test engineer who makes tools for making test processes more convenient. So I don't really have the time to dig too deep into stuff like this, I need to have solutions for problems ASAP. Solving actual problems is not an easy task with a soo rigid IT department over me. I was surprised that I could add that environment value (which didn't sol
  14. I wonder if that mean function has advantages over a self implementation apart from returning some error codes and (I guess) no float overflow errors.
  15. I have the same problem on random machines (the same type though), though the application is built in LV 2015 (32bit), at it was built months ago, not nwelí built. I figure setting enviromental value means setting it in windows. That didn't solve the problem. I will replace all Mean functions, but meh.... EDIT: Sorry for bumping, I didn't realize it's not 2020 any more... Anyways, replacing the Mean function solved the issue. Another argument for reinventing everything for yourself 😋
  16. Same trick can solve flickering of the cursors of a graph when the graph data is updated. However, it can result in seemingy unrelated errors, for example triggering an autoscale on an axis with property-node doesn't work the same way as without the transplarent overlay, so far as I remember. This is obviously just a simptom of some updating (order) thing. So if you have any "special" behaviour of your control/idicator, you better test everything (which is close to impossible), or try to recall this hack if something that once worked stops working as expected.
  17. Hi, Do you have specific examples of the data you want to process? How do you get zero pulse width? Do you want to ptocess the whole data or just a portion of it "real time"? If your data is that special, why don't you do the anlysis yourself? It's clear how you define pulse width of a rectangle, but how do you define it for a smoother data? If you always have special data (rectangular or triangluar), then I think your best bet is to calculate everything by yourself, or detect whether the data is special or normal "waveformable" data and handle the two kind separately. Also, have yo
  18. If I want to have lossless data for processing but also want to display data on the GUI then I simply have a processor loop with a queue and a display loop with notifier and the producer loop feeds both. This means copying some of the data, but usually the not the huge part of it that has to be processed. If the GUI state depends on processing the data, some GUI updates go into the data processor loop, so it's not an unstained arcitecture.... But I try to keep the number of GUI elements updated from the processor loop as low as possible, and also I try to use the terminals of the indicators in
  19. Note to codes: I'm am only a hobbyist tinker, and I don't know how nice LV code is written. And I hope I posted every relevant things. You don't have to care much about the "alive_clients" thing. It's there to make sure the reply buffer doesn't overflow if a client gets lost before the server' reply gets forwarded to the client by the webservice. The server program that reads the request queue and writes the reply buffer is too complicated to be useful. And to point out again: The client ip is sent by the client itself. Then you have to keep track of the ips in the server program log
  20. ImageMagick has command line interface so you can use "System Exec.vi". ImageMagick works with files (at least the command line thing). So you have to save the picture, call "System Exec.vi" with the proper command and parameters, this will make another file (or overwrite), then you have to load this file to Labview. For not high resolutions, this will probably fit the 0.5 second time (and based on the picture you posted, the resolution in pretty low). I have to ask the usual question though: what is your final goal? Maybe you could go the other way around and barrel-distort the whateve
  21. Some other constrains of my use case, so we can see if it's really similar to yours: a client always waits for a proper reply (be it success or error) before issuing other commands to the server a few dozens of clients at a time stable communication is much more important that speed, so it's accepteable for the client to wait even for fours for a "success" reply (in case the server restarts due to an update and the IT's asdfg...), but usually reply comes in a few seconds. writing is even rarer, since a client has to reserve the machine first (reservation is handled by
  22. I'm not sure I understand the problem correctly, but I had a seemingly similar situation. The clients send two request types: "write xyz" and "status?" The server side has two layers: a thin webservice: for "write" requests: queues the requests (write queue) with client ip and immediately responses with "acknowledged" for "status?" requests: immediately responses with the last message for that client from the reply buffer, or empty string if no replies for the client are available the main server program: sequentially write the e
  23. Hello, If it's okay to use 3rd party free tools, you could look into ImageMagick. It has command line interface. L.
  24. It can be solved with a fairly simple macro. Sub ReplaceTextWithImage(findText as string, imagePath As String) If Selection.Find.Execute(FindText:=findText, MatchWholeWord:=True, Forward:=True, Wrap:=wdFindContinue) = True Then Selection.InlineShapes.AddPicture FileName:=imagePath, LinkToFile:=False, SaveWithDocument:=True End If End Sub EDIT: added checking if text found and MatchWholeWord and continue search if out of selection range. Other checks should be added to the labview code (image file exists and findText not empty). Note, that the Selection.
  25. Hi all! How do you implement mouse capture for controls? This is more of a philosophical question about your solutions, you did you learn to live without it etc. By mouse capture I mean mouse capture: A control receives mouse events even if the pointer is not above the control. It's useful for dragging among controls, or for a graphical user interface (mousedown>mousemove>mouseup event chain). Without mouse capture if the user accidentally leaves the drawing area during a drag-like operation and mouseup occurs outside, the drawing area gets stuck in dragging mode (mostly). Th
×
×
  • Create New...

Important Information

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