-
Posts
231 -
Joined
-
Last visited
-
Days Won
27
Content Type
Profiles
Forums
Downloads
Gallery
Everything posted by Porter
-
Calculate Mean Value of Array (lvanlys vs native)
Porter replied to Porter's topic in LabVIEW General
I couldn't get it to return a non-zero error code. I tried Inf and NaN in the array. Dividing once for each element feels expensive. It doesn't seem like lvanlys uses it either. Both the native "dumb" mean algorithm and lvanlys overflow around the same value. Whereas a divide at each element algorithm can handle higher values. Mean Value Test.vi -
I'm just going to throw this out there... LabVIEW's included mean value of array function calls and external dll (lvanlys). It takes close to twice as long (depending on array size) to execute than just doing a native sum of array elements then divide by array size. Is there any advantage that the lvanlys function has over this simple native mean? Why aren't most of the lvanlys functions implemented as native LV code instead of a dll? I'd imagine that we could get some performance boost on some of them by using inlining, VIMs, and parallelized loops. Mean Value Test.vi Mean Value Test SGL.vi
-
Glad to hear that a new converter did the trick. I can remember having an issue like that a long time ago and it was due to incompatible hardware. The main reason why I don't like the synchronous mode is because it allows only one serial read at a time, across the entire system. So for a system with multiple serial ports, you can only poll them one at a time. I recall being very confused when using the old NI Modbus code and watching the status LEDs on our multi-port USB-Serial converter light up sequentially. It had a very detrimental impact on the performance of the system.
-
That's the first time I've heard of such a problem. I'm reluctant to implement this because from experience, synchronous R/W usually causes more problems that it solves. Would you be willing to privately share the code with me? What kind of serial port are you using? Can you try using a FTDI-based USB-Serial converter to see if you get the same behavior? Other USB-serial converters that perform well with VISA are: https://www.sealevel.com/product/2105r-usb-to-1-port-rs-232-db9-serial-interface-adapter/ https://www.moxa.com/en/products/industrial-edge-connectivity/usb-to-serial-converters-usb-hubs/usb-to-serial-converters/uport-1100-series/uport-1150
-
Hello Paolo, Since you will be using Modbus RTU (over serial port) you would probably want to modify the "RX MEI Data.vi" in the MB_ADU_RTU class to have some logic to determine the end of the response message. Otherwise the default behavior is to wait 200ms and assume that the entire message has been received during that time. If you are OK with the 200ms wait time, then you don't need to modify anything here. Next you would want to call the "Querry.vi" from MB_Master_Serial class with function code set to 43, and the first data byte set to 13. Note that if you do modify "RX MEI Data.vi" you can use the RTU_DataBytes parameter to tell it how many bytes to expect to receive if you are able to know this before calling Querry.
-
A nice feature would be to optionally preserve top-level comments (lines that start with #). I don't think that this is a trivial to implement, but it could be useful. And it might even be simple to preserve inline comments while we're at it (keep the comment with the key-value pair).
-
Thanks Antoine for taking on this project. Looks like you are making some good progress already. Just a little detail, you might want to add some text at the top of the license file along the lines of: Contributions up to v1.2.1 Copyright (c) 2017, Erdos Miller Unless you received written permission to from the original owner to change the copyright.
-
I've been toying with the idea of implementing a new TOML library for LabVIEW. I've been using OpenG variant config for years, but I would prefer to use a more standardized format for my ini config files. TOML is the best candidate for this. Erdosmiller's library is pretty good, but as the author points out, it is no longer maintained, and it didn't gracefully handle all of the datatypes that I wanted to use. It would be great to have the flexibility of jsontext but for TOML format. I'll post back here if I manage to get the project off the ground.
-
Thanks Darin for hitting the nail on the head. Always Copy was the first thing that came to mind when looking for a workaround, but muscle memory brought me to IPES first (which does the same thing if I recall correctly). For completeness, I have added Always Copy to Loop5 of my test vi. It solves the problem nicely: Destroyed Event Ref Test_loop5.vi
-
- LVCompare and LVMerge should be unlocked with the LabVIEW base edition. Or even better, an open source merge and compare tool could be released to the community.
-
I think that I've encountered a bug in the behavior of Not a Number/Path/Refnum? when checking an array of event references within a loop. *LabVIEW 19.0.1f3, 32-bit, Win10* I would expect Loop1 (below) to stop within 6-7ms, however it is consistently timing out (>500ms). The result of the Not a Number/Path/Refnum? is always false even though the event refs are no longer valid. I suspect that this is related to compiler optimization because adding an in-place structure results in the correct behavior. So is this actually a bug? or should the need for an in-place structure be expected for some reason? Here is my test VI (LabVIEW 2019) to demonstrate this behavior: Destroyed Event Ref Test.vi
-
Serial Communication non-reentrant and reentrant
Porter replied to wohltemperiert's topic in Hardware
VISA locks behave strangely in my opinion: I still use them but wrapped in a single element queue. This workaround was implemented in the Plasmionique Modbus Master's MB VISA Lock library. It is described in page 19 of the user guide: https://lavag.org/applications/core/interface/file/attachment.php?id=14276 I also describe use cases on page 10 and 11 if you are interested, I often use this VISA locking library for RS485 instruments that share the same COM port. -
If you only require language switching during edit-time you can give this tool a try: You will need to startup a Russian VM to view the translated VIs though. This tool pulls all of the UI strings out of a project and stores them in UTF16-LE format, then converts them back to the desired code page when applying a particular language to the project. From my experience, it is never a good idea to try to use unicode text on VI front panels.
-
Discover LabVIEW tools - Have you tried VIPM.io?
Porter replied to javier_r's topic in Announcements
Wow. That was very fast: https://www.vipm.io/package/lava_lib_robust_csv/ What is the process for verifying submitted packages? -
Discover LabVIEW tools - Have you tried VIPM.io?
Porter replied to javier_r's topic in Announcements
Just submitted my Robust CSV package. The process was very smooth. I like that it is geared toward open source packages only. Hopefully this means that the quality requirements are a little bit more relaxed than LV tools network (eg. including example code in example finder). -
I didn't see any obvious way to do it either. I tried with a non-empty array as well but its values were also ignored.
-
Bug? JSONText doesn't apply input default values to missing cluster items of array elements. I was hoping to see "Default", 1 and "2", NaN but instead get "",1 and "2",0 I think that it is due to the behavior of the Get Array Information VI. The workaround is to convert the array elements individually as clusters:
-
Norton antivirus decided to remove all of my lvlibp files that I copied from our self-hosted gitlab repo. It seems that it takes issue with the URL of the repo and the newness of the files. Here is a post about WS.Reputation.1: https://community.norton.com/en/forums/clarification-wsreputation1-detection They suggest that developers set up auto-protect exclusions for their project directories.
-
This toolkit is for edit-time language switching. I don't see why it wouldn't work. But I don't have the hardware or dev environment licenses to test it. Donations are welcome
- 16 replies
-
- translation
- localization
-
(and 2 more)
Tagged with:
-
Just tested beep VI on its own and again I get the same run away ram consumption of audiodg.exe (+5MB/s). I've got a bleeping memory leak! RAM remains reserved by audiodg.exe even after exiting the application. When using the sound VIs to play a WAV file, there is no such memory leak behavior. LabVIEW 2018 SP1 32-Bit Windows 10 Home 10.0.17763 Realtek Audio PNP Device ID: HDAUDIO\FUNC_01&VEN_10EC&DEV_0255&SUBSYS_10280855&REV_1000\4&3675F7D0&0&0001 Driver: rtkvhd64.sys (6.0.1.8393, 5.83 MB (6,111,680 bytes), 2019-04-28 1:27 AM)
-
I had a labivew application crash yesterday due to the PC running out of memory. Looking at the windows 10 system logs, it was audiodg.exe that ate up all of the memory. Re-launching the application again and triggering the beep sound caused audiodg.exe memory usage to shoot up at 10s of MB/s. I suspect that this is a realtek audio driver bug because I can't reproduce this behavior on my development machine. Has anyone else come across this kind of behavior before?
-
Bug Fix for ALL Right-Click Menu Plug-Ins (LV2015 to 2019)
Porter replied to Aristos Queue's topic in LabVIEW Bugs
Are you talking about right click during edit time or during runtime? Does this explain the random right click of doom that freezes LabVIEW after right clicking on an item in project explorer? -
Trying to create a child of a class that is within a packed project library produces Error 1562 This is because CreateChildClass is trying to add the new class to the parent's library. I propose that it should instead add the new class to My Computer. To do this, just change "CCC Main.vi" to look like this: vi.lib\addons\_LAVA\lvoop_assistant\_create_child_class.llb\CCC Main.vi
-
I'd be happy to work on it in my free time... when I have free time (newborn baby girl waiting for me at home)
-
It would be nice to be able to modify .mnu palettes with the GCode manager. This way you don't need to add the palette to your palette set just to edit it (as you have to do with the built-in palette editor). Shouldn't be too hard to implement 😜 There is a Palette API that ships with LabVIEW.