Jump to content

Christian_L

NI
  • Posts

    107
  • Joined

  • Last visited

  • Days Won

    3

Posts posted by Christian_L

  1. Brian, You may be able to add more features to the forum editor based on comment from Invision, but that should be a larger discussion on LAVA features and security.

    https://invisioncommunity.com/forums/topic/443912-editor-direct-html-editing/

    Quote

    You can enable HTML posting on a group level but this is not recommended for security reasons. There is no BBCode source mode but CKEditor plugins as found at https://ckeditor.com/cke4/addons/plugins/all can also be used and installed via the admin control panel. Do you have any specific usage examples where the editor is making unwanted decisions? If you have encountered any bugs with the editor we will be happy to investigate.

     

  2. What is the best practice for creating n number of network steams?

    Thanks,

    Brad

     

    Can you describe your application or use case a bit so that we can understand how you would use the network streams and more importantly what type of connection management (keeping track of and managing the NS endpoints/references) will be necessary.

     

    This request is coming up more often, specifically where a network steams-based N-to-1 or 1-to-N communication mechanism is needed. I'm in the process of collecting user stories/use cases to define and prototype an API for this purpose.

     

    Check out this session and examples from NIWeek 2012. It includes a prototype connection manager for TCP, UDP, and Network Streams. I'm not currently familiar with this code and am working on understanding it.

  3. VIRegisters should be much faster and more lightweight on memory (queues vs. FG-VI), and each variable has its own non-blocking queue vs. a blocking FG per data type in CVT.

    Also the ability to setup scope per variable in VIRegister isn't present in the CVT toolset. And the interface to VIRegister is 4 VIs, where your API in the CVT toolset is around 34 VIs (much more complex).

    Steen,

    This is a very nice set of VIs. Thank you for posting. I'm one of the developers and current owner of the CVT library, so this is of special interest to me.

    I really like the ability to dynamically create new registers by simply writing to them, which is a feature we've been planning on adding to CVT for some while. I also like how you handle dynamic and static names in the VI registers using two feedback nodes. I would like to borrow this idea for CVT to eliminate the need for dual dynamic and static name access VIs. With CVT we have not added a polymorphic wrapper, but of course you could eliminate the need for separate CVT VIs for each data type, as you have done.

    One big difference I see is the low level read-write performance. One of our main use cases for CVT is LabVIEW RT on cRIO, which is a much slower processor than most LV programmers are used to from Windows. Doing a very quick comparison between VIRegister and the static access CVT VIs I see a 10x faster access speed for CVT. This is not surprising as when we designed CVT several years ago we benchmarked all the different possible implementations on cRIO and picked the fastest one we could find.

    Currently the name lookup in CVT is very slow (linear search) as Mads has indicated and we plan on fixing that by using variant attributes to store the tag data and using its built in binary search.

  4. Paul,

    Start by consulting the following resources on ni.com and then contact your local NI representative to get more information and discuss your specific project and ideal HW platform.

    With the NI LabVIEW C Generator, you can port your algorithm designed using the LabVIEW programming environment to any processor of your choice. In addition, you can create ANSI C code from your LabVIEW VIs to be integrated with third-party toolchains. The LabVIEW Generator combines the benefits of graphical programming with the ability to download to virtually any target.

    http://www.ni.com/embedded/

    LabVIEW C Code Generator - http://sine.ni.com/n...g/en/nid/209015

    LabVIEW for ARM - http://www.ni.com/labview/arm/

  5. hi,

    i am using basic serial read write for communicating with my device and i created some numeric indicators for displaying the values. I want to write to a value from indicator to serial port but indicators can only display the result. How i can do both write and read things from indicators. Please some one help me.

    Use a Local Variable in LabVIEW to write to an indicator. In general use Local Variables sparingly and only when absolutely necessary as they make the program difficult to maintain and may introduce race conditions. Excessive use of local and global variables is considered a bad programming practice.

  6. :blink: I thought you were joking when you said it was empty there with 3/4'' of snow. Apparently this is being called snowpocalypse (taken at 8AM). And this was the site at 12:45PM. I heard there was over 200 accidents in San Antonio by 9:30?

    Just to clarify, in the vein of assigning a news-worthy name to every event, 'snowpocalypse' is being thrown out there, but even Texans realize that this is more in fun than being a serious description of 3/4" of snow. The real snowpocalypse does not start until there's at least 2" of snow. ;)

    My commute on Friday (I grew up in Canada so I can not in good conscience stay home when there is a little snow on the ground):

    gallery_3370_24_308272.jpg

  7. We are currently in the process of upgrading to LabVIEW 2010. My colleague and I both write LabVIEW code and share the same simulator machine with an RT hosting Real-Time 9.0. He has already upgraded to 2010 and I have not. We are having issues connecting his machine to the RT. Is it impossible to run RT 9.0 with LabVIEW 2010??

    No, if you are running LV 2010 on the host machine and want to connect to a RT target from the development environment, then the RT target needs to be running the same version of LabVIEW.

    If you have a completed deployed RT application developed in one version of LabVIEW you can connect to the application (VI) from a LabVIEW VI in a different version using 'generic' communication mechanism like TCP/UDP and also shared variables in most cases.

  8. :thumbup1:

    ...although I'm not sure I'm happy about being called an "old timer" :) Seriously though, when it first was released, I resisted, but after forcing myself to use it I wouldn't go back.

    After reading this from Chris, I guess I'll now have to spend the time to use and love the Auto-Tool myself. Maybe I need to get a better mouse to be able to position the cursor more precisely.

    Yes, I am an old timer, though to be honest my first year at NI I resisted learning LabVIEW at all, having started as a LabWindows/DOS and then CVI guy.

    I always (jokingly) tell the guys in my group, that if a feature didn't exist in LV5, I likely do not use it.

  9. Jack,

    Can you describe your use case for wanting to add a page to the Library Properties dialog. In general we are hesitant allow additions to the development environment tools without understanding the possible applications.

    In the case of the preferences dialog the purpose of publishing the template was to provide a method for creating your own preference dialog based on the same framework that LabVIEW uses, not to add additional pages to the LabVIEW options dialog.

  10. Mmm, thanks for that. I was hoping to have an ini file with the required contents of string controls in different languages, like this:

    [ctrlOne]

    jp=種類の音を与えます

    en=hello

    It becomes quite tricky it seems... I'll keep trying & post back if I figure it out. I do have the modification to the labview .ini file that lets me view unicode characters in string controls so it is searching/extracting from the file that is the tricky part now.

    I've done something similar in the past. I treat the file as a whole as ASCII, but the value of each of the keys may be ASCII or Unicode. Then in LV I interpret the key values accordingly, converting them from a string to a Unicode string if necessary. I've posted a bunch of Unicode tools including file I/O examples on NI Community, that may help you out.

    http://decibel.ni.co.../docs/DOC-10153

  11. You can take a look at the GXML code as a starting point for implementing your 'Anything' to binary conversion.

    GXML converts Anything to XML. It uses a variant input and then converts the variant to a flattened string. Then it recursively parses the flattened string, ignoring the outer variant container, to convert its contents to XML. You can replace all of the XML conversion code with your own code.

    If all you want to do is to remove the outer variant container from the flattened string then it won't be much work at all and you won't even need to get into recursive parsing.

    • Like 1
  12. I would assume the time returned is based on some counter and the time rollover is based on the rollover of the counter. The time returned is the count value times dt (dt = 1/counter frequency).

    Determine the smallest increment in the time value returned, which should be your dt. Looks like it will be 0.0006427 or a fraction thereof.

    Do the math to determine the size of the counter , i.e. 218.45 /dt . Most likely the counter range will be a power of 2.

    Do the exact math to determine the actual maximum value.

    Assuming your device has a 32-bit counter... >> For example if your device uses a 19.6608 MHz clock source and a 32 bit counter, your dt will be 5.08626e-8 and your maximum time will be 218.4533, all within the error of the clock source of course. 19.6608 MHz was the closet common timing chip/crystal I could find based on your values and the assumption of a 32-bit counter.

    If you can open up the serial device you may be able to easily identify the clock source and lookup its frequency. Be aware of voiding any warranty.

    • Like 1
  13. Hi all,

    I don't know if it's possible, but I would like to be albe to read the path of a Caller inside the subvi.

    Let's say that I have many VIs call Mater 1.vi, Master 2.vi, Master 3.vi ..... and a VI call Slave.vi.

    The Slave.vi is a subvi of all masters

    Is it possible create a code inside the Slave.vi in way to know which is the name of the caller? o_O Something that tell me if the caller is Master 1.vi or Master 2.vi .....

    That's a pretty standard operation using the Call Chain node in LabVIEW.

    post-3370-0-02246000-1290096533_thumb.pn

  14. A patient takes a reading of his blood pressure at his home with the labview software. Upon doing so, the data is sent to a webserver run by mysql for the doctor to check if there is any abnormality in the patient's blood pressure.

    If you want to send the data to a web server most likely all you need is to send the right command/request using HTTP. LV 2010 includes HTTP client VIs. For some earlier versions of LV there are VIs available on ni.com.

  15. I think it's even more important to have *categories*, not name standardization. I can image the default view in VIPM getting pretty unruly once a few more packages are released.

    For example, if I'm looking for some DAQmx stuff and I sort by package name " jgcode_rpk_ni_system_style_daqmx_controls-1.0-1" won't help me.

    Agreed. Now that VIPM shows package names instead of the file name (assuming the package has a name), standardizing the file name, while desirable, is not as important anymore.

    Having groupings or categories is more desirable. Even searchable tags would be good to have.

    I did define a similar standardization for VI package created by Systems Engineering. I defined the following categories:

    lib - all non extensible code including classes

    util - corresponding to your rsc and tool

    tmpl - all templates, design patterns, extensible classes, etc.

    The challenge we found is that several packages would include more than one type of content, e.g. they would have an API (lib) and also add an entry to the Tools menu/project folder (rsc).

  16. I posted a new version of the code on NI Community including a VI package.

    Changes in the code:

    • Reverted version number from 1.0 to 0.2
    • Added VI package distribution
    • Moved all dialog subVIs from LV resource folder into package
    • Added support to show/hide Help button and specify dialog help file
    • Moved API and framework into LV project library
    • VIs install to ..\user.lib\ODF
    • Added subpalette to User Libraries in Function Palette

    http://decibel.ni.co.../docs/DOC-13146

    • Like 1
  17. I would need a data integrity (and not just a hash) on LV RT.

    RSA decrypt would do the trick. Is it available?

    Are you looking for data encryption or verification in the sense of knowing that your files have not been changed?

    For the later case a checksum would be used. LabVIEW includes the MD5 algorithm as a VI in the Advanced File Function palette, which gives you a checksum for a given file. I have used this to create a utility to create a "fingerprint" of a LV RT system (CompactRIO) in order to verify at a later time that none of the critical files on the system have been changed.

    C:\Program Files\National Instruments\LabVIEW 2009\vi.lib\Utility\MD5Checksum.llb\MD5Checksum File.vi

  18. I was in the process of repacking the above to play with, but could not get past the cross-linking issues.

    I too would like a package deliverable of the final product (but if not I am happy to do it myself).

    For the final package there will definitely be a VI package. I was holding off until I get the additional things done. Consider the current version a prelease or beta and please send me your feedback/suggestions.

    I'm also looking for feedback and recommendations on a 'standard' method to store option/setting values in a running application as well as how to store them to file. How do you implement option values in your applications today?

    - Globals

    - FGVs

    - Super cluster in a shift register

    - INI file

    - XML file

    - ???

    My plan is to integrate this design with the options page template code to automate the load/save process in the options page as well as load/save to persistent storage (file) as much as possible.

×
×
  • Create New...

Important Information

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