Jump to content


Post code here that is not ready for certification. Once it is ready for certification please notify the moderators. It will then be moved to the proper category.

70 files

  1. Rubiks Cube Solver

    This project is a 100% G based Rubiks Cube solver that I coded quite a while ago (2007) and then forgot about. I must have saved it it more recently in LV2011.
    The algorithm is based on the 7-step method, which is totally sub-optimal for solving a cube, but relatively simple to understand.
    Please note this code is not representative of my current coding ability, I just upload it in case anybody is interested.
    If I get time I would like to do a 3D representation of the cube and allow the manipulations to be done in this view.
    Run instructions:
    set the show boolean to True click randomise! pick a start colour click solve! The buttons on the left hand side can be used to do manual manipulations of the cube.



  2. ShapeLib

    This is a package containing LabVIEW bindings to the library ShapeLib for working with shapefiles.

    The DLL as of version 1.3.0 is included in the package. This DLL is compiled with Microsoft Visual Studio 2010 Express, so you need the corresponding runtime. But chances are you already have it because other programs on your computer need it, too. So just give it a try.
    The library is thread safe, but the objects are not. E.g. you can open two different files in different threads, but you can not operate on the same file from two different threads at the same time.
    As of the moment the DLL is 32bit only.



  3. Triple buffer

    (initial discussion, with other implementations here)
    In the need for displaying large images at a high performance, I wanted to use triple buffering in my program. This type of acquisition allows to acquire large data in buffers, and have it used without copying images back and forth between producer and consumer.
    This way consumer thread doesn't wait if a buffer is ready, and producer works at max speed because it never waits or copy any data.
    If the consumer makes the request when a buffer is ready, it is atomically turned into a "lock" state. If a buffer isn't ready, it waits for it, atomically lock it when it is ready.
    This class allows to have a producer loop running at its own rate, independently from the consumer. It is useful in the case of a fast producer faster than the consumer, where the consumer doesn't need to process all the data (like a display).
    How to use

    Buffers are provided at initialization, through refnums. They can be DVRs, or IMAQ refnums, or any pointer to some memory area.
    Once initialized, consumer gets the refnums with "get latest or wait". The refnum given is locked and guaranteed to stay uncorrupted from the producer loop. If new data has been produced between two consumer calls, the call doesn't wait for new data, and returns the latest one. If not, it waits for the next data.
    At each producer iteration, producer starts with a "reserve data", which returns the refnum in which to fill. Once data is ready, it calls "reserved data is ready". These two calls never wait, so producer is always running at a fastest pace.

    Implementation details

    A condition variable is shared between producer and consumer. This variable is a cluster holding indexes "locked", "grabbing", and "ready". The condition variable has a mechanism that allows to acquire mutex access to the cluster, and atomically release it and wait. When the variable is signaled by the producer, the mutex is re-acquired by the consumer. This guarantees that the consumer that the variable isn't accessed by producer between end of consumer wait and lock by consumer.

    Reference for CV implementation: "Implementing Condition Variables with Semaphores ", Andrew D. Birrell, Microsoft Research



  4. Select N inputs (xnode)

    a "Select" ... but with N inputs

    2 menus :

    a - select mode : after&before , only after, only before
    b - select output : top , center

    a - add input (after)
    b - remove input


    (for a quick test ... unzip ---> QUICK_TEST.vi)



  5. Help! Discovered a big bug of labview's ChirpZ Transform function(Not Sure)

    When using ChirpZ transform of LabVIEW(The example itself provides),I found a strange thing.When the frequency is very big and the range is small together with a not small number of ChirpZ transform,Error happened(very bad spectrum and wrong frequency ChirpZ's result is)! Nothing is wrong with the examples(I've scripted other VIs to verify this),and this error didn't happend using MATLAB. So I believe that is a bug of LabVIEW!!!(Not Sure yet of course). I Need Help! Talent Masters, Come out!



  6. VIM HAL Demo

    This is an experimental demo to investigate VIMs (vi macros). It was a bit of fun to see if VIMs could be used to encapsulate events in LabVIEW which was a bugbear of mine for quite some time. You can see the entire thread here. VIMs are a NI experimental technology similar to Xnodes but less mature.
    The purpose of this release is to clarify the previously unstated licence since other forum topics are building on the original demo so they need a permissive licence (MIT). This release serves as an unambiguous statement to that effect. There are a few differences from the original which I have decided to call version 0.1 but they are minor.
    This may or may not work for you out of the box. If it doesn't then please do not post. The purpose is to clarify the licence for others to build upon; not to provide a working example. The VIM technology is itself  experimental and unsupported by NI so most issues you will encounter will be due to this and It is unlikely there will be another version posted here.



  7. Traffic Jam Game

    Has your stressful day at work got you down?  Want to take a load off and relax with a game?  Why not a LabVIEW game?  Here is a game I made a while ago and forgot about.  It is called Traffic Jam similar to this, or this one called Rush Hour.  The basic goal of the game is to get the red car out of the parking lot, by moving the other cars.  Cars can only move in one direction and can't turn.
    My coding style has improved over the years, but I'm not yet ashamed of the work I did on it.  It was fun working with the picture control and generating the UI based on the level files.
    This game comes with 122 levels.  Why 122?  Because I forgot to put in the last 18.  Feel free to add them yourself by editing the Set text files.
    This game also keeps track of your high score, so you can try to go back and do it in less moves.



  8. RCF LVS Conversion Toolkit

    Hi Everyone,


    We have recently developed a toolkit that allows you to use Quick Drop plugins in Right Click Framework or LabVIEW Speak platforms.


    Named RCF LVS Conversion Toolkit, this toolkit provides an easy solution for JKI Right Click Framework (RCF) and LabVIEW Speak (LVS) lovers who want to use a quick drop plugin in RCF or LVS.  Now, you wont be disappointed when you see a useful plugin not written in your favorite platform's plugin format.



    Procedures are simple:

     Open the toolkit by going to Tools Menu >> Synovus >> RCF LVS Conversion Toolkit...
     Select the target Quick Drop plugin VI
     Type the command name in Right Click Framework or LabVIEW Speak
     Click OK

    Now you can use the Quick Drop plugin in Right Click Framework or LabVIEW Speak platform



     Automatically converts a QD plugin to RCF or LVS plugin format
     Warns the user if repetitive commands are installed.
     Provides an instruction as user clicks help button.
     Helps the user navigate to the plugin folders (LVS, QD and RCF)
     Modifying the functionality in Quick Drop VI will automatically update the functionality in Right Click Framework or LabVIEW Speak

    Please let me know if you have any questions. Suggestions and comments are welcome 


    Note: RCF and LVS only update their lists of commands at startup. If you use the RCF LVS Conversion Toolkit when RCF and LVS are open, please restart these platforms.



  9. Calendar XControl

    This XControl has the nice feature that a Calendar control should give you.
    Multilanguage support by property node.
    The input and output are Labview Time Stamp.
    When selecting a date, the date in the calendar become light blue.
    Please you receive this XControl for free. The minimum you can do is to rate it.



  10. HTML color table

    This VI allow an easy way to create HTML color table in the LabVIEW report generation toolkit. This VI should be connected to the "Append User Formatted HTML to Report.vi".
    For this version, all the column are the same size. But alignment and color of each cell can be defined.
    Please rate this file if you download it. It's free... you can at least give some second of your time to rate it... I spend some hours to make it...



  11. List all VISA session opened

    This VI list all VISA session opened and allow you to close all of them.
    Some times when the GPIB stuck and the VI wont stop..... This VI is a better solution than reboot.



  12. MPSSE.dll LABview driver

    There it is... finaly... 
    Because the code given in the FTDI web page is not convenient, not working and haven't been developed by real LABview programmer, I decided to create a library for the I2C.
    a version for SPI will come soon.
    This library is free to use. If FTDI want's it in ther site, I do not allow you to publish it since you didn't help any of your customer with LABview.
    but of course feel free to publish this link.



  13. DCG

    Allows new functions to be compiled during runtime by using libtcc. http://bellard.org/tcc/
    Features Full ANSI C compiler  ISO C99 extensions (Missing only complex and imaginary numbers) GNU C extensions (See TCC Docs) TinyCC extensions (See TCC Docs) GNU-like inline assembler  32bit & 64bit opcodes depending on DLL (See TCC Docs) Compile to memory to call as function or disk as exe Allows for dynamic code Pointer safe checks  
    Adding 2 numbers and using return to get the result
    Using system to call cmd
    Inline x86 assembly
    Passing in information using argc and argv
    Using pointers to pass a string in and an SHA512 hash out
    Uses libtcc unmodified, so for security reasons you can download the dll from the author's website or compile your own from source. The dll is included if you wish to use it.
    Some very basic examples that show off only a tiny subset of the features this compiler offers. Unless you are very careful, compiling functions during runtime can lead to unstable code. (Test before you deploy) All examples should run without issue but modification can and will lead to crashing. (Save often)



  14. Cp Cpk Calculation.vi

    This Vi Calculate th Cp and Cpk values of a dbl array values.
    It's quite usefull to do some statistical analysis of a process capability.



  15. LibreOffice Simple LV interface

    A set of simple VIs that uses the LibreOffice / OpenOffice UNO API. The result is very similar to MS Office ActiveX API. Currently, only Calc is supported. 
    This was tested on Windows 8 with LV2013 64 bit and LibreOffice 64 bit.



  16. Example Custom Radio Buttons

    Test stand had a touch screen. User wanted radio buttons instead of a pull-down menu. Wanted tests to run on pressing the button and pass/fail indication thereof. So I did that for him. Here is the stand-alone proof-of-concept that I worked up for it. Arrays are used so Boolean texts can change to suit different models of unit under test. If a Boolean text is blank, then that button will go invisible meanwhile, there being as many (up to 7) or as few (down to one) as may need be.
    I should mention, in case it's not obvious, that when in actual use, the three arrays are hidden inside of a sub-VI and not (as shown here) visible to users as part of the front panel.




    Initial release. It is hairy, but less so than the original import wizard.




    For a personal project, I needed to communicate between my computer and a SPI device slave device. So, I use a FTDI chip FT232h.
    I have adapted the library MPSSE I2C already available on this website to make it works for SPI.
    Warning ! VI are not 100% tested (especially Read functions), I provided it as it is.



  19. MCP2221A library

    There it is.
    The complete library for the MCP2221A. I2c adapter, I/O in a single IC. I love that one.
    Let me know if any bug is found.
    I try to make that library as much convenient as possible to use. Two version available 32 bit and 64 bit. little note: to open by serial number, the enumeration need to be activated on the device first. (open by index, enable the enumeration) It needs to be done only once in the life time of the device.
    PLEASE do not take ownership of this work since it is not yours. You have it for free, but the credit is still mine... I spent many hours of my life to make it works.



  20. Hooovahh's Tremendous TDMS Toolkit

    This toolkit combines a variety of TDMS functions and tools into a single package.  The initial release has a variety of features:
    - Classes for Circular, Periodic, Size, and Time of Day TDMS generation with examples of using each
    - Reading and Writing Clusters into TDMS Channels
    - XLSX Conversion example
    - File operations for combining files, renaming, moving, and saving in memory to zip
    - Basic function for splitting TDMS file into segments (useful for corrupt files)
    - Reorder TDMS Channel with Demo
    There is plenty of room for improvements but I wanted to get this out there and gauge interests.  The variety of classes for doing things, along with VIMs, and class adaptation makes for using them easier.  If I get time I plan on making some blog posts explaining some of the benefits of TDMS, along with best practices.



  • Create New...

Important Information

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