JP2004532456A - 開発およびテストシステム並びに方法 - Google Patents
開発およびテストシステム並びに方法 Download PDFInfo
- Publication number
- JP2004532456A JP2004532456A JP2002575799A JP2002575799A JP2004532456A JP 2004532456 A JP2004532456 A JP 2004532456A JP 2002575799 A JP2002575799 A JP 2002575799A JP 2002575799 A JP2002575799 A JP 2002575799A JP 2004532456 A JP2004532456 A JP 2004532456A
- Authority
- JP
- Japan
- Prior art keywords
- communication
- interface
- database
- data
- thread
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/36—Software reuse
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/542—Event management; Broadcasting; Multicasting; Notifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/546—Xcast
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/547—Messaging middleware
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99942—Manipulating data structure, e.g. compression, compaction, compilation
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99943—Generating database or data structure, e.g. via user interface
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10—TECHNICAL SUBJECTS COVERED BY FORMER USPC
- Y10S—TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y10S707/00—Data processing: database and file management or data structures
- Y10S707/99941—Database schema or data structure
- Y10S707/99944—Object-oriented database structure
- Y10S707/99945—Object-oriented database structure processing
Abstract
Description
【0001】
本発明の分野は、開発およびテストに関する。さらに詳しくは、本発明の分野は、ソフトウェアの開発およびテストに関する。
【背景技術】
【0002】
一般的に、組み込み装置は、マイクロプロセッサおよびアプリケーションソフトウェアを具備している。アプリケーションソフトウェアは、リアルタイムオペレーションシステム(RTOS)の下で稼動し、一つまたはそれよりも多いスレッドに分割される。スレッドは、組み込みシステム内の他の定義されたスレッドとマイクロプロセッサの制御を共有する実行可能なソフトウェアの独立なユニットである。多くの組み込み装置において、スレッドは、それ自体のスタック領域に配置され、“プライオリティ”を与えられ、そしてスレッドが“独立な”エンティティとして稼動することを可能にする他のリソースに割り付けられる。スタック領域は、ローカル変数の一時的記憶のために確保されたメモリの区画である。プライオリティは、もし一つよりも多くのスレッドが待っていれば、RTOSにより何れのスレッドがマイクロプロセッサの制御を獲得するのかを決定するために使用される。リソースは、キューやフラグ等の種々雑多のアイテムを含むことができ、それは、RTOSによってスレッドを管理するために必要とされる。スレッドに使用される他の共通の用語は、“タスク(task)”および“プロセス(process)”である。プロセスは、また、、異なるプロセスを逆作用の影響から保護するセパレートアドレス領域の意味を含む。マイクロソフト(登録商標)のウィンドウズ(登録商標)オペレーティングシステムを用いるデスクトップコンピュータ上で稼動するプロセスの例は、マイクロソフト(登録商標)のワード(登録商標)である。
【0003】
スレッドが互いに通信するための共通の方法は、オペレーティングシステムによって提供されるメッセージングアプリケーションプログラミングインターフェイス(API)を介している。メッセージは、一般にイベントを備え、そして少なくとも二つのスレッド間で伝送されるデータのブロックをオプションで備える。例えば、スレッド(“送り手”)は、メッセージを組み立て、そしてRTOSから特定のAPIを呼び出す。RTOSは、他のスレッド(“受け手”)にいくつかのタイプのイベントが発生したことを通知する。受け手のスレッドは、それから、入ってくるメッセージをリードする。スレッドが通信するためのもう一つの共通の方法は、ファンクションコールを介する。一つのスレッドにより提供されるファンクションコールを使用することは、他のスレッドで呼び出すことができる。加えて、ファンクションは、同一のスレッドに共存する他のファンクションにより呼び出すことができる。ファンクションについての他の共通用語は、サブルーチン(subroutine)、プロシジャー(procedure)、またはメソッド(methods)を含む。本明細書で使用されるように、用語“通信インターフェイス”は、メッセージングまたはリモートファンクションコール通信の何れかを介するような、二つのスレッド間のデータを通信するための如何なるインターフェイスも包含することを意図する。
【発明の開示】
【発明が解決しようとする課題】
【0004】
上述したような組み込み装置についての既知の開発およびテストと関連した多くの問題が存在する。第1に、既知のテストシステムは、通信インターフェイスをテストし、且つスレッド自体の実行をテストするために、オペレーショナルRTOSを有する組み込み装置を必要とする。都合の悪いことに、既知のシステムは、それらを支援する対応するスレッドおよび通信インターフェイスをシミュレートする能力を備えない。
【0005】
第2に、ホストランニングスレッド(host running threads)に対して一つよりも多くのプラットフォームを使用する場合、異なる装置上のインターフェイスに象徴される互換性の問題がある。異なるタイプの装置は、それらの個々のメモリ領域にメッセージを異なって格納する。既知のテストシステムは、異なるプラットフォームへの伝送のためのデータを自動的にはフォーマットしない。二つのコンピュータ間の非互換性の例は、一方のコンピュータがロウメモリ(リトルエンディアン)にLSB(least significant byte)で16ビットインテジャー(2バイト9を格納し、且つ他方のコンピュータがハイメモリ(ビッグエンディアン)にLSBで16ビットの整数を格納する場合である。アプリケーションがこの16ビットを交換したい場合、そのインテジャーの値は、コンピュータによって異なった解釈をされる。
【0006】
第3に、既知のシステムは、組み込みコンピュータと通信できるカスタムデスクトップツールの創作を必要とする。特定の組み込みアプリケーションのためのインターフェイスファンクショナリティ(interface functionality)を構築するプロセスは、時間を浪費する手作業のプロセスである。デスクトップツールおよび組み込みソフトウェアの両方とも、それらが互いに通信することを可能にするために、それらのアプリケーションに対して手作業のアップデートを必要とする。従って、組み込みソフトウェアアプリケーションのためのインターフェイスに対してデスクトップツールを介したシームレス且つ自動的なアクセスは存在しない。
【0007】
第4に、標準のC/C++インターフェイス定義ファイルと互換性のない他のプログラミング言語で開発されたデスクトップアプリケーションは、組み込みコンピュータとシームレスに情報をやりとりすることができない。一般に、インターフェイス定義ファイルは、組み込みソフトウェアが要求するメッセージのフォーマットを定義する。ビジュアルベーシック(登録商標)、LabVIEW(登録商標)等のような言語は、インターフェイスのフォーマットを定義する標準のCインターフェイス定義ファイルを使用しない。従って、これらの言語を使用するソフトウェア技術者は、組み込み装置上で実行中のスレッドをテストすることができない。
従って、先の制限を有しない組み込みソフトウェアのテストおよび開発のための改良された装置に対する要請がある。
【課題を解決するための手段】
【0008】
本発明の一つの特徴は、データを伝送するためのシステムからなる。このシステムは、ホストコンピュータと、前記ホストコンピュータ上で動作する第1アプリケーションと、組み込みコンピュータと、前記組み込みコンピュータ上で動作する第2アプリケーションと、データベースとを具備する。前記データベースは、前記第1アプリケーションおよび前記第2アプリケーションの複数のインターフェイスのうち少なくとも1つのインターフェイス特性を確認する。前記データベースは、ユーザーの要求に応答して自動的に生成されると共に、少なくとも部分的に前記ユーザーによって提供されたインターフェイス記述ファイルに基づく。
【0009】
本システムは、また、前記組み込みコンピュータとの通信のためのインターフェイスを定義する通信モジュールとを具備する。前記第1アプリケーションは前記通信モジュールを介して前記第2アプリケーションと通信する。前記ホストコンピュータは、前記組み込みコンピュータのためのホストコンピュータ装置特性情報を格納する。前記ホスト装置特性情報は、エニュメレーションサイズ、適応的エニュメレーションインジケーター、ショートサイズ、ロングサイズ、フロートサイズ、ダブルサイズ、ダブルロングサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、バイトオーダリング、ブールサイズからなるグループから選択された情報を含む。
【0010】
前記ホストコンピュータは、該ホストコンピュータのための組み込みコンピュータ装置特性情報を格納する。前記組み込みコンピュータ装置特性情報は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択された情報を含む。前記第1アプリケーションに目標設定された前記第2アプリケーションからの通信の受信に応答して、前記通信モジュールは、前記第1アプリケーションへの通信の伝送に先だって通信を変更し、かつ前記変更は、少なくとも部分的に、前記ホストコンピュータ装置特性情報、前記組み込みコンピュータ装置特性情報、および前記インターフェイス特性に基づいている。
【0011】
本発明の他の特徴は、データの伝送方法からなる。本方法は、データベースを自動的に生成するステップを具備し、前記データベースは、複数のインターフェイスを記述するインターフェイス情報を含む。本発明は、また、、組み込みコンピュータから通信を受信するステップと、少なくとも前記インターフェイス情報と前記組み込みコンピュータの少なくとも1つの特性を記述する特性情報とに基づき通信をフォーマットするステップとを具備する。
【0012】
本発明の他の特徴は、データの伝送方法からなる。本方法は、組み込みコンピュータから通信を受信するステップと、前記受信された通信をフォーマットするステップとを具備し、前記フォーマットするステップは、少なくとも部分的に、前記通信の少なくとも1つの特性を記述するインターフェイス情報と、前記組み込みコンピュータの少なくとも1つの特性を記述する情報とに基づいている。
【0013】
本発明の一つの特徴は、データベースの構築方法からなり、該方法は、アプリケーションスレッドの少なくとも1つの通信インターフェイスを定義するインターフェイス記述ファイルを読み込むステップと、前記通信インターフェイスから通信情報を抽出するステップを具備する。前記通信インターフェイスから通信情報を抽出するステップは、前記通信に関連するユニークな識別子を読み取るステップと、前記通信インターフェイスを介して伝送される通信のサイズを決定するステップと、前記通信におけるデータフィールドのそれぞれのネームを決定するステップと、前記通信インターフェイスに関連したメモリを伝送する方法を決定するステップと、前記通信インターフェイスに関連したポインタデータを確認するステップと、前記通信インターフェイスの管理方法を決定するステップと、メッセージ基準かファンクションコールかどうかという、前記通信インターフェイスのタイプを決定するステップとを具備する。本方法は、また、、前記抽出されたインターフェイス情報を通信データベースに格納するステップと、前記通信データベースにおける組み込み装置の少なくとも1つの装置特性を格納するステップとを具備する。前記組み込みコンピュータの装置特性は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択される。本方法は、また、、前記通信データベースにおけるホストコンピュータの少なくとも1つの装置特性を格納するステップを具備する。
【0014】
本発明の他の特徴は、データベースの構築方法からなる。本方法は、少なくとも1つの通信インターフェイスを定義するインターフェイス記述ファイルを読み込むステップと、前記通信インターフェイスから通信情報を抽出するステップと、前記抽出された通信情報を通信データベースに格納するステップと、且つ前記通信データベースにおけるホストコンピュータの少なくとも1つの装置特性を格納するステップとを具備する。
【0015】
また、本発明の他の特徴は、データベースからなる。本データベースは、アプリケーションスレッドの通信インターフェイスの少なくとも1つの特性を記述するインターフェイス情報を具備する。本データベースは、また、ホストコンピュータの少なくとも1つの特性を記述するホストコンピュータ情報と、組み込みコンピュータの少なくとも1つの特性を記述する組み込みコンピュータ装置情報とを具備する。
【0016】
また、本発明の他の特徴は、データベースからなり、インターフェイス記述ファイルで定義されたアプリケーションスレッドの通信インターフェイスの少なくとも1つの特性を記述するインターフェイス情報と、少なくとも部分的に前記インターフェイス情報を用いて前記通信インターフェイスを検査すると共にテストすることを提供するための所定のインターフェイスとを具備する。
【0017】
また、本発明の他の特徴は、複数のコンポーネントによってアクセス可能な通信インターフェイスを提供するためのシステムであって、本システムは、スクリプティングプログラムと、COMコンプライアントオブジェクトと、前記COMコンプライアントオブジェクトと通信するために前記スクリプティングにアプリケーションプログラミングインターフェイスを提供するように構成された少なくとも1つの通信モジュールとを具備する。
【0018】
本発明の一つの特徴は、ホストコンピュータと組み込みコンピュータとの間の通信を提供するためのシステムである。本システムは、それぞれが複数のデータフィールドを有する各通信インターフェイスを提供する複数のスレッドを実行する組み込みコンピュータと、スクリプト命令を実行するためのスクリプトエンジンと、前記通信インターフェイスのそれぞれを確認する通信インターフェイスと、前記通信インターフェイスをアクセスするためのスクリプト命令にアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備し、前記通信データベースは、少なくとも部分的に、前記通信インターフェイスを定義するインターフェイス記述ファイルと、前記組み込み装置の装置特性と、前記スクリプトエンジンを実行しているプラットフォームの装置特性とからなる情報から自動的に生成される。前記通信モジュールは、前記通信データベースからの情報に基づき自動的に生成される。前記スクリプト命令は、前記通信データベースにおける前記通信インターフェイスのうちの少なくとも1つを確認すると共に、前記アプリケーションプログラミングインターフェイスを介して前記確認された通信インターフェイスにおけるフィールドに関するファンクションを実施する。前記ファンクションは、前記データフィールドの一つにデータを格納すること、前記データフィールドの一つからデータを読み取ること、およびデータフィールドをテストすることからなるグループから選択される。
【0019】
また、本発明の他の特徴は、スレッドとの通信を提供するシステムである。本システムは、それぞれが通信インターフェイスを提供する複数のスレッドと、前記通信インターフェイスのそれぞれを確認する通信データベースと、前記通信インターフェイスをアクセスするためのスクリプト命令にアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備する。前記通信モジュールは、少なくとも部分的に、前記通信データベースからの情報に基づき自動的に生成される。前記スクリプト命令は、前記アプリケーションプログラミングインターフェイスを介して前記通信データベースにおける前記通信インターフェイスのうちの1つを用いてスレッドと通信する。
【0020】
また、本発明の他の特徴は、ホストコンピュータと組み込みコンピュータとの間の通信を提供するためのシステムであである。本システムは、それぞれが複数のデータフィールドを有する通信インターフェイスを提供する複数のスレッドを実行する組み込みコンピュータと、前記通信インターフェイスのそれぞれを確認する通信データベースと、前記通信インターフェイスをアクセスするための前記スクリプト命令にアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備する。前記通信モジュールは、前記通信データベースに保持された情報に部分的に基づき自動的に生成される。前記スクリプト命令は、前記通信データベースにおける前記通信インターフェイスの少なくとも1つを確認すると共に、前記アプリケーションプログラミングインターフェイスを介して前記確認された通信インターフェイスにおける少なくとも1つのフィールドに関するファンクションを実施する。
【0021】
また、本発明の他の特徴は、通信にスレッドを提供する方法であって、本方法は、通信オブジェクトにレファレンスを読み込むステップと、通信オブジェクトのリード方法を呼び出し、これにより、組み込みコンピュータ上で動作するスレッドによって前記通信フェイスを介して提供される格納データを受け取るステップとを具備し、前記通信オブジェクトが、通信インターフェイスをアクセスするためのスクリプティングプログラムにリード方法を提供する。
【0022】
また、本発明の他の特徴は、通信にスレッドを提供する方法であって、本方法は、インターフェイスディスクリプションファイルで定義された通信インターフェイスの少なくとも一つの通信特性を記述する通信データベースを生成するステップと、通信オブジェクトにレファレンスを読み込むステップと、前記アプリケーションプログラミングインターフェイスの使用を通じて前記通信における少なくとも一つのデータフィールドにデータを格納するステップとを具備し、前記通信オブジェクトが、組み込みコンピュータ上で動作するスレッドによって提供される通信インターフェイスをアクセスするためのスクリプティングプログラムにアプリケーションプログラミングインターフェイスを提供する。
【0023】
また、本発明の他の特徴は、通信にスレッドを提供する方法であって、本方法は、通信オブジェクトにレファレンスを読み込むステップと、前記アプリケーションプログラミングインターフェイスの使用を通じて前記通信における少なくとも一つのデータフィールドにデータを格納するステップとを具備し、前記通信オブジェクトが、組み込みコンピュータ上で動作するスレッドによって提供される通信インターフェイスをアクセスするためのスクリプティングプログラムにアプリケーションプログラミングインターフェイスを提供する。
【0024】
また、本発明の他の特徴は、複数のコンポーネントによってアクセス可能な通信インターフェイスを提供するためのシステムであって、本システムは、第1プログラミング言語でのスクリプティングプログラムと、第2プログラミング言語でのスクリプティングプログラムと、前記第2スクリプティングプログラムと通信するために前記第1スクリプティングプログラムにアプリケーションプログラミングインターフェイスを提供するように構成された少なくとも一つの通信モジュールと、を具備する。
【0025】
本発明の一つの特徴は、ホストコンピュータと組み込みコンピュータとの間の通信を提供するためのシステムからなる。本システムは、複数の通信インターフェイスを提供する複数のスレッドを実行し、各通信インターフェイスが複数のデータフィールドを有する組み込みコンピュータと、前記通信インターフェイスのそれぞれを確認する通信データベースとを具備する。前記通信データベースは、少なくとも部分的に、前記通信インターフェイスを定義するインターフェイス記述ファイル、前記組み込みコンピュータの装置特性、ホストプラットフォームの装置特性から構成される情報から自動的に生成される。本システムは、また、前記通信インターフェイスをアクセスためにCOMコンプライアントアプリケーションにアプリケーションプログラミングインターフェイスを提供するための通信モジュールを具備する。前記通信モジュールは、前記通信データベースからの情報に基づき自動的に生成される。前記COMコンプライアントアプリケーションにおけるオブジェクトは、前記通信データベースにおける前記通信インターフェイスの少なくとも一つを確認すると共に、前記アプリケーションプログラミングインターフェイスを介して前記確認された通信インターフェイスにおける少なくとも一つに関するファンクションを呼び出す。該ファンクションは、前記データフィールドの一つにデータを格納すること、前記データフィールドの一つからデータを読み出すこと、およびデータフィールドをテストすることからなるグループから選択される。
【0026】
本発明の他の特徴は、ホストコンピュータと組み込みコンピュータとの間の通信を提供するためのシステムからなる。本システムは、それぞれが通信インターフェイスを提供する複数のスレッドを実行する組み込みコンピュータと、前記スレッドのそれぞれの前記通信インターフェイスを確認する通信データベースと、前記通信インターフェイスと通信するためにCOMコンプライアントアプリケーションに複数のファンクションを提供するように構成されたCOMオブジェクトとを具備し、前記COMオブジェクトは、少なくとも部分的に、前記メッセージングデータベースにおける通信インターフェイスに基づき自動的に生成される。
【0027】
本発明の他の特徴は、通信に対するアクセスを提供する方法からなり、本方法は、COMコンプライアントアプリケーションを介して前記通信インターフェイスをアクセスするための少なくとも一つのファンクションから構成される通信オブジェクトを提供するステップと、前記COMコンプライアントアプリケーションを介して前記通信インターフェイスをアクセスするステップとを具備する。
【0028】
また、本発明の他の特徴は、通信に対するアクセスを提供するためのシステムからなる。本システムは、COMから通信インターフェイスをアクセスするための少なくとも一つのファンクションから構成された通信オブジェクトを提供するための手段と、前記COMコンプライアントアプリケーションを介して前記通信インターフェイスをアクセスするための手段とを具備する。
【0029】
また、本発明の他の特徴は、複数のコンポーネントによってアクセス可能な通信インターフェイスを提供するためのシステムからなり、本システムは、COMコンプライアントオブジェクトと、組み込みコンピュータ上で動作する少なくとも一つのスレッドと、前記スレッドと通信するために前記COMコンプライアントオブジェクトにアプリケーションプログラミングインターフェイスを提供するように構成された少なくとも一つの通信モジュールとを具備する。
【0030】
本発明の一つの特徴は、組み込みコンピュータ上で動作するスレッドをテストするためのシステムからなる。本システムは、ホストコンピュータと、前記ホストコンピュータ上で動作する第1スレッドと、スレッドを実行する組み込みコンピュータとを具備し、前記組み込みコンピュータは、前記スレッドに送信される複数の通信をモニタすると共に前記モニタされた通信から前記コンピュータにデータを伝送し、前記ホストコンピュータは、複数のデータセットに前記モニタされた通信からのデータを格納する。
【0031】
本発明の他の特徴は、スレッドをテストするための方法からなる。本方法は、組み込みコンピュータ上で動作するスレッドに送信される複数の通信をモニタするステップと、ホストコンピュータに前記モニタされた通信を伝送するステップと、前記モニタされた通信を複数のデータセットに格納するステップと、少なくとも一つの前記データセットを前記モニタされたスレッドに伝送するステップとを具備する。
【0032】
また、本発明の他の特徴は、スレッドをテストするための方法からなり、第1スレッドから第2スレッドへの複数の通信をモニタするステップと、データセットに前記通信のそれぞれを格納するステップと、前記第1スレッドに前記格納されたデータエレメントのそれぞれを伝送するステップとを具備し、前記通信は、複数のデータエレメントから構成される。
【0033】
本発明の一つの特徴は、コードを生成する方法からなる。本方法は、インターフェイス定義ファイルをリードするステップと、少なくとも一つの通信インターフェイスを確認するステップとを具備する。前記通信インターフェイスは、少なくとも、該通信インターフェイスを介して受け渡されるポインタを定義する。本方法は、また、前記通信インターフェイスを呼び出すためのコードを自動的に生成するステップを具備する。前記生成されたコードは、前記ポインタの少なくとも一つの属性を定義するルーチンを呼び出すためのコードを含む。
【0034】
本発明の他の特徴は、コードを生成するためのシステムからなる。本システムは、インターフェイス定義ファイルをリードするための手段と、前記インターフェイス定義ファイルにおける少なくとも一つのリモートファンクションコールインターフェイスを確認するための手段と、第1プラットフォーム上で実行のための第1コードを自動的に生成するための手段と、第2プラットフォーム上で実行のための第2コードを自動的に生成するための手段とを具備し、第1プログラムが第1コードを実行することは、メッセージングインターフェイスを介して、第2プログラムが第2コードを実行することと通信し、前記生成された第2コードは、前記リモートファンクションコールインターフェイスを介してルーチンを呼び出す。
【0035】
図1は、組み込みコンピュータをテストするための開発およびテストシステムを例示するブロックダイアグラムである。
図2は、図1の開発およびテストシステムの一部である通信データベースの或るコンポーネントを例示するブロックダイアグラムである。
図3は、図1の開発およびテストシステムの他の実施形態を例示するブロックダイアグラムである。
図4Aおよび4Bは、図3の組み込みコンピュータと通信するために使用される代表的なスクリプトのダイアグラムである。
図5は、図1の開発およびテストシステムの他の実施形態を例示するブロックダイアグラムである。
【0036】
図6は、図1の通信でーたベースの代表的なコンテンツを例示するブロックダイアグラムである。
図7は、図5の生成コンポーネントの代表的な階層を例示するブロックダイアグラムである。
図8は、図1の開発およびテストシステムで使用するソースファイルを修正するプロセスを例示するフローチャートである。
図9は、図1の通信データベースを構築するプロセスを例示するフローチャートである。
図10は、図1のホストプラットフォーム通信モジュールを使用するプロセスを例示するフローチャートである。
【0037】
図11は、通信をフォーマットするプロセスを例示するフローチャートである。
図12A−12Dは、異なる装置特性を有する二つのプラットフォーム間でポインタデータを伝送する場合のポインタを管理する代表的な方法を例示する。
図13は、組み込みコンピュータ上で動作するスレッドと通信するためのスクリプティングファイルを使用するプロセスを例示するフローチャートである。
図14は、図3のメッセージングオートメーションコンポーネントをロードするプロセスを例示するフローチャートである。
図15は、図3の開発およびテストシステムディスクリプトにおいて動作するスレッドを登録するプロセスを例示するフローチャートである。
【0038】
図16Aは、メッセージ通信をスクリプトから図3の開発およびテストシステムに送信するプロセスを例示するフローチャートである。
図16Bは、ファンクションコールをスクリプトから図3の開発およびテストシステムに呼び出したファンクションコールを送信するプロセスを例示するフローチャートである。
図17Aは、図3の開発およびテストシステムからスクリプトを介して通信をスクリプト受信するプロセスを例示するフローチャートである。
図17Bは、図3の開発およびテストシステムからリモートファンクションコールを介して通信をスクリプト受信するプロセスを例示するフローチャートである。
図18は、図5の生成コンポーネントを利用するプロセスを例示するフローチャートである。
図19は、図5のCOMコンポーザを起動するプロセスを例示するフローチャートである。
【0039】
図20は、図5の生成コンポーネントを構築するプロセスを例示するフローチャートである。
図21は、図1の生成コンポーネントのインターフェイスを生成するプロセスを例示するフローチャートである。
図22は、任意のCOMコンプライアント言語から図5の生成コンポーネントを用いるプロセスを例示するフローチャートである。
図23は、図1の通信データベースによって確認された通信インターフェイスの一つをテストするプロセスを例示するフローチャートである。
図24は、少なくとも二つのファンクションコール間で伝送されるモニタリング通信に基づき情報のデータセットを生成するプロセスを例示するフローチャートである。
図25は、メッセージをテストするための代表的なユーザーインターフェイスである。
【0040】
図26は、リモートファンクションコールのための代表的なユーザーインターフェイスである。
図27は、図1の開発およびテストシステムで使用するテンプレートコードを生成するプロセスを例示するフローチャートである。
図28は、所定の通信インターフェイスによって定義されたメッセージをハンドリングするためのコードを生成するプロセスを例示するフローチャートである。
図29は、メッセージハンドリングコードを生成するプロセスを例示するフローチャートである。
【0041】
図30は、メッセージを所定の通信インターフェイスに送信するためのコードを生成するプロセスを例示するフローチャートである。
図31は、ファンクションコールに応答してインタープラットフォームメッセージングをハンドリングするためのコードを生成するプロセスを例示するフローチャートである。
図32は、代表的な生成されたコードを例示するブロックダイアグラムである。
図33は、代表的な生成されたコードを例示するブロックダイアグラムである。
【発明を実施するための最良の形態】
【0042】
以下の詳細な説明は、本発明のある特定の実施形態に方向付けられる。しかしながら、本発明は、クレームで定義され且つ網羅されるように、多くの異なる方法で実現できる。この説明では図面を参照し、この図面では一貫して同じパーツに同じ数字が付される。
【0043】
図1は、DATシステム100の一実施形態を例示するブロックダイアグラムである。この開発およびテスト(development and testing;“DAT”)システム100は、開発者が、かれらが定義する通信インターフェイスに対する自動的且つシームレスなアクセスを有することを可能にする。加えて、DATシステム100は、割り当てられたプラットフォーム上でスレッドが動作することを可能にし、そしてインターフェイスに対する任意のプログラミング言語のシームレスなアクセスを可能にする。
【0044】
DATシステム100は、ホストコンピュータ108とデータ通信する組み込みコンピュータ104を具備する。組み込みコンピュータ104は、スレッド114に通信を送るために使用される組み込みコンピュータ通信モジュール112を実行する。ホストコンピュータ108は、ホストコンピュータ108上で動作するスレッド120にメッセージを送るために使用されるホストコンピュータ通信モジュール116を実行する。組み込みコンピュータ通信モジュール112およびホストコンピュータ通信モジュール116は、他のプラットフォームへの伝送のために定められた或るプラットフォームに由来する他のインターフェイスを介して送信された通信及び/又はメッセージの経路を互いに定めることができる。本発明の一実施形態において、或るプラットフォームから他のプラットフォームへの全ての通信は、組み込みコンピュータ通信モジュール112およびホストコンピュータ通信モジュール116を介して伝送される。
【0045】
組み込みコンピュータ104は、電話、周辺装置上のカード、自動車、冷蔵庫、または任意の他の電子装置に備えられる。ホストコンピュータ108は、ディスプレイおよびマウスやキーボードなどの入力装置を含む任意のコンピューティング装置を包含する。
ホストコンピュータ108は、また、通信インターフェイスの“特性”を獲得するための組み込み及びホストのインターフェイス定義ファイルを自動的にコンパイルする通信データベース124を具備する。
【0046】
DATシステム100は、メッセージング(messaging)およびトレーシング(tracing)のための標準化されたAPIを提供し、シームレスなメッセージングおよびトレーシング環境を提供するために使用されるプロトコルサイト(protocol suite)を収容し、且つ二つのプラットフォーム間の通信リンクを提供する。本発明の一実施形態において、DATシステム100によって提供されるAPIは、次の事柄のためのインターフェイスを具備する。即ち、(1)メッセージを記録すること、(2)メッセージをリードすること、(3)コマンドデータを送信すること、(4)応答データを送信すること、(5)メッセージをブロードキャストすること、(6)メッセージを承諾すること(subscribing to message)。(7)通信データベースに格納されたメッセージのリストを返すこと、(8)特定のメッセージのメッセージフォーマットを返すこと、そして(9)特定のメッセージの識別子及び/又はネームを返すこと。更に、DATシステム100の代表的なAPIを以下に述べる。
【0047】
スタジオモジュール128は、通信データベース124によって確認される通信インターフェイスをテストするためのテスト環境およびグラフィカルユーザーインターフェイスを提供する。DATシステム100は、組み込みソフトウェアアプリケーションによって定義された全てのメッセージおよびリモートファンクションコール(remote function call)の完全な可視性(visibility)および制御を提供する。例として、スタジオモジュール(studio module)128を使用して、開発者は、データベース内のメッセージ及び/又はリモートファンクションコールのリスト全体をスキャンし、そしてそれらをスクリーンに表示することができる。一旦、特定のメッセージまたはリモートファンクションコールが選択されると、通信データベース124は、メッセージに関連したエレメントタイプおよびネームを返すことを問われ得る。
【0048】
実行上、組み込みコンピュータ104およびホストコンピュータ108における各スレッドは、DATシステム100に記録(register)される。登録(registration)は、ルーティングテーブルを“ハードコード(hardcode)”する必要なく、メッセージをダイナミックに送る。任意の時点でのスレッドは、選択されたメッセージを要求するスレッドが“所有(owns)”することをDATシステム100に通知するために、DATシステム100によって提供される特定のアプリケーションプログラミングインターフェイス“API”を呼び出すことができる。これに関連して、所有する(Owns)は、特定のスレッドがいつでもメッセージを受信し、他のスレッド及び/又はアプリケーションがそれを送信することを意味する。メッセージを送信する旨の要求が出された場合、DATシステム100は、所有しているスレッド(owning thread)がローカルであるか又は他のプラットフォーム上にあるかどうかを決定する。もしそのプラットフォームがローカルであれば、メッセージは、所有するスレッドに直接送られる。もしそのプラットフォームがリモートであれば、メッセージは、他のプラットフォームに直接送られる。もしメッセージが組み込みコンピュータ104で発生すれば、受信に関し、ホストコンピュータ108は、ホストコンピュータ108の装置特性と互換性を持つようにメッセージをフォーマットする。もしメッセージがホストコンピュータ108で発生すれば、ホストコンピュータ108は、組み込みコンピュータ104の装置特性と互換性を持つようにメッセージをフォーマットする。
【0049】
組み込みコンピュータ通信モジュール112、ホストコンピュータ通信モジュール116、およびスタジオモジュール128は、それぞれ種々のサブルーチン、プロシジャー(procedures)、定義ステートメント、およびマクロを具備する。コンピュータ通信モジュール112、ホストコンピュータ通信モジュール116、およびスタジオモジュール128は、C、C++(登録商標)、ベーシック(登録商標)、パスカル(登録商標)、ジャバ(登録商標)、およびフォートラン(登録商標)のような任意のプログラミング言語で記述されていてもよく、そして周知のオペレーションシステムの下で動作してもよい。C、C++(登録商標)、ベーシック(登録商標)、パスカル(登録商標)、ジャバ(登録商標)、およびフォートラン(登録商標)は、工業標準プログラミング言語であり、そのために、多くの商業上の承諾者が実行可能なコードを作成するために使用できる。
【0050】
組み込みコンピュータ104は、VxWorks(登録商標)、Nucleus(登録商標)、ThreadX、ウィンドウズ(登録商標)CE、およびエンベデッドリナックス(登録商標)のような既成又は独自仕様のリアルタイムオペレーティングシステムの制御下で動作してもよい。
【0051】
ホストコンピュータ108は、ユニックス(登録商標)、リナックス(登録商標)、ディスクオペレーティングシステム(DOS)、OS/2(登録商標)、PalmOS(登録商標)、VxWorks(登録商標)、ウィンドウズ(登録商標)3.X、ウィンドウズ(登録商標)95、ウィンドウズ(登録商標)98、ウィンドウズ(登録商標)NT、ウィンドウズ(登録商標)CE、およびウィンドウズ(登録商標)XPのような既成又は独自仕様のオペレーティングシステムの制御下で動作してもよい。組み込みコンピュータ104およびホストコンピュータ108上の各スレッドは、所定のアプリケーションプログラミングインターフェイスAPIを介して、組み込みコンピュータ通信モジュール112およびホストコンピュータ通信モジュール116とそれぞれ通信することができる。以下の説明は、APIにより提供される或るルーチンを述べる。他のルーチンが提供されてもよいことが認識されるべきである。
【0052】
【表1】
【0053】
【表2】
【0054】
【表3】
【0055】
【表4】
【0056】
【表5】
【0057】
【表6】
【0058】
図2は、通信データベース124の機能ブロックダイアグラムを表す。通信データベース124は、コンパイラ(200およびアクセスエンジン(access engine)204を具備する。通信データベース124は、C(登録商標)、C++(登録商標)、または他のプログラミング言語のような標準インターフェイス定義ファイルを構文解析(parse)し、そしてインターフェイスおよびトレーシング情報を自動的に抽出する。インターフェイス定義ファイルは、スレッド通信およびソフトウェアトレーシングに使用されるインターフェイスのフォーマットを含んでいる。本発明の一実施形態においては、プログラマーはコンパイラープラグマ(compiler pragmas)を介してインターフェイス定義ファイルにこれらの特性を定義することができる。
【0059】
インターフェイス定義ファイルからの情報は、整えられて通信データベース124に格納されるので、ホストコンピュータ通信モジュール116を介して他のデスクトップアプリケーションによりアクセスされることができる。通信データベース124を構築する代表的なプロセスは、図9に関して後述される。
【0060】
本発明の一実施形態において、DATシステム100は、DATシステム100のライブラリ及びヘッダファイルをリンクすることの以外にアプリケーションの修正を必要とすることなく、組み込みコンピュータ104上のルーチンに対してリモートファンクションコールを実施するため、ホストコンピュータ108上のアプリケーションに対しシームレスで自動の能力を提供する。逆も同様である。リモートファンクションコールのサポートでコードを自動的に生成する代表的プロセスは、図31を参照して後述される。
【0061】
図3は、本発明の他の代表的な実施形態を例示するブロックダイアグラムである。図3に示される本発明の実施形態は、スクリプト言語が組み込みコンピュータ104およびホストコンピュータ108上で動作するスレッドをシームレスにアクセスすることを可能にする。
【0062】
図3に示される本発明の実施形態に関し、DATシステム100もまた、スクリプトを実行するためのメッセージングオートメーションコンポーネント(messaging automation component;“MAC”)304およびスクリプトエンジン312を具備する。本発明の一実施形態において、MAC304は、以下のファンクションを遂行するためのインターフェイスを提供するCOMコンプライアントオブジェクトであり、そのファンクションは、インターフェイスの所有権を指定すること、データセットを生成すること、情報のフィールドを送信すること、データセットを送信すること、メッセージを受信すること、そしてDATシステム100によって管理されるメッセージのそれぞれをリストアップすることである。スクリプトエンジン312は、ジャバスクリプト(登録商標)、ビジュアルベーシック(登録商標)、VBScript(登録商標)、Tcl(登録商標)、JScript(登録商標)、Python(登録商標)等のような、独自仕様または既成のエンジンである。
【0063】
以下に述べることは、通信のためにMAC304により提供される様々なオブジェクトの説明である。本発明の一実施形態において、6クラスのインターフェイスオブジェクトが存在し、それは、(1)オーナーメッセージオブジェクト(owner message objects)、(2)ユーザーメッセージオブジェクト(user message objects)、(3)スパイメッセージオブジェクト(spy message objects)、(4)オーナーファンクションオブジェクト(owner function objects)、(5)ユーザーファンクションオブジェクト(user function objects)、(6)スパイファンクションオブジェクト(spy function objects)である。他のタイプのオブジェクトもまた使用できることが理解される。
MAC304のアプリケーションプログラミングインターフェイスを以下に述べる。
【0064】
【表7】
【0065】
【表8】
【0066】
【表9】
【0067】
【表10】
【0068】
【表11】
【0069】
【表12】
【0070】
【表13】
【0071】
一実施形態において、メッセージオブジェクトにとって、データセットは、コマンド(コマンドペイロード)または応答(応答ペイロードおよびアウトポインタデータ)の何れかに関連したデータのセットである。一方向のメッセージはコマンドデータセットを有し、ブロードキャストメッセージは応答メッセージを有し、そして双方向メッセージは両方を有する。ファンクションオブジェクトにとって、データセットは、入力(パラメータリスト)及び/又は出力(返信値およびアウトポインタデータ)に関連づけられる。
【0072】
スクリプティング言語は、開発者が自動テストをカスタマイズし、そしてマクロ能力を加えることを可能にする。一般に、スクリプティング言語はこのタイプのファンクショナリティに対して使用することは容易である。スクリプティング言語は、また、ループ(roops)、条件ステートメント(conditional statement)等のようなコンパイルされた言語に見られる多くの同一の能力を備え、スクリプトプログラムはスクリプトエンジンにより実行されるスクリプト言語で記述されたテキストである。メッセージングオートメーションコンポーネント304は、組み込みコンピュータ104およびホストコンピュータ108におけるスレッドのそれぞれの通信インターフェイスに対するシームレスで迅速なアクセスをスクリプトプログラムに提供する。メッセージングオートメーションエンジン304を使用して、リモートファンクションコールまたはメッセージにおけるフィールドは、セットされ、リードされ、テストされ、または表現中で使用される。メッセージングオートメーションコンポーネント304を介して、スクリプティングプログラムは、また、組み込みコンピュータ104またはホストコンピュータ108上で動作するソフトウェアを用いてシームレスに通信を送信し且つ受信することができる。さらに、このような通信を確立することは、組み込みコンピュータ104及び/又はホストコンピュータ108上で動作するスレッドのコード変更を必要としない。
【0073】
本発明の一実施形態において、スクリプティングプログラムは、スタジオモジュール128によって提供されるインターフェイスを介して起動される。本発明の他の実施形態においては、スクリプティングプログラムは、スタジオモジュール128により起動される必要はないが、代わりに、ホストコンピュータ通信モジュール116で直接的に起動され、そして通信することができる。
【0074】
図4Aおよび4Bは、組み込みコンピュータ104及び/又はホストコンピュータ108上で動作するスレッド114の一つと通信するためにスクリプトエンジン312において実行できる代表的なスクリプトを例示する。コードブロック404は双方向メッセージを送信するために使用することができる代表的なコードを例示する。コードブロック404の第3行目では、スクリプトはオブジェクト“msg”を、通信データベースに保持されているメッセージの一つに等しいとおく。第6行目では、スクリプトは、メッセージと関連するペイロードにフィールドを設定する。本技術分野では知られているように、ペイロードは構築されたデータである。第9行目では、スクリプトは、コマンドメッセージを送信し、そして応答を待つ。第11行目では、スクリプトは、応答データを読み取る。コードブロック408は、ブロードキャストを承諾するために使用される代表的なコードを例示する。コードブロック412は、ファンクションを呼び出すために使用される代表的なコードを例示する。コードブロック416は、ファンクションの所有権を登録するために使用される代表的なコードを例示する。
【0075】
図5は、本発明の他の実施形態を例示するブロックダイアグラムである。COMコンポーザ504は、COMコンプライアントアプリケーション512とホストコンピュータ通信モジュール116との間のインターフェイスとして働く生成コンポーネント508を自動的に構築する。COMは、アプリケーションが開発された言語から独立して、異なるアプリケーションが既知のインターフェイスを用いて互いに通信することを可能にするマイクロソフト(登録商標)の技術である。互換性の目的のために、COMはインターフェイスの特有のフォーマットおよびプロトコルを特定する。
【0076】
生成コンポーネント508は、COMコンプライアントアプリケーション512に、所定のAPIを通した組み込みアプリケーションの通信インターフェイスへのシームレスで迅速なアクセスを提供する。生成コンポーネント508を用いて、COMコンプライアントアプリケーション512は、組み込みコンピュータ104およびホストコンピュータ108上で動作するスレッドとシームレスに通信する。ホストコンピュータ通信プラットフォーム116は、その送り先に適したフォームで通信を自動的にフォーマットする。通信をフォーマットする代表的なプロセスは、図11を参照して後述される。
次に述べることは、生成コンポーネント508によって提供されるアプリケーションプログラミングインターフェイスの説明である。
【0077】
【表14】
【0078】
【表15】
【0079】
【表16】
【0080】
【表17】
【0081】
【表18】
【0082】
【表19】
【0083】
【表20】
【0084】
一実施形態において、種々のタイプのアプリケーションに通信システムを提供するため、MAC304、スタジオモジュール128、生成コンポーネント508が一緒に利用できることに気づく。例えば、MAC304のアプリケーションプログラミングインターフェイスを用いて、第1言語のスクリプティングプログラムは、同一または第2言語のスクリプティングプログラム、生成コンポーネント508を介したCOMコンプライアントアプリケーション512、組み込みコンピュータ104上で動作するスレッド、ホストコンピュータ上で動作するスレッド、およびスタジオモジュール128と通信することができる。
【0085】
更に、例えば、生成コンポーネント508のアプリケーションプログラミングインターフェイスを用いて、COMコンプライアントアプリケーションは、MAC304を介したスクリプティングプログラム、他のCOMコンプライアントアプリケーション、組み込みコンピュータ104上で動作するスレッド、ホストコンピュータ108上で動作するスレッド、およびスタジオモジュール128と通信することができる。
更に、例えば、スタジオ128を用いて、ユーザーは、COMコンプライアントアプリケーション512、スクリプティングプログラム、ホストコンピュータ108上で動作するスレッド、組み込みコンピュータ104上で動作するスレッドにメッセージを送信し、且つこれらからメッセージを受信することができる。
【0086】
図6は、通信データベース124の一実施形態を示す再現的なブロックダイアグラムである。実施形態により、付加的なタイプの情報がデータベースに付け加えられ、及び/又は或るタイプの情報が省略されてもよい。
通信データベース124は、特定プラットフォームコンフィギュレーションセクション(platform-specific configuration section)604を具備する。この特定プラットフォームコンフィギュレーションセクションは、組み込みコンピュータ装置特性およびホストコンピュータ装置特性を具備する。その特性は、プラットフォームがビッグエンディアン(big Endian)であるのかリトルエンディアン(little Endian)であるのかを示す指標、エニュメレーションサイズ(enumeration sizes)、ポインタサイズ(pointer sizes)、ストラクチャーアライメント境界(structure alignment boundaries)等のような項目を含むことができる。本発明の一実施形態において、組み込みコンピュータ装置特性およびホストコンピュータ装置特性が、ホストコンピュータ通信モジュール116または組み込みコンピュータ104のような、通信データベース124以外の場所に格納されることに気づく。
【0087】
通信データベース124は、また、メッセージセクション608およびプロトタイプセクション610を具備する。メッセージセクション608およびプロトタイプセクション610は、組み込みコンピュータ104およびホストコンピュータ108上で動作するリモートファンクションコールおよびメッセージの各特性をそれぞれ記述する。この特性は、(1)メッセージのユニークなネーム及び又は識別子、(2)メッセージのトータルサイズ、(3)通信のタイプ、例えば一方向メッセージ、双方向メッセージ、ブロードキャストメッセージ、子モーとファンクションコール等、および(4)データのタイプが通信の一部として受け渡されることを含む。一方向のメッセージは、通信の“ユーザー”から通信の“オーナー”に送信される。スレッドは、ホストコンピュータ通信モジュール116のアプリケーションプログラミングインターフェイスを介して提供されるレジストレーションルーチンを通じてメッセージの所有権(ownership)を要求することができる。双方向のメッセージは、ユーザーからオーナーに送信された“コマンド”と、オーナーからユーザーに送信される“応答”を含む。ブロードキャストメッセージは、ブロードキャストを受信するために登録された全てのスレッドに送信される。
【0088】
通信データベース124は、また、トレースポイントを追跡するためのトレースポイントセクション612を具備する。通信データベース124は、また、メッセージングセクション608で確認されたメッセージおよびプロトタイプセクション610でリストアップされたファンクションによってサポートされるデータタイプの記述を含む。
データタイプセクション616は、(1)リモートファンクションコールまたはメッセージの一部であるデータストラクチャーにおけるデータタイプの記述を含み、例えばインテジャー(integer)、キャラクター(character)、ブーリアン(Boolean)、浮動点(floating-point)、アレイ(array)等、(2)各メッセージにおける各エレメントのフィールドネーム、(3)およびメッセージの一部となる組み込みポインタの特性の記述である。
【0089】
図7は、生成コンポーネント508の代表的なコンポーネント階層を例示するブロックダイアグラムである。COMコンプライアントオブジェクト512は、最初に、ルートオブジェクト(root object)704を介して、生成コンポーネント508をアクセスする。ルートオブジェクト704を介して、COMコンプライアントオブジェクト512は、コマンドを送信することができると共に、通信データベース124に定義されたリモートファンクションコールおよび特定のメッセージからの応答を受信することができる。例えば、図7に示されるように、COMコンプライアントオブジェクトは、“メッセージ1”に関連するオブジェクト708と、“メッセージ2”に関連するオブジェクト712にアクセスする。これらメッセージオブジェクトに関連する所定のインターフェイスを用いて、COMコンプライアントオブジェクト512は、組み込みコンピュータ104上で動作するスレッドを有するペイロードを送信し且つ受信することができる。
【0090】
図8は、DATシステム100と通信するためのソースコードを修正(modify)するプロセスを例示するフローチャートである。本実施形態により、付加的なステップが加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。ステップ804から始めると、プログラマーは、DATシステム100によって提供される登録方法(registration method)を呼び出すためのAPIを付加する。本発明の一実施形態において、スレッドを登録することは、ユニークなスレッド識別コードを提供する。
【0091】
次に、ステップ808では、プログラマーは、DATシステム100によって提供されるリード方法を呼び出すためのAPIコールを付加する。ステップ812に続いて、プログラマーは、ここでは適切な、DATシステム100によって提供される送信方法を呼び出すためのAPIコールを付加する。
ステップ816に続いて、プログラマーは、“認証(subscribe)”するためのAPIコールをメッセージに付加する。メッセージに対する認証は、認証者(subscriber)が特定のメッセージに対して盲目的であることを可能とし、その後、全てのブロードキャスト送信を受信することを可能にする。他のメッセージングAPIは、次のようなこと、即ち、応答を送信すること、メッセージをブロードキャストすること、およびメッセージのペイロードのメタデータ(特性)とデータ(コンテンツ)を定義することのようなことのために、DATシステム100によって提供されてもよい。
【0092】
図9は、通信データベース124を構築する代表的なプロセスを例示するブロックダイアグラムである。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。本発明の一実施形態において、図9に示されるプロセスはユーザーの要求に応答して実施される。
【0093】
ステート904から始めると、スタジオモジュール128は、ユーザーによって提供される複数のインターフェイス定義ファイルのそれぞれから情報を読み取って抽出する。続いて、ステップ908では、スタジオモジュール128は、インターフェイス定義ファイルのそれぞれから通信インターフェイスを抽出する。抽出される情報は、(1)通信のタイプ、例えば一方向、双方向、ブロードキャスト、リモートファンクションコール、通信のタイプ、(2)通信の一部として受け渡されるデータのタイプ、(3)リモートファンクションコールまたはメッセージの一部であるデータストラクチャーにおけるデータタイプの記述、例えばインテジャー、キャラクター、ブーリアン、(4)メッセージの一部になる組み込みポインタ特性の記述、例えばメモリが“プール(pooled)”されたものか“プライベート(private)”であるか、通信インターフェイスに関連するメモリの伝送方法、および通信インターフェイスに関連するポインタデータである。
【0094】
次に、ステップ916では、スタジオモジュール128は、組み込みコンピュータ装置特性を格納する。組み込みコンピュータ装置特性は、ユーザーエントリー、組み込みコンピュータ104の自動判断によって提供され、または組み込みコンピュータ104によって自動的に提供される。組み込みコンピュータ装置特性の例は、図6に関して上述されている。一実施形態において、これらの特性は固定され、即ち、各コネクションについて全く同一であるものとする。
【0095】
ステップ920に続いて、スタジオモジュール128は、ホストコンピュータ装置特性を格納する。ホストコンピュータ装置特性は、ユーザーエントリーまたはホストコンピュータ108の自動判断によって提供することができる。ホストコンピュータ装置特性の例は、図6に関して上述されている。
【0096】
図10は、DATシステム100の使用プロセスを例示するフローチャートである。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。ステップ1004から始めると、DATシステム100は、各スレッドから登録情報(registration information)を受信する。続いて、ステップ1008では、DATシステムは、特定のメッセージのためのペイロードを受信する。
【0097】
ステップ1012に続いて、DATシステム100は、その送信先のスレッドへの伝送のためにペイロードをフォーマットする。もし送信先のスレッドが、伝送スレッドに対してローカルであれば、フォーマットをすることは不要である。リモートプラットフォームへの伝送のためのデータをフォーマットする代表的なプロセスは、図11に関して後述される。ステップ1016に移行すると、DATシステム100は,フォーマットされたペイロードを送信先のスレッドに伝送する。
【0098】
図11は、異なるプラットフォーム上で使用するためにデータをフォーマットするプロセスを例示するフローチャートである。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。本発明の一実施形態において、図11により実施されるプロセスは、DATシステム100のホストコンピュータ通信モジュール116によって実行される。更に、図11は、或るプラットフォーム、例えばホストコンピュータ108から他の例えば組み込みコンピュータ104への伝送のためのペイロードをフォーマットするプロセスに方向づけられる。
【0099】
図11に示されるプロセスの使用は、分散された異種のコンピューティングプラットフォーム上で互いに通信するアプリケーション間の相互運用性(interoperability)を提供する。本発明の一実施形態において、組み込みコンピュータに関する処理およびメモリの要件を低減するため、DATシステム100は、ホストコンピュータ108上で全てのデータフォーマットを実施する。
【0100】
ホストコンピュータ108は、異なるコンピュータが通信している場合に適切にメッセージをマッピングするため、組み込みコンピュータ104およびホストコンピュータ108および個々のインターフェイス定義情報(“通信インターフェイス情報”)のプラットフォーム特性を使用する。一実施形態において、組み込みコンピュータ104は、常に、その本来の(native)フォーム、即ちメッセージがそのメモリに格納されるフォームでメッセージを送信し且つ受信する。ホストコンピュータ108は、メッセージを受信したときに、これらメッセージをそのフォームにマッピングし、そしてメッセージを組み込みコンピュータ104に伝送するときに、そのメッセージを組み込みコンピュータ104のプラットフォームの本来のフォームに変換する。
【0101】
決定ステート1104から始めると、ホストコンピュータ通信モジュール116は、送信先のスレッドがローカルであるかリモートであるかを決定する。もしそのスレッドがローカルであれば、プロセスはステップ1108に進み、そしてペイロードは、送信先のスレッドへの伝送のために待ち行列(queue)に入れられる。もし伝送がローカルであれば、ペイロードの更なる変更は必要ない。
【0102】
決定ステップ1104を再び参照すると、もし送信先のスレッドがローカルでなければ、プロセスはステップ1112に進み、ここで、上記ホストコンピュータ通信モジュール116は、ペイロード内のデータとポインタに参照されたデータとを、組み込みコンピュータ104への伝送のためのメッセージにコピーする。ポインタデータを処理する代表的なプロセスは、図12A,12B,12Cおよび12Dを参照して以下に詳細に説明される。
【0103】
ステップ1116に続いて、ホストコンピュータ通信モジュール116は、必要であれば、ペイロードにあるデータのエレメントのバイトオーダー(byte order)をフォーマットする。例えば、もしホストコンピュータ108がビッグエンディアンであり、且つ組み込みコンピュータ104がリトルエンディアンであり、または同様に逆であれば、ホストコンピュータ通信モジュール116は、データ内のビットのオーダーを反転させる。
【0104】
ステップ1124に続いて、ホストコンピュータ通信モジュール116は、ペイロードにあるデータタイプのサイズをフォーマットする。例えば、もし組み込みコンピュータ104が或るデータタイプに対してあるビット長を使用し、且つホストコンピュータが異なるビット長を使用すると、ホストコンピュータ通信モジュール116は、他のプラットフォームへの伝送のためにデータのサイズを調整する。ステップ1128に移行し、ホストコンピュータ通信モジュール116は、受信プラットフォームの任意の要求に従ってデータストラクチャーのアライメントを調整する。
【0105】
図12A−12Dは、或るプラットフォームから他のプラットフォームに受け渡されるペイロードにあるポインタを管理する代表的方法をそれぞれ例示する。図12Aは、“コマンド”メッセージに従って組み込みコンピュータ104上のスレッドからペイロードを受信する方法に方向づけられる。一実施形態において、図12Aはペイロードにあるポインタのそれぞれに関して実施される。本実施形態により、付加的なステップが付け加えられ、他が削除され、ステップの順序づけが再整理されてもよい。本発明の一実施形態において、図12に示される方法は、ホストコンピュータモジュール116によって実施される。図12に示されるような同じようなプロセスが、組み込みコンピュータ通信モジュール112がコマンドメッセージを受信したときに、組み込みコンピュータ通信モジュール112上で動作することに気づく。しかしながら、一実施形態において、このようなプロセスのために、組み込みコンピュータ通信モジュール112は、このようなフォーマットがホストコンピュータ通信モジュール116によって実行されるので、受信データの如何なるインタープラットフォーム(inter-platform)のフォーマットも実行しない。
【0106】
ステート1204から始める前に、組み込みコンピュータ104上のスレッドは、組み込みコンピュータ通信モジュール112のアプリケーションプログラミングインターフェイスの一部である送信コマンドを呼び出す。これに応答して、組み込みコンピュータ通信モジュール112は、インタープラットフォームメッセージ(inter-platform message)を組み立て、そしてホストコンピュータモジュール116に伝送する。このインタープラットフォームメッセージは、送信コマンドの一部として確認されたペイロード、および、もし適切であれば、そのペイロードにあるポインタによって参照されるデータを具備する。
【0107】
ステップ1204から始めると、ホストコンピュータ通信モジュール116は、伝送された通信のペイロードにある選択されたポインタの組み込みポインタ属性を取得する。本発明の一実施形態において、属性情報は伝送された通信に格納されている。各ポインタの第1属性は、ポインタが、“IN”または“OUT”として分類されるか、または“IN/OUT”として分類されるかである。“IN”属性は、ポインタによって参照されたデータが、コマンドの送り手からメッセージのオーナーに受け渡されるが、メッセージのオーナーによってデータは返されないことを表す。“OUT”属性は、コマンドの送り手が、ポインタによって参照される如何なるデータをも伝送しないが、オーナーによってデータが返され、そしてポインタによって参照されるアドレスに格納されることを表す。“IN/OUT”属性は、ポインタによって参照されるデータが、コマンドの送り手から送信され、そしてメッセージのオーナーが、ポインタによって参照されるメモリに格納されているデータを返すことを表す。
【0108】
各ポインタの第2属性は、ポインタが“プライベート(private)”であるか“プール(pooled)”されたものであるかである。“プライベート”のメモリの管理(使用中でないときにメモリを解放すること)は、DATシステム100によって取り扱われる。“プール”されたメモリの管理は、ユーザー及び/又はメッセージのオーナーによって取り扱われる。
【0109】
続いてステップ1210に移り、ホストコンピュータ通信モジュール116は、ポインタデータを格納するためのローカルバッファを作成する。続いてステップ1212に移り、ホストコンピュータ通信モジュール116は、ポインタ属性が、“IN”または“IN/OUT”であるかを決定する。もしポインタ属性が“IN”または“IN/OUT”であれば、プロセスはステップ1214に進む。続いてステップ1214に移り、ホストコンピュータ通信モジュール116は、組み込みコンピュータ104から伝送されたポインタデータをローカルバッファにコピーする。このステップでは、ホストコンピュータ通信モジュール116は、ステップ1116,1124,および1128を参照して上述したプロセスに従って、ポインタデータをフォーマットする。
【0110】
次に、ステップ1218では、ホストコンピュータ通信モジュール116は、バッファのアドレスをペイロードにコピーする。決定ステップ1220に進み、ホストコンピュータ通信モジュール116は、ポインタの第1属性が“IN”であるかどうかを決定する。もしポインタの第1属性が“IN”であれば、プロセスは決定ステップ1222に進む。決定ステップ1222では、ホストコンピュータ通信モジュール116は、ポインタの第2属性が“プライベート”であるかどうかを決定する。もしポインタの第2属性がプライベートであれば、プロセスはステップ1228に進む。その他に、もしポインタの第2属性がプライベートでなければ、即ちプールされたものであれば、プロセスは終了する。
【0111】
ステップ1212を再び参照すると、もし第1属性が“IN”または“IN/OUT”でなければ、属性は“OUT”であり、そしてプロセスはステップ1216に進む。ステップ1216では、ホストコンピュータ通信モジュール116は、ローカルバッファのアドレスをペイロードにコピーする。ステップ1216から、または決定ステップ1220(第1属性が“IN/OUT”の場合)から、プロセスはステップ1224に進む。このステップでは、ホストコンピュータ通信モジュール116は、DATシステム100のアプリケーションプログラミングインターフェイスによって提供される応答コマンドを呼び出すためにホストコンピュータ108上のスレッドを待つ。応答を受信すると、プロセスはステップ1226に進む。このステップでは、応答データは、組み込みコンピュータ104への伝送のためにフォーマットされる。
【0112】
ステップ1226または決定ステップ1222(ポインタの第2属性が“プライベート”の場合)の何れかから、プロセスはステップ1228に進み、このステップでは、ホストコンピュータ通信モジュール116が、ホストコンピュータ通信モジュール116のアプリケーションプログラミングインターフェイスにあるリードコンプリートコマンド(read complete command)を呼び出すためにホストコンピュータ104上のスレッドを持つ。リードコンプリートコマンドを受信すると、プロセスはステップ1230に進み、このステップでは、ホストコンピュータ通信モジュールはメモリを解放する。
【0113】
図12Bは、ホストコンピュータ108上のスレッドから組み込みコンピュータ104上のスレッドに送信されるコマンドメッセージにあるペイロードにおけるポインタを管理するプロセスに方向づけられる。図12Bは、図11のステップ111において発生するステップを更に詳細に例示する。一実施形態において、図12Bは、ペイロードにあるポインタのそれぞれに関して実施される。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。同じようなプロセスが、組み込みコンピュータ104上のスレッドからホストコンピュータ108にコマンドメッセージを送信するときに、組み込みコンピュータによって実行される。しかしながら、このプロセスにおいて、組み込みコンピュータ通信モジュール112は、ペイロードが受信されるとホストコンピュータ通信モジュール116によってフォーマットが実施されるので、伝送された如何なるペイロードのフォーマットも実施しない。
【0114】
ステップ1230から始めると、ホストコンピュータ通信モジュール116は、組み込みコンピュータ104への伝送のためのインタープラットフォームを格納するためのバッファを作成する。また、このステップでは、ホストコンピュータ通信モジュール116は、組み込みポインタのためのインタープラットフォームメッセージにおけるヘッダーを作成する。更に、このステップでは、ホストコンピュータ通信モジュール116は、インタープラットフォームメッセージにおけるポインタのポインタ属性を格納する。
【0115】
決定ステップ1232に続いて、ホストコンピュータ通信モジュール116は、ポインタのポインタ属性が“OUT”であるかどうかを決定する。もし選択されたポインタの属性が“OUT”であれば、プロセスは終了する。しかしながら、ポインタ属性が“OUT”でなければ、即ちそれが“IN”または“IM/OUT”であれば、プロセスはステップ1244に進む。ステップ1244では、ホストコンピュータ通信モジュール116は、ポインタによって参照されたデータをヘッダーにコピーする。更に、ホストコンピュータ通信モジュール116は、組み込みコンピュータ108上のスレッドによる使用のためにデータをフォーマットする。
【0116】
次に、決定ステップ1236では、ホストコンピュータ通信モジュール116は、ポインタ属性が“IN”であるかどうかを決定する。もしポインタ属性が“IN”であれば、プロセスはステップ1240に進む。このステップでは、もし保障されていれば、即ちポインタの属性が“プール”されているものであれば、ホストコンピュータ通信モジュール116はメモリを解放する。しかしながら、もしポインタ属性が“IN”でなければプロセスは終了する。
【0117】
図12Cは、組み込みコンピュータ通信モジュール112からの応答メッセージを受信するプロセスに方向づけられている。図12Cは、図11のステップ111において発生するステップを更に詳細に例示する。一実施形態において、図12Cは、ペイロードにあるポインタのそれぞれに関して実施される。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。同じようなプロセスが、組み込みコンピュータ104上のスレッドからホストコンピュータにコマンドメッセージを伝送するときに、組み込みコンピュータ104によって実施される。しかしながら、このプロセスにおいては、組み込みコンピュータ通信モジュール112は、ペイロードを受信するとホストコンピュータ通信モジュール116によってフォーマットが実施されるので、伝送されたペイロードの如何なるフォーマットも実施しない。
【0118】
ステート1250から始める前に、組み込みコンピュータ104上のスレッドは、組み込みコンピュータ通信モジュール112のアプリケーションプログラミングインターフェイスの一部である送信応答コマンドを呼び出す。これに応答して、組み込みコンピュータ通信モジュール112は、インタープラットフォームメッセージを組み立て、そしてそれをホストコンピュータ通信モジュール116に伝送する。このインタープラットフォームメッセージは、送信応答の一部として確認されたペイロードおよび、もし適切であれば、ペイロードにあるポインタによって参照されるデータを具備する。
【0119】
決定ステップ1250から始めると、ホストコンピュータ通信モジュール116は、インタープラットフォームメッセージにあるポインタのポインタ属性が属性“IN”を示すかどうかを決定する。もしポインタ属性が属性“IN”を示していれば、プロセスはステップ1252に進み、そしてホストコンピュータ通信モジュール116は、ホストコンピュータ108での使用のため受信データをフォーマットする。例えば、一実施形態において、ホストコンピュータ通信モジュール116は、ステップ1116,1124,,1128に関して上述したステップを実施する。
【0120】
しかしながら、もしポインタ属性が“IN”を示していなければ、即ちポインタ属性が“IN/OUT”または“OUT”を示していれば、プロセスはステップ1254に進む。ステップ1254では、ホストコンピュータ通信モジュール116は、組み込みコンピュータ104によって伝送されたポインタデータを格納するためのローカルバッファを作成する。ステップ1256に続いて、ホストコンピュータ通信モジュール116は、インタープラットフォーム通信からのポインタデータをローカルバッファにコピーする。続いて、ステップ1258では、ホストコンピュータ通信モジュール116は、バッファのアドレスを受信したペイロードにコピーする。
【0121】
決定ステップ1260に進み、ホストコンピュータ通信モジュール116は、ポインタを解放すべきかどうかを決定する。本発明の一実施形態において、これは、ポインタ属性を読み取ることによって決定される。もしポインタ属性が“プライベート”を示していれば、ホストコンピュータ通信モジュール116は、メモリを解放することを決定する。しかしながら、もしポインタ属性が“プール”されたものであることを示していれば、ホストコンピュータ通信モジュール116は、ユーザーがメモリを解放することを許容する。
【0122】
もしホストコンピュータ通信モジュール116がステップ1260においてメモリを解放することを決定すれば、プロセスはステップ1262に進み、このステップでは、ホストコンピュータ通信モジュール116が、リードコンプリートコマンドを呼び出すためにホストコンピュータ108上のスレッドを待つ。ステップ1264に続いて、ホストコンピュータ通信モジュール116は、ローカルバッファを解放する。決定ステップ160(ホストコンピュータ通信モジュール116がポインタを解放しない場合)またはステップ1264の何れかから、プロセスは終了する。
【0123】
図12Dは、ホストコンピュータ108上のスレッドから組み込みコンピュータ104上のスレッドに送信される応答メッセージにあるペイロードにおけるポインタを管理する代表的なプロセスに方向づけられる。図12Dは、図11のステップ1112において発生するステップを更に詳細に例示する。一実施形態において、図12Dは、ペイロードにあるポインタのそれぞれに関して実施される。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。同じようなプロセスが、組み込みコンピュータ104からホストコンピュータに応答メッセージを伝送するときに、組み込みコンピュータ104によって実施される。しかしながら、このプロセスにおいて、組み込みコンピュータ通信モジュール112は、ペイロードを受信するとホストコンピュータ通信モジュール116によってフォーマットが実施されるので、伝送された如何なるペイロードのフォーマットも実施しない。
開始する前に、組み込みコンピュータ104上のスレッドは、メッセージコマンドを送信し、そしてホストコンピュータ108上のスレッドは、DATシステム100のAPIの送信応答ルーチンを呼び出すことにより応じる。
【0124】
ステップ1265から始めると、ホストコンピュータ通信モジュール116は、ポインタによって参照されるデータを格納するために送信バッファ(“ヘッダー”)にスペースを割り付ける。この送信バッファは、ホストコンピュータ通信モジュール116から組み込みコンピュータ通信モジュール112に送信されるインタープラットフォームメッセージの一部である。決定ステップ1266に進み、ホストコンピュータ通信モジュール116は、ポインタ属性が“IN”を示すかどうかを決定する。もし、ポインタ属性が“IN”を示していれば、即ちそれらが“OUT”または“IN/OUT”を示していなければ、プロセスは決定ステップ1267に進む。決定ステップ1267では、ホストコンピュータ通信モジュール116は、対応する送信コマンドの期間中に割り当てられるメモリに関連するメモリを解放すべきかどうかを決定する。本発明の一実施形態において、これは、ポインタ属性を読み取ることによって決定される。もしポインタ属性が“プール”されているものであることを示していれば、ホストコンピュータ通信モジュール116は、メモリを解放することを決定する。しかしながら、もしポインタ属性が“プライベート”を示していれば、ホストコンピュータ通信モジュール116は、メモリを所有し、結局は(ローカルオペレーティングシステムを介して)解放することを許容する。もしホストコンピュータ通信モジュール116が、メモリを解放することを決定すれば、プロセスはステップ1268に進み、そしてホストコンピュータ通信モジュール116はメモリを解放する。ステップ1268または決定ステップ1266(ポインタ属性が“IN”をしめしていない場合)の何れかから、プロセスはステップ1270に進み、そしてホストコンピュータ通信モジュール116は、組み込みコンピュータへの伝送のためにポインタによって参照されたデータをフォーマットする。例えば、一実施形態において、ホストコンピュータ通信モジュール116は、ステップ1116,1124,および1128に関して上述したステップを実施する。フォーマットの一部として、フォーマットされたデータがヘッダーに格納される(ステップ1265)。
【0125】
図13は、スプリプトエンジン312にあるスクリプトからDATシステム100を使用するプロセスを例示するフローチャートである。本実施形態により、付加的なステップを付け加え、他が削除され、そしてステップの順序づけが再整理されてもよい。ステップ1304から開始すると、スタジオモジュール128はユーザーからスクリプトファイルをロードする旨の要求を受信し、本明細書ではそのように行う。続いて、ステップ1312では、スタジオは、スクリプトファイルに関連するスクリプトタイプを決定する。このスクリプトタイプは、異なる方法で決定され、確認されたスクリプトファイルの拡張の検査またはスクリプト自体のコンテンツからの検査を含む。スクリプティング言語の代表的なタイプは、ジャバスクリプト(登録商標)、ビジュアルベーシック(登録商標)、VBScript(登録商標)、Tcl(登録商標)、JScript(登録商標)、Python(登録商標)、等を含む。
ステップ1316に移行し、スタジオモジュール128は、スクリプトタイプと関連した対応するスクリプトエンジン312を確認する。ステップ1320に続いて、スタジオモジュール128はスクリプトエンジン312を初期化する。
【0126】
次に、ステップ1324では、スタジオモジュール128は、メッセージングオートメーションコンポーネント(messaging automation component;“MAC”)304をロードする。MAC304をロードするプロセスは、図14を参照して後述される。ステップ1328に進み、MAC304は、スクリプトエンジン312に“さらされる(exposed)”。本発明の一実施形態において、MAC304をさらすことは、スクリプトエンジン312ハンドルをMAC304へのハンドルを提供することを含む。次に、ステップ1332では、スクリプトエンジンが起動され、ステップ1304でロードされたスクリプトがMAC304のAPIをアクセスすることを許容する。ステップ1336に移行し、スクリプトプログラミングは、MAC304のAPIを用いてスレッド114と通信することができる。MAC304を使用する代表的なプロセスは、図15に関連して後述される。
【0127】
図14は、MAC304をロードするプロセスを例示するフローチャートである。図14は、図13のステップ1324で発生するステップを更に詳細に例示する。ステップ1404から開始すると、スタジオモジュール128は、MAC304の初期化ルーチンを呼び出し、そしてパラメータとしてハンドル(handle)を通信データベース124に受け渡す。続いて、ステップ1408では、MAC304は、マネージングオートメーションコンポーネント“MAC”データベースオブジェクトを生成する。MACデータオブジェクトオブジェクトは、通信データベース114からの或る情報を具備する。MACデータベースは、MAC304のアプリケーションプログラミングインターフェイスをアクセスするためにスクリプティングプログラムによって使用される。
【0128】
図15−17は、スクリプティング言語を用いてMAC308と通信するプロセスを例示するフローチャートである。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。図15は、MAC304に特有なメッセージを登録するプロセスに方向づけされたフローチャートである。ステップ1504から開始すると、スクリプトエンジン312で動作しているスクリプトは、MAC304の登録方法を呼び出す。ステップ1508に進み、MACオブジェクトは、ホストコンピュータ通信モジュール116のレジスタAPIを呼び出す。
【0129】
図16Aは、MAC304を介してメッセージを送信するプロセスを例示するフローチャートである。ステップ1604から開始すると、スプリプトは、レファレンスをMACデータベースオブジェクトに読み込む。続いて、ステップ1606では、スクリプトは、メッセージオブジェクトに対するレファレンスを提供するためにMACデータベースを要求する。このメッセージオブジェクトは、通信のオーナーと通信を行うため、または他から通信を受信するために、スクリプトプログラムによって使用される。メッセージオブジェクトを用いて、スクリプトは、メッセージのフィールドを設定し、メッセージを送信し、メッセージを受信し、そして他の標準メッセージングファンクションを実行することができる。
【0130】
続いて、ステップ1610では、MACデータベースオブジェクトが、通信データベース124からメッセージ定義情報を読み取る。本発明の一実施形態において、メッセージ定義情報は、ホストコンピュータ通信モジュール116を介して読み取られる。本発明の他の実施形態において、メッセージ定義情報は、通信データベース124から直接的に読み取られる。メッセージ定義情報は、(1)通信のタイプ、例えば一方向、双方向、ブロードキャスト、リモートファンクションコール、および(2)通信の一部として受け渡されるデータのタイプを具備する。続いて、ステップ1614では、MACデータベースオブジェクトは、通信データベース124から読み取られたプロトタイプ定義に基づきMACメッセージオブジェクトを作成する。
【0131】
ステップ1618に進み、MACデータベースオブジェクトは、要求されたメッセージオブジェクトに関して格納された通信データベースから任意のデータセットを読み取る。続いて、ステップ1622では、MACデータベースオブジェクトは、(ステップ1614で作成された)メッセージオブジェクトにデータセットを付け加える。
ステップ1624に移行し、MACデータベースオブジェクトは、スクリプトへのメッセージオブジェクトにレファレンスを返す。続いて、ステップ1628では、スクリプトは、メッセージオブジェクトへのレファレンスを用いてメッセージのデータフィールドを設定することができる。スクリプトは、MACデータベースオブジェクトを介して複数の読み出し可能かつ書き込み可能なデータセットにアクセスする。このステップでは、スクリプトは、連続した使用のためにデータセットの一つを確認できる。続いてステップ1632に移り、ステップ1632では、スクリプトはメッセージオブジェクトの送信方法を呼び出す。ステップ1636に進み、MACデータベースオブジェクトは、現在のインデックスによって参照されるデータセットを、メッセージを所有するスレッドに送信する。
【0132】
次に、決定ステップ1640では、MACデータベースオブジェクトは、自動インクリメントが可能かどうかを決定する。もし自動インクリメントが可能であれば、プロセスはステップ1644に進み、そしてMACデータベースオブジェクトは、次のデータセットを選択する。ステップ1640を再び参照すると、もし自動インクリメントが可能でなければ、プロセスは終了する。
【0133】
図16Bは、MAC304を介してファンクションを呼び出すプロセスを例示するフローチャートである。ステップ1650から始めると、スクリプトは、MACデータベースオブジェクトに対するレファレンスを読み込む。続いて、ステップ1654では、スクリプトは、リモートファンクションコールオブジェクトに対するレファレンスを提供するためにMACデータベースオブジェクトを要求する。リモートファンクションコールオブジェクトは、リモートファンクションコールを取り扱うスレッドと通信するためにスクリプトプログラムによって使用される。リモートファンクションコールを用いて、スクリプトは、リモートファンクションコールを呼び出すと受け渡されるパラメータを設定することができる。
【0134】
続いて、ステップ1658に移り、MACデータベースオブジェクトは、通信データベース124からリモートファンクションコールプロトタイプ定義情報を読み込む。本発明の一実施形態において、このプロトタイプ定義情報は、ホストコンピュータ通信モジュール116を介して読み込まれる。本発明の他の実施形態において、メッセージ定義情報は、通信データベース124から直接的に読み込まれる。
【0135】
次に、ステップ1662では、MACデータベースオブジェクトは、通信データベース124から読み込まれたリモートファンクションコールプロトタイプ定義に基づき、MACリモートファンクションコールオブジェクトを作成する。
ステップ1664に進み、MACデータベースオブジェクトは、要求されたリモートファンクションコールオブジェクトに関して格納された通信データベースから任意のデータセットを読み込む。続いて、ステップ1666では、MACデータベースオブジェクトは、MACリモートファンクションコールオブジェクトにデータセットを付け加える。
【0136】
ステップ1668に移行し、MACデータベースオブジェクトは、スクリプトにリモートファンクションコールに対するレファレンスを返す。続いて、ステップ1670では、スクリプトは、リモートファンクションコールオブジェクトを用いてリモートファンクションコールのデータフィールド(パラメータ)を設定することができる。スクリプトは、MACデータベースオブジェクトを介して複数の読み取り可能かつ書き込み可能なデータセットにアクセスする。このステップでは、スクリプトは、連続する使用のためにデータセットの一つを確認することができる。続いて、ステップ1672に移り、スクリプトは、リモートファンクションコールオブジェクトのコール方法を呼び出す。ステップ1674に進み、MACデータベースオブジェクトは、リモートファンクションコールを取り扱うスレッドに、現在のインデックスによって参照されるデータを送信する。
【0137】
次に、決定ステップ1676では、MACデータベースオブジェクトは、自動インクリメントが可能かどうかを決定する。自動インクリメントは、スクリプトが各送信コマンドを用いて異なるデータセットを送信することを可能にする。もし自動インクリメントが可能であれば、プロセスはステップ1678に進み、そしてMACデータベースオブジェクトは次のデータセットを選択する。ステップ1676を再び参照すると、もし自動インクリメントが可能でなければ、プロセスは終了する。
【0138】
図17Aは、MAC304を介してスクリプトがメッセージを受信するプロセスを例示するフローチャートである。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけ再整理されてもよい。
ステップ1700から開始すると、スプリプトは、MACデータベースオブジェクトのリード方法を呼び出す。続いて、ステップ1704では、MACデータベースオブジェクトは、ホストコンピュータ通信モジュール116のリードAPIを呼び出す。続いて、ステップ1708に移り、ホストコンピュータ通信モジュール116は、受信すべきメッセージを待つ。ステップ1712に進み、MACデータベースオブジェクトは、ホストコンピュータ通信モジュール116からメッセージおよびメッセージ識別子を受信する。続いて、ステップ1720では、MACデータベースオブジェクトは、スクリプトにメッセージオブジェクトを返し、そしてそれは、要求されたメッセージのコンテンツを順にアクセスすることができる。
【0139】
図17Bは、スクリプトがMAC304によって提供されるファンクションコールアプリケーションプログラミングインターフェイスを介して通信を受信するプロセスを例示するフローチャートである。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。ステップ1750から開始すると、スクリプトは、MACデータベースオブジェクトのリード方法を呼び出す。続いて、ステップ1754では、MACデータベースオブジェクトは、ホストコンピュータ通信モジュール116のリードAPIを呼び出す。
【0140】
続いて、ステップ1758に移り、MACデータベースオブジェクトは、受信すべきリモートファンクションコールコマンドメッセージを待つ。続いて、ステップ1762では、MACデータベースオブジェクトは、リモートファンクションコマンドメッセージおよびそのファンクション識別子を受信する。
続いて、ステップ1764に移り、リモートファンクションコールオブジェクトがスクリプトプログラムに返される。続いて、ステップ1766では、スクリプトプログラムは、リモートファンクションコールオブジェクトの入力パラメータをアクセスする。
【0141】
ステップ1768に移行し、MACデータベースオブジェクトは、スクリプトにリモートファンクションコールオブジェクトに対するレファレンスを返す。続いて、ステップ1770では、スクリプトは、リモートファンクションコールオブジェクトのリターン方法を呼び出す。続いて,ステップ1772に移り、リモートファンクションコールオブジェクトは、ホストコンピュータ通信モジュール116の送信アプリケーションプログラミングインターフェイスを呼び出す。ステップ1774に進み、MACデータベースオブジェクトは、リモートファンクションコールを取り扱うスレッドに、現在のインデックスによって参照されるデータセットを送信する。
【0142】
次に、決定ステップ1776では、MACデータベースオブジェクトは、自動インクリメントが可能であるかどうかを決定する。自動インクリメントは、スクリプトが、それぞれ送信コマンドを用いて異なるデータセットを送信することを可能にする。もし、自動インクリメントが可能であれば、プロセスはステップ1778に進み、そしてMACデータベースオブジェクトは次のデータセットを選択する。ステップ1776を再び参照すると、もし自動インクリメントが可能でなければ、プロセスは終了する。
【0143】
図18は、COMコンプライアント言語からDATシステム100を用いてインターフェイスするプロセスを例示するフローチャートである。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。ステップ1804から開始すると、ユーザーは“ランチ(launches)”COMコンポーザツール504(図5)をロードする。COMコンポーザツールをロードする代表的なプロセスは、図19を参照して後述される。
【0144】
次に、ステップ1808では、COMコンポーザは、生成コンポーネント508(図5)を構築する。生成コンポーネント508は、他のCOMコンプライアントプログラムによってアクセス可能なCOMオブジェクトである。生成コンポーネント508を用いて、COMコンプライアントプログラムは、容易に、インターフェイスをテストし、組み込みコンピュータ104またはホストコンピュータ108上で動作するスレッドに通信を送信し、組み込みコンピュータまたはホストコンピュータ108上、および本明細書で述べられる他のファンクションで動作するスレッドから送信された通信を受信することができる。生成コンポーネント508は、前述のファンクションのそれぞれを実行するための所定の複数のインターフェイスを提供する。生成コンポーネント508を構築する代表的なプロセスは、図20を参照して後述される。
【0145】
続いて、ステップ1816に移り、生成コンポーネント508は、任意のCOMコンプライアント言語を介してアクセス可能である。生成コンポーネントを使用する代表的なプロセスは、図22を参照して後述される。
図19は、COMコンポーザツール504を起動する代表的なプロセスを例示するフローチャートである。図19は、図18のステップ1804において発生する或るステップを更に詳細に例示する。本実施形態により、追加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。
【0146】
ステップ1904から開始すると、ユーザーはデータベースを確認する。DATシステム100は、複数のプロジェクトのために複数のデータベースをサポートすることができる。続いてステップ1908に移り、ユーザーは、選択されたデータベースのファンクションのどのメッセージが、生成されたCOMオブジェクトに含まれるべきかを選択する。本発明の一実施形態において、ユーザーは、グラフィカルユーザーインターフェイスユーティリティを介してメッセージ及び/又はリモートファンクションコールを選択する。
ステップ1912に進み、ユーザーはコンパイラーバージョンを選択する。COMコンポーザ504は、適切なコントロールファイルを適切なフォーマットで提供する生成コンポーネント508を構築するために使用されるコンパイラーのバージョンを知る必要がある。ステップ1916に移行し、COMコンポーザ504は、ユーザーに、構造(build)のタイプ、例えばレリース(release)またはデバッグ(debug)、を示すことを要求する。
【0147】
図20は、生成コンポーネント508を構築する代表的なプロセスを例示するフローチャートである。図20は、図18のステップ1808において発生するステップを更に詳細に例示する。本実施形態により、追加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。
【0148】
ステップ2004から開始すると、COMコンポーザツールは、ユーザーにより確認されたデータ(ステップ1904)をメモリにロードする。続いて、ステップ2008では、COMコンポーザツールは、次の事柄、即ち(1)ユーザーによって確認されたメッセージ及び/又はリモートファンクションコールの全て(ステップ1904)、(2)確認されたメッセージ及び/又はリモートファンクションコールのペイロードの全て、(3)生成コンポーネント508における全ての他のオブジェクトをアクセスするために使用されるルートオブジェクト(root object)に関して実施されるプロセスを開始する。一実施形態において、ステップ2012,2016,2020,および2024は、上述のオブジェクトのそれぞれについて実施される。
【0149】
ステップ2012では、COMコンポーザ504は、オブジェクトのそれぞれについてソフトウェアを生成する。インターフェイスを生成する代表的なプロセスを、図21を参照して以下に述べる。続いて、ステップ2016では、生成コンポーネントは、オブジェクトについてCOMクラス定義を生成し、その他には共同クラス(co-class)として知られている。ステップ2020に進み、COMコンポーザは、COMオブジェクトのそれぞれについて、COMクラスインプリメンテーション(COM class implementation)を生成する。ソフトウェアインターフェイス、COMクラス定義(COM class definition)、およびCOMクラスインプリメンテーションを生成することに関する更なる情報のために、次の参考文献、即ち、DON BOX, ESSENTIAL COM(1998), and BRENT RECTOR, CHRIS SELLS & JIM SPRINGFIELD, ATL INTERNALS(1999)を参照されたい。
【0150】
決定ステップ2024に移行し、COMコンポーザ504は、メッセージ/リモードファンクションコール、ペイロード、およびルートオブジェクトの全てを処理したかどうかを決定する。もしこれらの項目の全てが処理されていなければ、プロセスは(上述した)ステップ2012に戻る。しかしながら、もしその項目の全てが処理されていれば、COMコンポーザ504は、処理をステップ2028に進め、そして、もし必要であれば、必要とされる任意のコンパイラー特定ファイル(compiler specific files)を提供する。
次に、ステップ2032では、COMコンポーザ504は、生成コンポーネント508を構築するため選択されたコンパイラーを起動する。本発明の一実施形態において、COMコンポーネントは、ダイナミックリンクライブラリー(dynamic link library)“DDL”において提供される。ステップ2036に移行し、COMコンポーザ504は、ホストコンピュータ108にあるレジストリにダイナミックリンクライブラリー(dynamic link library)を登録する。
【0151】
図21は、インターフェイスを生成するプロセスを例示するフローチャートである。図21は、図20のステップ2012において発生するステップを更に詳細に例示する。本実施形態により、付加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。
ステップ2104から開始すると、COMコンポーザ504は、“ビルトイン”メンバファンクション(“built-in” member functions)のための方法定義(method definitions)を生成する。続いて、ステップ2108では、COMコンポーザ504は、子オブジェクト(child object)2108に対しアクセッサーファンクション(accessor function)を生成する。例えば、ルートオブジェクトの子(children)は、メッセージ及び/又はリモートファンクションコールのそれぞれを含む。更に、例えば、メッセージオブジェクト及び/又はリモートファンクションコールの子は、オブジェクトと関連する一つまたはそれ以上のペイロードを具備する。ステップ2112に移行し、COMコンポーザ504は、オブジェクトのプロパティを設定し且つ取得するためのインターフェイスを生成する。
【0152】
図22は、生成コンポーネント508を使用するプロセスを例示するフローチャートである。図22は、図18のステップ1816において発生する或るステップを更に詳細に例示する。本実施形態により、付加的なステップを付け加え、他を削除し、そしてステップの順序づけを再整理してもよい。
ステップ2216の開始する前に、ユーザーは、COM開発環境を開き、そしてCOM開発環境を介して、生成コンポーネント508を見つける。
ステップ2216から開始すると、ユーザーは、生成コンポーネント508のレファレンスを作成する。続いて、ステップ2220では、ユーザーは、ルートオブジェクトのインスタンス(instance)を作成する。ステップ2224に移行し、ユーザーは、所望のメッセージオブジェクトまたはリモートファンクションコールオブジェクトを読み込むためにルートオブジェクトアクセッサーファンクション(root object accessor function)を使用することができる。続いてステップ2228に移り、ユーザーは、所望のペイロードオブジェクトを選択するためにオブジェクトのアクセッサーファンクションを使用することができる。
【0153】
ステップ2232に進み、ユーザーは、ペイロードオブジェクトのプロパティを取得または設定するためにペイロードオブジェクトの方法を呼び出す。例えば、ユーザーは、ペイロードオブジェクトにデータを格納することができる。続いて、ステップ2236では、ユーザーは、通信を送信するためにメッセージオブジェクトまたはリモートファンクションコールオブジェクトに関する方法を呼び出す。ユーザーは、また、メッセージを登録するような、メッセージに関する他の方法を呼び出してもよく、このようなメッセージに関する任意のブロードキャストが呼び出しプロセスによって受信される。
他の方法は、図5を参照して前述されている。続いて、ステップ2240では、ユーザーは、もしあれば、受信された非同期通信を受信するためイベントハンドラ(event handler)を実施する。
【0154】
図23は、スタジオモジュール128を使用するプロセスを例示するフローチャートである。スタジオモジュール128は、通信データベース124によって確認された通信インターフェイスのそれぞれをテストするためにグラフィカルユーザーインターフェイスコントロールパネルを提供する。ステップ2304から開始すると、ユーザーは、選択された通信データベース124をロードする。ユーザーは、異なるプロジェクトに対して異なる通信データベースを有してもよい。一旦ロードされると、ユーザーは、通信データベース124における通信インターフェイスのどれを調べ且つ選択してもよい。選択された後、ユーザーは、通信インターフェイスの所有権を示すこと(ステート2312)、データセットを生成すること(ステップ2316)、情報のフィールドを送信すること(ステップ2320)、そしてデータセットを送信すること(ステップ2324)のような、データベースに関する多くのファンクションを実行することができる。
【0155】
図24は、DATシステム100の下で動作する二つのスレッド間の通信をモニタすることに基づくデータセットを生成するプロセスを例示するフローチャートである。データセットを生成するプロセスは、ユーザーによって、(1)スタジオモジュール128、(2)ホストコンピュータ通信モジュール116の方法を呼び出すC言語ソースコード、(3)スクリプトエンジン312で動作するスクリプト、(4)生成コンポーネント508を介したCOMコンプライアントアプリケーションの何れかによって開始できる。
ステップ2404から開始すると、ユーザーは、トレース(trace)すべき通信データパスを特定する。例えば、DATシステム100は、データがメッセージを介してまたはリモートファンクションコールを介して送信されることをトレースする。
【0156】
次に、ステップ2408では、DATシステム100は、示された通信パスのそれぞれを越えて伝送されるデータをモニタして格納する。本発明の一実施形態において、データは、永続的なテストデータオブジェクトに格納される。ステップ2412に進み、任意のスレッドが、それから、永続的なデータオブジェクトの任意のコンテンツを選択して読み取り、そしてテストのためにそのデータを使用することができる。続いてステップ2416に移り、DATシステム100のスレッドの一つが、永続的データオブジェクトの一つを使用し、選択された永続的データオブジェクトから通信データパスの一つを越えてデータを伝送する。
【0157】
図25は、スタジオモジュール128によって提供される代表的なユーザーインターフェイス2500を例示する。ユーザーインターフェイス2500は、通信データベース124に保持されているインターフェイスの全てをリストアップするインターフェイスウィンドウ2504を具備する。インターフェイスリストにおける各エントリーはユーザーによって選択可能である。ユーザーの選択に応答して、通信ウィンドウ2508はスクリーン上に表示される。通信ウィンドウ2508は、ユーザーがメッセージまたはリモートファンクションコールの所有権を登録することを可能にするレジスターアイコン2510を具備する。一実施形態において、もしメッセージが双方向メッセージであれば、通信ウィンドウは、コマンドウィンドウ2508と応答ウィンドウ2510に分割される。通信ウィンドウおよび応答ウィンドウは、一つまたはそれ以上のデータセットフィールド2512を具備する。データセットフィールドの数は、ユーザーによって構成可能である。データセットは、もっとも新しいペイロードの内容および以前に受信されたペイロードのユーザー構成可能(user configurable)な数を示す。
【0158】
データセットフィールド2512を用いて、ユーザーは、特定のコマンドメッセージのためのペイロードを構築し、そして応答メッセージのペイロードを設定することができる。更に、ユーザーは、通信データベース124におけるデータセットフィールド2512にある値を格納するため、“データセットの格納”を選択することができる。その後、ユーザーは、格納された値をロードするために、データセット“データセットのロード”を選択することができる。更に、ユーザーは、スタジオモジュール128に自動的に繰返させ、そしてユーザー構成可能なタイムインターバルで順にデータ値を伝送するために、クロックアイコン2518を選択してもよい。
【0159】
図26は、ユーザーがファンクションコールの一部として伝送されるパラメータを検査(view)し且つテスト(test)することを可能にする代表的ユーザーインターフェイス2600を例示する。レジスターアイコンを用いて、ユーザーは、ファンクションの所有権を登録することができる。ユーザーウィンドウ2608は、ユーザーがファンクションにパラメータ値を設定することを可能にする複数のパラメータフィールド2610を表示する。オーナーウィンドウ2610は、ファンクションに受け渡されたパラメータを表示する。ユーザーインターフェイス2600は、図25を参照して上述したように、データセットをセーブし且つロードすることを可能にする。
【0160】
図27は、組み込みコンピュータ通信モジュール112またはホストコンピュータ通信モジュール116と共に使用するためにソースコードのテンプレートを自動的に生成するプロセスを例示するフローチャートである。本発明の一実施形態において、図27のプロセスは、スタジオモジュール128によって実施される。本発明の他の実施形態において、図37のプロセスは、コードジェネレータのようなスタンドアローンツール(standalone tool)によって実施される。説明の便宜上、次の説明はコードジェネレータに言及する。しかしながら、このようなファンクションは、スタジオモジュール128または通信データベース124によって提供できることが認識されるべきである。本実施形態により、追加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。
【0161】
ステップ2704から開始すると、ユーザーは、通信インターフェイスを定義する一つまたはそれ以上のインターフェイス定義フィールドを確認する。例えば、図32のコードブロックは、インターフェイス定義ファイルの一部を例示する。
続いてステップ2708に移り、ユーザーは、選択されたインターフェイス定義ファイルにおける一つまたはそれ以上の通信インターフェイスを選択する。本発明の一実施形態において、コードジェネレータは、通信インターフェイスの選択のためのグラフィカルユーザーインターフェイスを提供する。
【0162】
次に、ステップ2716では、“スレッド”のコードテンプレートは、インターフェイス定義ファイルにおける選択されたメッセージのそれぞれを取り扱うために生成される。スレッドを生成する代表的プロセスは、図28を参照して後述される。代表的テンプレートは、図32のコードブロック3204に示される。
ステップ2720に移行し、スレッドのテンプレートは、インターフェイス定義ファイルにおける選択されたファンクションのそれぞれについて生成される。スレッドを生成する代表的プロセスは、図31を参照して後述される。
図28は、インターフェイス定義ファイルにおける確認されたメッセージのそれぞれについてスレッドを生成するプロセスを例示するフローチャートである。図28は、図27のステップ2716において発生するステップを更に詳細に例示する。本実施形態により、追加的ステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。
【0163】
ステップ2800から開始する前に、メッセージハンドリングルーチンは、ユーザーによって確認された全てのメッセージを取り扱うために作成される。メッセージハンドリングルーチンは、ループを含み、そしてこのループに続いて、スイッチステートメントを含む。例えば、コードブロック3204を参照されたい。ステップ2800から始めると、ループが加入され、そしてステップ2804,2808および2812が、確認されたメッセージのそれぞれについて実施される。続いてステップ2804に移り、コードジェネレータは、メッセージのそれぞれを登録するためのコードのラインを付け加える。コードブロック3204を参照されたい。本発明の一実施形態において、ソースコードは、組み込みコンピュータ通信モジュール112またはホストコンピュータ通信モジュール116によって提供されるレジストレーションルーチンを呼び出すためのコードを含む。レジストレーションルーチンを呼び出すためのコールは、生成されたスイッチステートメントの前に配置される。
【0164】
次にステップ2808では、コードジェネレータは、確認されたメッセージのそれぞれについてメッセージハンドリングコードを生成する。メッセージハンドリングコードを生成する代表的プロセスは、図29を参照して後述される。続いてステップ2812に移り、コードジェネレータは、メッセージを送信するためのルーチンを作成する。メッセージを送信するためのルーチンを作成する代表的プロセスは、図30を参照して後述される。
【0165】
図29は、メッセージハンドリングコードを生成するプロセスを例示するフローチャートである。本実施形態により、追加的なステップを付け加え、他が削除され、ステップの順序づけが再整理されてもよい。図29に示されるプロセスは、図27のステップ2708においてユーザーによって確認されたメッセージのそれぞれに関して実施される。
ステップ2904から始めると、コードジェネレータは、ケースステートメント(case statement)を生成する。ステップ2908に進み、コードジェネレータは、コードを付け加えることをユーザーに指示するためのコメントをユーザーに対して生成する。
ステップ2912に進み、コードジェネレータは、メッセージが“双方向”であるかどうかを決定する。もしメッセージが“双方向”であれば、プロセスはステップ2916に進む。もしそうでなければ、プロセスはステップ2920に進む。
【0166】
ステップ2916では、コードジェネレータは、送信応答ルーチンを呼び出すために、生成されたケースステートメントにコードを付け加える。例として、図32のコードブロック3204は、“送信メッセージ双方向応答”ルーチンへのコールを具備する。“送信メッセージ双方向応答”ルーチンのような、応答ルーチンのプロセスは、図30のステップ3016を参照して後述される。
本発明の一実施形態において、生成されたコードは、DATシステム100のAPI、例えば送信応答()を呼び出すであろう。このステップでは、コードジェネレータは、また、ユーザーの便宜、例えばポインタを付け且つセットアップするためのルーチンのため、他のAPIを生成してもよい。ステップ2920に移行し、コードジェネレータは、また、APIによって提供されるリリースルーチン(release routine)を呼び出すためのコードを生成してもよい。
【0167】
図30は、図27のステップ2708においてユーザーによって確認された通信インターフェイスを介してメッセージを送信するためのルーチンのテンプレートを生成するプロセスを例示するフローチャートである。図30は、図28のステップ2812において発生するステップを更に詳細に例示する。ステップ3008から始めると、コードジェネレータは、メッセージが一方向であるか双方向であるか、ブロードキャストであるかどうかを決定する。もしメッセージが一方向または双方向であれば、プロセスはステップ3010に進む。ステップ3010では、コードジェネレータは、送信コマンドを呼び出すためのコマンドを送信するファンクションを生成する。代表的な生成されたコードテンプレートは、図32のコードブロック3208に示される。続いて決定ステップ3012に移り、コードジェネレータは、通信が一方向であるか双方向であるかどうかを決定する。もしメッセージが一方向でなければ、即ち双方向であれば、プロセスはステップ3016に進む。ステップ3016では、コードジェネレータは、応答を送信するためのファンクションを生成する。生成されたコードは、応答を送信するためのAPIを呼び出す。
【0168】
決定ステップ3008を再び参照すると、コードジェネレータは、メッセージがブロードキャストメッセージであるかどうかを決定する。もしメッセージがブロードキャストであれば、プロセスはステップ3020に進む。ステップ3020では、コードジェネレータは、組み込みコンピュータ通信モジュール112およびホストコンピュータ通信モジュール116のAPIの一部であるブロードキャストルーチンを呼び出すためのコードを付け加える。ステップ3012(通信が“一方向”の場合),3020および3016から、プロセスはステップ3024に進む。ステップ3024では、コードジェネレータは、メッセージのペイロードにポインタがあるかどうかを決定する。もしポインタがあれば、プロセスはステップ3028に進む。ステップ3028では、コードジェネレータは、通信ライブラリーAPIの一部であるポインタセットアップコマンドを呼び出すためのコードを生成する。続いて、ステップ3032では、コードジェネレータは、APIアタッチポインタ(API attach pointer)を呼び出すためのコードを生成する。ステップ3032および3028の間に生成されたコマンドは、生成された送信応答コマンドの前に生成されたコードに挿入される。(ステップ3016)。
【0169】
図31は、リモートファンクションコールを介してプラットフォームを越えて通信するためにテンプレートコードを生成するプロセスを例示するフローチャートである。本発明の一実施形態において、インタープラットフォームファンクションコールは、組み込みコンピュータ通信モジュール112およびホストコンピュータ通信モジュール116によって提供されるメッセージングを介して同一ネームのリモートファンクションコールと通信するローカルファンクションを呼び出す。
【0170】
本実施形態により、追加的なステップが付け加えられ、他が削除され、そしてステップの順序づけが再整理されてもよい。ステップ3104から開始すると、ループは、ステップ3108,3112,および3116に関して実施される。このループにおいて、テンプレートコードは、プラットフォーム、即ち組み込みコンピュータ104かホストコンピュータ108のどちらかでの実施のために生成される。ここでのローカルプラットフォームは、呼び出されるべきルーチンを有しないコンピュータであると定義される。ステップ3108,3112,3116は、図27のステップ2708においてユーザーによって確認されるファンクションのそれぞれについて実施される。ステップ3108では、コードジェネレータは送信コマンドを生成する。続いて、ステップ3112では、生成されたコードジェネレータはリードコマンドを生成する。ステップ3116に進み、コードジェネレータは応答を返すためのコードを生成する。ステップ3108,3112,3116の結果生じる代表的コードブロックは図33のコードブロック3212に示される。
【0171】
次に、ステップ3120では、ループは、ステップ3124,3128,3132,3136,3140に関して実施される。このループにおいて、テンプレートコードは、リモートプラットフォーム上での実施のために生成される。続いてステップ3124に移り、コードジェネレータは、他のプラットフォーム上のスレッドによって要求されるローカルAPIを呼び出すコードを生成し、そして応答メッセージを送信する。ステップ3124,3218,31332,3136,3140の結果生じる代表的コードブロックはコードブロック3214に示される。
【0172】
次に、決定ステップ3132では、コードジェネレータは、ファンクションのパラメータに何かポインタがあるかどうかを決定する。もしファンクションのパラメータにポインタがなければ、プロセスは終了する。しかしながら、ポインタがあれば、プロセスはステップ3136に進み、そしてコードジェネレータは、ポインタをセットアップするためのAPIを呼び出す。ステップ3140に移行し、コードジェネレータは、ポインタを付けるためのAPIを呼び出すコードを生成する。そしてプロセスが終了する。
【0173】
DATシステム100は、スレッドが異なるプラットフォームに配置され、そして一層シームレスに互いに通信することを可能とする一つの仮想的な環境を提供する。DATシステム100は、データベース124に格納された、組み込みコンピュータ、ホストコンピュータおよび通信インターフェイスの装置特性に依存するデータを自動的に変換することにより二つのプラットフォーム間の通信相互接続性(communication interoperability)を提供する。DATシステム100は、組み込みコンピュータのソフトウェアアプリケーションに設計されたメッセージ基準およびリモートファンクションコールのインターフェイスに対する自動的かつシームレスなアクセスを提供する。DATシステム100は、インターフェイス情報を自動的に抽出し、そしてメッセージングおよびリモートファンクションコール情報を構築する。
【0174】
スタジオモジュール128を用いて、ユーザーは、次のような問題、即ち(1)メッセージを収容するためのデスクトップツールへの更新、(2)デスクトップツールの新しいファンクショナリティを支援するための組み込みソフトウェアへの更新、(3)何の目的のコンパイラーが使用されているか、(4)何のRTOSが使用されているか、そして(5)何のプラットフォーム、何のスレッドが使用されているか、という問題を検討することなく、組み込みアプリケーションのインターフェイスの制御および可視性(visibility)をなし遂げる。
【0175】
上述の詳細な説明は、種々の実施形態に適用して本発明の新規な特徴を示し、述べ、そして指摘したが、例示されたプロセスまたは装置の詳細および形式における、種々の省力、置換、および変更は、本発明の思想から始めることなく当業者によってなし得るものである。本発明の範囲は、上述の記述によるよりも、むしろ添付のクレームによって示される。クレームの均等の範囲および意味に含まれる全ての変形はその範囲に含まれる。
【図面の簡単な説明】
【0176】
【図1】組み込みコンピュータをテストするための開発およびテストシステムを例示するブロックダイアグラムである。
【図2】図1の開発およびテストシステムの一部である通信データベースの或るコンポーネントを例示するブロックダイアグラムである。
【図3】図1の開発およびテストシステムの他の実施形態を例示するブロックダイアグラムである。
【図4A】図3の組み込みコンピュータと通信するために使用される代表的なスクリプトのダイアグラムである。
【図4B】図3の組み込みコンピュータと通信するために使用される代表的なスクリプトのダイアグラムである。
【図5】図1の開発およびテストシステムの他の実施形態を例示するブロックダイアグラムである。
【図6】図1の通信データベースの代表的なコンテンツを例示するブロックダイアグラムである。
【図7】図5の生成コンポーネントの代表的な階層を例示するブロックダイアグラムである。
【図8】図1の開発およびテストシステムで使用するソースファイルを修正するプロセスを例示するフローチャートである。
【図9】図1の通信データベースを構築するプロセスを例示するフローチャートである。
【図10】図1のホストプラットフォーム通信モジュールを使用するプロセスを例示するフローチャートである。
【図11】通信をフォーマットするプロセスを例示するフローチャートである。
【図12A】異なる装置特性を有する二つのプラットフォーム間でポインタデータを伝送する場合のポインタを管理する代表的な方法を例示する図である。
【図12B】異なる装置特性を有する二つのプラットフォーム間でポインタデータを伝送する場合のポインタを管理する代表的な方法を例示する図である。
【図12C】異なる装置特性を有する二つのプラットフォーム間でポインタデータを伝送する場合のポインタを管理する代表的な方法を例示する図である。
【図12D】異なる装置特性を有する二つのプラットフォーム間でポインタデータを伝送する場合のポインタを管理する代表的な方法を例示する図である。
【図13】組み込みコンピュータ上で動作するスレッドと通信するためのスクリプティングファイルを使用するプロセスを例示するフローチャートである。
【図14】図3のメッセージングオートメーションコンポーネントをロードするプロセスを例示するフローチャートである。
【図15】図3の開発およびテストシステムを用いてスクリプトにおいて動作するスレッドを登録するプロセスを例示するフローチャートである。
【図16A】メッセージ通信をスクリプトから図3の開発およびテストシステムに送信するプロセスを例示するフローチャートである。
【図16B】ファンクションコールをスクリプトから図3の開発およびテストシステムに呼び出したファンクションコールを送信するプロセスを例示するフローチャートである。
【図17A】図3の開発およびテストシステムからスクリプトを介して通信をスクリプト受信するプロセスを例示するフローチャートである。
【図17B】図3の開発およびテストシステムからリモートファンクションコールを介して通信をスクリプト受信するプロセスを例示するフローチャートである。
【図18】図5の生成コンポーネントを利用するプロセスを例示するフローチャートである。
【図19】図5のCOMコンポーザを起動するプロセスを例示するフローチャートである。
【図20】図5の生成コンポーネントを構築するプロセスを例示するフローチャートである。
【図21】図1の生成コンポーネントのインターフェイスを生成するプロセスを例示するフローチャートである。
【図22】任意のCOMコンプライアント言語から図5の生成コンポーネントを用いるプロセスを例示するフローチャートである。
【図23】図1の通信データベースによって確認された通信インターフェイスの一つをテストするプロセスを例示するフローチャートである。
【図24】少なくとも二つのファンクションコール間で伝送されるモニタリング通信に基づき情報のデータセットを生成するプロセスを例示するフローチャートである。
【図25】メッセージをテストするための代表的なユーザーインターフェイスを説明する図である。
【図26】リモートファンクションコールのための代表的なユーザーインターフェイスを説明する図である。
【図27】図1の開発およびテストシステムで使用するテンプレートコードを生成するプロセスを例示するフローチャートである。
【図28】所定の通信インターフェイスによって定義されたメッセージをハンドリングするためのコードを生成するプロセスを例示するフローチャートである。
【図29】メッセージハンドリングコードを生成するプロセスを例示するフローチャートである。
【図30】メッセージを所定の通信インターフェイスに送信するためのコードを生成するプロセスを例示するフローチャートである。
【図31】ファンクションコールに応答してインタープラットフォームメッセージングをハンドリングするためのコードを生成するプロセスを例示するフローチャートである。
【図32】代表的な生成されたコードを例示するブロックダイアグラムである。
【図33】代表的な生成されたコードを例示するブロックダイアグラムである。
【符号の説明】
【0177】
104 組み込みコンピュータ
108 ホストコンピュータ
112 組み込みコンピュータ通信モジュール
114 スレッド
116 ホストコンピュータ通信モジュール
120 スレッド
124 通信データベース
128 スタジオモジュール
Claims (121)
- データを伝送するためのシステムであって、
ホストコンピュータと、
前記ホストコンピュータ上で動作する第1アプリケーションと、
組み込みコンピュータと、
前記組み込みコンピュータ上で動作する第2アプリケーションと、
前記第1アプリケーションおよび前記第2アプリケーションの複数のインターフェイスのうちの少なくとも1つのインターフェイス特性を確認するデータベースと、
前記組み込みコンピュータとの通信のためのインターフェイスを定義する通信モジュールとを具備し、
前記データベースは、ユーザーの要求に応答して自動的に生成されると共に、少なくとも部分的に、前記ユーザーによって提供されたインターフェイス記述ファイルに基づくものであり、
前記第1アプリケーションは前記通信モジュールを介して前記第2アプリケーションと通信し、
前記ホストコンピュータは、前記組み込みコンピュータのためのホストコンピュータ装置特性情報を格納し、前記ホスト装置特性情報は、エニュメレーションサイズ、適応的エニュメレーションインジケーター、ショートサイズ、ロングサイズ、フロートサイズ、ダブルサイズ、ダブルロングサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、バイトオーダリング、ブールサイズ、およびキャラクターサイズからなるグループから選択された情報を含み、
前記ホストコンピュータは、該ホストコンピュータのための組み込みコンピュータ装置特性情報を格納し、前記組み込みコンピュータ装置特性情報は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択された情報を含み、
前記第1アプリケーションに目標設定された前記第2アプリケーションからの通信の受信に応答して、前記通信モジュールは、前記第1アプリケーションへの通信の伝送に先だって通信を変更し、かつ前記変更は、少なくとも部分的に、前記ホストコンピュータ装置特性情報、前記組み込みコンピュータ装置特性情報、および前記インターフェイス特性に基づいているシステム。 - データを伝送するためのシステムであって、
ホストコンピュータと、
前記ホストコンピュータ上で動作する第1アプリケーションと、
組み込みコンピュータと、
前記組み込みコンピュータ上で動作する第2アプリケーションと、
前記第1アプリケーションおよび前記第2アプリケーションの複数の通信インターフェイスの特性を記述するインターフェイス情報とを具備し、
前記ホストコンピュータは、前記組み込みコンピュータのための装置特性情報を受信し、前記ホストコンピュータは、前記第1アプリケーションに目標設定された前記第2アプリケーションからの通信の受信に応答して、前記第1アプリケーションへの通信の伝送に先だって通信を変更し、前記変更は、少なくとも部分的に、前記装置特性情報および前記インターフェイス情報に基づいているシステム。 - 前記装置特性情報は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択された情報を含むことを特徴とする請求項2に記載されたシステム。
- 変更は、通信におけるデータの少なくとも1つのエレメントのバイトオーダーを反転することを含むことを特徴とする請求項2に記載されたシステム。
- データを伝送するためのシステムであって、
ホストコンピュータと、
前記ホストコンピュータ上で動作する第1アプリケーションと、
組み込みコンピュータと、
前記組み込みコンピュータ上で動作する第2アプリケーションと、
前記第1アプリケーションおよび前記第2アプリケーションの複数の通信インターフェイスの特性を記述するインターフェイス情報とを具備し、
前記ホストコンピュータは、前記組み込みコンピュータのための装置特性情報を受信し、前記ホストコンピュータは、前記第2アプリケーションに目標設定された前記第1アプリケーションからの通信の受信に応答して、前記第1アプリケーションへの通信の伝送に先だって通信を変更し、前記変更は、少なくとも部分的に、前記装置特性情報および前記インターフェイス特性に基づいているシステム。 - 前記装置特性情報は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択された情報を含むことを特徴とする請求項5に記載されたシステム。
- データを伝送するためのシステムであって、
ホストコンピュータと、
前記ホストコンピュータ上で動作する第1アプリケーションと、
組み込みコンピュータと、
前記組み込みコンピュータ上で動作する第2アプリケーションと、
前記第1アプリケーションおよび前記第2アプリケーションの複数の所定のインターフェイスの特性を記述するインターフェイス情報とを具備し、
前記組み込みコンピュータは、前記ホストコンピュータに、前記組み込みコンピュータのための装置特性情報を含むコネクションメッセージを伝送し、前記ホストコンピュータは、前記第1アプリケーションに目標設定された前記第2アプリケーションからの通信の受信に応答して、前記第1アプリケーションへの通信の伝送に先だって通信を変更し、前記変更は、少なくとも部分的に、前記装置特性情報および前記インターフェイス情報に基づいているシステム。 - 前記装置特性情報は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択された情報を含むことを特徴とする請求項7に記載されたシステム。
- データを伝送するためのシステムであって、
第1アプリケーションを実行するためのホストコンピュータと、
第2アプリケーションを実行するための組み込みコンピュータと、
装置特性情報とを具備し、
前記ホストコンピュータは、前記第1アプリケーションに目標設定された前記第2アプリケーションからの通信の受信に応答して、前記第1アプリケーションへの通信の伝送に先だって通信を変更し、前記変更は、少なくとも部分的に、前記装置特性情報に基づいているシステム。 - データの伝送方法であって、
データベースを自動的に生成するステップと、
組み込みコンピュータから通信を受信するステップと、
少なくとも前記インターフェイス情報と前記組み込みコンピュータの少なくとも1つの特性を記述する特性情報とに基づき通信をフォーマットするステップとを具備し、
前記データベースは、複数のインターフェイスを記述するインターフェイス情報を含む方法。 - 前記通信をフォーマットするステップは、通信における少なくとも1つのデータフィールドのバイトオーダーを反転するステップを具備することを特徴とする請求項10に記載された方法。
- 前記通信をフォーマットするステップは、通信におけるデータストラクチャーの多くのビットを変更するステップを具備することを特徴とする請求項10に記載された方法。
- 前記通信をフォーマットするステップは、ストラクチャーアライメント境界を変更するステップを具備することを特徴とする請求項10に記載された方法。
- 前記自動的にデータベースを生成するステップは、少なくとも1つのインターフェイス記述ファイルを構文解析するステップを具備することを特徴とする請求項10に記載された方法。
- データを伝送するためのシステムであって、
データベースを自動的に生成するための手段と、
組み込みコンピュータから少なくとも1つの通信を受信するための手段と、
前記受信された通信をフォーマットするための手段とを具備し、
前記データベースは、アプリケーションスレッドにより提供される通信インターフェイスの少なくとも1つの特性を記述するインターフェイス情報を具備し、
前記フォーマットするステップは、少なくとも部分的に、通信インターフェイスの特性と、前記組み込みコンピュータの少なくとも1つの特性を記述する装置特性情報とに基づいているシステム。 - 前記通信をフォーマットするための手段は、通信における少なくとも1つのエレメントのバイトオーダーを反転するための手段を具備することを特徴とする請求項15に記載されたシステム。
- 前記通信をフォーマットするための手段は、通信におけるデータストラクチャーの多くのビットを変更するための手段を具備することを特徴とする請求項15に記載されたシステム。
- 前記通信をフォーマットするための手段は、ストラクチャーアライメント境界を変更するための手段を具備することを特徴とする請求項15に記載されたシステム。
- 前記自動的にデータベースを生成するための手段は、少なくとも1つのインターフェイス記述ファイルを構文解析するための手段を具備することを特徴とする請求項15に記載されたシステム。
- データの伝送方法であって、
組み込みコンピュータから通信を受信するステップと、
前記受信された通信をフォーマットするステップとを具備し、
前記フォーマットするステップは、少なくとも部分的に、前記通信の少なくとも1つの特性を記述するインターフェイス情報と、前記組み込みコンピュータの少なくとも1つの特性を記述する情報とに基づいている方法。 - 前記通信をフォーマットするステップは、通信における少なくとも1つのデータフィールドのバイトオーダーを反転するステップを具備することを特徴とする請求項20に記載された方法。
- 前記通信をフォーマットするステップは、通信におけるデータストラクチャーの多くのビットを変更するステップを具備することを特徴とする請求項20に記載された方法。
- 前記通信フォーマットするステップは、ストラクチャーアライメント境界を変更するステップを具備することを特徴とする請求項20に記載された方法。
- データベースの構築方法であって、
アプリケーションスレッドの少なくとも1つの通信インターフェイスを定義するインターフェイス記述ファイルを読み込むステップと、
前記通信インターフェイスから通信情報を抽出するステップと、
前記抽出されたインターフェイス情報を通信データベースに格納するステップと、
前記通信データベースにおける組み込み装置の少なくとも1つの装置特性を格納するステップと、
前記通信データベースにおけるホストコンピュータの少なくとも1つの装置特性を格納するステップとを具備し、
前記通信インターフェイスから通信情報を抽出するステップは、
前記通信インターフェイスに関連するユニークな識別子を読み取るステップと、
前記通信インターフェイスを介して伝送される通信のサイズを決定するステップと、
前記通信におけるデータフィールドのそれぞれのネームを決定するステップと、
前記通信インターフェイスに関連したメモリを伝送する方法を決定するステップと、
前記通信インターフェイスに関連したポインタデータを確認するステップと、
前記通信インターフェイスの管理方法を決定するステップと、
メッセージに基づくものかファンクションコールかどうか、前記通信インターフェイスのタイプを決定するステップとを具備し、
前記組み込みコンピュータの装置特性は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択され、
前記ホストコンピュータの装置特性は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択される方法。 - データベースの構築方法であって、
少なくとも1つの通信インターフェイスを定義するインターフェイス記述ファイルを読み込むステップと、
前記通信インターフェイスから通信情報を抽出するステップと、
前記抽出された通信情報を通信データベースに格納するステップと、
ホストコンピュータの少なくとも1つの装置特性を前記通信データベースに格納するステップと
を具備する方法。 - 前記通信インターフェイスから通信情報を抽出するステップは、前記通信インターフェイスのネームを読み取るステップを具備することを特徴とする請求項25に記載された方法。
- 前記通信インターフェイスから通信情報を抽出するステップは、前記通信インターフェイスに関連したユニークな識別子を読み取るステップを具備することを特徴とする請求項25に記載された方法。
- 前記通信インターフェイスから通信情報を抽出するステップは、前記通信インターフェイスを介して伝送される通信のサイズを決定するステップを具備することを特徴とする請求項25に記載さいれた方法。
- 前記通信インターフェイスから通信情報を抽出するステップは、前記通信インターフェイスを介して伝送される通信におけるデータフィールドのそれぞれのネームを決定するステップを具備することを特徴とする請求項25に記載された方法。
- 前記組み込みコンピュータの装置特性は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択される特徴とする請求項25に記載された方法。
- 前記ホストコンピュータの装置特性は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択される特徴とする請求項25に記載された方法。
- データベースの構築方法であって、
アプリケーションスレッドの少なくとも1つの通信インターフェイスを定義するインターフェイス記述ファイルを読み込むための手段と、
前記通信インターフェイスから通信情報を抽出するための手段と、
前記抽出されたインターフェイス情報を通信データベースに格納するための手段と、
組み込み装置の少なくとも1つの装置特性を前記通信データベースに格納するための手段と、
ホストコンピュータの少なくとも1つの装置特性を前記通信データベースに格納するステップとを具備し、
前記通信インターフェイスから通信情報を抽出するための手段は、
前記通信に関連するユニークな識別子を読み取るための手段と、
前記通信インターフェイスを介して伝送される通信のサイズを決定するための手段と、
前記通信におけるデータフィールドのそれぞれのネームを決定するための手段と、
を具備し、
前記組み込みコンピュータの装置特性は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択され、
前記ホストコンピュータの装置特性は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択されるシステム。 - データベースを構築するためのシステムであって、
少なくとも1つの通信インターフェイスを定義するインターフェイス記述ファイルを読み込むための手段と、
前記通信インターフェイスから通信情報を抽出するための手段と、
前記抽出された通信情報を通信データベースに格納するための手段と、
組み込み装置の少なくとも1つの装置特性を前記通信データベースに格納するための手段と、
ホストコンピュータの少なくとも1つの装置特性を前記通信データベースに格納するための手段と
を具備するシステム。 - 前記通信インターフェイスから通信情報を抽出するための手段は、前記通信のネームを読み取るための手段を具備することを特徴とする請求項33に記載されたシステム。
- 前記通信インターフェイスから通信情報を抽出するための手段は、前記通信に関連するユニークな識別子を読み取るための手段を具備することを特徴とする請求項33に記載されたシステム。
- 前記通信インターフェイスから通信情報を抽出するための手段は、前記通信のサイズを決定するための手段を具備することを特徴とする請求項33に記載されたシステム。
- 前記通信インターフェイスから通信情報を抽出するための手段は、前記通信における各データフィールドのネームを決定するための手段を具備することを特徴とする請求項33に記載されたシステム。
- 前記組み込みコンピュータの装置特性は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択されることを特徴とする請求項33に記載されたシステム。
- 前記ホストコンピュータの装置特性は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択されることを特徴とする請求項33に記載されたシステム。
- アプリケーションスレッドの通信インターフェイスの少なくとも1つの特性を記述するインターフェイス情報と、
ホストコンピュータの少なくとも1つの特性を記述するホストコンピュータ情報と、
組み込みコンピュータの少なくとも1つの特性を記述する組み込みコンピュータ装置情報とを具備し、
前記ホストコンピュータ情報は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択され、
前記組み込みコンピュータ装置情報は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択されるデータベース。 - 前記インターフェイス情報、前記ホストコンピュータ装置情報、および前記組み込みコンピュータ装置情報をアクセスするためのインターフェイスを付加的に具備することを特徴とする請求項40に記載されたデータベース。
- インターフェイス記述ファイルで定義されたアプリケーションスレッドの通信インターフェイスの少なくとも1つの特性を記述するインターフェイス情報と、
少なくとも部分的に前記インターフェイス情報を用いて前記通信インターフェイスを検査すると共にテストすることを提供するための所定のインターフェイスとを具備するデータベース。 - データベースを備えたシステムであって、
該データベースは、
アプリケーションスレッドの通信インターフェイスの少なくとも1つの特性を記述するインターフェイス情報と、
ホストコンピュータの少なくとも1つの特性を記述するホストコンピュータ情報と、
組み込みコンピュータの少なくとも1つの特性を記述する組み込みコンピュータ装置情報と、
前記通信インターフェイスをテストするためのユーザーインターフェイスを提供するモジュールとを具備し、
前記ホストコンピュータ情報は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択され、
前記組み込みコンピュータ装置情報は、エニュメレーションサイズ、ポインタサイズ、ストラクチャーアライメント境界、インテジャーサイズ、およびバイトオーダリングからなるグループから選択されるシステム。 - 前記ユーザーインターフェイスは、前記通信インターフェイスを介してユーザーがデータを送信することを可能とするインターフェイスを具備することを特徴とする請求項43に記載されたシステム。
- 前記ユーザーインターフェイスは、前記通信インターフェイスを介して受信されたデータをユーザーが検査することを可能とするインターフェイスを具備することを特徴とする請求項43に記載されたシステム。
- 前記ユーザーインターフェイスは、前記データベースに格納された通信インターフェイスの全てをユーザーが検査することを可能とするインターフェイスを具備することを特徴とする請求項43に記載されたシステム。
- 前記ユーザーインターフェイスは、前記通信インターフェイスの通信フォーマットをユーザーが検査することを可能とするインターフェイスを具備することを特徴とする請求項43に記載されたシステム。
- 前記ユーザーインターフェイスは、前記通信インターフェイスに関連する識別子をユーザーが検査することを可能とするインターフェイスを具備することを特徴とする請求項43に記載されたシステム。
- 前記ユーザーインターフェイスは、前記通信インターフェイスをシミュレートするためのインターフェイスを具備することを特徴とする請求項43に記載されたシステム。
- 前記ユーザーインターフェイスは、データを前記通信インターフェイスに関連づけるためのインターフェイスを具備することを特徴とする請求項43に記載されたシステム。
- 前記ユーザーインターフェイスは、トレース情報をファイルに記録するためのインターフェイスを具備することを特徴とする請求項43に記載されたシステム。
- 前記ユーザーインターフェイスは、選択された2つのインターフェイスが呼び出される時間上の差異を測定するための手段を具備することを特徴とする請求項43に記載されたシステム。
- 前記ユーザーインターフェイスは、スクリプトと通信するためのインターフェイスを具備することを特徴とする請求項43に記載されたシステム。
- 複数のコンポーネントによってアクセス可能な通信インターフェイスを提供するためのシステムであって、
スクリプティングプログラムと、
COMコンプライアントオブジェクトと、
前記COMコンプライアントオブジェクトと通信するために前記スクリプティングプログラムにアプリケーションプログラミングインターフェイスを提供するように構成された少なくとも1つの通信モジュールとを具備するシステム。 - ホストコンピュータと組み込みコンピュータとの間の通信を提供するためのシステムであって、
それぞれが複数のデータフィールドを有する各通信インターフェイスを提供する複数のスレッドを実行する組み込みコンピュータと、
スクリプト命令を実行するためのスクリプトエンジンと、
前記通信インターフェイスのそれぞれを確認する通信データベースと、
前記通信インターフェイスをアクセスするためのスクリプト命令にアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備し、
前記通信データベースは、少なくとも部分的に、
前記通信インターフェイスを定義するインターフェイス記述ファイルと、
前記組み込み装置の装置特性と、
前記スクリプトエンジンを実行しているプラットフォームの装置特性と
からなる情報から自動的に生成され、
前記通信モジュールは、前記通信データベースからの情報に基づき自動的に生成され、
前記スクリプト命令は、前記通信データベースにおいて前記通信インターフェイスのうちの少なくとも1つを確認すると共に、前記アプリケーションプログラミングインターフェイスを介して前記確認された通信インターフェイスにおけるフィールドに関するファンクションを呼び出し、前記ファンクションは、前記データフィールドの一つにデータを格納すること、前記データフィールドの一つからデータを読み取ること、およびデータフィールドをテストすることからなるグループから選択されるシステム。 - スレッドとの通信を提供するシステムであって、
それぞれが通信インターフェイスを提供する複数のスレッドと、
前記通信インターフェイスのそれぞれを確認する通信データベースと、
前記通信インターフェイスをアクセスするためのスクリプト命令にアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備し、
前記通信モジュールは、少なくとも部分的に、前記通信データベースからの情報に基づき自動的に生成され、
前記スクリプト命令は、前記アプリケーションプログラミングインターフェイスを介して前記通信データベースにおける前記通信インターフェイスのうちの1つを用いてスレッドと通信するシステム。 - スレッドとの通信を提供するためのシステムであって、
それぞれが通信インターフェイスを提供する複数のスレッドと、
前記通信インターフェイスのそれぞれを定義するインターフェイス記述ファイルと、
前記通信インターフェイスをアクセスするためのスクリプト命令にアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備し、
前記通信モジュールは、少なくとも部分的に、前記インターフェイス記述ファイルからの情報に基づき自動的に生成され、
前記スクリプト命令は、前記アプリケーションプログラミングインターフェイスを介して前記通信インターフェイスのうちの少なくとも1つを用いてスレッドと通信するシステム。 - スレッドとの通信を提供するためのシステムであって、
それぞれが複数のデータフィールドを有する通信インターフェイスをそれぞれ提供する複数のスレッドと、
前記通信インターフェイスのそれぞれを確認する通信データベースと、
前記通信インターフェイスをアクセスするためのスクリプト命令にアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備し、
前記通信モジュールは、少なくとも部分的に、前記通信データベースからの情報に基づき自動的に生成され、
前記スクリプト命令は、前記通信データベースにおける前記通信インターフェイスのうちの少なくとも1つを確認すると共に、前記アプリケーションプログラミングインターフェイスを介して前記確認された通信インターフェイスにおける少なくとも1つのフィールドに関するファンクションを呼び出すシステム。 - 前記データベースは、少なくとも部分的に、前記通信インターフェイスを定義する少なくとも1つのインターフェイス記述ファイルから読み取られた情報から生成されることを特徴とする請求項58に記載されたシステム。
- 前記ファンクションは、前記データフィールドの一つにデータを格納すること、前記エレメントの一つからデータを読み取ること、およびデータフィールドをテストすることからなるグループから選択されることを特徴とする請求項61に記載されたシステム。
- ホストコンピュータと組み込みコンピュータとの間の通信を提供するためのシステムであって、
それぞれが複数のデータフィールドを有する通信インターフェイスを提供する複数のスレッドを実行する組み込みコンピュータと、
前記通信インターフェイスのそれぞれを確認する通信データベースと、
前記通信インターフェイスをアクセスするためのスクリプト命令にアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備し、
前記通信モジュールは、前記通信データベースに保持された情報に部分的に基づき自動的に生成され、
前記スクリプト命令は、前記通信データベースにおける前記通信インターフェイスの少なくとも1つを確認すると共に、前記アプリケーションプログラミングインターフェイスを介して前記確認された通信インターフェイスにおける少なくとも1つのフィールドに関するファンクションを呼び出すシステム。 - 前記ファンクションは、フィールドを設定すること、フィールドを読み取ること、そしてフィールドをテストすることからなるグループから選択されることを特徴とする請求項61に記載されたシステム。
- 通信にスレッドを提供するためのシステムであって、
通信インターフェイスを介して通信する複数のスレッドと、
前記通信インターフェイスをアクセスするためのスクリプト命令にアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備し、
前記スクリプト命令が、前記アプリケーションプログラミングインターフェイスを介してスレッドと通信するシステム。 - アクセスすることは、前記通信インターフェイスを介してペイロードを伝送することを含む請求項63に記載されたシステム。
- 通信にスレッドを提供する方法であって、
通信オブジェクトに対するレファレンスを読み込むステップと、
前記アプリケーションプログラミングインターフェイスを介して少なくとも一つのデータフィールドにデータを格納するステップと、
アプリケーションプログラミングインターフェイスおよび前記通信インターフェイスを介して前記スレッドに前記格納されたデータを伝送するステップとを具備し、
前記通信オブジェクトが、組み込みコンピュータ上で動作するスレッドによって提供される通信インターフェイスをアクセスするためのスクリプトプログラミングにアプリケーションプログラミングインターフェイスを提供する方法。 - 通信にスレッドを提供する方法であって、
通信オブジェクトに対するレファレンスを読み込むステップと、
通信オブジェクトのリード方法を呼び出し、これにより、組み込みコンピュータ上で動作するスレッドによって前記通信フェイスを介して提供される格納データを受け取るステップとを具備し、
前記通信オブジェクトが、通信インターフェイスをアクセスするためのスクリプティングプログラムにリード方法を提供する方法。 - 通信にスレッドを提供する方法であって、
インターフェイスディスクリプションファイルで定義された通信インターフェイスの少なくとも一つの通信特性を記述する通信データベースを生成するステップと、
通信オブジェクトに対するレファレンスを読み込むステップと、
前記アプリケーションプログラミングインターフェイスの使用を通じて前記通信における少なくとも一つのデータフィールドにデータを格納するステップとを具備し、
前記通信オブジェクトが、組み込みコンピュータ上で動作するスレッドによって提供される通信インターフェイスをアクセスするためのスクリプティングプログラムにアプリケーションプログラミングインターフェイスを提供する方法。 - 通信にスレッドを提供する方法であって、
通信オブジェクトに対するレファレンスを読み込むステップと、
前記アプリケーションプログラミングインターフェイスの使用を通じて前記通信における少なくとも一つのデータフィールドにデータを格納するステップとを具備し、
前記通信オブジェクトが、組み込みコンピュータ上で動作するスレッドによって提供される通信インターフェイスをアクセスするためのスクリプティングプログラムにアプリケーションプログラミングインターフェイスを提供する方法。 - 通信にアクセスを提供する方法であって、
組み込みコンピュータ上で動作するスレッドと通信するための少なくとも一つのファンクションからなる通信オブジェクトを提供するステップと、
前記スクリプティングプログラムを介して前記通信オブジェクトをアクセスするステップとを具備し、
前記ファンクションがスクリプティングプログラムから呼び出される方法。 - 通信にアクセスを提供する方法であって、
組み込みコンピュータ上で動作するスレッドと通信するための少なくとも一つのファンクションからなる通信オブジェクトと、
スクリプティングプログラムを介して前記通信オブジェクトをアクセスするための手段とを具備し、
前記ファンクションが前記スクリプティングプログラムから呼び出される方法。 - 実行可能な通信オブジェクトであって、
スクリプティングプログラムから通信をアクセスするための複数のインターフェイスを具備し、
前記インターフェイスの少なくとも一つがグループから選択され、
該グループが、
前記通信をブロードキャストするためのブロードキャスティングインターフェイスと、
前記通信を送信するための送信インターフェイスと、
前記通信を読み出すためのインターフェイスと、
通信データベースから永続的なデータを読み込むためのインターフェイスと、
使用可能なように前記通信を記録するためのレジストレーションインターフェイスと、
通信を認証するためのサブスクリプションインターフェイスとを具備し、
前記複数のインターフェイスのそれぞれは、少なくとも部分的に、通信インターフェイスを記述するインターフェイスディスクリプションファイルに格納された情報に基づき生成される通信オブジェクト。 - 実行可能な通信オブジェクトであって、
テストデータを格納するデータベースと、
スクリプティングプログラムからの通信インターフェイスを介して通信するためのアプリケーションプログラミングインターフェイスとを具備し、
前記通信インターフェイスが呼び出されたときに、データベースからの前記テストデータが前記通信インターフェイスを介して伝送される通信オブジェクト。 - 複数のコンポーネントによってアクセス可能な通信インターフェイスを提供するためのシステムであって、
第1プログラミング言語でのスクリプティングプログラムと、
第2プログラミング言語でのスクリプティングプログラムと、
前記第2スクリプティングプログラムと通信するために前記第1スクリプティングプログラムにアプリケーションプログラミングインターフェイスを提供するように構成された少なくとも一つの通信モジュールとを具備するシステム。 - ホストコンピュータと組み込みコンピュータとの間の通信を提供するためのシステムであって、
複数の通信インターフェイスを提供する複数のスレッドを実行し、各通信インターフェイスが複数のデータフィールドを有する組み込みコンピュータと、
前記通信インターフェイスのそれぞれを確認する通信データベースと、
前記通信インターフェイスをアクセスためにCOMコンプライアントアプリケーションにアプリケーションプログラミングインターフェイスを提供するための通信モジュールとを具備し、
前記通信データベースは、少なくとも部分的に、前記通信インターフェイスを定義するインターフェイス記述ファイル、前記組み込みコンピュータの装置特性、ホストプラットフォームの装置特性から構成される情報から自動的に生成され、
前記通信モジュールが、前記通信データベースからの情報に基づき自動的に生成され、
前記COMコンプライアントアプリケーションにおけるオブジェクトが、前記通信データベースにおける前記通信インターフェイスの少なくとも一つを確認すると共に、前記アプリケーションプログラミングインターフェイスを介して前記確認された通信インターフェイスにおける少なくとも一つのデータフィールドに関するファンクションを呼び出し、該ファンクションは、前記データフィールドの一つにデータを格納すること、前記データフィールドの一つからデータを読み出すこと、およびデータフィールドをテストすることからなるグループから選択されるシステム。 - 前記通信インターフェイスが、メッセージ基準のインターフェイスかまたはファンクションコール基準のインターフェイスかのどちらかであることを特徴とする請求項74に記載されたシステム。
- ホストコンピュータと組み込みコンピュータとの間の通信を提供するためのシステムであって、
それぞれが通信インターフェイスを提供する複数のスレッドを実行する組み込みコンピュータと、
前記スレッドのそれぞれの前記通信インターフェイスを確認する通信データベースと、
前記通信インターフェイスと通信するためにCOMコンプライアントアプリケーションに複数のファンクションを提供するように構成されたCOMオブジェクトとを具備し、
前記COMオブジェクトは、少なくとも部分的に、メッセージングデータベースにおける通信インターフェイスに基づき自動的に生成されるシステム。 - 前記メッセージングデータベースは、少なくとも部分的に、インターフェイス記述ファイルからの情報から生成されることを特徴とする請求項76に記載されたシステム。
- ホストコンピュータと組み込みコンピュータとの間の通信を提供するためのシステムであって、
それぞれが通信インターフェイスを提供する複数のスレッドと、
前記通信インターフェイスのそれぞれを確認する通信データベースと、
前記通信インターフェイスのそれぞれと通信するための複数のファンクションを提供するCOMオブジェクトとを具備し、
前記COMオブジェクトは、少なくとも部分的に、前記通信データベースにおける通信インターフェイスに基づき自動的に生成されるシステム。 - 前記通信データベースは、少なくとも部分的に、インターフェイス記述ファイルからの情報から生成されることを特徴とする請求項78に記載されたシステム。
- 通信にスレッドを提供するための方法であって、
通信オブジェクトに対するレファレンスを読み込むステップと、
通信インターフェイスにおける少なくとも一つのデータフィールドにデータを格納するステップとを具備し、
前記通信オブジェクトは、組み込みコンピュータ上で動作するスレッドに所有される前記通信インターフェイスをアクセスするためにCOMコンプライアントアプリケーションにインターフェイスを提供する方法。 - 前記通信オブジェクトの第2方法を呼び出すステップを更に具備し、それによって前記組み込みコンピュータ上で動作するスレッドに前記格納されたデータを伝送することを特徴とする請求項65に記載された方法。
- 通信にスレッドを提供する方法であって、
通信オブジェクトに対するレファレンスを読み込むステップと、
前記通信オブジェクトのリード方法を呼び出し、それによってスレッドにより提供される通信を、前記インターフを介して受信するステップとを具備し、
前記通信オブジェクトは、通信をアクセスするためにCOMコンプライアントアプリケーションにインターフェイスを提供する方法。 - 前記通信はメッセージであることを特徴とする請求項82に記載された方法。
- 通信にスレッドを提供する方法であって、
インターフェイス記述ファイルで定義された通信インターフェイスの少なくとも一つの通信特性を記述する通信データベースを生成するステップと、
通信インターフェイスのそれぞれに識別子を提供することをデータベースオブジェクトに要求するステップと、
前記通信インターフェイスのうちの選択されたものをアクセスすることを前記データベースオブジェクトに要求するステップと、
通信オブジェクトに対するレファレンスを読み込むステップと、
前記通信における少なくとも一つのデータフィールドにデータを格納するステップとを具備し、
前記通信オブジェクトは、組み込みコンピュータ上で動作するスレッドに所有される通信をアクセスするためにCOMコンプライアントアプリケーションにインターフェイスを提供する方法。 - 通信にスレッドを提供する方法であって、
通信オブジェクトに対するレファレンスを読み込むステップと、
前記通信における少なくとも一つのデータフィールドにデータを格納するステップとを具備し、
前記通信オブジェクトは、組み込みコンピュータ上で動作するスレッドによって管理される通信インターフェイスをアクセスするためにCOMコンプライアントアプリケーションにインターフェイスを提供する方法。 - 通信に対するアクセスを提供する方法であって、
COMコンプライアントアプリケーションを介して前記通信インターフェイスをアクセスするための少なくとも一つのファンクションから構成される通信オブジェクトを提供するステップと、
前記COMコンプライアントアプリケーションを介して前記通信インターフェイスをアクセスするステップとを具備する方法。 - 前記通信インターフェイスは、組み込みコンピュータ上で動作する組み込みスレッドによって所有され、前記COMコンプライアントアプリケーションを介して前記通信インターフェイスをアクセスすることは、遠隔で実行されるスレッドからデータの少なくとも一つのエレメントを組み込みスレッドに伝送することを含むことを特徴とする請求項86に記載された方法。
- 通信に対するアクセスを提供するためのシステムであって、
COMコンプライアントアプリケーションから通信インターフェイスをアクセスするための少なくとも一つのファンクションから構成される通信オブジェクトと、
前記COMコンプライアントアプリケーションを介して前記通信インターフェイスをアクセスするための手段とを具備するシステム。 - 前記通信インターフェイスは、組み込みコンピュータ上で動作する組み込みスレッドによって所有され、前記COMコンプライアントアプリケーションを介して前記通信インターフェイスをアクセスするための手段は、ホストコンピュータ上で動作するスレッドからデータの少なくとも一つのエレメントを前記組み込みスレッドに伝送するための手段を含むことを特徴とする請求項70に記載されたシステム。
- 実行可能な通信オブジェクトであって、
COMコンプライアントアプリケーションから通信インターフェイスをアクセスするための少なくとも一つのアプリケーションプログラミングインターフェイスを具備し、
前記アプリケーションプログラミングインターフェイスは、
前記通信をブロードキャストするためのブロードキャスティングインターフェイスと、
前記通信を送信するためのインターフェイスと、
前記通信を記録するためのレジストレーションインターフェイスと、
前記通信を認証するサブスクリプションインターフェイスとから構成されるグループから選択され、
前記複数のインターフェイスのそれぞれは、少なくとも部分的に、通信インターフェイスを記述するインターフェイス記述ファイルに格納された情報に基づき自動的に生成される通信オブジェクト。 - 通信にスレッドを提供するシステムであって、
インターフェイス記述ファイルにおいて定義された通信インターフェイスの少なくとも一つの通信特性を記述する通信データベースを生成するための手段と、
前記通信インターフェイスのそれぞれに対して識別子を提供するためにデータベースオブジェクトを要求するための手段と、
前記通信インターフェイスのうちの選択されたものをアクセスするために前記データベースを要求するための手段と、
通信オブジェクトにレファレンスを読み込むための手段と、
前記通信における少なくとも一つのデータフィールドにデータを格納するための手段とを具備し、
前記通信オブジェクトは、組み込みコンピュータ上で動作するスレッドによって所有される通信をアクセスするためにCOMコンプライアントアプリケーションにインターフェイスを提供するシステム。 - 通信にスレッドを提供するシステムであって、
通信に対するレファレンスを読み込むための手段と、
前記通信において少なくとも一つのデータフィールドにデータを格納するための手段とを具備し、
前記通信オブジェクトは、組み込みコンピュータ上で動作するスレッドによって所有される通信インターフェイスをアクセスするためにCOMコンプライアントアプリケーションにインターフェイスを提供するシステム。 - 前記通信インターフェイスは、リモートファンクションコールであることを特徴とする請求項93に記載されたシステム。
- 前記通信インターフェイスは、メッセージであることを特徴とする請求項93に記載されたシステム。
- 通信に対するアクセスを提供するためのシステムであって、
COMから通信インターフェイスをアクセスするための少なくとも一つのファンクションから構成された通信オブジェクトを提供するための手段と、
前記COMコンプライアントアプリケーションを介して前記通信インターフェイスをアクセスするための手段とを具備するシステム。 - 複数のコンポーネントによってアクセス可能な通信インターフェイスを提供するためのシステムであって、
COMコンプライアントオブジェクトと、
組み込みコンピュータ上で動作する少なくとも一つのスレッドと、
前記スレッドと通信するために前記COMコンプライアントオブジェクトにアプリケーションプログラミングインターフェイスを提供するように構成された少なくとも一つの通信モジュールとを具備するシステム。 - 複数のコンポーネントによってアクセス可能な通信インターフェイスを提供するためのシステムであって、
スクリプティングプログラムと、
前記スクリプティングプログラムと通信するためにCOMコンプライアントオブジェクトにアプリケーションプログラミングインターフェイスを提供するように構成された少なくとも一つの通信モジュールとを具備するシステム。 - 複数のコンポーネントによってアクセス可能な通信インターフェイスを提供するためのシステムであって、
スクリプティングプログラムと、
前記スクリプティングプログラムと通信するためにCOMコンプライアントオブジェクトにアプリケーションプログラミングインターフェイスを提供するように構成された少なくとも一つの通信モジュールとを具備するシステム。 - 組み込みコンピュータ上で動作するスレッドをテストするためのシステムであって、
ホストコンピュータと、
前記ホストコンピュータ上で動作する第1スレッドと、
スレッドを実行する組み込みコンピュータとを具備し、
前記組み込みコンピュータは、前記スレッドに送信される複数の通信をモニタすると共に前記モニタされた通信から前記ホストコンピュータにデータを伝送し、前記ホストコンピュータは、複数のデータセットに前記モニタされた通信からのデータを格納するシステム。 - スレッドをテストするための方法であって、
組み込みコンピュータ上で動作するスレッドに送信される複数の通信をモニタするステップと、
ホストコンピュータに前記モニタされた通信を伝送するステップと、
前記モニタされた通信を複数のデータセットに格納するステップと、
少なくとも一つの前記データセットを前記モニタされたスレッドに伝送するステップとを具備する方法。 - スレッドをテストするためのシステムであって、
組み込みコンピュータ上で動作するスレッドに送信される複数の通信をモニタするための手段と、
ホストコンピュータに前記モニタされた通信を伝送するための手段と、
複数のデータセットに前記モニタされた通信を格納するための手段と、
前記モニタされたスレッドに前記データセットを伝送するための手段とを具備するシステム。 - スレッドをテストするための方法であって、
第1スレッドから第2スレッドへの複数の通信をモニタするステップと、
データセットに前記通信のそれぞれを格納するステップと、
前記第1スレッドに前記格納されたデータエレメントのそれぞれを伝送するステップとを具備し、
前記通信は、複数のデータエレメントから構成される方法。 - 第1スレッドおよび第2スレッドは、組み込みコンピュータ上でそれぞれ実行されることを特徴とする請求項102に記載された方法。
- スレッドをテストするためのシステムであって、
第1スレッドから第2スレッドへの複数の通信をモニタするための手段と、
データセットに前記データエレメントのそれぞれを格納するための手段と、
前記第1スレッドに前記格納されたデータエレメントの少なくとも一つを伝送するための手段とを具備し、
前記通信は、複数のデータエレメントから構成されるシステム。 - アプリケーションプログラミングインターフェイスを呼び出し、それによって、構築されたデータを通信データベースに格納するステップと、
前記アプリケーションプログラミングインターフェイスを呼び出し、それによって、所定の通信インターフェイスを介して前記格納された構築データを伝送するステップとを具備する方法。 - 前記メッセージの所有権を登録するために前記アプリケーションプログラミングインターフェイスを呼び出すステップを更に具備することを特徴とする請求項105に記載された方法。
- 構築されたデータの他のアイテムにデータベースにおけるインデックスを自動的にインクリメントするステップを更に具備することを特徴とする請求項105に記載された方法。
- 前記アプリケーションプログラミングインターフェイスを呼び出し、それにより、構築されたデータの第2アイテムに前記データベースのインデックスを自動的にインクリメントするステップと、
構築されたデータの第2アイテムを伝送するステップとを更に具備することを特徴とする請求項105に記載された方法。 - 前記通信データベースにおいて構築されたデータの特定のアイテムを参照するために前記アプリケーションプログラミングインターフェイスを呼び出すステップを更に具備することを特徴とする請求項105に記載された方法。
- 前記アプリケーションプログラミングインターフェイスは、スクリプティングプログラムによって呼び出されることを特徴とする請求項105に記載された方法。
- 通信データベースに構築されたデータを格納するためにアプリケーションプログラミングインターフェイスを呼び出すための手段と、
所定の通信インターフェイスを介して前記格納された構築データを伝送するために前記アプリケーションプログラミングインターフェイスを呼び出すための手段とを具備するシステム。 - 前記メッセージを登録するために前記アプリケーションプログラミングインターフェイスを呼び出すための手段を更に具備することを特徴とする請求項111に記載されたシステム。
- 構築されたデータの他のアイテムにデータベースにおけるインデックスを自動的にインクリメントするステップを更に具備することを特徴とする請求項111に記載されたシステム。
- 構築されたデータの次のアイテムに前記データベースにおけるインデックスを自動的にインクリメントするために前記アプリケーションプログラミングインターフェイスを呼び出すための手段と、
構築されたデータの第2アイテムを伝送するための手段とを具備するシステム。 - コードを生成する方法であって、
インターフェイス定義ファイルをリードするステップと、
少なくとも一つの通信インターフェイスを確認するステップと、
前記通信インターフェイスを呼び出すためのコードを自動的に生成するステップとを具備し、
前記通信インターフェイスは、少なくとも、該通信インターフェイスを介して受け渡されるポインタを定義し、
前記生成されたコードは、前記ポインタの少なくとも一つの属性を定義するルーチンを呼び出すためのコードを含む方法。 - コードを生成するためのシステムであって、
インターフェイス定義ファイルをリードするための手段と、
少なくとも一つの通信インターフェイスを確認するための手段と
前記通信インターフェイスを呼び出すためのコードを自動的に生成するための手段とを具備し、
前記通信インターフェイスは、少なくとも、該通信インターフェイスを介して受け渡されるポインタを定義し、
前記生成されたコードは、前記ポインタの少なくとも一つの属性を定義するルーチンを呼び出すためのコードを含むシステム。 - コードを生成する方法であって、
インターフェイス定義ファイルをリードするステップと、
少なくとも一つの通信インターフェイスを確認するステップと、
前記通信インターフェイスを呼び出すためのコードを自動的に生成するステップとを具備する方法。 - コードを生成する方法であって、
インターフェイス定義ファイルをリードするステップと、
前記インターフェイス定義ファイルにおける少なくとも一つのリモートファンクションコールインターフェイスを確認するステップと、
第1プラットフォーム上での実行のための第1コードを自動的に生成するステップと、
第2プラットフォーム上での実行のための第2コードを自動的に生成するステップとを具備し、
第1プログラムが第1コードを実行するステップは、第2プログラムが第2コードを実行するステップとメッセージングインターフェイスを介して通信し、
前記生成された第2コードは、前記リモートファンクションコールインターフェイスを介してルーチンを呼び出す方法。 - 前記第1の生成されたコードは、ファンクションと同一のネームを有するファンクションを含むことを特徴とする請求項118に記載された方法。
- コードを生成するためのシステムであって、
インターフェイス定義ファイルをリードするための手段と、
前記インターフェイス定義ファイルにおける少なくとも一つのリモートファンクションコールインターフェイスを確認するための手段と、
第1プラットフォーム上での実行のための第1コードを自動的に生成するための手段と、
第2プラットフォーム上での実行のための第2コードを自動的に生成するための手段とを具備し、
第1プログラムが第1コードを実行することは、第2プログラムが第2コードを実行することとメッセージングインターフェイスを介して通信し、
前記生成された第2コードは、前記リモートファンクションコールインターフェイスを介してルーチンを呼び出すシステム。 - 前記第1の生成されたコードは、ファンクションと同一のネームを有するファンクションを含むことを特徴とする請求項120に記載されたシステム。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US27821201P | 2001-03-23 | 2001-03-23 | |
US29955501P | 2001-06-19 | 2001-06-19 | |
US36343602P | 2002-03-11 | 2002-03-11 | |
PCT/US2002/008810 WO2002077813A2 (en) | 2001-03-23 | 2002-03-22 | Development and testing system and method |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008130165A Division JP2008251032A (ja) | 2001-03-23 | 2008-05-16 | 組み込みコンピュータと通信するためのプログラムをスクリプティング(Scripting)するためのインターフェイスを提供するシステムおよび方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2004532456A true JP2004532456A (ja) | 2004-10-21 |
Family
ID=27402975
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2002575799A Pending JP2004532456A (ja) | 2001-03-23 | 2002-03-22 | 開発およびテストシステム並びに方法 |
JP2008130165A Pending JP2008251032A (ja) | 2001-03-23 | 2008-05-16 | 組み込みコンピュータと通信するためのプログラムをスクリプティング(Scripting)するためのインターフェイスを提供するシステムおよび方法 |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2008130165A Pending JP2008251032A (ja) | 2001-03-23 | 2008-05-16 | 組み込みコンピュータと通信するためのプログラムをスクリプティング(Scripting)するためのインターフェイスを提供するシステムおよび方法 |
Country Status (7)
Country | Link |
---|---|
US (11) | US7020867B2 (ja) |
EP (1) | EP1438661A2 (ja) |
JP (2) | JP2004532456A (ja) |
AU (1) | AU2007202077B2 (ja) |
CA (1) | CA2440321A1 (ja) |
IL (2) | IL158007A0 (ja) |
WO (1) | WO2002077813A2 (ja) |
Families Citing this family (58)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7685252B1 (en) * | 1999-10-12 | 2010-03-23 | International Business Machines Corporation | Methods and systems for multi-modal browsing and implementation of a conversational markup language |
US8160863B2 (en) | 2000-03-28 | 2012-04-17 | Ionipas Transfer Company, Llc | System and method for connecting a logic circuit simulation to a network |
US7266490B2 (en) | 2000-12-28 | 2007-09-04 | Robert Marc Zeidman | Apparatus and method for connecting hardware to a circuit simulation |
US20070016396A9 (en) * | 2000-12-28 | 2007-01-18 | Zeidman Robert M | Apparatus and method for connecting a hardware emulator to a computer peripheral |
US7020867B2 (en) * | 2001-03-23 | 2006-03-28 | S2 Technologies, Inc. | System and method for automatically generating code templates for communication via a predefined communication interface |
US7530076B2 (en) * | 2001-03-23 | 2009-05-05 | S2 Technologies, Inc. | Dynamic interception of calls by a target device |
US7203930B1 (en) * | 2001-12-31 | 2007-04-10 | Bellsouth Intellectual Property Corp. | Graphical interface system monitor providing error notification message with modifiable indication of severity |
US7243342B2 (en) * | 2002-06-11 | 2007-07-10 | Intel Corporation | Methods and apparatus for determining if a user-defined software function is a memory allocation function during compile-time |
US7316014B2 (en) * | 2002-07-12 | 2008-01-01 | Bsquare Corporation | Application modification system and method |
US6839649B2 (en) * | 2002-07-19 | 2005-01-04 | Honeywell International Inc. | Hardware device testing with fast abstract scripting tool |
US20040024843A1 (en) * | 2002-07-31 | 2004-02-05 | Smith Christopher T. | Method for provisioning distributed web applications |
US7424702B1 (en) | 2002-08-19 | 2008-09-09 | Sprint Communications Company L.P. | Data integration techniques for use in enterprise architecture modeling |
US7216340B1 (en) * | 2002-08-19 | 2007-05-08 | Sprint Communications Company L.P. | Analysis data validation tool for use in enterprise architecture modeling with result based model updating |
US7178139B2 (en) * | 2002-08-27 | 2007-02-13 | Delphi Technologies, Inc. | Executable file system for an embedded computer |
US7464339B2 (en) * | 2003-01-31 | 2008-12-09 | Siemens Building Technologies, Inc. | Method and device for upgrading a building control system |
BRPI0410911B1 (pt) * | 2003-07-02 | 2014-07-08 | Biotechnology Res & Dev | Mutantes acapsulares de p. multocida por deleção de hyae |
US8381207B2 (en) | 2003-12-02 | 2013-02-19 | International Business Machines Corporation | Script generation engine and mapping semantic models for target platform |
JP2006031482A (ja) * | 2004-07-16 | 2006-02-02 | Toshiba Corp | プロファイル管理方法及び管理システム |
US20060050856A1 (en) * | 2004-09-03 | 2006-03-09 | Pence Jeffrey W | Computer telephony server for scripted call termination |
US7490316B2 (en) * | 2004-12-02 | 2009-02-10 | International Business Machines Corporation | Method and apparatus to implement adaptive scripting tool |
US20060143222A1 (en) * | 2004-12-23 | 2006-06-29 | Maxime Daniel | Method, program and system for automatic reengineering of a client code |
US7954088B2 (en) * | 2005-03-23 | 2011-05-31 | Microsoft Corporation | Method and apparatus for executing unit tests in application host environment |
US8380682B2 (en) | 2005-08-10 | 2013-02-19 | International Business Machines Corporation | Indexing and searching of electronic message transmission thread sets |
US7565347B2 (en) * | 2005-08-10 | 2009-07-21 | International Business Machines Corporation | Indexing and searching of electronic message transmission thread sets |
US8402443B2 (en) * | 2005-12-12 | 2013-03-19 | dyna Trace software GmbH | Method and system for automated analysis of the performance of remote method invocations in multi-tier applications using bytecode instrumentation |
US8032874B1 (en) | 2006-01-20 | 2011-10-04 | Xilinx, Inc. | Generation of executable threads having source code specifications that describe network packets |
US7653895B1 (en) * | 2006-01-20 | 2010-01-26 | Xilinx, Inc. | Memory arrangement for message processing by a plurality of threads |
US7725922B2 (en) * | 2006-03-21 | 2010-05-25 | Novell, Inc. | System and method for using sandboxes in a managed shell |
US7743414B2 (en) * | 2006-05-26 | 2010-06-22 | Novell, Inc. | System and method for executing a permissions recorder analyzer |
US20080016023A1 (en) * | 2006-07-17 | 2008-01-17 | The Mathworks, Inc. | Storing and loading data in an array-based computing environment |
US7805707B2 (en) * | 2006-07-21 | 2010-09-28 | Novell, Inc. | System and method for preparing runtime checks |
US7739735B2 (en) * | 2006-07-26 | 2010-06-15 | Novell, Inc. | System and method for dynamic optimizations using security assertions |
US7856654B2 (en) * | 2006-08-11 | 2010-12-21 | Novell, Inc. | System and method for network permissions evaluation |
US7823186B2 (en) * | 2006-08-24 | 2010-10-26 | Novell, Inc. | System and method for applying security policies on multiple assembly caches |
US8762976B2 (en) * | 2007-03-09 | 2014-06-24 | Microsoft Corporation | Static extensibility models with dynamic languages and scripts |
KR101019210B1 (ko) * | 2007-04-25 | 2011-03-04 | 이화여자대학교 산학협력단 | 이뮬레이트를 활용한 임베디드 소프트웨어 테스트 장치 및그 방법 |
US20080313620A1 (en) * | 2007-06-15 | 2008-12-18 | Spirent Communications, Inc. | System and method for saving and restoring a self-describing data structure in various formats |
US8752006B1 (en) * | 2007-07-02 | 2014-06-10 | Cisco Technology, Inc. | System and method and apparatus for automatically generating computer code for remote procedure calls |
US8505038B2 (en) * | 2008-01-28 | 2013-08-06 | Blue Coat Systems, Inc. | Method and system for enhancing MS exchange (MAPI) end user experiences in a split proxy environment |
US20090216639A1 (en) * | 2008-02-25 | 2009-08-27 | Mark Joseph Kapczynski | Advertising selection and display based on electronic profile information |
RO122887B1 (ro) * | 2008-03-20 | 2010-03-30 | G3 Nova Communications S.R.L. | Metodă de conectare a mai multor clienţi csta la o centrală telefonică şi sistem de telecomunicaţie |
JP2009259089A (ja) * | 2008-04-18 | 2009-11-05 | Nec Corp | プログラム実行経路追跡装置、プログラム実行経路追跡方法、及びプログラム |
US8191036B2 (en) * | 2008-05-19 | 2012-05-29 | Apple Inc. | Mechanism to support orphaned and partially configured objects |
US20100262551A1 (en) * | 2009-04-14 | 2010-10-14 | Ppg Industries Ohio, Inc. | Method and apparatus for digital coating project purchase |
US8572554B2 (en) * | 2009-07-17 | 2013-10-29 | Ebay Inc. | Method and system for integrating Java and JavaScript technologies |
US8365057B2 (en) * | 2009-07-30 | 2013-01-29 | Mellanox Technologies Ltd | Processing of data integrity field |
WO2011031328A2 (en) * | 2009-09-14 | 2011-03-17 | Ldra Technology, Inc. | Systems and methods for management of projects for development of embedded systems |
US8225182B2 (en) | 2009-10-04 | 2012-07-17 | Mellanox Technologies Ltd. | Processing of block and transaction signatures |
US9065744B2 (en) * | 2011-06-20 | 2015-06-23 | Netscout Systems, Inc. | Performance optimized and configurable state based heuristic for the classification of real-time transport protocol traffic |
US8793669B2 (en) * | 2012-07-17 | 2014-07-29 | Concurix Corporation | Pattern extraction from executable code in message passing environments |
US8949866B2 (en) * | 2013-05-13 | 2015-02-03 | Cisco Technology, Inc. | Object-oriented class hierarchy for workflow execution targets |
US9817638B2 (en) * | 2013-12-27 | 2017-11-14 | Symantec Corporation | Systems and methods for injecting code into an application |
CN104866383B (zh) * | 2015-05-29 | 2018-11-23 | 北京金山安全软件有限公司 | 一种接口调用方法、装置及终端 |
US10452409B2 (en) * | 2015-10-23 | 2019-10-22 | Oracle International Corporation | Universal adapter for native calling |
FR3043812B1 (fr) * | 2015-11-16 | 2019-07-26 | Bull Sas | Procede de generation d'un formulaire de messages |
CN110309071B (zh) * | 2019-06-27 | 2023-01-24 | 杭州数梦工场科技有限公司 | 测试代码的生成方法及模块、测试方法及系统 |
US11010138B2 (en) * | 2019-09-20 | 2021-05-18 | Dell Products L.P. | System and method for programmatically converting interface specification to generic plug-in code |
US11531525B2 (en) * | 2021-04-23 | 2022-12-20 | Jpmorgan Chase Bank, N.A. | System and method for packaging standalone application modules into re-usable application and infrastructure resources |
Family Cites Families (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US3279124A (en) * | 1964-07-20 | 1966-10-18 | Brown Co D S | Corner portions for elastomer gaskets |
US6006277A (en) * | 1987-11-06 | 1999-12-21 | Bea Systems, Inc. | Virtual software machine for enabling CICS application software to run on UNIX based computer systems |
US5701427A (en) * | 1989-09-19 | 1997-12-23 | Digital Equipment Corp. | Information transfer arrangement for distributed computer system |
US5475315A (en) * | 1991-09-20 | 1995-12-12 | Audio Precision, Inc. | Method and apparatus for fast response and distortion measurement |
JP2838344B2 (ja) | 1992-10-28 | 1998-12-16 | 三菱電機株式会社 | 半導体装置 |
US5497463A (en) * | 1992-09-25 | 1996-03-05 | Bull Hn Information Systems Inc. | Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system |
US5530848A (en) * | 1992-10-15 | 1996-06-25 | The Dow Chemical Company | System and method for implementing an interface between an external process and transaction processing system |
JPH0827769B2 (ja) * | 1992-10-30 | 1996-03-21 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 通信インターフェースの生成システム及びその方法 |
US5649131A (en) * | 1992-12-30 | 1997-07-15 | Lucent Technologies Inc. | Communications protocol |
GB9316948D0 (en) * | 1993-08-14 | 1993-09-29 | Ibm | Programming aid for distributed computing systems |
US5778228A (en) | 1994-08-16 | 1998-07-07 | International Business Machines Corporation | Method and system for transferring remote procedure calls and responses over a network |
US5794047A (en) * | 1994-09-29 | 1998-08-11 | International Business Machines Corporation | Method of walking-up a call stack for a client/server program that uses remote procedure call |
WO1996017306A2 (en) * | 1994-11-21 | 1996-06-06 | Oracle Corporation | Media server |
US5872909A (en) | 1995-01-24 | 1999-02-16 | Wind River Systems, Inc. | Logic analyzer for software |
US5600790A (en) | 1995-02-10 | 1997-02-04 | Research In Motion Limited | Method and system for loading and confirming correct operation of an application program in a target system |
US6249821B1 (en) * | 1995-07-14 | 2001-06-19 | Oki Data Americas, Inc. | Network object frameworks |
US7770013B2 (en) * | 1995-07-27 | 2010-08-03 | Digimarc Corporation | Digital authentication with digital and analog documents |
IL116804A (en) | 1996-01-17 | 1998-12-06 | R N S Remote Networking Soluti | Application user interface redirector |
US5926636A (en) * | 1996-02-21 | 1999-07-20 | Adaptec, Inc. | Remote procedural call component management method for a heterogeneous computer network |
US6014638A (en) * | 1996-05-29 | 2000-01-11 | America Online, Inc. | System for customizing computer displays in accordance with user preferences |
US6279124B1 (en) * | 1996-06-17 | 2001-08-21 | Qwest Communications International Inc. | Method and system for testing hardware and/or software applications |
US5881230A (en) * | 1996-06-24 | 1999-03-09 | Microsoft Corporation | Method and system for remote automation of object oriented applications |
US6275871B1 (en) | 1996-07-03 | 2001-08-14 | Siemens Aktiengesellschaft | Asynchronous transport optimizing observer-pattern-like system supporting several modes for an interface definition language-less communication subsystem |
US20020032803A1 (en) | 1996-07-15 | 2002-03-14 | Paul Marcos | Method and apparatus for dynamically brokering object messages among object models |
US5799266A (en) * | 1996-09-19 | 1998-08-25 | Sun Microsystems, Inc. | Automatic generation of test drivers |
US6029181A (en) * | 1996-09-26 | 2000-02-22 | Honeywell, Inc. | System and method for translating visual display object files from non-component object model (COM) objects to COM objects |
TW347498B (en) | 1996-09-30 | 1998-12-11 | Casio Computer Co Ltd | Information supply system |
US6047280A (en) * | 1996-10-25 | 2000-04-04 | Navigation Technologies Corporation | Interface layer for navigation system |
US5867153A (en) * | 1996-10-30 | 1999-02-02 | Transaction Technology, Inc. | Method and system for automatically harmonizing access to a software application program via different access devices |
US6002868A (en) | 1996-12-31 | 1999-12-14 | Compaq Computer Corporation | Test definition tool |
US5978902A (en) * | 1997-04-08 | 1999-11-02 | Advanced Micro Devices, Inc. | Debug interface including operating system access of a serial/parallel debug port |
US6070189A (en) | 1997-08-26 | 2000-05-30 | International Business Machines Corporation | Signaling communication events in a computer network |
US6038604A (en) | 1997-08-26 | 2000-03-14 | International Business Machines Corporation | Method and apparatus for efficient communications using active messages |
US6279123B1 (en) | 1997-09-15 | 2001-08-21 | Lucent Technologies, Inc. | System for viewing and monitoring embedded processor operation |
US5991778A (en) * | 1997-09-30 | 1999-11-23 | Stratfor Systems, Inc. | Method and apparatus for real-time secure file deletion |
US6070174A (en) * | 1997-09-30 | 2000-05-30 | Infraworks Corporation | Method and apparatus for real-time secure file deletion |
US6418439B1 (en) * | 1997-11-12 | 2002-07-09 | Ncr Corporation | Computer system and computer implemented method for translation of information into multiple media variations |
US6066181A (en) | 1997-12-08 | 2000-05-23 | Analysis & Technology, Inc. | Java native interface code generator |
US6658486B2 (en) | 1998-02-25 | 2003-12-02 | Hewlett-Packard Development Company, L.P. | System and method for efficiently blocking event signals associated with an operating system |
DE69908121T2 (de) | 1998-03-23 | 2004-04-01 | Microsoft Corp., Redmond | Anwendungsprogrammierungsschnittstelle in einem betriebssystem |
US6205576B1 (en) * | 1998-06-05 | 2001-03-20 | Nortel Networks Limited | Method and apparatus for identifying indirect messaging relationships between software entities |
US6157955A (en) | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6971048B1 (en) * | 1998-06-15 | 2005-11-29 | Sun Microsystems, Inc. | Testing device driver hardening |
US20010051974A1 (en) * | 1998-06-23 | 2001-12-13 | Ron Saad | Method and apparatus for automatic generation of data interfaces |
DE19828253B4 (de) * | 1998-06-25 | 2006-04-06 | Daimlerchrysler Ag | Außenrückblickspiegel |
US6321347B1 (en) * | 1998-07-06 | 2001-11-20 | Mci Communications Corporation | Network testing system and method |
US6807667B1 (en) | 1998-09-21 | 2004-10-19 | Microsoft Corporation | Method and system of an application program interface for abstracting network traffic control components to application programs |
US6629123B1 (en) * | 1998-10-02 | 2003-09-30 | Microsoft Corporation | Interception of unit creation requests by an automatic distributed partitioning system |
US6546553B1 (en) | 1998-10-02 | 2003-04-08 | Microsoft Corporation | Service installation on a base function and provision of a pass function with a service-free base function semantic |
US6397255B1 (en) | 1998-12-23 | 2002-05-28 | At&T Corp. | Method and apparatus for providing intelligent network services |
US6477683B1 (en) * | 1999-02-05 | 2002-11-05 | Tensilica, Inc. | Automated processor generation system for designing a configurable processor and method for the same |
US6430570B1 (en) | 1999-03-01 | 2002-08-06 | Hewlett-Packard Company | Java application manager for embedded device |
US6842903B1 (en) * | 1999-05-19 | 2005-01-11 | Sun Microsystems, Inc. | System and method for providing dynamic references between services in a computer system |
US6473794B1 (en) * | 1999-05-27 | 2002-10-29 | Accenture Llp | System for establishing plan to test components of web based framework by displaying pictorial representation and conveying indicia coded components of existing network framework |
US6493719B1 (en) * | 1999-07-26 | 2002-12-10 | Microsoft Corporation | Method and system for scripting for system management information |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6931623B2 (en) | 1999-08-30 | 2005-08-16 | Touchnet Information Systems, Inc. | Method of accessing data and logic on existing systems through dynamic construction of software components |
US6507877B1 (en) * | 1999-09-03 | 2003-01-14 | Whamtech, Inc. | Asynchronous concurrent dual-stream FIFO |
US6546477B1 (en) * | 1999-09-20 | 2003-04-08 | Texas Instruments Incorporated | Memory management in embedded systems with dynamic object instantiation |
US6487713B1 (en) * | 1999-09-24 | 2002-11-26 | Phoenix Technologies Ltd. | Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation |
EP1102498B1 (en) * | 1999-11-09 | 2004-02-25 | Nortel Networks Corporation | Telephony services in a communications network |
IL132916A (en) * | 1999-11-14 | 2004-02-08 | Mcafee Inc | Method and system for intercepting an application program interface |
US6467084B1 (en) | 1999-12-16 | 2002-10-15 | Emware, Inc. | Systems and methods for reprogramming an embedded device with program code using relocatable program code |
US6625648B1 (en) * | 2000-01-07 | 2003-09-23 | Netiq Corporation | Methods, systems and computer program products for network performance testing through active endpoint pair based testing and passive application monitoring |
US6721942B1 (en) | 2000-03-31 | 2004-04-13 | Unisys Corporation | Component object model interface to C++ type conversion |
US6363417B1 (en) | 2000-03-31 | 2002-03-26 | Emware, Inc. | Device interfaces for networking a computer and an embedded device |
GB0009945D0 (en) * | 2000-04-20 | 2000-06-07 | Sgs Thomson Microelectronics | Debugging device nad method |
US7363633B1 (en) * | 2000-04-24 | 2008-04-22 | Microsoft Corporation | Registering and storing dependencies among applications and objects in a computer system and communicating the dependencies to a recovery or backup service |
US7047176B2 (en) * | 2000-05-05 | 2006-05-16 | Fujitsu Limited | Method and system for hardware simulation |
AU2001259841A1 (en) * | 2000-05-08 | 2001-11-20 | Transilica, Inc. | A diagnostic tool for a portable thread environment |
US6681386B1 (en) | 2000-05-22 | 2004-01-20 | International Business Machines Corporation | Method, system, and program for parameter expansion, generation, and execution of scripts in a networked environment |
US6505342B1 (en) * | 2000-05-31 | 2003-01-07 | Siemens Corporate Research, Inc. | System and method for functional testing of distributed, component-based software |
US7013345B1 (en) | 2000-06-12 | 2006-03-14 | Metric Systems Corporation | Method and apparatus for wireless networking |
US6779134B1 (en) * | 2000-06-27 | 2004-08-17 | Ati International Srl | Software test system and method |
US6892328B2 (en) | 2000-09-29 | 2005-05-10 | Tanisys Technology, Inc. | Method and system for distributed testing of electronic devices |
US7406681B1 (en) * | 2000-10-12 | 2008-07-29 | Sun Microsystems, Inc. | Automatic conversion of source code from 32-bit to 64-bit |
CA2325684A1 (en) * | 2000-11-10 | 2002-05-10 | Harm Sluiman | Automation and isolation of software component testing |
US20020065869A1 (en) * | 2000-11-29 | 2002-05-30 | Brad Calder | Method and process for virtualizing user interfaces |
US20020092003A1 (en) * | 2000-11-29 | 2002-07-11 | Brad Calder | Method and process for the rewriting of binaries to intercept system calls in a secure execution environment |
US20020065945A1 (en) | 2000-11-29 | 2002-05-30 | Brad Calder | System and method for communicating and controlling the behavior of an application executing on a computer |
US6944850B2 (en) * | 2000-12-21 | 2005-09-13 | Intel Corporation | Hop method for stepping parallel hardware threads |
US7171670B2 (en) * | 2001-02-14 | 2007-01-30 | Ricoh Co., Ltd. | Method and system of remote diagnostic, control and information collection using multiple formats and multiple protocols with verification of formats and protocols |
US7530076B2 (en) | 2001-03-23 | 2009-05-05 | S2 Technologies, Inc. | Dynamic interception of calls by a target device |
US7020867B2 (en) | 2001-03-23 | 2006-03-28 | S2 Technologies, Inc. | System and method for automatically generating code templates for communication via a predefined communication interface |
US6851117B2 (en) | 2001-05-25 | 2005-02-01 | Sun Microsystems, Inc. | Supplanting motif dialog boxes via modifying intercepted function calls from an application |
AU2002332812A1 (en) | 2001-09-04 | 2003-03-18 | Soft2B Llc | Browser-to-browser, dom-based, peer-to-peer communication with delta synchronization |
US7325185B1 (en) * | 2003-08-04 | 2008-01-29 | Symantec Corporation | Host-based detection and prevention of malicious code propagation |
-
2002
- 2002-03-22 US US10/104,997 patent/US7020867B2/en not_active Expired - Fee Related
- 2002-03-22 US US10/105,069 patent/US7237230B2/en not_active Expired - Fee Related
- 2002-03-22 CA CA002440321A patent/CA2440321A1/en not_active Abandoned
- 2002-03-22 WO PCT/US2002/008810 patent/WO2002077813A2/en active IP Right Grant
- 2002-03-22 US US10/104,989 patent/US7359911B2/en not_active Expired - Fee Related
- 2002-03-22 US US10/105,062 patent/US20030061292A1/en not_active Abandoned
- 2002-03-22 US US10/105,061 patent/US7111302B2/en not_active Expired - Fee Related
- 2002-03-22 JP JP2002575799A patent/JP2004532456A/ja active Pending
- 2002-03-22 US US10/104,985 patent/US7062772B2/en not_active Expired - Fee Related
- 2002-03-22 IL IL15800702A patent/IL158007A0/xx unknown
- 2002-03-22 EP EP02715183A patent/EP1438661A2/en not_active Withdrawn
-
2003
- 2003-09-18 IL IL158007A patent/IL158007A/en active IP Right Grant
-
2006
- 2006-03-28 US US11/391,026 patent/US20060179427A1/en not_active Abandoned
- 2006-05-22 US US11/438,266 patent/US20060212880A1/en not_active Abandoned
- 2006-08-07 US US11/500,616 patent/US7392526B2/en not_active Expired - Fee Related
-
2007
- 2007-05-09 AU AU2007202077A patent/AU2007202077B2/en not_active Ceased
- 2007-06-26 US US11/768,853 patent/US20080016498A1/en not_active Abandoned
- 2007-09-28 US US11/864,670 patent/US20080052309A1/en not_active Abandoned
-
2008
- 2008-05-16 JP JP2008130165A patent/JP2008251032A/ja active Pending
Also Published As
Publication number | Publication date |
---|---|
US7392526B2 (en) | 2008-06-24 |
US7062772B2 (en) | 2006-06-13 |
CA2440321A1 (en) | 2002-10-03 |
IL158007A (en) | 2009-09-22 |
US7111302B2 (en) | 2006-09-19 |
IL158007A0 (en) | 2004-03-28 |
US20060282507A1 (en) | 2006-12-14 |
WO2002077813A2 (en) | 2002-10-03 |
US20060212880A1 (en) | 2006-09-21 |
US20020198893A1 (en) | 2002-12-26 |
US20020198887A1 (en) | 2002-12-26 |
US7359911B2 (en) | 2008-04-15 |
JP2008251032A (ja) | 2008-10-16 |
US20080052309A1 (en) | 2008-02-28 |
US20020198675A1 (en) | 2002-12-26 |
US7020867B2 (en) | 2006-03-28 |
US20080016498A1 (en) | 2008-01-17 |
EP1438661A2 (en) | 2004-07-21 |
AU2007202077A1 (en) | 2007-05-31 |
US7237230B2 (en) | 2007-06-26 |
US20020188595A1 (en) | 2002-12-12 |
US20020198922A1 (en) | 2002-12-26 |
US20030061292A1 (en) | 2003-03-27 |
US20060179427A1 (en) | 2006-08-10 |
AU2007202077B2 (en) | 2008-08-07 |
WO2002077813A8 (en) | 2004-03-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP2004532456A (ja) | 開発およびテストシステム並びに方法 | |
US7530076B2 (en) | Dynamic interception of calls by a target device | |
US7814157B2 (en) | Hypermedia browser API simulation to enable use of browser plug-ins and applets as embedded widgets in script-language-based interactive programs | |
EP0632377B1 (en) | Method for testing a message-driven operating system | |
US6810522B2 (en) | Method and system for associating parameters of containers and contained objects | |
US20080209405A1 (en) | Distributed debugging for a visual programming language | |
US9471282B2 (en) | System and method for using annotations to automatically generate a framework for a custom javaserver faces (JSF) component | |
EP0730227A1 (en) | System and method for a distributed debugger for debugging distributed application programs | |
US20080178043A1 (en) | Pipelining of input/output parameters between application tests written in a DBMS procedural language | |
US6799320B1 (en) | Providing binding options for component interfaces | |
US7552440B1 (en) | Process communication multiplexer | |
CN112988588B (zh) | 客户端软件调试方法、装置、存储介质及电子设备 | |
AU2002247399B2 (en) | Development and testing system and method | |
AU2002247399A1 (en) | Development and testing system and method | |
CN115729556A (zh) | 代码运行方法、装置、可读介质以及电子设备 | |
CN113254355A (zh) | Grpc接口测试方法、装置、电子设备和可读存储介质 | |
JPH08161198A (ja) | 入出力データシミュレータ |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20050202 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20071116 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20080218 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20080225 |
|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20080516 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20081202 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090512 |