More questions on asynchronous custom device

I am trying to create an asynchronous custom device for VeriStand and have the following questions:
a) At what rate is input channel being scanned and data pushed into the input FIFO of the custom device? Is the scan rate affected by whether the input channel is mapped to a Workspace control object or whether it is mapped to a simulation model (.dll file)  output?
b) At what rate is the asynchronous custome device real-time VI being executed? Is it at the same rate as the primary control loop rate? Can I change the execution rate of a custom device and how?
c) I have a quad-core PXI real-time platform. How can I assign the custom device to a specific processor, like what you do with a simulation model (.dll file) in the system definition file?
Thank you in advance.
Solved!
Go to Solution.

Data FIFO
The rate at which data is pumped to your Custom Device is static, and has nothing to do with whether the Workspace is connected, or whether a model is mapped to any of your channels. By default, data is pushed into your Custom Device's input FIFO every iteration of the Primary Control Loop. If the FIFO is full, the oldest data packet will be overwritten. Also, by default your outputs FIFO is checked ever iteration of the Primary Control Loop. You can, however, use the function NI VeriStand - Set Custom Device Decimation to tag a property on your custom device that will indicate to the system its expected decimation. If you set a decimation of 10, for example, the Primary Control Loop will only send new data every 10 iterations and only check for new data from your outputs FIFO every 10 iterations. This can help reduce the CPU load of your system if you don't need updates that often.
Similarly, you can use the function NI VeriStand - Set FIFO Depth to control the FIFO depths of your inputs and outputs FIFO respectively. By default both have depth 1.
Execution Rate
The rate at which your Custom Device executes depends entirely on how you set it up. You can, for instance, have your asynchronous Custom Device use its own timing and run at a completely independent rate from the system. Your VI could have a regular while loop with a 10ms timer in it, for instance, or it could be based off some hardware device timing.
You can also choose to tightly synchronize yourself with the Primary Control Loop. You do this by registering using a property that your Custom Device has a Timed Loop that will use the Device Clock. The Device Clock is a timing source that is ticked every iteration of the Primary Control Loop after Custom Device FIFOs have been updated. You register for this simply by calling the property NI VeriStand - Set Loop Type and specifying Timed Loop for loop type and Use Device Clock to be True. Then, as the template VI does, just wire the Device Clock into your timing source input for the Timed Loop. If you have specified a decimation factor, as mentioned above, you should probably also use this factor as your dt. This means if you have a decimation of 10, you should only execute your Timed Loop every 10 ticks of the Device Clock timing source.
Another easy way to synchronize yourself tightly with the Primary Control Loop with little hassle is to simply base your timing off the availability of new data in your Inputs or Outputs FIFO. To do this, you could just use a regular while loop, and then just wire -1 to the FIFO timeouts. Then your Custom Device will run as fast as data is being produced and consumed by the system.
Specifying a Processor
There is no built-in property for processor assignment, but it will be very easy for you to implement this yourself. You can specify the Processor to execute on in System Explorer by creating a custom property using NI VeriStand - Set Item Property. For instance, you could set an I32 property called "Processor", with -2 meaning auto-assign, and any non-negative value indicating a specific processor index. Set this property in one of your Custom Device configuration pages in System Explorer and then read the property in the Driver VI in the engine using NI VeriStand - Get Item Property. Then just wire the property value to the processor affinity input on your Timed Loop. You should, however, always check that that processor exists on the target. Otherwise the Timed Loop will report an error and abort. This is exactly what we do for models internally.
Jarrod S.
National Instruments

Similar Messages

  • Custom device FIFO questions

    Question again about custom device.
    If there are 200 output channels but every 100ms only 40 of them get updated by the driver.
    Is it possible to write only those 40 channel data to the device output FIFO at a time?
    What is the RT FIFO write speed when writing 200 channel data at a time?
    Thanks.
    Solved!
    Go to Solution.

    If your custom device is an inline custom device you may update only dedicated channels per iteration.
    In case of a asynchronous (parallel) custom device, you are forced to write always the entire stack of channels no matter what happend to the values. (if none of the values have changed, then it is ok to not call the FIFO Write function).
    The FIFO Write doesn't cause a huge overhead.
    You can easily benchmark that yourself though.
    Tom
    http://www.newgistics.com

  • How can I use Easy Custom Device Tool to do the same thing LabVIEW the Basic Averaged DC-RMS VI does

    I am using a cRio 9024 and am reading PWM with a 9205 analog input card.  It was suggested that I use the Basic Averaged DC-RMS VI to convert the PWM signal voltage into an analog signal (RMS value) for use in my system.  The issue is that the 9024 cannot use LabVIEW models (it is VxWorks). I am working through the Easy Custom Device Tool, and wonder if someone can guide me in the right direction.
    Solved!
    Go to Solution.

    Hello,
    Can you give more details about your VeriStand configuration ? Are you using the Scan Interface (and thus the Scan Engine Custom Device) or are you using the FPGA of your cRIO chassis to access the I/O ?
    If you are programming the FPGA and using a FPGA Personalty in VeriStand you can probably add the calculations such as RMS to the FPGA code directly.
    If you are using the Scan Engine, you will need a custom device. The Easy Custom  Device Tool is just a tool, you will need to know more about what a custom device is and how to develop one:
    - http://www.ni.com/white-paper/12712/en/
    Regards
    Eric M. - Application Engineering Specialist
    Certified LabVIEW Architect
    Certified LabWindows™/CVI Developer

  • ColdFusion 11: custom serialisers. More questions than answers

    G'day:
    I am reposting this from my blog ("ColdFusion 11: custom serialisers. More questions than answers") at the suggestion of Adobe support:
    @dacCfml @ColdFusion Can you post your queries at http://t.co/8UF4uCajTC for all cfclient and mobile queries.— Anit Kumar Panda (@anitkumar85) April 29, 2014
    This particular question is not regarding <cfclient>, hence posting it on the regular forum, not on the mobile-specific one as Anit suggested. I have edited this in places to remove language that will be deemed inappropriate by the censors here. Changes I have made are in [square brackets]. The forums software here has broken some of the styling, but so be it.
    G'day:
    I've been wanting to write an article about the new custom serialiser one can have in ColdFusion 11, but having looked at it I have more questions than I have answers, so I have put it off. But, equally, I have no place to ask the questions, so I'm stymied. So I figured I'd write an article covering my initial questions. Maybe someone can answer then.
    ColdFusion 11 has added the notion of a custom serialiser a website can have (docs: "Support for pluggable serializer and deserializer"). The idea is that whilst Adobe can dictate the serialisation rules for its own data types, it cannot sensibly infer how a CFC instance might get serialised: as each CFC represents a different data "schema", there is no "one size fits all" approach to handling it. So this is where the custom serialiser comes in. Kind of. If it wasn't a bit rubbish. Here's my exploration thusfar.
    One can specify a custom serialiser by adding a setting to Application.cfc:
    component {     this.name = "serialiser01";     this.customSerializer="Serialiser"; }
    In this case the value - Serialiser - is the name of a CFC, eg:
    // Serialiser.cfccomponent {     public function canSerialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return true;     }     public function canDeserialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return true;     }     public function serialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return "SERIALISED";     }     public function deserialize(){         logArgs(args=arguments, from=getFunctionCalledName());         return "DESERIALISED";     }     private function logArgs(required struct args, required string from){         var dumpFile = getDirectoryFromPath(getCurrentTemplatePath()) & "dump_#from#.html";         if (fileExists(dumpFile)){             fileDelete(dumpFile);         }         writeDump(var=args, label=from, output=dumpFile, format="html");     } }
    This CFC needs to implement four methods:
    canSerialize() - indicates whether something can be serialised by the serialiser;
    canDeserialize() - indicates whether something can be deserialised by the serialiser;
    serialize() - the function used to serialise something
    deserialize() - the function used to deserialise something
    I'm being purposely vague on those functions for a reason. I'll get to that.
    The first [issue] in the implementation here is that for the custom serialisation to work, all four of those methods must be implemented in the serisalisation CFC. So common sense would dictate that a way to enforce that would be to require the CFC to implement an interface. That's what interfaces are for. Now I know people will argue the merit of having interfaces in CFML, but I don't really give a [monkey's] about that: CFML has interfaces, and this is what they're for. So when one specifies the serialiser in Application.cfc and it doesn't fulfil the interface requirement, it should error. Right then. When one specifies the inappropriate tool for the job. What instead happens is if the functions are omitted, one will get erratic behaviour in the application, through to outright errors when ColdFusion goes to call the functions and cannot find it. EG: if I have canSerialize() but no serialize() method, CF will error when it comes to serialise something:
    JSON serialization failure: Unable to serialize to JSON.
    Reason : The method serialize was not found in component C:/wwwroot/scribble/shared/git/blogExamples/coldfusion/CF11/customerserialiser/Serialiser .cfc.
    The error occurred inC:/wwwroot/scribble/shared/git/blogExamples/coldfusion/CF11/customerserialiser/testBasic.c fm: line 4
    2 : o = new Basic();
    3 :
    4 : serialised = serializeJson(o);5 : writeDump([serialised]);
    6 :
    Note that the error comes when I go to serialise something, not when ColdFusion is told about the serialiser in the first place. This is just lazy/thoughtless implementation on the part of Adobe. It invites bugs, and is just sloppy.
    The second [issue] follows immediately on from this.
    Given my sample serialiser above, I then run this test code to examine some stuff:
    o = new Basic(); serialised = serializeJson(o); writeDump([serialised]); deserialised = deserializeJson(serialised); writeDump([deserialised]);
    So all I'm doing is using (de)serializeJson() as a baseline to see how the functions work. here's Basic.cfc, btw:
    component { }
    And the test output:
    array
    1
    SERIALISED
    array
    1
    DESERIALISED
    This is as one would expect. OK, so that "works". But now... you'll've noted I am logging the arguments each of the serialisation methods receives, as I got.
    Here's the arguments passed to canSerialize():
    canSerialize - struct
    1
    XML
    My reaction to that is: "[WTH]?" Why is canSerialize() being passed the string "XML" when I'm trying to serialise an object of type Basic.cfc?
    Here's the docs for canSerialize() (from the page I linked to earlier):
    CanSerialize - Returns a boolean value and takes the "Accept Type" of the request as the argument. You can return true if you want the customserialzer to serialize the data to the passed argument type.
    Again, back to "[WTH]?" What's the "Accept type" of the request? And what the hell has the request got to do with a call to serializeJson()? You might think that "Accept type" references some HTTP header or something, but there is no "Accept type" header in the HTTP spec (that I can find: "Hypertext Transfer Protocol -- HTTP/1.1: 14 Header Field Definitions"). There's an "Accept" header (in this case: "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8"), and other ones like "Accept-Encoding", "Accept-Language"... but none of which contain a value of "XML". Even if there was... how would it be relevant to the question as to whether a Basic.cfc instance can be serialised? Raised as bug: 3750730.
    serialize() gets more sensible arguments:
    serialize - struct
    1
    https://www.blogger.com/nullserialize - component scribble.shared.git.blogExamples.coldfusion.CF11.customerserialiser.Basic
    2
    JSON
    So the first is the object to serialise (which surely should be part of the question canSerialize() is supposed to ask, and the format to serialise to. Cool.
    canDeserialize() is passed this:
    canDeserialize - struct
    1
    JSON
    I guess it's because it's being called from deserializeJson(), so it's legit to expect the input value is indeed JSON. Fair enough. (Note: I'm not actually passing it JSON, but that's beside the point here).
    And deserialize() is passed this:
    deserialize - struct
    1
    SERIALISED
    2
    JSON
    3
    [empty string]
    The first argument is the value to work on, and the second is the type of deserialisation to do. I have no idea what the third argument is for, and it's not mentioned directly or indirectly on that docs page. So dunno what the story is there.
    The next issue isn't a code-oriented one, but an implementation one: how the hell are we expected to work with this?
    The only way to work here is for each function to have a long array of IF/ELSEIF statements which somehow identify each object type that is serialisable, and then return true from canSerialise(), or in the case of serialize(), go ahead and do the serialisation. So this means this one CFC needs to know about everything which can be serialised in the entire application. Talk about a failure in "separation of concerns".
    You know the best way of determining if an object can be seriaslised? Ask it! Don't rely on something else needing to know. This can be achieved very easily in one of two ways:
    Check to see if the object implements a "Serializable" interface, which requires a serialize() method to exist.
    Or simply take the duck-typing approach: if a CFC implements a serialize() method: it can be serialised. By calling that method. Job done.
    Either approach would work fine, keeps things nicely encapsulated, and I see merits in both. And either make far more sense than Adobe's approach. Which is like something from the "OO Failures Special Needs" class.
    Deserialisation is trickier. Because it relies on somehow working out how to deserialise() an object. I'm not sure of the best approach here, but - again - how to deserialise something should be as close to the thing needing deserialisation as possible. IE: something in the serialised data itself which can be used to bootstrap the process.
    This could simply be a matter of specifying a CFC type at a known place in the serialised data. EG: Adobe stipulates that if the serialised data is JSON, and at the top level of the JSON is a key eg: type, and the value is an extant CFC... use that CFC's deserialize() method. Or it could look for an object which contains a type and a method, or whatever. But Adobe can specify a contract there.
    The only place I see a centralised CFC being relevant here is for a mechanism for handling serialised data that is neither a ColdFusion internal type, nor identifiable as above. In this case, perhaps they could provide a mechanism for a serialisation router, which basically has a bunch of routes (if/elseifs if need be) which contains logic as to how to work out how to deserialise the data. But it should not be the actual deserialiser, it should simply have the mechanism to find out how to do it. This is actually pretty much the same in operation as the deserialize() approach in the current implementation, but it doesn't need the canDeserialize() method (it can return false at the end of the routing), and it doesn't need to know about serialising. And also it's not the main mechanism to do the deserialisation, it's just the fall back if the prescribed approach hasn't been used.
    TBH, this still sounds a bit jerry-built, and I'm open for better suggestions. This is probably a well-trod subject in other languages, so it might be worth looking at how the likes of Groovy, Ruby or even PHP (eek!) achieve this.
    There's still another issue with the current approach. And this demonstrates that the Adobe guys don't actually work with either CFML applications or even modern websites. This approach only works for a single, stand-alone website (like how we might have done in 2001). What if I'm not in the business of building websites, but I build applications such as FW/1 or ColdBox or the like? Or any sort of "helper" application. They cannot use the current Adobe implementation of the customserializer. Why? Because the serialisation code needs to be in a website-specific CFC. There's no way for Luis to implement a custom serialiser in ColdBox (for example), and then have it work for someone using ColdBox. Because it relies on either editing Application.cfc to specify a different CFC, or editing the existing customSerializer CFC. Neither of which are very good solutions. This should have been immediately apparent to the Adobe engineer(s) implementing this stuff had they actually had any experience with modern web applications (which generally aren't just a single monolithic site, but an aggregation of various other sub applications). Equally, I know it's not a case of having thought about this and [I'm just missing something], because when I asked them the other day, at first they didn't even get what I was asking, but when I clarified were just like "oh yeah... um... err... yeah, you can't do that. We'll... have to... ah yeah". This has been raised as bug 3750731.
    So I declare the intent here valid, but the implementation to be more alpha- / pre-release- quality, not release-ready.
    Still: it could be easily deprecated and rework fairly easily. I've raised this as bug 3750732.
    Or am I missing something?
    Adam

    Yes, you can easily add additional questions to the Lookup.WebClient.Questions Lookup to allow some additional choices. We have added quite a few additional choices, we have noticed that removing them once people have selected them causes some errors.
    You can also customize the required number of questions to select when each user sets them up as well as the number required to be correct to reset the password, these options are in the System Configuration settings.
    If you need multi-language versions of the questions, you will also need to modify the appropriate language resource file in the xlWebApp.war file to provide the necessary translations for the values entered into the Lookup.

  • Calling Main and Extra Pages of Custom Device(s) from LabVIEW

    Hi,
    I am currently evaluating VeriStand (VeriStand 2011) and its control from LabVIEW using .NET APIs.
    I am trying to use LabVIEW to add and configure custom devices for a given system definition file.
    For that I am using a subpanel, the same way it is done in the System Explorer.
    It is almost working.
    I only get errors from VIs that are dynamically called from the Custom Devices API. These VI's are part of an lvlib which is called "Custom Devices Storage.lvlib".
    I can't find this lvlib on my Computer. So, I guess, this error is normal. The only way to get rid of this error would be to load this lvlib in memory, but how ?
    An example of a dynamically loaded VI from the Custom Device API :
    If I can't configure a Custom Device inside my own Human Man Interface, there is no way I use VeriStand in the future. I don't wan't an operator or an administrator to open the System Explorer and change anything else than Custom Devices that may change in several of our test benches.
    Is there a way to do that or should I throw VeriStand to the trashcan ?
    Thanks in advance for your answer(s).
    Regards,
     

    Hi DaHelmut,
    First of all, I apologize for the lack of applicable replies. What you're attempting isn't something we usually encounter so our team didn't quite understand.
    I'll restate what you want to make sure its clear: You want to make your own version of system explorer fir your team to edit system definitions with. You also want it to support configuring custom devices. Therefore, you need custom devices to work inside your system explorer just like they do inside the shipping system explorer.
    This is technically possible, and I will help you accomplish this with some advice, however I have never seen this done before so it might take us a while to figure out all the issues. Typically people developing a custom GUI for a test bench just use the system definition API directly instead of using custom device's as-is... which is more difficult, and I agree your approach is better if it works. However, most test benches have a known set of custom devices (maybe just XCP/CCP and scan engine) so they only need to use the system definition API for maybe a few custom devices... not any device.
    First things I should mention:
    Editing a system definition, either through your custom gui and therefore through the system definition API, or through the system explorer... always requires a PC or Full development license. An operator licenses will never be able to edit system definitions no matter what.
    There is a set of VIs provided by the ECUMC toolkit to add/remove/edit system definitions with the XCP/CCP custom device. You would have to put your own GUI on top, but the VIs are installed here: <\LabVIEW>\vi.lib\ECUMC\NIVS
    I have an unreleased set of VIs that do the same thing for the scan engine and ethercat custom device I can provide
    If you still want to create your own system explorer thats capable of loading and configuring any custom device, here are some suggestions:
    Custom devices are built into LLBs that include all of their dependencies, so they can be loaded by the LabVIEW run time engine. If you create a VI that loads custom device's, you should be careful to avoid cross linking corrupting your development system or your custom device's. For example your system explorer might use "Get File Extension.vi" from vi.lib, but the custom device you're loading might also use this VI and therefore its linked to a copy inside its LLB. You will know when cross linking happens when the LabVIEW load warning dialog appears saying "vi X loaded vi Y from Z instead of A". If that happens, do not save. To avoid this entirely, it might be easiest to test your system explorer only as a compiled exe.
    As you saw, some custom device API VIs used by custom device developers make dynamic VI calls to an in-memory library named "Custom Device Storage.lvlib". Since this library is part of the shipping system explorer.exe source, these dynamic calls will error when not run inside the shipping system explorer.exe. There are two types that must be handled separately.
    Some custom device APIs like "NI VeriStand - Signal When Ready for Shutdown.vi" just make this dynamic call, and will simply return an error. These are mostly system explorer GUI specific custom device APIs. To avoid this error, you must create and bring this VI into memory yourself. So create that library and the stub VIs you need, then place static VI references to those stub VIs on your custom system explorer's block diagram. That will bring them into memory so when the custom device VIs try to dynamically call them, it will not error.
    Most custom device APIs like "NI VeriStand - Get Item Description.vi" make the dynamic call and instead of simply erroring, they will instead catch the error and switch to using a .NET implementation of the API call. I advise looking at the block diagram of this VI and then the corresponding offline API VIs to better understand this redirect system. Unfortunately, this redirection gets the offline API VI path relative to vi.lib which doesn't exist for exe's. So when you build your custom system explorer into an exe, you will need to place the "NI VeriStand\Custom Device Offline API" folder adjacent to the exe with these VIs for them to be found because the "vi library" primitive returns the exe's directory when inside an exe
    Let me know if that helps or if you have questions.
     

  • Custom device / I am trying to use a vehicle controller model developed in LabVIEW with compactRIO (cRIO-9024)

    Now I have developed a vehile controller model with LabVIEW so as to run on VxWorks operating system. ( compactRIO cRIO-9024)
    And I converted a controller model of labview into *.lvmodel in order to use it as I did with simulink models. 
    However, converted *.lvmodel was not supported for VxWorks operating system. so after searching for this, I found out that I have to use a custom device. 
    I am now studying the custom device, but it looks diffcult because I dont have much experience in real-time system.
    Here are my questions.
    1. Simulation model in VeriStand
    Should I convert a labview controller model into *.lvmodel even if I use the custom device in order to run on VxWorks operating system? 
    If not, what should I do after building a controller model with labview?
    2. Operating system
    It is silly question. anyway, as long as I run a controller model on compactRIO cRIO-9024, the operating system always has to be set to VxWorks. Is it right?
    3. Custom device
    This is the most difficult thing. I dont know even what to do. What functions should be inside a custom device template tool? The controller model send output signals to a vehicle model, and receive input signals from a vehicle model.
    Thank you in advance. 
    Hognjun

    Hi,
    You should post this on the Veristand Forum.
    http://forums.ni.com/t5/NI-VeriStand/bd-p/440
    Ravi

  • PXI-6624 custom device

    Hello,
    Sorry for my bad english.
    I start with the custom device.
    I want use two PXI-6624 with Veristand for counter I/O.
    So I try to creat two easy custom device, one for each card.
    The program is ok in Labview, the Configuraton/Engine build too. I can interget it, in Veristand without problems.
    The target deployment is well but I don't see anything in output with an osciloscop.
    I think it's because of the connection beetween the PXI and the device.
    You can find, in attached files, the program for one of the two card.
    It's the more simple of the two device, just two input and two ouput.
    Thank for your advice

    Hello HervéM,
    Unfortunately there is no attachment.
    Could you spot below the files you wanted to attach ?
    Regards,
    Valentin
    Certified TestStand Architect
    Certified LabVIEW Developer
    National Instruments France
    #adMrkt{text-align: center;font-size:11px; font-weight: bold;} #adMrkt a {text-decoration: none;} #adMrkt a:hover{font-size: 9px;} #adMrkt a span{display: none;} #adMrkt a:hover span{display: block;}
    Travaux Pratiques d'initiation à LabVIEW et à la mesure
    Du 2 au 23 octobre, partout en France

  • Running unit tests on inline hardware custom device

    How to do unit tests for Inline Hardware Custom Devices?
    I get this error after creating a unit test.
    Possible reason(s):
    Cannot connect to the target. Please ensure that the VI Server setting is enabled and deployed to the target. Also, make sure that the port number is correct and that this machine is allowed to connect through VI Server.

    wegunterjrASI, 
    I have a few follow up questions for you to gain a better understanding of your application: 
    1). What are you using to do the unit test (NI’s unit test framework or VI tester from JKI)?
    2). What are you conducting the unit test on (RT Driver or something on the host machine)? 
    3). Are the unit test VIs under the target in the LabVIEW project? 
    4). Are you able to run a simple unit test? 
    Screenshots are always appreciated. 
    Regards, 
     

  • Execution of RT driver VIs in custom device

    Hi All
    I am building a custom device wherein I am expecting some user input.( user provides input on the main page of the custom device).
    Once the input is provided , based on it i am reading specific data from file and creating channels and section.
    Previously creation of channels and section i was doing in initailiazation code.  But now As i am expecting user input i cannot create those channels in initialization(reason is before getting input channels will be created which i dont want. My channel creation depends on the user input ).
    So this channel creation logic I am now writing in RT driver VI along with my main logic of reading and writing of channels. For this I just want to know when does exactly RT driver VI starts its execution ?
    If the RT driver Vi starts execution after adding custom deivce in veristand and after giving the user input then my purpose will be solved.
    I hope i have explained my question correctly.
    Solved!
    Go to Solution.

    The driver starts after the system definition is deployed.  I don't think you can add channels in the driver VI.  Nor do I think you want to, because you won't have an interface to them in the system definition.  Without an interface to the channels, i.e. mapping, how will you get data into and out of them?  I think your plan to create channels based on user input and config data is fine.  I suggest you implement in the main page or in custom pages under the main page.
    -Steve K

  • Question to Adobe Customer Support or to Adobe Technical Support.

    I have Adobe Dreamweaver CC Version 13.1 Build 6443 in Spanish, obtained via a Creative Cloud Subscription. How can I see it in English or modify it to an English (US) version? My Adobe ID is [email protected] . MORE, how can I send this question to Adobe Customer Support or to Adobe Technical Support?

    See also
    How can I change the language of my Creative Cloud installation?
    http://forums.adobe.com/thread/1248798

  • Question about the custom panel language

    I have a question about the custom panel language...
    The document you provide seems to lack details on some features. Namely the icon and picture widgets. I see from looking at the examples and other vendor's web pages that these features exist, but I don't find any detailed descriptions of them in the documentation. Is there a more complete document describing these and other features...
    http://www.adobe.com/products/xmp/custompanel.html
    Alternatively, can someone fill me in on the syntax and options for at least the icon and picture widget. For instance, how do you load external icons or pictures...
    Tom

    Gunar,
    It could be interesting to have something like
    icon(url: 'http://www.adobe.com/Images/logo.gif', width: 20, height: 20);
    or better
    picture(url: 'http://www.adobe.com/Images/logo.gif', width: 20, height: 20);
    for the pictures and
    include(url: 'http://www.adobe.com/xml/custompanel/camera1.txt');
    for include the cusmtom panel's dynamic portions
    Juan Pablo

  • Easy Custom device tool - how to get actual waveforms or data from a channel

    I want to use a custom device to do the simulation for my system, but I am not sure how to get channel data to it?  I am using a cRio 9024, and 6 modules for signal input and signal output.  I did the walk through, but it is not connecting to channel data.  Any thoughts?
    Attachments:
    Add.zip ‏164 KB

    Sorry that my previous response was so brief - I didn't have the opportunity to take a look at your code last Friday (and on top of that, I poorly worded my question about running your code in LabVIEW).
    You would want to include logic to communicate with your cRIO in the Execute VI - you don't need to add anything to the Channel Data or System Data controls to get the data into your custom device. If you're using the Scan Engine, this would mean just dragging and dropping Scan Engine IO variables into the Execute VI and then operating on the data you read out of them. Now, if you want to pass data out of the custom device to other parts of VeriStand, you would need to add items to Channel Data for each value you want to pass out of the custom device.
    When I mentioned running your code in LabVIEW, the idea I was trying to get at is creating a separate test project to verify that the logic you have implemented in your Execute VI works apart from the custom device architecture. Now that I've had a chance to take a look at your code, I see that the logic to communicate with the cRIO hasn't been implemented yet. As such, that original suggestion doesn't make sense - sorry for the confusion.
    Also, just so you're aware, you'll need to modify your custom device project to allow the custom device to be compiled for a VxWorks target. To do so, add your cRIO to the project as a new target and then copy all of your custom device files to the cRIO controller. You'll also need to make some modifications to the build specification to get everything to compile correctly.
    Finally, I also notice that in your init VI, you don't pass a file path to the Open/Create/Replace file VI, which will likely cause some problems when you try to run the device.
    Regards,
    Ryan K.

  • Why does my custom device break only when VeriStand tries to run it?

    Hello,
    I have a custom device, it's been working for awhile now, today I made some changes to add some more functionality and now VeriStand tells me the RT driver is no longer executable.
    I didn't change my build configuration or add any functionas that might bring in some external DLL or something that might be linking incorrectly.  
    Any thoughts to how I might go about narrowing this down.  The problem is only at runtime in VeriStand.  The built LLB has no issues, the development source has no issues, it's only when VeriStand tries to deploy that there is an issue so there has to be something that's not linked properly yes?
    The system is not RT, it's just deploying on Windows using a PXIe.
    Post CLD and when I'm a CLA when someone asks who I am, I can spin around in my chair and say "I am... the architect."
    Solved!
    Go to Solution.

    I don't know for sure the exact cause, but I ended up just eliminating portions of the driver code piece by piece to narrow down what was causing the issue. It turned out to be a debug VI that I've used many times before in various projects, but which contains the "Call Chain" LabVIEW primitive, but aside from that, it's just some simple string manipulation.  So I don't know if it was just some random edge case that only occurred when executing under VeriStand's own underlying LabVIEW code but for whatever reason, it was breaking the driver VI.
    So, solved the problem, but the cause, I can't quite say.
    Post CLD and when I'm a CLA when someone asks who I am, I can spin around in my chair and say "I am... the architect."

  • Why do i have to pay $100 more than a new customer for the new 3gs

    im 1 yr in to a 2 yr contract on my iphone 3g. when i go to preorder my new 3gs phone the price is $100 more than a new customer. this isnt really a question but a complaint that im afraid niether apple nor att will give a hoot about. how bout some love for customer loyalty?

    This has nothing to do with customer loyalty and has everything to do with subsidized phones. You must fulfill your existing contract requirement for an existing subsidized phone before you are eligible for upgrade or the fully subsidized price with a new phone. The same applies with every carrier in regards to subsidized phones. The has been standard policy with every carrier in the U.S. in regards to subsidized phones for the last 10 years plus.
    http://www.att.com/Common/merger/files/pdf/iPhone/PricingUpgradingFAQs.pdf

  • RT Logging Custom Device error

    I am trying to deploy the custom device RT Logging (Downloaded from NI site) to my cRIO 9024. But I am getting error while deployment.
    Can someone please help me out???
    Attachments:
    RT Logging Custom Device Error.JPG ‏185 KB

    Custom devices need to be compiled for the target they're deployed to, so unless they are specifically written for VxWorks, they're not going to work.  The custom device you're referring to (I assume it's from this page?) is just an example and not a full-featured custom device, and was not compiled or set up for VxWorks.
    However, NI VeriStand 2010 ships with a better RT data logger called the "Embedded Data :Logger".  Use this custom device instead since it has a lot more features and has both PharLap and VxWorks distributions.
    Devin K
    Systems Engineering - RTT & HIL

Maybe you are looking for