US20070094642A1 - Graphical Program Execution On A Handheld Computer - Google Patents

Graphical Program Execution On A Handheld Computer Download PDF

Info

Publication number
US20070094642A1
US20070094642A1 US11/560,899 US56089906A US2007094642A1 US 20070094642 A1 US20070094642 A1 US 20070094642A1 US 56089906 A US56089906 A US 56089906A US 2007094642 A1 US2007094642 A1 US 2007094642A1
Authority
US
United States
Prior art keywords
graphical program
computing device
handheld computer
graphical
executing
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Abandoned
Application number
US11/560,899
Inventor
Andrew Dove
Hugo Andrade
Darshan Shah
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
National Instruments Corp
Original Assignee
Individual
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Individual filed Critical Individual
Priority to US11/560,899 priority Critical patent/US20070094642A1/en
Assigned to NATIONAL INSTRUMENTS CORPORATION reassignment NATIONAL INSTRUMENTS CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: ANDRADE, HUGO, DOVE, ANDREW, SHAH, DARSHAN
Publication of US20070094642A1 publication Critical patent/US20070094642A1/en
Priority to US11/853,086 priority patent/US7765278B2/en
Priority to US13/303,642 priority patent/US8656373B2/en
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • G06F8/61Installation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/04Protocols specially adapted for terminals or networks with limited capabilities; specially adapted for terminal portability
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • H04L67/125Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks involving control of end-device applications over a network
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/24Arrangements for testing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04MTELEPHONIC COMMUNICATION
    • H04M1/00Substation equipment, e.g. for use by subscribers
    • H04M1/72Mobile telephones; Cordless telephones, i.e. devices for establishing wireless links to base stations without route selection
    • H04M1/724User interfaces specially adapted for cordless or mobile telephones
    • H04M1/72403User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality
    • H04M1/72406User interfaces specially adapted for cordless or mobile telephones with means for local support of applications that increase the functionality by software upgrading or downloading

Definitions

  • the present invention relates to the field of graphical programming, and more particularly to a system and method for executing a graphical program on a portable computing device, such as a personal digital assistant (PDA) device.
  • a portable computing device such as a personal digital assistant (PDA) device.
  • PDA personal digital assistant
  • high level text-based programming languages have been used by programmers in writing application programs.
  • Many different high level programming languages exist including BASIC, C, Java, FORTRAN, Pascal, COBOL, ADA, APL, etc.
  • Programs written in these high level languages are translated to the machine language level by translators known as compilers or interpreters.
  • compilers or interpreters The high level programming languages in this level, as well as the assembly language level, are referred to herein as text-based programming environments.
  • a user often must substantially master different skills in order to both conceptualize a problem or process and then to program a computer to implement a solution to the problem or process. Since a user often is not fully proficient in techniques for programming a computer system in a text-based environment to implement his solution, the efficiency with which the computer system can be utilized often is reduced.
  • Examples of fields in which computer systems are employed to interact with physical systems are the fields of instrumentation, process control, industrial automation, and simulation.
  • Computer measurement and control of devices such as instruments or industrial automation hardware has become increasingly desirable in view of the increasing complexity and variety of instruments and devices available for use.
  • U.S. Pat. Nos. 4,901,221; 4,914,568; 5,291,587; 5,301,301; and 5,301,336; among others, to Kodosky et al disclose a graphical system and method for modeling a process, i.e., a graphical programming environment which enables a user to easily and intuitively model a process.
  • the graphical programming environment disclosed in Kodosky et al can be considered a higher and more intuitive way in which to interact with a computer.
  • a graphically based programming environment can be represented at a level above text-based high level programming languages such as C, Basic, Java, etc.
  • the method disclosed in Kodosky et al allows a user to construct a diagram using a block diagram editor.
  • the block diagram may include a plurality of interconnected icons such that the diagram created graphically displays a procedure or method for accomplishing a certain result, such as manipulating one or more input variables and/or producing one or more output variables.
  • data structures may be automatically constructed which characterize an execution procedure which corresponds to the displayed procedure.
  • the graphical program may be compiled or interpreted by a computer.
  • Kodosky et al teaches a graphical programming environment wherein a user places or manipulates icons and interconnects or “wires up” the icons in a block diagram using a block diagram editor to create a graphical “program.”
  • a graphical program for performing an instrumentation, measurement or automation function such as measuring a Unit Under Test (UUT) or device, controlling or modeling instruments, controlling or measuring a system or process, or for modeling or simulating devices, may be referred to as a virtual instrument (VI).
  • UUT Unit Under Test
  • VI virtual instrument
  • a user can create a computer program solely by using a graphically based programming environment.
  • This graphically based programming environment may be used for creating virtual instrumentation systems, modeling processes, control, simulation, and numerical analysis, as well as for any type of general programming.
  • a graphical program may have a graphical user interface.
  • a user may create a front panel or user interface panel.
  • the front panel may include various graphical user interface elements or front panel objects, such as user interface controls and/or indicators, that represent or display the respective input and output that will be used by the graphical program or VI, and may include other icons which represent devices being controlled.
  • the front panel may be comprised in a single window of user interface elements, or may comprise a plurality of individual windows each having one or more user interface elements, wherein the individual windows may optionally be tiled together.
  • the user can place terminal icons in the block diagram which may cause the display of corresponding front panel objects in the front panel, either at edit time or later at run time.
  • the front panel may comprise front panel objects, e.g., the GUI, embedded in the block diagram.
  • the user may select various function nodes or icons that accomplish his desired result and connect the function nodes together.
  • the function nodes may be connected in one or more of a data flow, control flow, and/or execution flow format.
  • the function nodes may also be connected in a “signal flow” format, which is a subset of data flow.
  • the function nodes may be connected between the terminals of the various user interface elements, e.g., between the respective controls and indicators.
  • the user may create or assemble a graphical program, referred to as a block diagram, graphically representing the desired process.
  • the assembled graphical program may be represented in the memory of the computer system as data structures and/or program instructions.
  • the assembled graphical program i.e., these data structures, may then be compiled or interpreted to produce machine language that accomplishes the desired method or process as shown in the block diagram.
  • Input data to a graphical program may be received from any of various sources, such as from a device, unit under test, a process being measured or controlled, another computer program, or from a file.
  • a user may input data to a graphical program or virtual instrument using a graphical user interface, e.g., a front panel as described above.
  • the input data may propagate through the data flow block diagram or graphical program and appear as changes on the output indicators.
  • the front panel can be analogized to the front panel of an instrument.
  • the front panel can be analogized to the MMI (Man Machine Interface) of a device.
  • the user may adjust the controls on the front panel to affect the input and view the output on the respective indicators.
  • the front panel may be used merely to view the input and output, or just the output, and the input may not be interactively manipulable by the user during program execution.
  • graphical programming has become a powerful tool available to programmers.
  • Graphical programming environments such as the National Instruments LabVIEW product have become very popular.
  • Tools such as LabVIEW have greatly increased the productivity of programmers, and increasing numbers of programmers are using graphical programming environments to develop their software applications.
  • graphical programming tools are being used for test and measurement, data acquisition, process control, man machine interface (MMI), supervisory control and data acquisition (SCADA) applications, simulation, image processing/machine vision applications, and motion control, among others.
  • MMI man machine interface
  • SCADA supervisory control and data acquisition
  • PDAs In general, small form factor devices such as PDAs present certain issues for programs with graphical content, such as graphical user interfaces. For example, PDAs generally have reduced processor and memory capabilities compared to standard desktop computers, and also generally have more limited display capabilities. PDAs also generally have reduced capabilities in the types of programs they can execute.
  • One embodiment of the present invention comprises a system and method for deploying one or more graphical programs on a portable computing device.
  • the portable computing device comprises a personal digital assistant (PDA) device.
  • PDA personal digital assistant
  • portable computing devices include mobile terminals, handheld computers, wearable devices (e.g., wristwatch computers), “smart” cellular telephones, game consoles, global positioning system (GPS) units, electronic textbook devices, etc.
  • the one or more graphical programs may first be created, e.g., may be created using a graphical programming development environment executing on a desktop computer system or workstation.
  • the graphical program(s) may be created or assembled by the user arranging on a display a plurality of nodes or icons and then interconnecting the nodes to create the graphical program(s).
  • data structures or code
  • the nodes may be interconnected in one or more of a data flow, control flow, and/or execution flow format.
  • the graphical program may thus comprise a block diagram having a plurality of interconnected nodes or icons that visually indicate the functionality of the program.
  • the graphical program may implement any desired function.
  • the graphical program may also include a user interface portion or front panel portion.
  • the graphical program may also include a user interface portion or front panel portion.
  • the user may assemble the user interface on the display.
  • the user interface portion may be specified in the block diagram.
  • the user may use the LabVIEW graphical programming development environment to create the graphical program.
  • the user may then select an option to build an executable for the portable computing device, e.g., PDA device.
  • the user may select an option from a menu in the graphical programming development environment to create a “build” or select an option to build an executable that will execute on a portable computing device.
  • the user may be prompted to specify or select one or more graphical programs from which the user desires to create the executable. As one example, this may involve selecting the graphical program(s) created as described above. In one embodiment, the user may select one main graphical program and a plurality of sub-graphical programs. Alternatively, the user may select a single graphical program or a plurality of different graphical programs for which the user desires to create an executable. The user may select the one or more graphical programs in any of various ways. For example, selecting the graphical program(s) may comprise the user browsing through a file system to obtain the graphical programs, or dragging and dropping icons from a palette onto an icon for the PDA, or other appropriate selection methods.
  • the user may not select the “build” option and then specify the graphical program(s) to include in the build. For example, if the user is currently viewing or editing a graphical program within the graphical programming development environment, then the user may simply select a “Deploy to PDA” menu option to deploy the current graphical program to the portable computing device.
  • the system may display a configuration diagram which includes icons for respective graphical programs and an icon for the PDA device. In this example, the user may deploy one or more graphical programs on a PDA by dragging and dropping one or more graphical program icons on the PDA icon.
  • the one or more selected graphical programs may then be converted to an executable format that can be executed by the portable computing device.
  • a software program may operate to automatically, i.e., programmatically, convert the one or more graphical programs to the executable format.
  • the one or more graphical programs may be initially represented as a plurality of data structures that define or specify the operation of the respective graphical programs.
  • the conversion software program may operate to access these data structures from memory and convert the data structures to an executable format, e.g., machine language code or an interpretable script or other similar executable format, wherein this executable can be executed by the portable computing device.
  • the graphical program is converted to an executable by first converting the graphical program into a text-based program, such as a C language program.
  • the text-based program may then be compiled to machine code to produce the executable code, wherein the executable code can be executed by the portable computing device.
  • the steps of converting the graphical program into a text-based program and compiling the text-based program occurs programmatically, i.e., is performed by software, and is preferably performed invisibly to the user.
  • various run-time software may be used to facilitate generation of the executable from the graphical program(s).
  • this run-time software may comprise serial, interface, and file I/O software, as well as user interface software, math software, and data type software.
  • This run-time software may be useful and/or necessary because the portable computing device may not inherently include a graphical program execution engine. Hence, the executable may require additional information that is not already contained within the data structures that correspond to the graphical programs that have been created.
  • the executable may be transferred to the portable computing device, e.g., PDA. In one embodiment, this may involve using a transfer program, such as a “hot sync” program to transfer the executable to the portable computing device.
  • the portable computing device may be physically coupled to the computer system via a wire or cable, e.g., through a serial cable, and the executable may be transferred over this cable to the portable computing device.
  • the executable may be transferred in a wireless fashion to the portable computing device and deployed on the device in a wireless fashion.
  • a graphical program may comprise a block diagram and may further comprise a user interface or front panel.
  • the portable computing device may be operable to display at least a portion or all of the user interface or front panel of the original one or more graphical programs.
  • the user may interact with this user interface or front panel to control the executable executing on the portable computing device.
  • the user interface or front panel may be used to control the graphical program to accomplish various measurement or automation functions.
  • the graphical user interface system of the portable computing device may not fully support all of the possible control and indicator icons present in the user interface or front panel of the original graphical program.
  • the user interface software comprised in the run-time software that is used during the conversion process may be used to provide appropriate program instructions for displaying or representing different user interface or front panel elements.
  • one or more graphical programs that are desired for execution by the executable are not converted to executable format for transfer to the portable computing device, but rather remain on the host computer system.
  • the executable may include calls to one or more graphical programs that reside on the host computer system.
  • the executable may be operable to call these graphical programs that reside on the host computer system.
  • one or more of the graphical programs which are deployed on the portable computing device may include a “call by reference node”, wherein this node is operable when executed to call a graphical program on a computer system separate from the portable computing device.
  • the executable may call and remotely invoke a graphical program, e.g., through a wireless means or through a physical connection, such as a serial connection.
  • the executable executing on the PDA may also call and remotely invoke other types of programs as well.
  • the graphical program executing on the portable computing device may be debugged using a desktop computer system.
  • the desktop computer system may display an image of the block diagram of the graphical program that is actually executing on the portable computing device. This block diagram may be viewed and used by the user in various debugging modes such as single stepping, setting break points, execution highlighting, etc.
  • the portable computing device may be operable to transfer data to an external computer system, such as a desktop computer system.
  • a conduit program may execute on the desktop computer system and may receive data according to a standard or proprietary format. For example, where the desktop computer system is running the LabVIEW graphical programming system, the conduit program executing on the desktop computer may convert data received from the portable computing device to a “datalog” format, which is a proprietary format used by LabVIEW which enables LabVIEW to view and use the data.
  • a data acquisition module may be coupled to the PDA and used to acquire data from an external source, such as through a sensor or transducer.
  • the graphical program executing on the portable computing device may store and/or analyze the data received from the data acquisition module.
  • FIG. 1 illustrates a computer system operable to deploy a graphical program onto a portable computing device, such as a personal digital assistant (PDA), so that the portable computing device can execute the graphical program;
  • a portable computing device such as a personal digital assistant (PDA)
  • PDA personal digital assistant
  • FIG. 1A illustrates a computer system coupled to a PDA, according to one embodiment
  • FIG. 2A illustrates an exemplary instrumentation control system
  • FIG. 2B illustrates an exemplary industrial automation system
  • FIG. 3 is a block diagram illustrating one embodiment of a portable computing device, e.g., a PDA, operable to receive and execute a graphical program;
  • a portable computing device e.g., a PDA, operable to receive and execute a graphical program
  • FIG. 4 is a flowchart diagram illustrating one embodiment of a method for deploying one or more graphical programs on a portable computing device, such as a PDA;
  • FIG. 5 is a flowchart diagram illustrating more detail of one embodiment of step 308 of FIG. 4 , in which one or more graphical programs are converted to a format suitable for execution on a portable computing device;
  • FIG. 6 illustrates run-time software used to facilitate conversion of a graphical program to an executable format that can execute on a portable computing device such as a PDA.
  • FIG. 1 Computer System
  • FIG. 1 illustrates a computer system 82 operable to deploy a graphical program onto a portable computing device, such as a personal digital assistant (PDA) or mobile terminal, so that the portable computing device can execute the graphical program.
  • the computer system 82 may be any type of computer system, including a personal computer system, mainframe computer system, workstation, network appliance, Internet appliance, television system, or other device.
  • the term “computer system” can be broadly defined to encompass any device having at least one processor that executes instructions from a memory medium.
  • the portable computing device may also be known as a handheld, palmtop, or personal information manager.
  • the computer system 82 may include a display device operable to display the graphical program to be deployed.
  • the display device may display a block diagram and/or a graphical user interface or front panel of the graphical program.
  • the computer system 82 may include a memory medium(s) on which one or more computer programs or software components according to one embodiment of the present invention may be stored.
  • the graphical program to be deployed may be stored on the memory medium of the computer system 82 .
  • the memory medium may store a graphical programming development environment application used to create the graphical program, as well as software operable to convert and/or deploy the graphical program on the portable computing device.
  • the memory medium may also store operating system software, as well as other software for operation of the computer system.
  • memory medium is intended to include an installation medium, e.g., a CD-ROM, floppy disks 104 , or tape device; a computer system memory or random access memory such as DRAM, SRAM, EDO RAM, Rambus RAM, etc.; or a non-volatile memory such as a magnetic media, e.g., a hard drive, or optical storage.
  • the memory medium may comprise other types of memory as well, or combinations thereof.
  • the memory medium may be located in a first computer in which the programs are executed, or may be located in a second different computer which connects to the first computer over a network, such as the Internet. In the latter instance, the second computer may provide program instructions to the first computer for execution.
  • graphical program or “block diagram” is intended to include a program comprising graphical code, e.g., two or more nodes or icons interconnected in one or more of a data flow, control flow, or execution flow format, wherein the interconnected nodes or icons may visually indicate the functionality of the program.
  • the nodes may be connected in one or more of a data flow, control flow, and/or execution flow format.
  • the nodes may also be connected in a “signal flow” format, which is a subset of data flow.
  • the terms “graphical program” or “block diagram” are each intended to include a program comprising a plurality of interconnected nodes or icons which visually indicate the functionality of the program.
  • Examples of graphical program development environments that may be used to create graphical programs include LabVIEW, DasyLab, and DiaDem from National Instruments, VEE from Agilent, WiT from Coreco, Vision Program Manager from PPT Vision, SoftWIRE from Measurement Computing, Simulink from the MathWorks, Sanscript from Northwoods Software, Khoros from Khoral Research, SnapMaster from HEM Data, and VisSim from Visual Solutions, ObjectBench by SES (Scientific and Engineering Software), and VisiDAQ from Advantech, among others.
  • the system uses the LabVIEW graphical programming system available from National Instruments.
  • a graphical program may also comprise a graphical user interface or front panel.
  • the graphical user interface may comprise any type of graphical user interface, e.g., depending on the computing platform.
  • the graphical user interface may comprise one or more windows, such as those used in window-based user interface systems such as provided by the Macintosh Operating System, Microsoft Windows, the X Window System, etc.
  • the graphical user interface may include a plurality of user interface elements or front panel objects, including indicators for displaying output of the graphical program and/or controls for specifying program input to the graphical program. Examples of user interface controls and indicators include charts, graphs, push buttons, knobs, numeric controls, text boxes, check boxes, list boxes, etc.
  • the graphical user interface may also include any of various other types of user interface elements, such as menu bars, popup context menus, window close buttons, etc.
  • the user interface elements may also include other icons which represent devices being controlled.
  • the user interface portion may be contained in the block diagram or may be contained in one or more separate panels or windows.
  • the user interface or front panel may be comprised in a single window of user interface elements, or may comprise a plurality of individual windows each having one or more user interface elements, wherein the individual windows may optionally be tiled together.
  • the user interface or front panel may comprise user interface or front panel objects, e.g., the GUI, embedded in the block diagram.
  • the user interface of a graphical program may display only output, only input, or both input and output. Further, in some embodiments the user interface or front panel of a graphical program may enable the user to interactively control or manipulate the input being provided to the graphical program.
  • the user interface or front panel of the graphical program may be altered.
  • some portable computing devices such as PDA's, typically do not support a full window-based user interface system.
  • the user interface elements of the original graphical program may be changed or translated into user interface elements that are available on the target portable computing device. For example, in some instances this may comprise re-arranging or re-sizing user interface elements, changing graphical elements into text elements, etc.
  • FIG. 1A Portable Computing Device Coupled to a Desktop Computer System
  • FIG. 1A illustrates a system including the computer system 82 of FIG. 1 and a portable computing device 102 , such as a PDA or mobile terminal.
  • the computer system 82 may be operable to deploy a graphical program onto the portable computing device 82 for execution.
  • the portable computing device 102 may be coupled to the computer system 82 via a wire or cable.
  • the portable computing device 102 may be coupled to the computer system 82 through a serial cable, and the graphical program may be transferred over this serial cable to the portable computing device 102 .
  • the portable computing device 102 may not be physically attached to the computer system 82 , and the graphical program may be transferred to the portable computing device 102 using a wireless communication protocol. In various embodiments, any of various wireless protocols or techniques may be utilized in deploying the graphical program on the portable computing device 102 .
  • the portable computing device 102 may be located remotely from the computer system 82 , and the graphical program may be transferred to the portable computing device 102 over a network, such as a LAN (local area network), WAN (wide area network), the Internet, or an Intranet, among others.
  • a network such as a LAN (local area network), WAN (wide area network), the Internet, or an Intranet, among others.
  • the device may be connected to the Internet and may receive data representing the graphical program sent over the Internet by the computer system 82 .
  • FIGS. 2 A and 2 B Instrumentation and Industrial Automation Systems
  • the present invention can be used for a plethora of applications and is not limited to instrumentation or industrial automation applications.
  • the following description is exemplary only, and the present invention may be used for any desired purpose.
  • the system and method of the present invention is operable to be used in any of various types of applications, including the control of other types of devices such as multimedia devices, video devices, audio devices, telephony devices, Internet devices, etc., as well as general purpose software applications such as word processing, spreadsheets, network control, games, etc.
  • FIG. 2A illustrates an exemplary instrumentation control system 100 .
  • the system 100 comprises a portable computing device 102 , e.g., a PDA device, which may couple (in a wired or wireless manner) to one or more instruments.
  • the portable computing device 102 may connect to the one or more instruments in any of various ways, and preferably connects wirelessly, i.e., communication between the portable computing device 102 and the one or more instruments is performed using a wireless communication protocol.
  • the portable computing device 102 may operate with the one or more instruments to analyze, measure, or control a unit under test (UUT) or process 150 .
  • UUT unit under test
  • the one or more instruments may include a GPIB instrument 112 , a data acquisition (DAQ) instrument 114 , a VXI instrument 116 , a PXI instrument 118 , a video device or camera 132 , and/or a motion control device 136 , among other types of devices.
  • a GPIB instrument 112 a data acquisition (DAQ) instrument 114 , a VXI instrument 116 , a PXI instrument 118 , a video device or camera 132 , and/or a motion control device 136 , among other types of devices.
  • DAQ data acquisition
  • the GPIB instrument 112 may couple to the portable computing device 102 via a wireless communication protocol.
  • the GPIB instrument 112 may include wireless communication circuitry for communicating with an external device.
  • the video device 132 , the motion control device 136 , the VXI instrument 116 , the PXI instrument 118 , and/or the data acquisition instrument 114 may connect to the portable computing device 102 wirelessly.
  • the data acquisition instrument 114 may interface through signal conditioning circuitry to the UUT.
  • the signal conditioning circuitry may comprise an SCXI (Signal Conditioning eXtensions for Instrumentation) chassis comprising one or more SCXI modules.
  • SCXI Signal Conditioning eXtensions for Instrumentation
  • the GPIB instrument 112 , the video device 131 , the motion control device 136 , the data acquisition instrument 114 , the VXI instrument 116 , and/or the PXI instrument 118 may be physically connected to the portable computing device 102 , e.g., via a serial cable.
  • a serial instrument may also be coupled to the portable computing device 102 , e.g., wirelessly or through a serial port provided by the portable computing device 102 .
  • an instrument will not be present of each interface type, and in fact many systems may only have one or more instruments of a single interface type, such as only GPIB instruments.
  • the instruments may be coupled to a unit under test (UUT) or process 150 , or may be coupled to receive field signals, typically generated by transducers.
  • the system 100 may be used in a data acquisition and control application, in a test and measurement application, an image processing or machine vision application, a process control application, a man-machine interface application, a simulation application, a hardware-in-the-loop validation application, or any of various other types of applications.
  • FIG. 2B illustrates an exemplary industrial automation system 160 .
  • the industrial automation system 160 is similar to the instrumentation or test and measurement system 100 shown in FIG. 2A . Elements which are similar or identical to elements in FIG. 2A have the same reference numerals for convenience.
  • the system 160 may comprise a portable computing device 102 that may couple (in a wired or wireless manner) to one or more devices or instruments.
  • the portable computing device 102 may connect to the one or more devices or instruments in any of various ways, and preferably connects wirelessly, i.e., communication between the portable computing device 102 and the one or more devices or instruments is performed using a wireless communication protocol.
  • the portable computing device 102 may operate with the one or more devices to a process or device 150 to perform an automation function, such as MMI (Man Machine Interface), SCADA (Supervisory Control and Data Acquisition), portable or distributed data acquisition, process control, advanced analysis, or other control.
  • MMI Man Machine Interface
  • SCADA Supervisory Control and Data Acquisition
  • portable or distributed data acquisition process control, advanced analysis, or other control.
  • the one or more devices may include a data acquisition instrument 114 , a PXI instrument 118 , an image acquisition device 132 , a motion control device 136 , a fieldbus device 170 , a PLC (Programmable Logic Controller) 176 , a serial instrument 182 , or a distributed data acquisition system, such as the Fieldpoint system available from National Instruments, among other types of devices.
  • these devices may interface with the portable computing device 102 in any of various ways, e.g., wirelessly or using a physical connection. In typical industrial automation systems a device will not be present of each interface type, and in fact many systems may only have one or more devices of a single interface type, such as only PLCs.
  • the devices may be coupled to the device or process 150 .
  • the term “instrument” is intended to include any of the devices that are adapted to be connected to a portable computing device as shown in FIGS. 2A and 2B , traditional “stand-alone” instruments, as well as other types of measurement and control devices.
  • the term “measurement function” may include any type of data acquisition, measurement or control function, such as that implemented by the instruments shown in FIGS. 2A and 2B .
  • the term “measurement function” includes acquisition and/or processing of an image.
  • a graphical program may be created that implements a measurement function.
  • the graphical program may execute on the portable computing device to acquire a signal and perform the measurement function on the acquired signal.
  • Graphical software programs which perform data acquisition, analysis and/or presentation, e.g., for measurement, instrumentation control, industrial automation, or simulation, such as in the applications shown in FIGS. 2A and 2B may be referred to as virtual instruments.
  • the graphical program executing on the portable computing device 102 may be used to perform only a portion of the applications described above.
  • the portable computing device may provide a convenient way to gather data acquired from instruments located in the field or on a factory floor. The data gathered by the portable computing device may then be downloaded to another computer system for further analysis or display.
  • FIG. 3 Portable Computing Device Block Diagram
  • FIG. 3 is a block diagram illustrating one embodiment of a portable computing device 102 operable to receive and execute a graphical program.
  • the portable computing device 102 may be any of various types of portable computing device. Examples of portable computing devices include personal digital assistants (PDAs), mobile terminals, handheld computers, wearable devices (e.g., wristwatch computers), “smart” cellular telephones, game consoles, global positioning system (GPS) units, electronic textbook devices, etc. New classes of portable computing device are rapidly emerging, and this is not intended to be an exhaustive list.
  • PDAs personal digital assistants
  • mobile terminals handheld computers
  • wearable devices e.g., wristwatch computers
  • “smart” cellular telephones e.g., game consoles
  • GPS global positioning system
  • New classes of portable computing device are rapidly emerging, and this is not intended to be an exhaustive list.
  • the portable computing device 102 may include a processor 710 .
  • the processor 710 may be any of various types, including a digital signal processor (DSP), an x86 processor, e.g., a Pentium class processor, a PowerPC processor, as well as others.
  • DSP digital signal processor
  • the processor 710 may have various clock speeds, including clock speeds similar to those found in desktop computer-class processors, as well as lower speeds such as 16 MHz.
  • the portable computing device 102 may also include a memory 712 coupled to the processor 710 .
  • the memory 712 may comprise any of various types of memory, including DRAM, SRAM, EDO RAM, flash memory, etc., or a non-volatile memory such as a magnetic media, e.g., a hard drive, or optical storage.
  • the memory 712 may comprise other types of memory as well, or combinations thereof.
  • the memory 712 may have a small storage capacity compared to a typical desktop computer system.
  • the portable computing device 102 may also include wireless logic 720 for receiving data wirelessly from other devices, such as a desktop computer system.
  • the wireless logic 720 may be operable to communicate with external devices using any of various wireless protocols.
  • the portable computing device 102 may include other means for communicating with other devices, such as logic for performing serial communication.
  • the memory 712 may store a graphical program 718 .
  • the graphical program 718 may perform any function, such as a test and/or measurement function, an industrial automation function, a process control function, a data acquisition function, a motion control function, a simulation function, etc., or a general purpose software application such as a database application, a calendar application, a game, etc.
  • the portable computing device 102 may also comprise a display 716 .
  • the display 716 may be any of various types, such as an LCD (liquid crystal display).
  • the display for a typical portable computing device may be small compared to the display of a desktop computer system.
  • a graphical user interface (GUI) 722 for the graphical program may be displayed on the display 716 .
  • the processor 710 executing code and data from the memory 712 may provide a means for generating and displaying the GUI.
  • the portable computing device 102 may also comprise an input mechanism 714 .
  • the input mechanism 714 may be any of various types, as appropriate for a particular portable computing device.
  • the input mechanism may comprise a keypad, trackball, touch pen, microphone, modem, infrared receiver, etc.
  • FIG. 4 is a flowchart diagram illustrating one embodiment of a method for deploying one or more graphical programs on a portable computing device, such as a personal digital assistant (PDA) device. It is noted that FIG. 4 illustrates one exemplary embodiment, and other embodiments are also contemplated.
  • PDA personal digital assistant
  • one or more graphical programs may be created.
  • the one or more graphical programs may comprise a main graphical program and one or more sub-graphical programs.
  • the one or more graphical programs may comprise a plurality of graphical programs which interoperate with each other in either a client server or peer-to-peer relationship.
  • only a single graphical program may be created.
  • the graphical program(s) may be created or assembled by the user arranging on a display a plurality of nodes or icons and then interconnecting the nodes to create the graphical program(s).
  • data structures may be created and stored which represent the graphical program.
  • the nodes may be interconnected in one or more of a data flow, control flow, and/or execution flow format.
  • the graphical program may thus comprise a block diagram having a plurality of interconnected nodes or icons that visually indicate the functionality of the program.
  • the graphical program may implement any desired function.
  • the graphical program may comprise a block diagram and may also include a user interface portion or front panel portion.
  • the user may assemble the user interface on the display.
  • the user may use the LabVIEW graphical programming development environment to create the graphical program.
  • the graphical program may be created in step 302 by creating or specifying a prototype, followed by automatic or programmatic generation of the graphical program from the prototype.
  • This functionality is described in U.S. patent application Ser. No. 09/587,682 titled “System and Method for Automatically Generating a Graphical Program to Perform an Image Processing Algorithm”, which is hereby incorporated by reference in its entirety as though fully and completely set forth herein.
  • the graphical program may be created in other manners, either by the user or programmatically, as desired.
  • the graphical user interface and the block diagram may be created separately or together, in various orders, or in an interleaved manner.
  • the user interface elements in the graphical user interface or front panel may be specified or created, and terminals corresponding to the user interface elements may appear in the block diagram in response.
  • terminals corresponding to the user interface elements may appear in the block diagram in response.
  • the user interface elements may be created in response to the block diagram.
  • the user may create the block diagram, wherein the block diagram includes terminal icons or nodes that indicate respective user interface elements.
  • the graphical user interface or front panel may then be automatically (or manually) created based on the terminal icons or nodes in the block diagram.
  • the graphical user interface elements may be comprised in the diagram.
  • step 304 the user may select an option to build an executable for the portable computing device, e.g., PDA device.
  • the user may select an option from a menu in the graphical programming development environment, e.g., LabVIEW, to create a “build” or select an option to build an executable that will execute on a PDA device.
  • step 306 the user may be prompted to specify or select one or more graphical programs from which the user desires to create the executable. As one example, this may involve selecting the graphical program(s) created in step 302 . For example, the user may select one main graphical program and a plurality of sub-graphical programs. Alternatively, the user may select a single graphical program or a plurality of different graphical programs for which the user desires to create an executable. The user may select the one or more graphical programs in any of various ways. For example, selecting the graphical program(s) may comprise the user browsing through a file system to obtain the graphical programs, or dragging and dropping icons from a palette, or other appropriate selection methods.
  • steps 304 and 306 may be performed using graphical association or “drag and drop” techniques.
  • the system may display a configuration diagram which includes icons for respective graphical programs and an icon for the PDA device.
  • the user may deploy one or more graphical programs on a PDA by dragging and dropping one or more graphical program icons on the PDA icon.
  • the one or more selected graphical programs may be converted to an executable format that can be executed by the portable computing device.
  • a software program may operate to automatically, i.e., programmatically, convert the one or more graphical programs to the executable format.
  • the one or more graphical programs may be initially represented as a plurality of data structures that define or specify the operation of the respective graphical programs.
  • the conversion software program may operate to access these data structures from memory and convert the data structures to an executable format, e.g., machine language code or an interpretable script or other similar executable format, wherein this executable can be executed by the portable computing device.
  • various run-time software 340 may be used to facilitate generation of the executable from the graphical program(s).
  • this run-time software may comprise serial, interface, and file I/O software, as well as user interface software, math software, and data type software.
  • This run-time software 340 may be useful and/or necessary because the portable computing device may not inherently include a graphical program execution engine.
  • a graphical program execution engine may be described as a software program that is designed to execute graphical programs.
  • a graphical program execution engine may include various software for handling user interface issues and display certain GUI elements, performing certain math functions, handling certain data types, performing file I/O, and performing various interface or serial functions. Since in one embodiment the portable computing device does not include a graphical program execution engine, the run-time software 340 may add various program instructions and/or data structures to enable the resulting executable to execute and perform the functionality indicated by the graphical program. Hence, the executable may require additional information that is not already contained within the data structures that correspond to the graphical programs that have been created.
  • the graphical program may include portions that cannot execute “natively” on the portable computing device 102 .
  • the portable computing device software cannot inherently perform this functionality based on the graphical program as written, i.e., these portions cannot execute unmodified or without additional program instructions.
  • the portions that cannot execute “natively” on the portable computing device 102 require functionality that would be present in a graphical program execution engine or other software execution program.
  • the method may examine the graphical program, determine which portions of the graphical program cannot execute “natively” (e.g., without modification or additional program instructions) on the portable computing device 102 , and add various program instructions and/or data structures from the run-time software 340 to account for these portions. This enables the resulting executable to perform the functionality indicated by the graphical program, despite the fact that the portable computing device 102 does not include a graphical program execution engine.
  • various program instructions and/or data structures from the run-time software 340 may be incorporated into the executable program in step 308 .
  • the graphical user interface system of the portable computing device may not fully support all of the possible control and indicator icons present in the front panel of the original graphical program.
  • a portion of the user interface software comprised in the run-time software 340 may be incorporated into the executable created in step 308 , e.g., based on the specific GUI elements comprised in the one or more graphical programs being converted.
  • This user interface software may thus provide appropriate program instructions for displaying or representing different user interface or front panel elements.
  • the portable computing device software may not inherently support certain data types or math operations.
  • various other program instructions and/or data structures from the run-time software 340 may be incorporated into the executable program in step 308 to enable the portable computing device 102 to execute the graphical program correctly, i.e., so that execution of the executable is substantially the same as execution of the graphical program on a system which includes a graphical program execution engine.
  • the executable may be transferred to the portable computing device, e.g., PDA. In one embodiment, this may involve using a transfer program, such as a “hot sync” program to transfer the executable to the portable computing device. As described above with reference to FIG. 1A , the portable computing device may be physically coupled to the computer system, e.g., through a serial cable, and the executable may be transferred over this cable to the portable computing device. In another embodiment, the executable may be transferred in a wireless fashion to the portable computing device and deployed on the device in a wireless fashion.
  • a transfer program such as a “hot sync” program
  • the executable may be executed on the portable computing device, e.g., PDA.
  • a graphical program may comprise a block diagram and may further comprise a user interface or front panel.
  • the portable computing device may be operable to display at least a portion or all of the user interface or front panel of the original one or more graphical programs.
  • the user may interact with this user interface or front panel to control the executable executing on the portable computing device.
  • the user interface or front panel may be used to control the graphical program to accomplish various measurement or automation functions.
  • the user interface or front panel on the portable computing device may be used to control or interact with any of the various measurement or instrumentation devices shown in FIGS. 2A and 2B .
  • the graphical user interface system of the portable computing device may not fully support all of the possible control and indicator icons present in the front panel of the original graphical program.
  • the user interface software comprised in the run-time software 340 may have been incorporated into the executable created in step 308 .
  • This user interface software may be used to provide appropriate program instructions for displaying or representing different user interface or front panel elements.
  • Various other run-time software incorporated into the executable may be executed in step 312 .
  • one or more graphical programs that are desired for execution by the executable are not converted to executable format for transfer to the portable computing device, but rather remain on the host computer system.
  • the executable may include calls to one or more graphical programs that reside on the host computer system.
  • the executable may be operable to call these graphical programs that reside on the host computer system.
  • one or more of the graphical programs which are deployed on the portable computing device may include a “call by reference node”, wherein this node is operable when executed to call a graphical program on a computer system separate from the portable computing device.
  • This remote invocation may use VI server techniques described in U.S. Pat. Nos. 6,102,965 and 6,064,812.
  • the executable may call and remotely invoke a graphical program, e.g., through a wireless means or through a physical connection, such as a serial connection.
  • the graphical program executing on the portable computing device may be debugged using a desktop computer system.
  • the desktop computer system may display an image of the block diagram of the graphical program that is actually executing on the portable computing device.
  • the block diagram displayed on the display of the computer system may display various execution information as the block diagram executes on the portable computing device.
  • the execution information may include visual aids such as single stepping, break points, execution highlighting (highlighting of nodes as they execute, displaying data output from respective nodes, etc.).
  • the block diagram may be viewed and used by the user in various debugging modes such as single stepping, setting break points, execution highlighting, etc.
  • the portable computing device may be operable to transfer data to an external computer system, such as a desktop computer system.
  • a conduit program may execute on the desktop computer system and may receive data according to a standard or proprietary format. For example, where the desktop computer system is running the LabVIEW graphical programming system, the conduit program executing on the desktop computer may convert data received from the portable computing device to a “datalog” format, which is a proprietary format used by LabVIEW which enables LabVIEW to view and use the data.
  • step 308 the selected graphical program(s) may be converted to a format suitable for execution on the portable computing device.
  • FIG. 5 is a flowchart diagram illustrating more detail regarding step 308 , according to one embodiment.
  • the method may convert the one or more graphical programs to a text-based language, such as C, C++, FORTRAN, Java, Pascal, etc.
  • a text-based language such as C, C++, FORTRAN, Java, Pascal, etc.
  • the one or more graphical programs may be converted to C source code, C++ source code, Java source code, etc. This may involve accessing data structures representing the one or more graphical programs and converting these data structures into a text-based programming language, similarly as described above.
  • this text-based language source code may be compiled to create the executable.
  • This compiling step may utilize the run-time software 340 , as described above.
  • the graphical program(s) may be converted directly to an executable.
  • the conversion software program may access run-time software 340 which is used during the conversion process.
  • This run-time software may comprise various components such as user interface element software, math software, data type software, serial software, interface software, file I/O software, etc.
  • This software 340 may be used to aid in the conversion of the one or more graphical programs to an executable that can run on a different platform such as is present in a portable computing device, e.g., a PDA.
  • portions of this software 340 may be incorporated into the executable created in step 308 to account for execution on the PDA platform.

Abstract

A system and method for deploying one or more graphical programs on a personal digital assistant (PDA). One or more selected graphical programs may be programmatically converted to an executable format that can be executed by the portable computing device. For example, the graphical programs may be initially represented as a plurality of data structures that define or specify the operation of the respective graphical programs, and conversion software program may operate to access these data structures from memory and convert the data structures to an executable format suitable for the portable computing device. The executable may be transferred to the portable computing device for execution.

Description

    CONTINUATION AND PRIORITY DATA
  • This application is a Continuation of U.S. application Ser. No. 10/989,849 titled “Graphical Program Execution On A Personal Digital Assistant” filed Nov. 15, 2004, whose inventors were Andrew Philip Dove, Hugo A. Andrade, and Darshan Shah, which is a Continuation of U.S. application Ser. No. 09/974,601 titled “System and Method for Deploying A Graphical Program to a handheld computer Device” filed Oct. 9, 2001, whose inventors were Andrew Philip Dove, Hugo A. Andrade, and Darshan Shah, and which claims benefit of priority of U.S. provisional application Ser. No. 60/312,133 titled “System and Method for Deploying A Graphical Program to a PDA Device” filed Aug. 14, 2001, whose inventor was Andrew Dove.
  • FIELD OF THE INVENTION
  • The present invention relates to the field of graphical programming, and more particularly to a system and method for executing a graphical program on a portable computing device, such as a personal digital assistant (PDA) device.
  • DESCRIPTION OF THE RELATED ART
  • Traditionally, high level text-based programming languages have been used by programmers in writing application programs. Many different high level programming languages exist, including BASIC, C, Java, FORTRAN, Pascal, COBOL, ADA, APL, etc. Programs written in these high level languages are translated to the machine language level by translators known as compilers or interpreters. The high level programming languages in this level, as well as the assembly language level, are referred to herein as text-based programming environments.
  • Increasingly, computers are required to be used and programmed by those who are not highly trained in computer programming techniques. When traditional text-based programming environments are used, the user's programming skills and ability to interact with the computer system often become a limiting factor in the achievement of optimal utilization of the computer system.
  • There are numerous subtle complexities which a user must master before he can efficiently program a computer system in a text-based environment. The task of programming a computer system to model or implement a process often is further complicated by the fact that a sequence of mathematical formulas, steps or other procedures customarily used to conceptually model a process often does not closely correspond to the traditional text-based programming techniques used to program a computer system to model such a process. In other words, the requirement that a user program in a text-based programming environment places a level of abstraction between the user's conceptualization of the solution and the implementation of a method that accomplishes this solution in a computer program. Thus, a user often must substantially master different skills in order to both conceptualize a problem or process and then to program a computer to implement a solution to the problem or process. Since a user often is not fully proficient in techniques for programming a computer system in a text-based environment to implement his solution, the efficiency with which the computer system can be utilized often is reduced.
  • Examples of fields in which computer systems are employed to interact with physical systems are the fields of instrumentation, process control, industrial automation, and simulation. Computer measurement and control of devices such as instruments or industrial automation hardware has become increasingly desirable in view of the increasing complexity and variety of instruments and devices available for use. However, due to the wide variety of possible testing and control situations and environments, and also the wide array of instruments or devices available, it is often necessary for a user to develop a custom program to control a desired system.
  • As discussed above, computer programs used to control such systems traditionally had to be written in text-based programming languages such as, for example, assembly language, C, FORTRAN, BASIC, etc. Traditional users of these systems, however, often were not highly trained in programming techniques and, in addition, text-based programming languages were not sufficiently intuitive to allow users to use these languages without training. Therefore, implementation of such systems frequently required the involvement of a programmer to write software for control and analysis of instrumentation or industrial automation data. Thus, development and maintenance of the software elements in these systems often proved to be difficult.
  • U.S. Pat. Nos. 4,901,221; 4,914,568; 5,291,587; 5,301,301; and 5,301,336; among others, to Kodosky et al disclose a graphical system and method for modeling a process, i.e., a graphical programming environment which enables a user to easily and intuitively model a process. The graphical programming environment disclosed in Kodosky et al can be considered a higher and more intuitive way in which to interact with a computer. A graphically based programming environment can be represented at a level above text-based high level programming languages such as C, Basic, Java, etc.
  • The method disclosed in Kodosky et al allows a user to construct a diagram using a block diagram editor. The block diagram may include a plurality of interconnected icons such that the diagram created graphically displays a procedure or method for accomplishing a certain result, such as manipulating one or more input variables and/or producing one or more output variables. In response to the user constructing a diagram or graphical program using the block diagram editor, data structures may be automatically constructed which characterize an execution procedure which corresponds to the displayed procedure. The graphical program may be compiled or interpreted by a computer.
  • Therefore, Kodosky et al teaches a graphical programming environment wherein a user places or manipulates icons and interconnects or “wires up” the icons in a block diagram using a block diagram editor to create a graphical “program.” A graphical program for performing an instrumentation, measurement or automation function, such as measuring a Unit Under Test (UUT) or device, controlling or modeling instruments, controlling or measuring a system or process, or for modeling or simulating devices, may be referred to as a virtual instrument (VI). Thus, a user can create a computer program solely by using a graphically based programming environment. This graphically based programming environment may be used for creating virtual instrumentation systems, modeling processes, control, simulation, and numerical analysis, as well as for any type of general programming.
  • A graphical program may have a graphical user interface. For example, in creating a graphical program, a user may create a front panel or user interface panel. The front panel may include various graphical user interface elements or front panel objects, such as user interface controls and/or indicators, that represent or display the respective input and output that will be used by the graphical program or VI, and may include other icons which represent devices being controlled. The front panel may be comprised in a single window of user interface elements, or may comprise a plurality of individual windows each having one or more user interface elements, wherein the individual windows may optionally be tiled together. When the controls and indicators are created in the front panel, corresponding icons or terminals may be automatically created in the block diagram by the block diagram editor. Alternatively, the user can place terminal icons in the block diagram which may cause the display of corresponding front panel objects in the front panel, either at edit time or later at run time. As another example, the front panel may comprise front panel objects, e.g., the GUI, embedded in the block diagram.
  • During creation of the block diagram portion of the graphical program, the user may select various function nodes or icons that accomplish his desired result and connect the function nodes together. For example, the function nodes may be connected in one or more of a data flow, control flow, and/or execution flow format. The function nodes may also be connected in a “signal flow” format, which is a subset of data flow. The function nodes may be connected between the terminals of the various user interface elements, e.g., between the respective controls and indicators. Thus the user may create or assemble a graphical program, referred to as a block diagram, graphically representing the desired process. The assembled graphical program may be represented in the memory of the computer system as data structures and/or program instructions. The assembled graphical program, i.e., these data structures, may then be compiled or interpreted to produce machine language that accomplishes the desired method or process as shown in the block diagram.
  • Input data to a graphical program may be received from any of various sources, such as from a device, unit under test, a process being measured or controlled, another computer program, or from a file. Also, a user may input data to a graphical program or virtual instrument using a graphical user interface, e.g., a front panel as described above. The input data may propagate through the data flow block diagram or graphical program and appear as changes on the output indicators. In an instrumentation application, the front panel can be analogized to the front panel of an instrument. In an industrial automation application the front panel can be analogized to the MMI (Man Machine Interface) of a device. The user may adjust the controls on the front panel to affect the input and view the output on the respective indicators. Alternatively, the front panel may be used merely to view the input and output, or just the output, and the input may not be interactively manipulable by the user during program execution.
  • Thus, graphical programming has become a powerful tool available to programmers. Graphical programming environments such as the National Instruments LabVIEW product have become very popular. Tools such as LabVIEW have greatly increased the productivity of programmers, and increasing numbers of programmers are using graphical programming environments to develop their software applications. In particular, graphical programming tools are being used for test and measurement, data acquisition, process control, man machine interface (MMI), supervisory control and data acquisition (SCADA) applications, simulation, image processing/machine vision applications, and motion control, among others.
  • In the prior art, graphical programs have been limited to certain types of computing platforms, such as desktop computer systems and workstations. With the proliferation of new types of computing devices, it would be desirable to expand the platforms on which a graphical program can execute. In particular it would be desirable to enable a graphical program to execute on a portable computing device, such as a personal digital assistant (PDA) or mobile terminal.
  • In general, small form factor devices such as PDAs present certain issues for programs with graphical content, such as graphical user interfaces. For example, PDAs generally have reduced processor and memory capabilities compared to standard desktop computers, and also generally have more limited display capabilities. PDAs also generally have reduced capabilities in the types of programs they can execute.
  • SUMMARY OF THE INVENTION
  • One embodiment of the present invention comprises a system and method for deploying one or more graphical programs on a portable computing device. In the preferred embodiment, the portable computing device comprises a personal digital assistant (PDA) device. Other examples of portable computing devices include mobile terminals, handheld computers, wearable devices (e.g., wristwatch computers), “smart” cellular telephones, game consoles, global positioning system (GPS) units, electronic textbook devices, etc.
  • The one or more graphical programs may first be created, e.g., may be created using a graphical programming development environment executing on a desktop computer system or workstation. The graphical program(s) may be created or assembled by the user arranging on a display a plurality of nodes or icons and then interconnecting the nodes to create the graphical program(s). In response to the user assembling the graphical program, data structures (or code) may be created and stored which represent the graphical program. The nodes may be interconnected in one or more of a data flow, control flow, and/or execution flow format. The graphical program may thus comprise a block diagram having a plurality of interconnected nodes or icons that visually indicate the functionality of the program. The graphical program may implement any desired function. The graphical program may also include a user interface portion or front panel portion. Where the graphical program includes a user interface portion, the user may assemble the user interface on the display. Alternatively, the user interface portion may be specified in the block diagram. As one example, the user may use the LabVIEW graphical programming development environment to create the graphical program.
  • In one embodiment, the user may then select an option to build an executable for the portable computing device, e.g., PDA device. For example, the user may select an option from a menu in the graphical programming development environment to create a “build” or select an option to build an executable that will execute on a portable computing device.
  • In response to the user selecting this build option, the user may be prompted to specify or select one or more graphical programs from which the user desires to create the executable. As one example, this may involve selecting the graphical program(s) created as described above. In one embodiment, the user may select one main graphical program and a plurality of sub-graphical programs. Alternatively, the user may select a single graphical program or a plurality of different graphical programs for which the user desires to create an executable. The user may select the one or more graphical programs in any of various ways. For example, selecting the graphical program(s) may comprise the user browsing through a file system to obtain the graphical programs, or dragging and dropping icons from a palette onto an icon for the PDA, or other appropriate selection methods.
  • In an alternative embodiment, the user may not select the “build” option and then specify the graphical program(s) to include in the build. For example, if the user is currently viewing or editing a graphical program within the graphical programming development environment, then the user may simply select a “Deploy to PDA” menu option to deploy the current graphical program to the portable computing device. As another example, the system may display a configuration diagram which includes icons for respective graphical programs and an icon for the PDA device. In this example, the user may deploy one or more graphical programs on a PDA by dragging and dropping one or more graphical program icons on the PDA icon.
  • The one or more selected graphical programs may then be converted to an executable format that can be executed by the portable computing device. A software program may operate to automatically, i.e., programmatically, convert the one or more graphical programs to the executable format. For example, the one or more graphical programs may be initially represented as a plurality of data structures that define or specify the operation of the respective graphical programs. The conversion software program may operate to access these data structures from memory and convert the data structures to an executable format, e.g., machine language code or an interpretable script or other similar executable format, wherein this executable can be executed by the portable computing device.
  • In one embodiment of the conversion process, the graphical program is converted to an executable by first converting the graphical program into a text-based program, such as a C language program. The text-based program may then be compiled to machine code to produce the executable code, wherein the executable code can be executed by the portable computing device. The steps of converting the graphical program into a text-based program and compiling the text-based program occurs programmatically, i.e., is performed by software, and is preferably performed invisibly to the user.
  • During the conversion process, various run-time software may be used to facilitate generation of the executable from the graphical program(s). For example, this run-time software may comprise serial, interface, and file I/O software, as well as user interface software, math software, and data type software. This run-time software may be useful and/or necessary because the portable computing device may not inherently include a graphical program execution engine. Hence, the executable may require additional information that is not already contained within the data structures that correspond to the graphical programs that have been created.
  • The executable may be transferred to the portable computing device, e.g., PDA. In one embodiment, this may involve using a transfer program, such as a “hot sync” program to transfer the executable to the portable computing device. In one embodiment, the portable computing device may be physically coupled to the computer system via a wire or cable, e.g., through a serial cable, and the executable may be transferred over this cable to the portable computing device. In another embodiment, the executable may be transferred in a wireless fashion to the portable computing device and deployed on the device in a wireless fashion.
  • The executable may then be executed on the portable computing device, e.g., PDA. As noted above, a graphical program may comprise a block diagram and may further comprise a user interface or front panel. During execution of the executable on the portable computing device, the portable computing device may be operable to display at least a portion or all of the user interface or front panel of the original one or more graphical programs. The user may interact with this user interface or front panel to control the executable executing on the portable computing device. For example, where the graphical program performs a measurement function, the user interface or front panel may be used to control the graphical program to accomplish various measurement or automation functions.
  • The graphical user interface system of the portable computing device may not fully support all of the possible control and indicator icons present in the user interface or front panel of the original graphical program. However, the user interface software comprised in the run-time software that is used during the conversion process may be used to provide appropriate program instructions for displaying or representing different user interface or front panel elements.
  • In one embodiment of the method, one or more graphical programs that are desired for execution by the executable are not converted to executable format for transfer to the portable computing device, but rather remain on the host computer system. In this embodiment, the executable may include calls to one or more graphical programs that reside on the host computer system. Thus, during execution of the executable on the portable computing device, the executable may be operable to call these graphical programs that reside on the host computer system. As one example, one or more of the graphical programs which are deployed on the portable computing device may include a “call by reference node”, wherein this node is operable when executed to call a graphical program on a computer system separate from the portable computing device. Thus, the executable may call and remotely invoke a graphical program, e.g., through a wireless means or through a physical connection, such as a serial connection. The executable executing on the PDA may also call and remotely invoke other types of programs as well.
  • In one embodiment, the graphical program executing on the portable computing device may be debugged using a desktop computer system. For example, the desktop computer system may display an image of the block diagram of the graphical program that is actually executing on the portable computing device. This block diagram may be viewed and used by the user in various debugging modes such as single stepping, setting break points, execution highlighting, etc.
  • In one embodiment, during execution of the graphical program(s) on the portable computing device, the portable computing device may be operable to transfer data to an external computer system, such as a desktop computer system. A conduit program may execute on the desktop computer system and may receive data according to a standard or proprietary format. For example, where the desktop computer system is running the LabVIEW graphical programming system, the conduit program executing on the desktop computer may convert data received from the portable computing device to a “datalog” format, which is a proprietary format used by LabVIEW which enables LabVIEW to view and use the data.
  • In one embodiment, a data acquisition module may be coupled to the PDA and used to acquire data from an external source, such as through a sensor or transducer. The graphical program executing on the portable computing device may store and/or analyze the data received from the data acquisition module.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • A better understanding of the present invention can be obtained when the following detailed description of the preferred embodiments is considered in conjunction with the following drawings, in which:
  • FIG. 1 illustrates a computer system operable to deploy a graphical program onto a portable computing device, such as a personal digital assistant (PDA), so that the portable computing device can execute the graphical program;
  • FIG. 1A illustrates a computer system coupled to a PDA, according to one embodiment;
  • FIG. 2A illustrates an exemplary instrumentation control system;
  • FIG. 2B illustrates an exemplary industrial automation system;
  • FIG. 3 is a block diagram illustrating one embodiment of a portable computing device, e.g., a PDA, operable to receive and execute a graphical program;
  • FIG. 4 is a flowchart diagram illustrating one embodiment of a method for deploying one or more graphical programs on a portable computing device, such as a PDA;
  • FIG. 5 is a flowchart diagram illustrating more detail of one embodiment of step 308 of FIG. 4, in which one or more graphical programs are converted to a format suitable for execution on a portable computing device; and
  • FIG. 6 illustrates run-time software used to facilitate conversion of a graphical program to an executable format that can execute on a portable computing device such as a PDA.
  • While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and are herein described in detail. It should be understood, however, that the drawings and detailed description thereto are not intended to limit the invention to the particular form disclosed, but on the contrary, the intention is to cover all modifications, equivalents and alternatives falling within the spirit and scope of the present invention as defined by the appended claims.
  • DETAILED DESCRIPTION OF THE PREFERRED EMBODIMENTS
  • Incorporation by Reference
  • The following references are hereby incorporated by reference in their entirety as though fully and completely set forth herein:
  • U.S. provisional application Ser. No. 60/312,133 titled “System and Method for Deploying A Graphical Program to a PDA Device” filed Aug. 14, 2001, whose inventor was Andrew Dove;
  • U.S. Pat. No. 4,914,568 titled “Graphical System for Modeling a Process and Associated Method,” issued on Apr. 3, 1990.
  • U.S. Pat. No. 5,481,741 titled “Method and Apparatus for Providing Attribute Nodes in a Graphical Data Flow Environment”.
  • U.S. Pat. No. 6,173,438 titled “Embedded Graphical Programming System” filed Aug. 18, 1997.
  • U.S. Pat. No. 6,219,628 titled “System and Method for Configuring an Instrument to Perform Measurement Functions Utilizing Conversion of Graphical Programs into Hardware Implementations,” filed Aug. 18, 1997.
  • U.S. patent application Ser. No. 09/617,600 titled “Graphical Programming System with Distributed Block Diagram Execution and Front Panel Display,” filed Jun. 13, 2000.
  • U.S. patent application Ser. No. 09/745,023 titled “System and Method for Programmatically Generating a Graphical Program in Response to Program Information,” filed Dec. 20, 2000.
  • The LabVIEW and BridgeVIEW graphical programming manuals, including the “G Programming Reference Manual”, available from National Instruments Corporation, are also hereby incorporated by reference in their entirety.
  • FIG. 1—Computer System
  • FIG. 1 illustrates a computer system 82 operable to deploy a graphical program onto a portable computing device, such as a personal digital assistant (PDA) or mobile terminal, so that the portable computing device can execute the graphical program. The computer system 82 may be any type of computer system, including a personal computer system, mainframe computer system, workstation, network appliance, Internet appliance, television system, or other device. In general, the term “computer system” can be broadly defined to encompass any device having at least one processor that executes instructions from a memory medium. The portable computing device may also be known as a handheld, palmtop, or personal information manager.
  • As shown in FIG. 1, the computer system 82 may include a display device operable to display the graphical program to be deployed. For example, the display device may display a block diagram and/or a graphical user interface or front panel of the graphical program.
  • The computer system 82 may include a memory medium(s) on which one or more computer programs or software components according to one embodiment of the present invention may be stored. For example, the graphical program to be deployed may be stored on the memory medium of the computer system 82. Also, the memory medium may store a graphical programming development environment application used to create the graphical program, as well as software operable to convert and/or deploy the graphical program on the portable computing device. The memory medium may also store operating system software, as well as other software for operation of the computer system.
  • The term “memory medium” is intended to include an installation medium, e.g., a CD-ROM, floppy disks 104, or tape device; a computer system memory or random access memory such as DRAM, SRAM, EDO RAM, Rambus RAM, etc.; or a non-volatile memory such as a magnetic media, e.g., a hard drive, or optical storage. The memory medium may comprise other types of memory as well, or combinations thereof. In addition, the memory medium may be located in a first computer in which the programs are executed, or may be located in a second different computer which connects to the first computer over a network, such as the Internet. In the latter instance, the second computer may provide program instructions to the first computer for execution.
  • In the present application, the term “graphical program” or “block diagram” is intended to include a program comprising graphical code, e.g., two or more nodes or icons interconnected in one or more of a data flow, control flow, or execution flow format, wherein the interconnected nodes or icons may visually indicate the functionality of the program. The nodes may be connected in one or more of a data flow, control flow, and/or execution flow format. The nodes may also be connected in a “signal flow” format, which is a subset of data flow. Thus the terms “graphical program” or “block diagram” are each intended to include a program comprising a plurality of interconnected nodes or icons which visually indicate the functionality of the program.
  • Examples of graphical program development environments that may be used to create graphical programs include LabVIEW, DasyLab, and DiaDem from National Instruments, VEE from Agilent, WiT from Coreco, Vision Program Manager from PPT Vision, SoftWIRE from Measurement Computing, Simulink from the MathWorks, Sanscript from Northwoods Software, Khoros from Khoral Research, SnapMaster from HEM Data, and VisSim from Visual Solutions, ObjectBench by SES (Scientific and Engineering Software), and VisiDAQ from Advantech, among others. In the preferred embodiment, the system uses the LabVIEW graphical programming system available from National Instruments.
  • A graphical program may also comprise a graphical user interface or front panel. The graphical user interface may comprise any type of graphical user interface, e.g., depending on the computing platform. In one embodiment the graphical user interface may comprise one or more windows, such as those used in window-based user interface systems such as provided by the Macintosh Operating System, Microsoft Windows, the X Window System, etc. The graphical user interface may include a plurality of user interface elements or front panel objects, including indicators for displaying output of the graphical program and/or controls for specifying program input to the graphical program. Examples of user interface controls and indicators include charts, graphs, push buttons, knobs, numeric controls, text boxes, check boxes, list boxes, etc. The graphical user interface may also include any of various other types of user interface elements, such as menu bars, popup context menus, window close buttons, etc. The user interface elements may also include other icons which represent devices being controlled.
  • The user interface portion may be contained in the block diagram or may be contained in one or more separate panels or windows. The user interface or front panel may be comprised in a single window of user interface elements, or may comprise a plurality of individual windows each having one or more user interface elements, wherein the individual windows may optionally be tiled together. As another example, the user interface or front panel may comprise user interface or front panel objects, e.g., the GUI, embedded in the block diagram. The user interface of a graphical program may display only output, only input, or both input and output. Further, in some embodiments the user interface or front panel of a graphical program may enable the user to interactively control or manipulate the input being provided to the graphical program.
  • It is noted that when the graphical program is deployed on the portable computing device, the user interface or front panel of the graphical program may be altered. For example, some portable computing devices, such as PDA's, typically do not support a full window-based user interface system. Thus, the user interface elements of the original graphical program may be changed or translated into user interface elements that are available on the target portable computing device. For example, in some instances this may comprise re-arranging or re-sizing user interface elements, changing graphical elements into text elements, etc.
  • FIG. 1A—Portable Computing Device Coupled to a Desktop Computer System
  • FIG. 1A illustrates a system including the computer system 82 of FIG. 1 and a portable computing device 102, such as a PDA or mobile terminal. As described above, the computer system 82 may be operable to deploy a graphical program onto the portable computing device 82 for execution.
  • In one embodiment, the portable computing device 102 may be coupled to the computer system 82 via a wire or cable. As one example, the portable computing device 102 may be coupled to the computer system 82 through a serial cable, and the graphical program may be transferred over this serial cable to the portable computing device 102.
  • In another embodiment, the portable computing device 102 may not be physically attached to the computer system 82, and the graphical program may be transferred to the portable computing device 102 using a wireless communication protocol. In various embodiments, any of various wireless protocols or techniques may be utilized in deploying the graphical program on the portable computing device 102.
  • In another embodiment, the portable computing device 102 may be located remotely from the computer system 82, and the graphical program may be transferred to the portable computing device 102 over a network, such as a LAN (local area network), WAN (wide area network), the Internet, or an Intranet, among others. For example, for a portable computing device 102 with an Internet connection, the device may be connected to the Internet and may receive data representing the graphical program sent over the Internet by the computer system 82.
  • FIGS. 2A and 2B—Instrumentation and Industrial Automation Systems
  • The following describes embodiments of the present invention involved with performing test and/or measurement functions and/or controlling and/or modeling instrumentation or industrial automation hardware. However, it is noted that the present invention can be used for a plethora of applications and is not limited to instrumentation or industrial automation applications. In other words, the following description is exemplary only, and the present invention may be used for any desired purpose. Thus, the system and method of the present invention is operable to be used in any of various types of applications, including the control of other types of devices such as multimedia devices, video devices, audio devices, telephony devices, Internet devices, etc., as well as general purpose software applications such as word processing, spreadsheets, network control, games, etc.
  • FIG. 2A illustrates an exemplary instrumentation control system 100. The system 100 comprises a portable computing device 102, e.g., a PDA device, which may couple (in a wired or wireless manner) to one or more instruments. The portable computing device 102 may connect to the one or more instruments in any of various ways, and preferably connects wirelessly, i.e., communication between the portable computing device 102 and the one or more instruments is performed using a wireless communication protocol. In one embodiment, the portable computing device 102 may operate with the one or more instruments to analyze, measure, or control a unit under test (UUT) or process 150.
  • The one or more instruments may include a GPIB instrument 112, a data acquisition (DAQ) instrument 114, a VXI instrument 116, a PXI instrument 118, a video device or camera 132, and/or a motion control device 136, among other types of devices.
  • The GPIB instrument 112 may couple to the portable computing device 102 via a wireless communication protocol. For example, the GPIB instrument 112 may include wireless communication circuitry for communicating with an external device. In a similar manner, the video device 132, the motion control device 136, the VXI instrument 116, the PXI instrument 118, and/or the data acquisition instrument 114 may connect to the portable computing device 102 wirelessly. The data acquisition instrument 114 may interface through signal conditioning circuitry to the UUT. The signal conditioning circuitry may comprise an SCXI (Signal Conditioning eXtensions for Instrumentation) chassis comprising one or more SCXI modules.
  • In another embodiment, the GPIB instrument 112, the video device 131, the motion control device 136, the data acquisition instrument 114, the VXI instrument 116, and/or the PXI instrument 118 may be physically connected to the portable computing device 102, e.g., via a serial cable.
  • A serial instrument (not shown) may also be coupled to the portable computing device 102, e.g., wirelessly or through a serial port provided by the portable computing device 102. In typical instrumentation control systems an instrument will not be present of each interface type, and in fact many systems may only have one or more instruments of a single interface type, such as only GPIB instruments.
  • The instruments may be coupled to a unit under test (UUT) or process 150, or may be coupled to receive field signals, typically generated by transducers. The system 100 may be used in a data acquisition and control application, in a test and measurement application, an image processing or machine vision application, a process control application, a man-machine interface application, a simulation application, a hardware-in-the-loop validation application, or any of various other types of applications.
  • FIG. 2B illustrates an exemplary industrial automation system 160. The industrial automation system 160 is similar to the instrumentation or test and measurement system 100 shown in FIG. 2A. Elements which are similar or identical to elements in FIG. 2A have the same reference numerals for convenience. The system 160 may comprise a portable computing device 102 that may couple (in a wired or wireless manner) to one or more devices or instruments. The portable computing device 102 may connect to the one or more devices or instruments in any of various ways, and preferably connects wirelessly, i.e., communication between the portable computing device 102 and the one or more devices or instruments is performed using a wireless communication protocol. In one embodiment, the portable computing device 102 may operate with the one or more devices to a process or device 150 to perform an automation function, such as MMI (Man Machine Interface), SCADA (Supervisory Control and Data Acquisition), portable or distributed data acquisition, process control, advanced analysis, or other control.
  • The one or more devices may include a data acquisition instrument 114, a PXI instrument 118, an image acquisition device 132, a motion control device 136, a fieldbus device 170, a PLC (Programmable Logic Controller) 176, a serial instrument 182, or a distributed data acquisition system, such as the Fieldpoint system available from National Instruments, among other types of devices. As described above, these devices may interface with the portable computing device 102 in any of various ways, e.g., wirelessly or using a physical connection. In typical industrial automation systems a device will not be present of each interface type, and in fact many systems may only have one or more devices of a single interface type, such as only PLCs. The devices may be coupled to the device or process 150.
  • As used herein, the term “instrument” is intended to include any of the devices that are adapted to be connected to a portable computing device as shown in FIGS. 2A and 2B, traditional “stand-alone” instruments, as well as other types of measurement and control devices. The term “measurement function” may include any type of data acquisition, measurement or control function, such as that implemented by the instruments shown in FIGS. 2A and 2B. For example, the term “measurement function” includes acquisition and/or processing of an image. As described below, a graphical program may be created that implements a measurement function. For example, the graphical program may execute on the portable computing device to acquire a signal and perform the measurement function on the acquired signal.
  • Graphical software programs which perform data acquisition, analysis and/or presentation, e.g., for measurement, instrumentation control, industrial automation, or simulation, such as in the applications shown in FIGS. 2A and 2B, may be referred to as virtual instruments.
  • In one embodiment, the graphical program executing on the portable computing device 102 may be used to perform only a portion of the applications described above. For example, the portable computing device may provide a convenient way to gather data acquired from instruments located in the field or on a factory floor. The data gathered by the portable computing device may then be downloaded to another computer system for further analysis or display.
  • FIG. 3—Portable Computing Device Block Diagram
  • FIG. 3 is a block diagram illustrating one embodiment of a portable computing device 102 operable to receive and execute a graphical program. The portable computing device 102 may be any of various types of portable computing device. Examples of portable computing devices include personal digital assistants (PDAs), mobile terminals, handheld computers, wearable devices (e.g., wristwatch computers), “smart” cellular telephones, game consoles, global positioning system (GPS) units, electronic textbook devices, etc. New classes of portable computing device are rapidly emerging, and this is not intended to be an exhaustive list.
  • As shown in FIG. 3, the portable computing device 102 may include a processor 710. The processor 710 may be any of various types, including a digital signal processor (DSP), an x86 processor, e.g., a Pentium class processor, a PowerPC processor, as well as others. The processor 710 may have various clock speeds, including clock speeds similar to those found in desktop computer-class processors, as well as lower speeds such as 16 MHz.
  • The portable computing device 102 may also include a memory 712 coupled to the processor 710. The memory 712 may comprise any of various types of memory, including DRAM, SRAM, EDO RAM, flash memory, etc., or a non-volatile memory such as a magnetic media, e.g., a hard drive, or optical storage. The memory 712 may comprise other types of memory as well, or combinations thereof. In one embodiment, the memory 712 may have a small storage capacity compared to a typical desktop computer system.
  • The portable computing device 102 may also include wireless logic 720 for receiving data wirelessly from other devices, such as a desktop computer system. The wireless logic 720 may be operable to communicate with external devices using any of various wireless protocols. In other embodiments, the portable computing device 102 may include other means for communicating with other devices, such as logic for performing serial communication.
  • As shown in FIG. 3, the memory 712 may store a graphical program 718. The graphical program 718 may perform any function, such as a test and/or measurement function, an industrial automation function, a process control function, a data acquisition function, a motion control function, a simulation function, etc., or a general purpose software application such as a database application, a calendar application, a game, etc.
  • The portable computing device 102 may also comprise a display 716. The display 716 may be any of various types, such as an LCD (liquid crystal display). The display for a typical portable computing device may be small compared to the display of a desktop computer system. A graphical user interface (GUI) 722 for the graphical program may be displayed on the display 716. The processor 710 executing code and data from the memory 712 may provide a means for generating and displaying the GUI.
  • The portable computing device 102 may also comprise an input mechanism 714. The input mechanism 714 may be any of various types, as appropriate for a particular portable computing device. For example, the input mechanism may comprise a keypad, trackball, touch pen, microphone, modem, infrared receiver, etc.
  • FIG. 4
  • FIG. 4 is a flowchart diagram illustrating one embodiment of a method for deploying one or more graphical programs on a portable computing device, such as a personal digital assistant (PDA) device. It is noted that FIG. 4 illustrates one exemplary embodiment, and other embodiments are also contemplated.
  • As shown, in step 302 one or more graphical programs may be created. The one or more graphical programs may comprise a main graphical program and one or more sub-graphical programs. Alternatively the one or more graphical programs may comprise a plurality of graphical programs which interoperate with each other in either a client server or peer-to-peer relationship. Alternatively, only a single graphical program may be created.
  • The graphical program(s) may be created or assembled by the user arranging on a display a plurality of nodes or icons and then interconnecting the nodes to create the graphical program(s). In response to the user assembling the graphical program, data structures may be created and stored which represent the graphical program. The nodes may be interconnected in one or more of a data flow, control flow, and/or execution flow format. The graphical program may thus comprise a block diagram having a plurality of interconnected nodes or icons that visually indicate the functionality of the program. The graphical program may implement any desired function.
  • As noted above, the graphical program may comprise a block diagram and may also include a user interface portion or front panel portion. Where the graphical program includes a user interface portion, the user may assemble the user interface on the display. As one example, the user may use the LabVIEW graphical programming development environment to create the graphical program.
  • In an alternate embodiment, the graphical program may be created in step 302 by creating or specifying a prototype, followed by automatic or programmatic generation of the graphical program from the prototype. This functionality is described in U.S. patent application Ser. No. 09/587,682 titled “System and Method for Automatically Generating a Graphical Program to Perform an Image Processing Algorithm”, which is hereby incorporated by reference in its entirety as though fully and completely set forth herein. The graphical program may be created in other manners, either by the user or programmatically, as desired.
  • It is noted that the graphical user interface and the block diagram may be created separately or together, in various orders, or in an interleaved manner. In one embodiment, the user interface elements in the graphical user interface or front panel may be specified or created, and terminals corresponding to the user interface elements may appear in the block diagram in response. For example, when the user places user interface elements in the graphical user interface or front panel, corresponding terminals may appear in the block diagram as nodes that may be connected to other nodes in the block diagram, e.g., to provide input to and/or display output from other nodes in the block diagram. In another embodiment, the user interface elements may be created in response to the block diagram. For example, the user may create the block diagram, wherein the block diagram includes terminal icons or nodes that indicate respective user interface elements. The graphical user interface or front panel may then be automatically (or manually) created based on the terminal icons or nodes in the block diagram. As another example, the graphical user interface elements may be comprised in the diagram.
  • In step 304 the user may select an option to build an executable for the portable computing device, e.g., PDA device. For example, the user may select an option from a menu in the graphical programming development environment, e.g., LabVIEW, to create a “build” or select an option to build an executable that will execute on a PDA device.
  • In response to the user selecting this build option in step 304, in step 306 the user may be prompted to specify or select one or more graphical programs from which the user desires to create the executable. As one example, this may involve selecting the graphical program(s) created in step 302. For example, the user may select one main graphical program and a plurality of sub-graphical programs. Alternatively, the user may select a single graphical program or a plurality of different graphical programs for which the user desires to create an executable. The user may select the one or more graphical programs in any of various ways. For example, selecting the graphical program(s) may comprise the user browsing through a file system to obtain the graphical programs, or dragging and dropping icons from a palette, or other appropriate selection methods.
  • In an alternative embodiment, it may not be necessary to select the “build” option and then specify the graphical program(s) to include in the build. For example, if the user is currently viewing or editing a graphical program within the graphical programming development environment, then the user may simply select a “Deploy to PDA” menu option to deploy the current graphical program to the portable computing device.
  • In another embodiment, steps 304 and 306 may be performed using graphical association or “drag and drop” techniques. For example, the system may display a configuration diagram which includes icons for respective graphical programs and an icon for the PDA device. In this example, the user may deploy one or more graphical programs on a PDA by dragging and dropping one or more graphical program icons on the PDA icon.
  • In step 308 the one or more selected graphical programs may be converted to an executable format that can be executed by the portable computing device. A software program may operate to automatically, i.e., programmatically, convert the one or more graphical programs to the executable format. For example, the one or more graphical programs may be initially represented as a plurality of data structures that define or specify the operation of the respective graphical programs. The conversion software program may operate to access these data structures from memory and convert the data structures to an executable format, e.g., machine language code or an interpretable script or other similar executable format, wherein this executable can be executed by the portable computing device.
  • As shown, during the conversion process in step 308, various run-time software 340 may be used to facilitate generation of the executable from the graphical program(s). As shown in FIG. 6, this run-time software may comprise serial, interface, and file I/O software, as well as user interface software, math software, and data type software.
  • This run-time software 340 may be useful and/or necessary because the portable computing device may not inherently include a graphical program execution engine. A graphical program execution engine may be described as a software program that is designed to execute graphical programs. A graphical program execution engine may include various software for handling user interface issues and display certain GUI elements, performing certain math functions, handling certain data types, performing file I/O, and performing various interface or serial functions. Since in one embodiment the portable computing device does not include a graphical program execution engine, the run-time software 340 may add various program instructions and/or data structures to enable the resulting executable to execute and perform the functionality indicated by the graphical program. Hence, the executable may require additional information that is not already contained within the data structures that correspond to the graphical programs that have been created.
  • Stated another way, the graphical program may include portions that cannot execute “natively” on the portable computing device 102. In other words, the portable computing device software cannot inherently perform this functionality based on the graphical program as written, i.e., these portions cannot execute unmodified or without additional program instructions. Typically, the portions that cannot execute “natively” on the portable computing device 102 require functionality that would be present in a graphical program execution engine or other software execution program.
  • In step 308 the method may examine the graphical program, determine which portions of the graphical program cannot execute “natively” (e.g., without modification or additional program instructions) on the portable computing device 102, and add various program instructions and/or data structures from the run-time software 340 to account for these portions. This enables the resulting executable to perform the functionality indicated by the graphical program, despite the fact that the portable computing device 102 does not include a graphical program execution engine.
  • Thus, various program instructions and/or data structures from the run-time software 340 may be incorporated into the executable program in step 308. For example, as described above, the graphical user interface system of the portable computing device may not fully support all of the possible control and indicator icons present in the front panel of the original graphical program. Thus, a portion of the user interface software comprised in the run-time software 340 may be incorporated into the executable created in step 308, e.g., based on the specific GUI elements comprised in the one or more graphical programs being converted. This user interface software may thus provide appropriate program instructions for displaying or representing different user interface or front panel elements. As another example, the portable computing device software may not inherently support certain data types or math operations. Thus, various other program instructions and/or data structures from the run-time software 340 may be incorporated into the executable program in step 308 to enable the portable computing device 102 to execute the graphical program correctly, i.e., so that execution of the executable is substantially the same as execution of the graphical program on a system which includes a graphical program execution engine.
  • In step 310 the executable may be transferred to the portable computing device, e.g., PDA. In one embodiment, this may involve using a transfer program, such as a “hot sync” program to transfer the executable to the portable computing device. As described above with reference to FIG. 1A, the portable computing device may be physically coupled to the computer system, e.g., through a serial cable, and the executable may be transferred over this cable to the portable computing device. In another embodiment, the executable may be transferred in a wireless fashion to the portable computing device and deployed on the device in a wireless fashion.
  • In step 312 the executable may be executed on the portable computing device, e.g., PDA. As noted above, a graphical program may comprise a block diagram and may further comprise a user interface or front panel. During execution of the executable on the portable computing device, the portable computing device may be operable to display at least a portion or all of the user interface or front panel of the original one or more graphical programs. The user may interact with this user interface or front panel to control the executable executing on the portable computing device. For example, where the graphical program performs a measurement function, the user interface or front panel may be used to control the graphical program to accomplish various measurement or automation functions. As another example, the user interface or front panel on the portable computing device may be used to control or interact with any of the various measurement or instrumentation devices shown in FIGS. 2A and 2B.
  • As described above, the graphical user interface system of the portable computing device may not fully support all of the possible control and indicator icons present in the front panel of the original graphical program. However, the user interface software comprised in the run-time software 340 may have been incorporated into the executable created in step 308. This user interface software may be used to provide appropriate program instructions for displaying or representing different user interface or front panel elements. Various other run-time software incorporated into the executable may be executed in step 312.
  • In one embodiment of the method, one or more graphical programs that are desired for execution by the executable are not converted to executable format for transfer to the portable computing device, but rather remain on the host computer system. In this embodiment, the executable may include calls to one or more graphical programs that reside on the host computer system. Thus, during execution of the executable on the portable computing device, the executable may be operable to call these graphical programs that reside on the host computer system. As one example, one or more of the graphical programs which are deployed on the portable computing device may include a “call by reference node”, wherein this node is operable when executed to call a graphical program on a computer system separate from the portable computing device. This remote invocation may use VI server techniques described in U.S. Pat. Nos. 6,102,965 and 6,064,812. Thus, the executable may call and remotely invoke a graphical program, e.g., through a wireless means or through a physical connection, such as a serial connection.
  • In one embodiment, the graphical program executing on the portable computing device may be debugged using a desktop computer system. For example, the desktop computer system may display an image of the block diagram of the graphical program that is actually executing on the portable computing device. The block diagram displayed on the display of the computer system may display various execution information as the block diagram executes on the portable computing device. The execution information may include visual aids such as single stepping, break points, execution highlighting (highlighting of nodes as they execute, displaying data output from respective nodes, etc.). Thus the block diagram may be viewed and used by the user in various debugging modes such as single stepping, setting break points, execution highlighting, etc.
  • In one embodiment, during execution of the graphical program(s) on the portable computing device, the portable computing device may be operable to transfer data to an external computer system, such as a desktop computer system. A conduit program may execute on the desktop computer system and may receive data according to a standard or proprietary format. For example, where the desktop computer system is running the LabVIEW graphical programming system, the conduit program executing on the desktop computer may convert data received from the portable computing device to a “datalog” format, which is a proprietary format used by LabVIEW which enables LabVIEW to view and use the data.
  • FIG. 5
  • As described above with reference to the method of FIG. 4, in step 308 the selected graphical program(s) may be converted to a format suitable for execution on the portable computing device. FIG. 5 is a flowchart diagram illustrating more detail regarding step 308, according to one embodiment.
  • As shown, in step 322 the method may convert the one or more graphical programs to a text-based language, such as C, C++, FORTRAN, Java, Pascal, etc. Thus, for example, the one or more graphical programs may be converted to C source code, C++ source code, Java source code, etc. This may involve accessing data structures representing the one or more graphical programs and converting these data structures into a text-based programming language, similarly as described above.
  • In step 324 this text-based language source code may be compiled to create the executable. This compiling step may utilize the run-time software 340, as described above.
  • In an alternate embodiment, instead of converting the one or more graphical program(s) to an intermediate text-based programming language representation, the graphical program(s) may be converted directly to an executable.
  • As described above, in the conversion process of converting the one or more graphical programs to an executable, the conversion software program may access run-time software 340 which is used during the conversion process. This run-time software may comprise various components such as user interface element software, math software, data type software, serial software, interface software, file I/O software, etc. This software 340 may be used to aid in the conversion of the one or more graphical programs to an executable that can run on a different platform such as is present in a portable computing device, e.g., a PDA. In other words, portions of this software 340 may be incorporated into the executable created in step 308 to account for execution on the PDA platform.
  • Although the embodiments above have been described in considerable detail, numerous variations and modifications will become apparent to those skilled in the art once the above disclosure is fully appreciated. It is intended that the following claims be interpreted to embrace all such variations and modifications.

Claims (20)

1. A method for remote debugging of a graphical program on a handheld computer, the method comprising:
executing the graphical program on the handheld computer, wherein the graphical program comprises a block diagram, wherein the block diagram comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program;
displaying the block diagram on a display device of a second computing device, wherein the second computing device is coupled to the handheld computer through one of a wired or wireless medium; and
displaying execution information on the block diagram displayed on the display device in response to said executing the graphical program on the handheld computer, wherein the execution information is useable in debugging the graphical program.
2. The method of claim 1, wherein the handheld computer comprises a pen-based computing device.
3. The method of claim 1, further comprising:
converting the graphical program to an executable that can be executed by the handheld computer prior to said executing the graphical program on the handheld computer; and
transferring the executable to the handheld computer;
wherein said executing the graphical program on the handheld computer comprises executing the executable on the handheld computer.
4. The method of claim 1,
wherein the second computing device comprises a desktop computer system.
5. The method of claim 1, further comprising:
receiving user input to the second computing device to debug the graphical program.
6. The method of claim 5, wherein said debugging the graphical program comprises performing one or more of:
single stepping through the graphical program;
setting break points in the graphical program; and/or
performing execution highlighting for the graphical program.
7. The method of claim 1, wherein the second computing device is coupled to the handheld computer through a network.
8. The method of claim 1, further comprising:
transferring data produced by said executing to the second computing device.
9. A system for remote debugging of a graphical program on a handheld computer, the system comprising:
a handheld computer, comprising:
a first processor; and
a first memory medium coupled to the first processor, wherein the memory medium stores a graphical program, wherein the graphical program comprises a block diagram, wherein the block diagram comprises a plurality of interconnected nodes which visually indicate functionality of the graphical program; and
a second computing device, comprising:
a second processor;
a second memory medium coupled to the second processor; and
a display device, coupled to the second processor and the second memory medium;
wherein the handheld computer is coupled to the second computing device via a wired or wireless medium;
wherein the handheld computer is operable to execute the graphical program; and
wherein the second computing device is operable to:
display the block diagram on the display device; and
display execution information on the block diagram displayed on the display device in response to the handheld computer executing the graphical program, wherein the execution information is useable in debugging the graphical program.
10. The method of claim 1, wherein the handheld computer comprises a pen-based computing device.
11. A method for executing a graphical program on a handheld computer, the method comprising:
storing a first graphical program on the handheld computer, wherein the first graphical program is configured to invoke execution of a second graphical program;
storing the second graphical program on a second computing device;
executing the first graphical program on the handheld computer; and
invoking execution of the second graphical program on the second computing device in response to said executing.
12. The method of claim 11, wherein the handheld computer comprises a pen-based computing device.
13. The method of claim 11, wherein the second computing device is coupled to the handheld computer through a wireless medium.
14. The method of claim 11, further comprising:
converting the graphical program to an executable that can be executed by the handheld computer prior to said executing the graphical program on the handheld computer; and
transferring the executable to the handheld computer;
wherein said executing the graphical program on the handheld computer comprises executing the executable on the handheld computer.
15. The method of claim 11,
wherein the second computing device comprises a desktop computer system.
16. The method of claim 11,
wherein said executing the first graphical program on the handheld computer comprises executing a node in the first graphical program that performs said invoking execution of the second graphical program on the second computing device.
17. The method of claim 11, wherein the second computing device is coupled to the handheld computer through a network.
18. The method of claim 11, further comprising:
transferring data produced by said executing to the second computing device.
19. A system for executing a graphical program on a handheld computer, the system comprising:
a handheld computer, comprising:
a first processor; and
a first memory medium coupled to the first processor, wherein the memory medium stores a first graphical program, wherein the first graphical program comprises a plurality of interconnected nodes which visually indicate functionality of the first graphical program, and wherein the first graphical program is configured to invoke execution of a second graphical program; and
a second computing device, comprising:
a second processor; and
a second memory medium coupled to the second processor, wherein the second memory medium stores the second graphical program;
wherein the handheld computer is coupled to the second computing device;
wherein the handheld computer is operable to execute the first graphical program; and
wherein the second computing device is operable to execute the second graphical program in response to the handheld computer executing the first graphical program.
20. The system of claim 19, wherein the handheld computer comprises a pen-based computing device.
US11/560,899 2001-08-14 2006-11-17 Graphical Program Execution On A Handheld Computer Abandoned US20070094642A1 (en)

Priority Applications (3)

Application Number Priority Date Filing Date Title
US11/560,899 US20070094642A1 (en) 2001-08-14 2006-11-17 Graphical Program Execution On A Handheld Computer
US11/853,086 US7765278B2 (en) 2001-08-14 2007-09-11 Wireless deployment and execution of a graphical program to a measurement device
US13/303,642 US8656373B2 (en) 2001-08-14 2011-11-23 Distributed graphical program execution using a handheld computer

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US31213301P 2001-08-14 2001-08-14
US09/974,601 US6876368B2 (en) 2001-08-14 2001-10-09 System and method for deploying a graphical program to a PDA device
US10/989,849 US7200817B2 (en) 2001-08-14 2004-11-15 Graphical program execution on a personal digital assistant
US11/560,899 US20070094642A1 (en) 2001-08-14 2006-11-17 Graphical Program Execution On A Handheld Computer

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
US10/989,849 Continuation US7200817B2 (en) 2001-08-14 2004-11-15 Graphical program execution on a personal digital assistant

Related Child Applications (2)

Application Number Title Priority Date Filing Date
US11/853,086 Continuation US7765278B2 (en) 2001-08-14 2007-09-11 Wireless deployment and execution of a graphical program to a measurement device
US13/303,642 Continuation US8656373B2 (en) 2001-08-14 2011-11-23 Distributed graphical program execution using a handheld computer

Publications (1)

Publication Number Publication Date
US20070094642A1 true US20070094642A1 (en) 2007-04-26

Family

ID=26978239

Family Applications (5)

Application Number Title Priority Date Filing Date
US09/974,601 Expired - Lifetime US6876368B2 (en) 2001-08-14 2001-10-09 System and method for deploying a graphical program to a PDA device
US10/989,849 Expired - Lifetime US7200817B2 (en) 2001-08-14 2004-11-15 Graphical program execution on a personal digital assistant
US11/560,899 Abandoned US20070094642A1 (en) 2001-08-14 2006-11-17 Graphical Program Execution On A Handheld Computer
US11/853,086 Expired - Lifetime US7765278B2 (en) 2001-08-14 2007-09-11 Wireless deployment and execution of a graphical program to a measurement device
US13/303,642 Expired - Lifetime US8656373B2 (en) 2001-08-14 2011-11-23 Distributed graphical program execution using a handheld computer

Family Applications Before (2)

Application Number Title Priority Date Filing Date
US09/974,601 Expired - Lifetime US6876368B2 (en) 2001-08-14 2001-10-09 System and method for deploying a graphical program to a PDA device
US10/989,849 Expired - Lifetime US7200817B2 (en) 2001-08-14 2004-11-15 Graphical program execution on a personal digital assistant

Family Applications After (2)

Application Number Title Priority Date Filing Date
US11/853,086 Expired - Lifetime US7765278B2 (en) 2001-08-14 2007-09-11 Wireless deployment and execution of a graphical program to a measurement device
US13/303,642 Expired - Lifetime US8656373B2 (en) 2001-08-14 2011-11-23 Distributed graphical program execution using a handheld computer

Country Status (1)

Country Link
US (5) US6876368B2 (en)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080034121A1 (en) * 2001-08-14 2008-02-07 Andrew Dove Wireless Deployment and Execution of a Graphical Program to a Measurement Device
US20100293528A1 (en) * 2009-05-18 2010-11-18 Austin Paul F Hosting a Graphical Program Execution System on an Embedded Device
US20120137038A1 (en) * 2010-11-26 2012-05-31 Via Technologies, Inc. Electronic systems supporting multiple operation modes and opearation methods thereof
US20140196014A1 (en) * 2006-12-11 2014-07-10 Synopsys, Inc. System and Method of Debugging Multi-Threaded Processes
US20140364970A1 (en) * 2013-06-07 2014-12-11 General Electric Company System and method for application development and deployment
US10095265B2 (en) 2011-12-05 2018-10-09 Amer Sports Digital Services Oy Adaptable microcontroller-operated device and related system

Families Citing this family (62)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060279542A1 (en) * 1999-02-12 2006-12-14 Vega Vista, Inc. Cellular phones and mobile devices with motion driven control
US6918091B2 (en) * 2000-11-09 2005-07-12 Change Tools, Inc. User definable interface system, method and computer program product
US7895530B2 (en) * 2000-11-09 2011-02-22 Change Tools, Inc. User definable interface system, method, support tools, and computer program product
CA2431762C (en) 2000-12-18 2011-11-01 Kargo, Inc. A system and method for delivering content to mobile devices
US7225353B1 (en) * 2001-10-03 2007-05-29 Palm, Inc. Information preservation on a portable electronic device
US7752256B2 (en) * 2002-01-16 2010-07-06 Laszlo Systems, Inc. Presentation server
US7185287B2 (en) * 2002-07-03 2007-02-27 National Instruments Corporation Wireless deployment / distributed execution of graphical programs to smart sensors
EP2003549B1 (en) 2002-07-03 2016-04-27 National Instruments Corporation Wireless deployment/distributed execution of graphical programs to smart sensors
US20040027377A1 (en) * 2002-08-06 2004-02-12 Grace Hays User interface design and validation including dynamic data
US20040027378A1 (en) * 2002-08-06 2004-02-12 Hays Grace L. Creation of user interfaces for multiple devices
US7793233B1 (en) 2003-03-12 2010-09-07 Microsoft Corporation System and method for customizing note flags
US7607098B2 (en) * 2003-03-14 2009-10-20 Waters Investments Limited System and method for dynamically controlling operation of rheometric instruments
US7774799B1 (en) 2003-03-26 2010-08-10 Microsoft Corporation System and method for linking page content with a media file and displaying the links
US7647562B2 (en) * 2003-04-03 2010-01-12 National Instruments Corporation Deployment and execution of a graphical program on an embedded device from a PDA
US20040196312A1 (en) * 2003-04-07 2004-10-07 Joseph Powers Method and apparatus for rapid distribution of information
GB2400687B (en) * 2003-04-16 2005-04-06 Schlumberger Holdings Acquisition and control system
US20050071770A1 (en) * 2003-09-29 2005-03-31 Inventec Appliances Corp. Method of personalizing icon on electronic communication product
US7516414B2 (en) * 2004-02-02 2009-04-07 International Business Machines Corporation System and method for tab order mapping of user interfaces
US20050172235A1 (en) * 2004-02-02 2005-08-04 International Business Machines Corporation System and method for excluded elements mapping in a user interface
US7315988B2 (en) * 2004-02-02 2008-01-01 International Business Machines Corporation System and method for using short captions to map user interfaces
US7424292B2 (en) * 2004-03-11 2008-09-09 Thaddeus John Kobylarz Compound wireless mobile communication services
US8050782B2 (en) * 2004-05-20 2011-11-01 Abb Research Ltd. Method and system to retrieve and display technical data for an industrial device
US20060036799A1 (en) * 2004-08-13 2006-02-16 National Instruments Corporation Multi-platform development and execution of graphical programs
US8397224B2 (en) * 2004-09-13 2013-03-12 The Mathworks, Inc. Methods and system for executing a program in multiple execution environments
US7788589B2 (en) * 2004-09-30 2010-08-31 Microsoft Corporation Method and system for improved electronic task flagging and management
US7712049B2 (en) 2004-09-30 2010-05-04 Microsoft Corporation Two-dimensional radial user interface for computer software applications
US8707205B2 (en) * 2005-09-01 2014-04-22 Blackberry Limited Method and apparatus for controlling a display in an electronic device
US20070057911A1 (en) * 2005-09-12 2007-03-15 Sina Fateh System and method for wireless network content conversion for intuitively controlled portable displays
US10884712B1 (en) * 2005-12-30 2021-01-05 The Mathworks, Inc. Component-based framework for generating device driver model elements
US7747557B2 (en) * 2006-01-05 2010-06-29 Microsoft Corporation Application of metadata to documents and document objects via an operating system user interface
US7797638B2 (en) * 2006-01-05 2010-09-14 Microsoft Corporation Application of metadata to documents and document objects via a software application user interface
US20070189270A1 (en) * 2006-02-15 2007-08-16 Borislow Daniel M Network adapter
US8271948B2 (en) * 2006-03-03 2012-09-18 Telefonaktiebolaget L M Ericsson (Publ) Subscriber identity module (SIM) application toolkit test method and system
CN100458700C (en) * 2006-03-22 2009-02-04 北京握奇数据系统有限公司 Building method and apparatus for application program with safety requirement
US20070245229A1 (en) * 2006-04-17 2007-10-18 Microsoft Corporation User experience for multimedia mobile note taking
US20070245223A1 (en) * 2006-04-17 2007-10-18 Microsoft Corporation Synchronizing multimedia mobile notes
KR100775898B1 (en) * 2006-06-22 2007-11-13 삼성전자주식회사 Method for setting play-lists of contents files in mobile terminal
US7844908B2 (en) * 2006-08-04 2010-11-30 National Instruments Corporation Diagram that visually indicates targeted execution
US7840904B2 (en) * 2006-08-04 2010-11-23 National Instruments Corporation Execution target structure node for a graphical program
US8612870B2 (en) * 2006-08-04 2013-12-17 National Instruments Corporation Graphically specifying and indicating targeted execution in a graphical program
US7707518B2 (en) 2006-11-13 2010-04-27 Microsoft Corporation Linking information
US7761785B2 (en) 2006-11-13 2010-07-20 Microsoft Corporation Providing resilient links
CA2686971A1 (en) * 2007-04-03 2008-10-16 Ymax Communications Corp. Techniques for populating a contact list
US20090209224A1 (en) * 2008-02-20 2009-08-20 Borislow Daniel M Computer-Related Devices and Techniques for Facilitating an Emergency Call Via a Cellular or Data Network
US8433283B2 (en) * 2009-01-27 2013-04-30 Ymax Communications Corp. Computer-related devices and techniques for facilitating an emergency call via a cellular or data network using remote communication device identifying information
US20110225524A1 (en) * 2010-03-10 2011-09-15 Cifra Christopher G Multi-Touch Editing in a Graphical Programming Language
US20110276952A1 (en) * 2010-05-10 2011-11-10 Nokia Siemens Networks Oy Telecommunications application generator
US8572556B2 (en) 2010-12-31 2013-10-29 Starlims Corporation Graphically based method for developing connectivity drivers
US20120173902A1 (en) * 2011-01-05 2012-07-05 Jennifer Greenwood Zawacki Power management of base and detachable device
US9665956B2 (en) 2011-05-27 2017-05-30 Abbott Informatics Corporation Graphically based method for displaying information generated by an instrument
US9123002B2 (en) 2011-05-27 2015-09-01 Abbott Informatics Corporation Graphically based method for developing rules for managing a laboratory workflow
US8713482B2 (en) 2011-07-28 2014-04-29 National Instruments Corporation Gestures for presentation of different views of a system diagram
US8782525B2 (en) 2011-07-28 2014-07-15 National Insturments Corporation Displaying physical signal routing in a diagram of a system
US9047007B2 (en) 2011-07-28 2015-06-02 National Instruments Corporation Semantic zoom within a diagram of a system
US9268619B2 (en) 2011-12-02 2016-02-23 Abbott Informatics Corporation System for communicating between a plurality of remote analytical instruments
US20140358256A1 (en) * 2013-05-31 2014-12-04 Rockwell Automation Technologies, Inc. Systems, methods, and software to present human machine interfaces on a mobile device
CN104765627A (en) * 2014-01-07 2015-07-08 联发科技(新加坡)私人有限公司 Smart device, and wearable device and application program installing and uninstalling method thereof
US9819509B2 (en) * 2015-07-17 2017-11-14 ARC Informatique Systems and methods for location-based control of equipment and facility resources
US10031654B2 (en) * 2016-04-12 2018-07-24 Honeywell International Inc. Apparatus and method for generating industrial process graphics
US10318904B2 (en) 2016-05-06 2019-06-11 General Electric Company Computing system to control the use of physical state attainment of assets to meet temporal performance criteria
US10310822B1 (en) * 2017-11-30 2019-06-04 Dspace Digital Signal Processing And Control Engineering Gmbh Method and system for simulating a control program
US11016784B2 (en) 2019-03-08 2021-05-25 Palantir Technologies Inc. Systems and methods for automated deployment and adaptation of configuration files at computing devices

Citations (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5392207A (en) * 1993-08-20 1995-02-21 Allen-Bradley Company, Inc. Programmable motion controller with graphical programming aid
US5517663A (en) * 1993-03-22 1996-05-14 Kahn; Kenneth M. Animated user interface for computer program creation, control and execution
US5638299A (en) * 1995-06-22 1997-06-10 Miller; Keith Light weight, self-contained programmable data-acquisition system
US5652909A (en) * 1986-04-14 1997-07-29 National Instruments Corporation Method and apparatus for providing autoprobe features in a graphical data flow diagram
US5724074A (en) * 1995-02-06 1998-03-03 Microsoft Corporation Method and system for graphically programming mobile toys
US5949418A (en) * 1997-05-06 1999-09-07 Microsoft Corporation Operating system for handheld computing device having graphical window minimization/enlargement functionality
US6032255A (en) * 1997-04-11 2000-02-29 Samsung Electronics Co., Ltd. Method for booting a personal digital assistant
US6040833A (en) * 1993-12-10 2000-03-21 International Business Machines Corp. Method and system for display manipulation of multiple applications in a data processing system
US6053951A (en) * 1997-07-10 2000-04-25 National Instruments Corporation Man/machine interface graphical code generation wizard for automatically creating MMI graphical programs
US6064409A (en) * 1993-09-22 2000-05-16 National Instruments Corporation System and method for providing audio probe and debugging features in a graphical data flow program
US6064812A (en) * 1996-09-23 2000-05-16 National Instruments Corporation System and method for developing automation clients using a graphical data flow program
US6173438B1 (en) * 1997-08-18 2001-01-09 National Instruments Corporation Embedded graphical programming system
US6219628B1 (en) * 1997-08-18 2001-04-17 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US20010037355A1 (en) * 2000-04-07 2001-11-01 Britt Joe Freeman Distinctive vibrate system, apparatus and method
US6412106B1 (en) * 1999-06-16 2002-06-25 Intervoice Limited Partnership Graphical system and method for debugging computer programs
US20020080091A1 (en) * 2000-12-22 2002-06-27 Shrikant Acharya Information transmission and display method and system for a handheld computing device
US20020170047A1 (en) * 2001-02-23 2002-11-14 Brian Swetland System and method for transforming object code
US20030076355A1 (en) * 2001-10-23 2003-04-24 Kodosky Jeffrey L. System and method for associating a block diagram with a user interface element
US20040010734A1 (en) * 2002-07-10 2004-01-15 Marius Ghercioiu Deployment and execution of a program on an embedded device
US6721804B1 (en) * 2000-04-07 2004-04-13 Danger, Inc. Portal system for converting requested data into a bytecode format based on portal device's graphical capabilities
US6732158B1 (en) * 1999-12-02 2004-05-04 Senvid, Inc. VCR webification
US6738964B1 (en) * 1999-03-11 2004-05-18 Texas Instruments Incorporated Graphical development system and method
US20040199897A1 (en) * 2003-04-03 2004-10-07 Marius Ghercioiu Deployment and execution of a graphical program on an embedded device from a PDA
US6847348B2 (en) * 2001-03-26 2005-01-25 Sap Aktiengesellschaft Systems and methods for executing functions for objects based on the movement of an input device
US20050066280A1 (en) * 2000-12-13 2005-03-24 National Instruments Corporation Configuring a GUI element to publish and/or subscribe to data
US6982695B1 (en) * 1999-04-22 2006-01-03 Palmsource, Inc. Method and apparatus for software control of viewing parameters
US6996733B2 (en) * 2000-04-07 2006-02-07 Danger, Inc. System for preserving data on a portable device by notifying portal server the device reaches low power and saving data to the portal server thereafter
US20060041860A1 (en) * 2004-08-17 2006-02-23 National Instruments Corporation Interrupts in a graphical programming system
US7024660B2 (en) * 1998-02-17 2006-04-04 National Instruments Corporation Debugging a program intended to execute on a reconfigurable device using a test feed-through configuration
US7302675B2 (en) * 2001-08-14 2007-11-27 National Instruments Corporation System and method for analyzing a graphical program using debugging graphical programs
US7331037B2 (en) * 2004-08-12 2008-02-12 National Instruments Corporation Static memory allocation in a graphical programming system

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4901221A (en) * 1986-04-14 1990-02-13 National Instruments, Inc. Graphical system for modelling a process and associated method
US5481741A (en) * 1986-04-14 1996-01-02 National Instruments Corporation Method and apparatus for providing attribute nodes in a graphical data flow environment
US5838683A (en) * 1995-03-13 1998-11-17 Selsius Systems Inc. Distributed interactive multimedia system architecture
US5831631A (en) * 1996-06-27 1998-11-03 Intel Corporation Method and apparatus for improved information visualization
US6102965A (en) * 1996-09-23 2000-08-15 National Instruments Corporation System and method for providing client/server access to graphical programs
US5784275A (en) * 1996-09-23 1998-07-21 National Instruments Corporation System and method for performing interface independent virtual instrumentation functions in a graphical data flow program
US6802053B1 (en) * 1997-08-18 2004-10-05 National Instruments Corporation Graphical programming system with distributed block diagram execution and front panel display
US6971066B2 (en) * 1997-08-18 2005-11-29 National Instruments Corporation System and method for deploying a graphical program on an image acquisition device
US6370569B1 (en) * 1997-11-14 2002-04-09 National Instruments Corporation Data socket system and method for accessing data sources using URLs
US6760916B2 (en) * 2000-01-14 2004-07-06 Parkervision, Inc. Method, system and computer program product for producing and distributing enhanced media downstreams
US6643690B2 (en) * 1998-12-29 2003-11-04 Citrix Systems, Inc. Apparatus and method for determining a program neighborhood for a client node in a client-server network
US7159183B1 (en) 1999-08-19 2007-01-02 National Instruments Corporation System and method for programmatically creating a graphical program
US6847916B1 (en) * 2000-06-12 2005-01-25 I/O Controls Corporation Method and system for monitoring, controlling, and locating portable devices performing remote diagnostic analysis of control network
US8640027B2 (en) * 2000-06-13 2014-01-28 National Instruments Corporation System and method for configuring a hardware device to execute a prototype
US7017123B2 (en) * 2000-12-27 2006-03-21 National Instruments Corporation Graphical user interface including palette windows with an improved search function
US6876368B2 (en) * 2001-08-14 2005-04-05 National Instruments Corporation System and method for deploying a graphical program to a PDA device
US6823283B2 (en) * 2001-08-14 2004-11-23 National Instruments Corporation Measurement system including a programmable hardware element and measurement modules that convey interface information
US7185287B2 (en) * 2002-07-03 2007-02-27 National Instruments Corporation Wireless deployment / distributed execution of graphical programs to smart sensors

Patent Citations (33)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5652909A (en) * 1986-04-14 1997-07-29 National Instruments Corporation Method and apparatus for providing autoprobe features in a graphical data flow diagram
US5517663A (en) * 1993-03-22 1996-05-14 Kahn; Kenneth M. Animated user interface for computer program creation, control and execution
US5392207A (en) * 1993-08-20 1995-02-21 Allen-Bradley Company, Inc. Programmable motion controller with graphical programming aid
US6064409A (en) * 1993-09-22 2000-05-16 National Instruments Corporation System and method for providing audio probe and debugging features in a graphical data flow program
US6040833A (en) * 1993-12-10 2000-03-21 International Business Machines Corp. Method and system for display manipulation of multiple applications in a data processing system
US5724074A (en) * 1995-02-06 1998-03-03 Microsoft Corporation Method and system for graphically programming mobile toys
US5638299A (en) * 1995-06-22 1997-06-10 Miller; Keith Light weight, self-contained programmable data-acquisition system
US6064812A (en) * 1996-09-23 2000-05-16 National Instruments Corporation System and method for developing automation clients using a graphical data flow program
US6032255A (en) * 1997-04-11 2000-02-29 Samsung Electronics Co., Ltd. Method for booting a personal digital assistant
US5949418A (en) * 1997-05-06 1999-09-07 Microsoft Corporation Operating system for handheld computing device having graphical window minimization/enlargement functionality
US6053951A (en) * 1997-07-10 2000-04-25 National Instruments Corporation Man/machine interface graphical code generation wizard for automatically creating MMI graphical programs
US6219628B1 (en) * 1997-08-18 2001-04-17 National Instruments Corporation System and method for configuring an instrument to perform measurement functions utilizing conversion of graphical programs into hardware implementations
US6173438B1 (en) * 1997-08-18 2001-01-09 National Instruments Corporation Embedded graphical programming system
US6715139B1 (en) * 1997-08-18 2004-03-30 National Instruments Corporation System and method for providing and displaying debugging information of a graphical program on a first computer during execution of the graphical program on a second computer
US7024660B2 (en) * 1998-02-17 2006-04-04 National Instruments Corporation Debugging a program intended to execute on a reconfigurable device using a test feed-through configuration
US6738964B1 (en) * 1999-03-11 2004-05-18 Texas Instruments Incorporated Graphical development system and method
US6982695B1 (en) * 1999-04-22 2006-01-03 Palmsource, Inc. Method and apparatus for software control of viewing parameters
US6412106B1 (en) * 1999-06-16 2002-06-25 Intervoice Limited Partnership Graphical system and method for debugging computer programs
US6732158B1 (en) * 1999-12-02 2004-05-04 Senvid, Inc. VCR webification
US20010037355A1 (en) * 2000-04-07 2001-11-01 Britt Joe Freeman Distinctive vibrate system, apparatus and method
US6996733B2 (en) * 2000-04-07 2006-02-07 Danger, Inc. System for preserving data on a portable device by notifying portal server the device reaches low power and saving data to the portal server thereafter
US6721804B1 (en) * 2000-04-07 2004-04-13 Danger, Inc. Portal system for converting requested data into a bytecode format based on portal device's graphical capabilities
US20050066280A1 (en) * 2000-12-13 2005-03-24 National Instruments Corporation Configuring a GUI element to publish and/or subscribe to data
US20020080091A1 (en) * 2000-12-22 2002-06-27 Shrikant Acharya Information transmission and display method and system for a handheld computing device
US20020170047A1 (en) * 2001-02-23 2002-11-14 Brian Swetland System and method for transforming object code
US6847348B2 (en) * 2001-03-26 2005-01-25 Sap Aktiengesellschaft Systems and methods for executing functions for objects based on the movement of an input device
US7302675B2 (en) * 2001-08-14 2007-11-27 National Instruments Corporation System and method for analyzing a graphical program using debugging graphical programs
US20030076355A1 (en) * 2001-10-23 2003-04-24 Kodosky Jeffrey L. System and method for associating a block diagram with a user interface element
US20040010734A1 (en) * 2002-07-10 2004-01-15 Marius Ghercioiu Deployment and execution of a program on an embedded device
US20040199897A1 (en) * 2003-04-03 2004-10-07 Marius Ghercioiu Deployment and execution of a graphical program on an embedded device from a PDA
US7647562B2 (en) * 2003-04-03 2010-01-12 National Instruments Corporation Deployment and execution of a graphical program on an embedded device from a PDA
US7331037B2 (en) * 2004-08-12 2008-02-12 National Instruments Corporation Static memory allocation in a graphical programming system
US20060041860A1 (en) * 2004-08-17 2006-02-23 National Instruments Corporation Interrupts in a graphical programming system

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080034121A1 (en) * 2001-08-14 2008-02-07 Andrew Dove Wireless Deployment and Execution of a Graphical Program to a Measurement Device
US7765278B2 (en) 2001-08-14 2010-07-27 National Instruments Corporation Wireless deployment and execution of a graphical program to a measurement device
US20140196014A1 (en) * 2006-12-11 2014-07-10 Synopsys, Inc. System and Method of Debugging Multi-Threaded Processes
US9459992B2 (en) * 2006-12-11 2016-10-04 Synopsys, Inc. System and method of debugging multi-threaded processes
US10180896B2 (en) 2006-12-11 2019-01-15 Synopsys, Inc. System and method of debugging multi-threaded processes
US20100293528A1 (en) * 2009-05-18 2010-11-18 Austin Paul F Hosting a Graphical Program Execution System on an Embedded Device
US8271944B2 (en) * 2009-05-18 2012-09-18 National Instruments Corporation Hosting a graphical program execution system on an embedded device
US20120137038A1 (en) * 2010-11-26 2012-05-31 Via Technologies, Inc. Electronic systems supporting multiple operation modes and opearation methods thereof
US10095265B2 (en) 2011-12-05 2018-10-09 Amer Sports Digital Services Oy Adaptable microcontroller-operated device and related system
US20140364970A1 (en) * 2013-06-07 2014-12-11 General Electric Company System and method for application development and deployment

Also Published As

Publication number Publication date
US20030035004A1 (en) 2003-02-20
US6876368B2 (en) 2005-04-05
US7200817B2 (en) 2007-04-03
US20050102639A1 (en) 2005-05-12
US7765278B2 (en) 2010-07-27
US20120072889A1 (en) 2012-03-22
US20080034121A1 (en) 2008-02-07
US8656373B2 (en) 2014-02-18

Similar Documents

Publication Publication Date Title
US8656373B2 (en) Distributed graphical program execution using a handheld computer
US6880130B2 (en) Specifying timing and triggering functionality in a graphical program using graphical program nodes
US7134086B2 (en) System and method for associating a block diagram with a user interface element
US7216334B2 (en) Self-determining behavior node for use in creating a graphical program
US7543281B2 (en) Disabling and conditionally compiling graphical code in a graphical program
US7743362B2 (en) Automatic generation of application domain specific graphical programs
US8136088B2 (en) Task based polymorphic graphical program function nodes
US7137071B2 (en) System and method for providing suggested graphical programming operations
US7076740B2 (en) System and method for performing rapid control prototyping using a plurality of graphical programs that share a single graphical user interface
US7954097B2 (en) Automatically analyzing and modifying a remote graphical program via a network
US7076411B2 (en) System and method for performing a hardware-in-the-loop simulation using a plurality of graphical programs that share a single graphical user interface
US7533347B2 (en) Creating a graphical user interface for selected parameters of a graphical program
US8176471B2 (en) Static binding of nodes to virtual instruments in a graphical program
US7043696B2 (en) Graphical program system having a single graphical user interface shared by a plurality of graphical programs
US20030237026A1 (en) Target device-specific syntax and semantic analysis for a graphical program
US20050155014A1 (en) Graphical program which includes an I/O node for hardware abstraction
US20040230945A1 (en) Integration of a configuration tool with a graphical program language

Legal Events

Date Code Title Description
AS Assignment

Owner name: NATIONAL INSTRUMENTS CORPORATION, TEXAS

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:DOVE, ANDREW;ANDRADE, HUGO;SHAH, DARSHAN;REEL/FRAME:018531/0048

Effective date: 20011004

STCB Information on status: application discontinuation

Free format text: ABANDONED -- FAILURE TO RESPOND TO AN OFFICE ACTION