Customizing OI to add step progress bar

Hello custom RTOI experts!  I am attempting to make a customization to the full-featured LabVIEW RTOI (for TestStand 3.0) in order to provide the seemingly simple feature of a step completion progress bar on the execution page of the tab control.  Let me explain a little behind the concept I'm going for.  There are some steps in my sequences that take a relatively long time (15 minutes or so).  During this period, a requirement of mine is to have a progress bar that gets updates every so often such that by the time the step would ordinary complete, the progress bar is at 100%.  Initial attempts involved a separate VI that managed the progress bars, but having yet another window is not the ideal UI design...  Instead, I was hoping to integrate this functionality into the RTOI so that each time a new step begins executing, additional custom data (the expected step duration) is (optionally) sent to the RTOI providing the progress update portion of the RTOI code the necessary data.
Is there any sample code out there that performs some similar task so that I can get a better feel for how the pieces fit together?  In particular, there are a few things that are befuddling me:
1) What is a good way to store this custom information (step duration) in the sequence file?  Should I modify the basic step types to add a new duration field which can be optionally set to something greater than the default, 0?
2) How should the step duration get passed to the RTOI?  My current thought is to override the PreStep engine callback to send the custom duration field in a custom UIMessage, but that may be partly because I'm not familiar enough with the structure of the data is that is that is accessible via the sequence context...
3) How do I link the progress bar data to the actual execution page that is currently being viewed.  Up to 4 executions can be running using the parallel model or the batch model in my sequences, so something would clearly need to be done so that when execution 1 is visible, the associated progress bar is shown, etc...  I'm assuming I can trap on some event when the user clicks on an execution in the list bar, but there is no similar code in the out-of-box RTOI - all that appears to be managed automatically by linking the controls to the execution manager.
Thanks for any pointers or code samples (or even suggested reading) that anyone can give.

Thanks for the response.
I may indeed want to use the ProgressPercent message, but I'm not so sure just yet.  I did not want to leave the responsibility of sending UIMessages up to the VIs and other code modules called by the sequence - I was hoping for a simple solution to provide a new field (ExpectedDuration) that can be set for any given step.  In this way, the RTOI can manage updating the progress simply by counting seconds.  Perhaps there is some timer callback that can be leveraged to perform this function?
What I have so far is as follows: I have a new step type called PassFailTestWithDuration.  It is a copy of the PassFailTest step type with the addition of a ExpectedDuration property and a new PreStep which calls the PostUIMessageEx with a custom event (10001).  The expected duration and the RunState.TestSockets.MyIndex both get passed as parameters.  Inside the RTOI, I have added a UserMessage callback VI which stores the data in the appropriate slot of a global (indexed by socket index).  (The global array is implemented as what I've heard called an action engine - there are init, read, and write actions that it can perform on data stored in the VI, and it is set as non-reentrant so that race conditions cannot occur).  Each entry in the global array has 2 fields - the expected duration, and the current elapsed time.  My idea was to continually update the current elapsed time for all active executions and simply show a progress bar for the "active" execution by displaying its elapsed time/expected duration in each necessary event...
I think my main question now is - how do you determine the RunState.TestSocket.MyIndex of the active execution in the execution manager (or application manager)?  It seems like such an obvious thing to want to know, but I don't see it anywhere.
Thanks again for any hints you can provide!

Similar Messages

  • How can add a progress bar into script?

    I got a script for gen pdf
    I want put a progress bar, and make it working
    but I don't know where I can put the progress bar
    and how
    var doc = app.documents; 
    app.findTextPreferences = null; 
    app.findTextPreferences.underline = true; 
    for(var i=0;i<doc.length;i++) 
            var found = doc[i].findText(); 
            var _pages = []; 
            for(var j=0;j<found.length;j++) 
                    var txfms = found[j].texts[0].parentTextFrames; 
                    for(var k=0;k<txfms.length;k++) 
            for(var j=0;j<_pages.length;j++) 
                    if(_pages[j] === _pages[j-1]) 
            if(_pages.length != 0) 
                    app.pdfExportPreferences.pageRange = _pages.toString(); 
                    doc[i].exportFile(ExportFormat.PDF_TYPE, new File(doc[i].fullName.toString().replace(/\.indd$/i,".pdf")), false); 
            _pages = []; 
    //=================================================================== Can I put progress bar in here?
               var counter = new Window("palette");
               counter.prompt = counter.add("statictext",[0,0,80,20]);
               var cells = app.activeDocument.allCellStyles;
               for(var i = cells.length-1; i > 0; i--){
               counter.prompt.text = String(i);
               cells[i].verticalJustification = VerticalJustification.bottomAlign;
    app.findTextPreferences = null;

    Hi Harvey,
    Try this,
    var doc = app.documents;
    app.findTextPreferences = null;
    app.findTextPreferences.underline = true;
    for(var i=0;i<doc.length;i++)
            var found = doc[i].findText();
            var _pages = [];
            for(var j=0;j<found.length;j++)
                    var txfms = found[j].texts[0].parentTextFrames;
                    for(var k=0;k<txfms.length;k++)
            for(var j=0;j<_pages.length;j++)
                    if(_pages[j] === _pages[j-1])
            if(_pages.length != 0)
                    app.pdfExportPreferences.pageRange = _pages.toString();
                    doc[i].exportFile(ExportFormat.PDF_TYPE, new File(doc[i].fullName.toString().replace(/\.indd$/i,".pdf")), false);
            _pages = [];
        var counter = new Window("palette");
        counter.prompt = counter.add("statictext",[0,0,80,20]);;
        var cells = app.activeDocument.allCellStyles;
        var w = new Window('palette');
        w.pbar = w.add('progressbar', undefined, 0, cells.length);
        w.pbar.preferredSize.width = 300;;
        w.pbar.value = 0;
        for(var i = cells.length-1; i > 0; i--)
            w.pbar.value += 1;
            counter.prompt.text = String(i);
            cells[i].verticalJustification = VerticalJustification.bottomAlign;
    app.findTextPreferences = null;

  • Script : How to add a progress bar to XMP Writing script ?

    Hi !
    I have this script that works flawlessly but when i execute it on big video files ( > 1GB) bridge doesn't repaint and it looks like it's stuck. I would like to have a progress bar showing % remaining on the task and the name of the file being treated. Can someone point me into the right direction as my adobe scripting knowledge is not that great.
    #target bridge  
    if( BridgeTalk.appName == "bridge" ) { 
    descToTitle = MenuElement.create("command", "Log Comment to Description", "at the end of Tools");
    descToTitle.onSelect = function () {
               if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
               var thumb = app.document.selections;
               for(var s in thumb){
                                            var selectedFile = thumb[s].spec;
                                            var myXmpFile = new XMPFile( selectedFile.fsName, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_UPDATE);
                                            var myXmp = myXmpFile.getXMP();
                                            var LogComment = myXmp.getProperty(XMPConst.NS_DM, "logComment");
                                            myXmp.deleteProperty(XMPConst.NS_DC, "description");
                                            myXmp.appendArrayItem(XMPConst.NS_DC, "description", LogComment, 0, XMPConst.ALIAS_TO_ALT_TEXT);
                                            myXmp.setQualifier(XMPConst.NS_DC, "description[1]", "", "lang", "x-default");
                                            if (myXmpFile.canPutXMP(myXmp)) {
                                             } else {
    Thx in advance for helping me !

    I am using this progress bar on bridge. I don't remember who gave it to me time ago.
    Anyway I have adapt it to your script:
    #target bridge  
    if( BridgeTalk.appName == "bridge" ) { 
    descToTitle = MenuElement.create("command", "Log Comment to Description", "at the end of Tools");
    descToTitle.onSelect = function () {
        if (ExternalObject.AdobeXMPScript == undefined) ExternalObject.AdobeXMPScript = new ExternalObject("lib:AdobeXMPScript");
        var thumb = app.document.selections;
        var progBar = new createProgressWindow("Work in Progress", "Please wait", false);
        for (var s in thumb) {
            if(thumb[s].hasMetadata) {
                var selectedFile = thumb[s].spec;
                var myXmpFile = new XMPFile( selectedFile.fsName, XMPConst.UNKNOWN, XMPConst.OPEN_FOR_UPDATE);
                var myXmp = myXmpFile.getXMP();
                var LogComment = myXmp.getProperty(XMPConst.NS_DM, "logComment");
                myXmp.deleteProperty(XMPConst.NS_DC, "description");
                myXmp.appendArrayItem(XMPConst.NS_DC, "description", LogComment, 0, XMPConst.ALIAS_TO_ALT_TEXT);
                myXmp.setQualifier(XMPConst.NS_DC, "description[1]", "", "lang", "x-default");
            progBar.updateProgress (Math.floor((Number(s)+1)*(100/thumb.length)), "Waiting, " + Math.floor((Number(s)+1)*(100/thumb.length)) + "% completed.");
            if (myXmpFile.canPutXMP(myXmp)) {
            } else {
    function createProgressWindow(title, message, hasCancelButton) {
        var win;
        if (title == null) title = "Work in progress";
        if (message == null) message = "Please wait...";
        if (hasCancelButton == null) hasCancelButton = false;
        win = new Window("palette", "" + title, undefined); = win.add("progressbar", {x: 20,y: 12,width: 300,height: 20}, 0, 100);
        win.stMessage = win.add("statictext", {x: 10,y: 36,width: 320,height: 20}, "" + message);
        win.stMessage.justify = 'center';
        if (hasCancelButton) {
            win.cancelButton = win.add('button', undefined, 'Cancel');
            win.cancelButton.onClick = function() {
                throw new Error('User canceled the pre-processing!');
        this.reset = function(message) {
   = 0;
            win.stMessage.text = message;
            return win.update();
        this.updateProgress = function(perc, message) {
            if (perc != null) {
       = perc;
            if (message != null) {
                win.stMessage.text = message;
        return win.update();
        this.close = function() {
            return win.close();;

  • How can i add a progress bar to my UIwebview

    i have a page in my application where i have a UIWebview what i want to do is have a progress bar somewhere on the screen to indicate the loading status on the page.

    Go to your xib file or storyboard file, then you should see Progress view in the objects.

  • How can I add a Progress bar to show the "render to JPG" progress?

    Hi everyone, I have a button which renders my component to
    How can I attach a progress bar to show the progress of the
    <mx:Button label="render" click="renderasJPEG ()"/>
    public function renderasJPEG( ):void
    convertToImage( component001, new JPEGEncoder( 100));
    private function convertToImage( object:IUICompon ent,
    encoder:IImageEncod er):void
    var base64string: String = ImageSnapshot. encodeImageAsBas
    ImageSnapshot. captureImage( object, 72, encoder));
    var variables:URLVariab les = new URLVariables( );
    variables.encoded = base64string;
    variables.type = "jpeg";
    var request:URLRequest = new URLRequest(" script_saveasima
    request.method = "POST"; = variables;
    navigateToURL( request, "_blank");
    Thanks in advance.

    I would have thrown a prompt to the user in the renderasJpeg
    function and removed it in last line of convertToImage function.
    Isn't this what you want?
    Hope this helps.

  • Add Progress Bar to a query component (ViewCriteria)

    I would like to add a progress bar (or any relevant component to show the process is going on) to QueryComponent (ViewCriteria).
    Please guide me how to achieve this.

    I have solved the problem:
         public Component getTableCellRendererComponent(JTable table, Object value,
              boolean isSelected, boolean hasFocus, int row, int column)
              if(value != null)
                   setString(((JProgressBar) value).getString());
                   setMinimum(((JProgressBar) value).getMinimum());
                   setMaximum(((JProgressBar) value).getMaximum());
                   setValue(((JProgressBar) value).getValue());
              return this;

  • Trying to add audio player progress bar

    I'd like to add a progress bar to my flash audio player.
    Right now you press a button, a certain sound loads and then plays.
    Here's part of the code:
    function playSong(e:Event):void{
        if (my_channel) {
        var myURL = ("mysong.mp3");
        my_sound = new Sound();
        my_sound.load(new URLRequest(myURL));
        my_channel =;
    In order to build a progress bar I wanted to find out the length or duration of the sound but I keep getting error messages or 0s in return
    trace (my_sound.duration);  
    tells me that duration is an undefined property
    trace (my_sound.length);
    trace (my_sound.position);
    trace (my_sound.bytesTotal);
    trace (my_sound.bytesLoaded);
    all give me a 0 in return
    Any idea why? Why can't I access the properties of my Sound?
    I'd also be very thankful for any other suggestions on how to add a progress bar. I searched a number of websites, but most samples are AS2 code...

    Duh! Once again I thought my comuter is faster than it actually is ;-)
    Thanks :-)

  • Progress bar for simple OI

    I have built a simple operator interface taking the refernce from pre exsit OI from NI. Now I want to add a progress bar showing the status of the no. of steps completed. looking at the previous examples i got an idea that using the sequence context property I can acesss no of steps in a step group and previous step index to know the current excuting step. Since the simple OI is event driven, How should I implement the logic to display the progress bar.

    your approach has one serious flaw:
    If you use flow control in your sequence in order to skip steps or repeat steps (loop), you will display wrong numbers.
    There are two possible ways to solve your question:
    - Work with UI Messages and send "ProgressPercent" messages after each step which indicates a new part of your test. See the Full-featured UI status bar as an example how this could be configured in the UI. Still, you have to read how to send UI Messages from your sequence....
    - You configure custom UI Messages in order to update a custom control on your UI.
    Other solutions are possible, but i don't recommend them.
    hope this helps,
    CEO: What exactly is stopping us from doing this?
    Expert: Geometry
    Marketing Manager: Just ignore it.

  • E-mail sending with progress bar

    OK so I have a application that allows the user to send an e-mail with multiple attachments. It works fine but I want to add a progress bar - when the user clicks SEND, a new window should pop-up with a progress bar and a OK button after the mail has been successfuly sent.
    Any ideas how to accomplish this?
    Mail sending is handled by this class and is called from a frame:
    import javax.mail.*;
    import javax.mail.internet.*;
    import javax.activation.FileDataSource;
    import javax.activation.DataHandler;
    import java.util.Properties;
    import java.util.Calendar;
    import java.util.Date;
    import java.util.Vector;
    public class Mailer implements Runnable {
    boolean success = false;
    String sendToAddress, ccAddress, sendFromAddress,
    subject, messageText, filename, smtpServer;
    mainFrame2 frame;
    public Mailer(String sendToAddress, String ccAddress, String sendFromAddress, String subject, String messageText, String filename,
    String smtpServer, mainFrame2 frame)
    this.sendToAddress = sendToAddress;
    this.ccAddress = ccAddress ;
    this.sendFromAddress = sendFromAddress;
    this.subject = subject;
    this.messageText = messageText ;
    this.filename = filename;
    this.smtpServer = smtpServer ;
    this.frame = frame;
    public void run() {  
    public void sendMail() {
    Properties props = System.getProperties();
    props.put("", smtpServer);
    Session session = Session.getInstance(props, null);
    MimeMessage msg = new MimeMessage(session);
    Multipart mp = new MimeMultipart();
    BodyPart body = new MimeBodyPart();
    BodyPart attachment = new MimeBodyPart();
    try {
    msg.setFrom(new InternetAddress(sendFromAddress));
    new InternetAddress(sendToAddress));
    msg.setRecipient(javax.mail.Message.RecipientType.CC, new InternetAddress(ccAddress));
    msg.setSentDate(new Date());
    msg.addHeaderLine("MIME-Version: 1.0");
    msg.addHeaderLine("Content-type: text/html; charset=\"windows-1251\"");
    FileDataSource fds = new FileDataSource(new File(filename));
    DataHandler dh = new DataHandler(fds);
    attachment.setFileName(filename.substring(filename.lastIndexOf("\\", filename.length())+1));
    // this here is for the attachments, I've already collected them into a Vector
    for(int i=0; i < frame.attachedFiles.files.size(); i++)
    int chertichka = frame.attachedFiles.files.get(i).toString().lastIndexOf("\\");
    String ime = frame.attachedFiles.files.get(i).toString().substring(chertichka+1);
    BodyPart attachment1 = new MimeBodyPart();
    FileDataSource fds1 = new FileDataSource(new File(frame.attachedFiles.files.get(i).toString()));
    DataHandler dh1 = new DataHandler(fds1);
    turgData.doc_to_attach = "";
    } catch (MessagingException e) {
    success = true;
    public static boolean isEmailAddress(String text)
    if(text.indexOf(" ")>-1) return false;
    int kliomba = text.indexOf("@");
    int dotCom = text.lastIndexOf(".");
    if(kliomba < 2 || kliomba >(text.length()-4)) return false;
    else if(dotCom > (text.length()-2)) return false;
    else return true;
    public boolean isSent()
    return success;
    Please provide some code on how to put a progress bar in a pop-up window after the user clicks SEND. Also, the send button should be disabled until the mail has been sent.
    PLZ help me out ;)))

    Check the links for Email Adapter,If u want to send the Attachment then give me ur mail id i will send you one doc which will explain u how to send Email in Attachment.
    Receiver Mail Adapter.
    eMail Reporting
    Reward points if Helpful

  • Help with adding a progress bar to my compare-object script

    I have a simple compare object script that I would like to add some kind of intelligent progress bar or countdown timer to.  The script takes anywhere from 1-12 hours to run depending on the folder sizes.  Here is the script:
    $internal = Get-ChildItem -Recurse -path C:\Folder1
    $external = Get-ChildItem -Recurse -path C:\Folder2
    Compare-Object -ReferenceObject $internal -DifferenceObject $external | Out-File C:\compare_list.txt
    I have a progress bar script that I found but I do not know how to implement it into my existing script.  Here it is:
    for ($i = 1; $i -le 100; $i++) {Write-Progress -Activity 'counting' -Status "
    $i percent" -PercentComplete $i ; sleep -Milliseconds 20}
    Any help is much appreciated.

    Hi Brisketx,
    In addition, to add a Progress Bar to Your PowerShell Script, this article may be helpful for you:
    Add a Progress Bar to Your PowerShell Script:
    I hope this helps.
    are trying to better understand customer views on social support experience, so your participation in this
    interview project would be greatly appreciated if you have time.
    Thanks for helping make community forums a great place.

  • Director 12 - progress bar

    I need to add a progress bar to the splash screen of a Director 12 .dcr which is hosted on a website.
    The progress bar doesn't have to show the exact time remaining before the main.dcr starts, it just gives the user a rough indication that "loading" is happening.
    I was thinking of using an animated .gif for this, making the .gif visible when the user clicks the Start button, but I don't knon how to do this in Director.
    Is there a standard way to make a loading-in-progress indicator in Director, for a web hosted .dcr?
    Thank you.

    Is this the kind of thing you are looking for?
    -- **Drop this Behavior on your progress bar**
    global gNetmovieID1
    global gCurrentSprite
    global gBarWidth
    global gBarConverter
    global gPercentText -- starts at 0% and ends at 100%
    global gStatList
    global gPercentDone
    on beginSprite me
      tellStreamStatus(TRUE) -- Turns on the stream status!!!
      floatPrecision = 2
      gCurrentSprite = me.spriteNum -- the current sprite "progress bar"
      gBarWidth = (sprite gCurrentSprite).width
      gBarConverter = (float(gBarWidth)) / 100
      gNetmovieID1 = preLoadNetThing("" & string(random(1000) ) ) -- preLoads your hosted .dcr file!!!
    on exitFrame me
      if Netdone(gNetmovieID1) = TRUE then
        gPercentText =  "100%"
        PLAY MOVIE ( "" ) -- plays your hosted .dcr file!!!
        -- This checks the download status and updates the "progress bar" and the gPercentText
        gStatList = getStreamStatus(gNetmovieID1)
        if (gStatList.bytesSoFar > 0) then
          gPercentDone = (gStatList.bytesSoFar * 100.0001) / gStatList.bytesTotal
          (sprite gCurrentSprite).width = integer (gPercentDone * gBarConverter)
          gPercentText = string(integer(gPercentDone) & "%")
          (sprite gCurrentSprite).width = 1
          gPercentText =  "0%"
        end if
      end if
    end if

  • Global Variable in Progress Bar

    I have an existing labview code that is comprised of a main vi, which is the user GUI, and several (approx 70) sub vi's. I am trying to add a progress bar to the front screen (User GUI) that will immediately increment after it hits certain sections of code. I am doing this using a global variable to store the value of the current progress, and then attempting to write to the progress bar on the main screen after each incrementation. Is there a way to link the value of the main progress bar to the global variable so that it updates as soon as the value is incremented? The problem I am facing is that when I update the global variable in a subvi, the progress bar takes the value of the subvi after it is completed, skipping all the numbers in between. I realize this is because I am not correctly writing to the progress bar, but I am unsure how to do so. If this isn't a good method, does anyone have any suggestions?  
    For Example:
    Main Vi           SubVi1        SubVi2
    (1-4)                (5-8)             (8-12)
    Progress Bar: 1 2 3 4 8 12
    (I did try the Progress Bar Library NI provides, but I need a progress bar on the Front Panel, not a pop up, so I can debug while the code runs)
    Thanks- Adam
    Go to Solution.

    I'd go with a Action Engine to update the progress bar VIA vi server referance.  Here's an example using a AE I have for just this type of progress bar.
    If you haven't read Ben action engine nugget, it should be required, you can find it here
    By constructing a "resource module" (a special AE that holds a referance to the resource to act on)  after initializint the AE you can call any "method" on the resorce from any location in the application instance.  These babys really let you do some interesting things to the GUI from wherever the real actions is taking place.
    Ex AE ‏15 KB ‏26 KB
    Progress Meth.ctl ‏11 KB

  • Progress bar in forms procedure

    i want to use the progress bar in one of my processing form the problem is that my processing button use 6 procedures example
    Update_Week_WIse_Location(:Week_Code); -- Database Procedure;
    SIngle_field; -- forms procedure
    Cumm_field_cust_wIse; -- forms procedure
    CumMingled_field; -- forms procedure
    Insert_local_customer_For_exch; -- forms procedure
    Insert_nonexIst_sp; -- forms procedure
    now i could not know which procedure take how much time i and the whole process takes little time i want to add the progress bar so the user
    feel easy that the process is running not stuck
    can anybody tell me the whole code for the progress bar
    early reply will be appreciatble

    Did you simply enter "progress bar" in the search box ? You will find tens of answers.

  • A Progress Bar for my large catalog

    I have a large catalog that I am putting on the web and I want people who have a slow connection to know that the file is still loading. Is there a way to add a progress bar to my file in Indesign CS5 or must I bring it into flash to optain this feature?
    Thanks in advance

    How is your file itself going to show a progres bar if it isn't loaded yet?  Seems to me it would have to load before it could do anything like that.
    Have you tried experimenting with different browsers and OS's to see what happens?  With Firefox 4 on Windows XP here I don't get a progress bar but I do get a little spinning graphic when I try to load a large PDF like this one here:

  • Draggable Progress Bar for swf - as2

    Hi there,
    I need to add a progress bar/playback controls for a presentation built in AS 2.0 which has such length voice over in it we've decided we need to give the user the ability to see where they are in the timeline and scrub through sections of the presentation. I'm familiar with stop and pause button code in situations like this, but it's the first time I've needed this kind of functionality. Presently, the first part of my project is set up with several scenes and is completely linear. The second section is interactive with swfs loaded into empty movieclips.
    I've found a number of references to progress bars online, but they're all for loading content, not for navigating once content is downloaded.
    Thanks so much in advance,

    determine the two extremes of your progress bar, say xLow and xHigh, though you could use a vertical scrollbar, too and use y values.  you can then use:
    var tl:MovieClip=this;
    delete this.onEnterFrame;
    function scrollF():Void{
    function parameterF(mc:MovieClip,x1:Number,y1:Number,x2:Number,y2:Number):Void{
    mc.m = (y1-y2)/(x1-x2);

Maybe you are looking for

  • Time Capsule won't connect to anything

    I was using my time capsule for about a year and never had an issue until I moved. Now that I'm in the new house, no devices will connect to it except my MacBook Pro. Hard wired LAN or over WIFI my smart TV won't connect neither will my PlayStation o

  • Is it possible to sandbox the entire system?

    DISCLAIMER This is partly just thinking out loud. There may be some completely obvious solution for achieving this that I have not come across. My ideas may be flawed. I saw the other thread about sandboxing but that had a different focus and went in

  • Apple Users Data Doesn't Show in PDF Form

    Hello, We created a form using Acrobat 9.  The form can be filled in and saved so people can email it back to us. Whenever I receive a form from somebody that is using an Apple, the characters they have typed, don't show up in the boxes unless you cl

  • Check in / out in document sets

    Hello I use document sets and want to enable check in/out. Whenever someone opens a file that's inside the set, changes something and saves it again, there's no question asked about the required metadata... There's also no green sign that shows that

  • How to run jar files on pocket pc

    hi, I have developed a .jar file on my desktop using jdk 1.4. Now i wnat to put that one on my pocket pc(compaq iPAQ)and make it run.What are the prerequisites i need and how can i get them.Please let me know in steps as i dont know any thing about p