JP6581097B2 - 自動デバイスプログラム生成のための方法および装置 - Google Patents

自動デバイスプログラム生成のための方法および装置 Download PDF

Info

Publication number
JP6581097B2
JP6581097B2 JP2016545976A JP2016545976A JP6581097B2 JP 6581097 B2 JP6581097 B2 JP 6581097B2 JP 2016545976 A JP2016545976 A JP 2016545976A JP 2016545976 A JP2016545976 A JP 2016545976A JP 6581097 B2 JP6581097 B2 JP 6581097B2
Authority
JP
Japan
Prior art keywords
controller
pin
program
remote
data
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.)
Active
Application number
JP2016545976A
Other languages
English (en)
Other versions
JP2017502431A (ja
Inventor
トリサラ・チャンダリア
ジャン−バティスト・レオネリ
Original Assignee
チャンベッラ・リミテッド
トリサラ・チャンダリア
ジャン−バティスト・レオネリ
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by チャンベッラ・リミテッド, トリサラ・チャンダリア, ジャン−バティスト・レオネリ filed Critical チャンベッラ・リミテッド
Publication of JP2017502431A publication Critical patent/JP2017502431A/ja
Application granted granted Critical
Publication of JP6581097B2 publication Critical patent/JP6581097B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/0482Interaction with lists of selectable items, e.g. menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/39Circuit design at the physical level
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/20Software design
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/34Graphical or visual programming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/36Software reuse
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/547Remote procedure calls [RPC]; Web services

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Human Computer Interaction (AREA)
  • Computer Hardware Design (AREA)
  • Geometry (AREA)
  • Evolutionary Computation (AREA)
  • Stored Programmes (AREA)
  • User Interface Of Digital Computer (AREA)
  • Telephonic Communication Services (AREA)

Description

本発明の実施形態は、全般的には、自動デバイスプログラム生成のための方法および装置に関する。
フィールドプログラマブルゲートアレイ(FPGA)およびマイクロコントローラの使用が、かなりの人気を得るようになった。コントローラの低い製造コスト、可用性、およびカスタマイゼーションは、デバイスの作成のために商業会社によってもホビイストによっても使用されるマイクロコントローラ(たとえば、PICまたはARDUINOおよび類似物)の普及につながった。マイクロコントローラは、周辺機器と通信して入出力データを処理するためにプログラム可能であるプロセッサコアとメモリとを含む単一の集積回路上の小型コンピュータである。NOR FLASHまたはOTP ROMの形のプログラムメモリも、しばしば、マイクロコントローラチップ上に含まれ、通常は少量のランダムアクセスメモリ(RAM)も含まれる。マイクロコントローラは、通常、組込み応用のために設計される。
しかし、マイクロコントローラは、一般に、オンボードメモリの容量以内でなければならない所与のコードセットに制限される。プログラムの複雑さが高まるにつれて、メモリに記憶される必要があるコードのサイズが増える。しばしば、プログラマは、使用可能なメモリ空間を節約するために、潜在的なプログラムを犠牲にすることに頼る。さらに、プログラムは、マイクロコントローラにネイティブなローカルライブラリによって定義されるローカル機能性および制限された能力と、プロセッサの性能とにも制限される。最善でも、基本的な外部通信は、非常に狭い範囲のアプリケーション(たとえば、マイクロコントローラ上にローカルに記憶されたプログラム)との相互作用に制限される。さらに、マイクロコントローラのプログラミングは、コーディングコマンドを記憶し、階層を理解し、正しい呼出し構文を利用するなどを行わなければならないので、ユーザにとって非常に難しい。そうしなければ、書かれたプログラムは、走らないかエラーを発生することになる。
したがって、当技術分野には、最小限のメモリフットプリントを維持しながらマイクロコントローラプログラミングを単純にし、マイクロコントローラ能力を拡張する必要がある。
本発明の実施形態は、一般に、特許請求の範囲により完全に示されている、図面のうちの少なくとも1つに実質的に示され、かつ/またはこれに関連して説明される、自動デバイスプログラム生成のための方法、装置に関する。
本開示の上記および他の特徴および利点は、添付図面と一緒に本開示の以下の詳細な説明の再検討から了解され得、添付図面では、終始、同様の符号が同様の部分を指す。
本発明の上で列挙された特徴を詳細に理解できる方法、上で短く要約された本発明のより特定の説明を、実施形態を参照することによって得ることができるように、それらの実施形態のいくつかが、添付図面に示されている。しかし、添付図面は、本発明の通常の実施形態を示すのみであり、したがって、その範囲の限定と考えられてはならないことに留意されたい。というのは、本発明が、他の同等に有効な実施形態を許すことができるからである。
本発明の1つまたは複数の実施形態による、自動デバイスプログラム生成システムを示す概略図である。 本発明の1つまたは複数の実施形態による、対話的ハードウェアビジュアライゼーションを用いてデバイス固有ハードウェアをプログラミングするための例示的なグラフィカルユーザインターフェース(GUI)を示す図である。 本発明の1つまたは複数の実施形態による、対話的ハードウェアビジュアライゼーションのための例示的なグラフィカルユーザインターフェース(GUI)を示す図である。 本発明の1つまたは複数の実施形態による、リモートサービスと相互作用する自動的に生成されるデバイスプログラムを実行するためのコントローラによって実行される方法を示す流れ図である。 本発明の1つまたは複数の実施形態による、図2の例示的GUIとの自動デバイスプログラム生成相互作用の例示的方法を示す流れ図である。 本発明の1つまたは複数の実施形態による、図2の例示的GUIを介してプログラムされた外部コントローラによるリモートプロセス呼出しのためにコーディングサーバによって実行される例示的方法を示す流れ図である。 本発明の1つまたは複数の実施形態による、例示的なコンピューティングシステム内のモジュールを示すブロック図である。コンピュータシステムは、前述の実施形態のサーバまたは電子デバイスを含む、実質的に同様の構造を含む。
本発明の実施形態は、自動化されたデバイスコードジェネレータに関し、より具体的には、グラフィカルインターフェースを介して外部コントローラのためのプログラムを自動的に生成することに関する。グラフィカルインターフェースは、物理属性をすばやく選択し(たとえば、ピンレイアウトを介して)、生成されるプログラムでの動作のために入力パラメータまたは出力パラメータのいずれかとして物理属性を割り当てるために、物理コントローラのビジュアライゼーションを可能にする。ビジュアルキューは、外部コントローラ上のプログラムを正しく実行するために、ユーザがネットリストに従ってまたは回路図をコントローラとペアにするのに費やす時間の長さを減らす。
いくつかの実施形態では、生成されるプログラムは、コーディングサーバまたはサーバのグループへのリモートプロセス呼出しを実行することによって、電子デバイス内の外部コントローラの機能性を拡張する。電子デバイスは、タスクを実行するために少なくとも1つのプロセッサまたはマイクロコントローラを有するデバイスである。電子デバイスのいくつかの実施形態は、ARDUINO、TEXAS INSTRUMENTS LAUNCHPAD、FREESCALE BOARDS KINETIS、ST MICROELECTRONICS STM32、INTEL EDISON、および類似物などのプログラミング基板を含む。コントローラのための電子デバイスのいくつかの実施形態は、NEST THERMOSTAT、PHILIPPS HUE、BELKIN、WITHINGS、および類似物などの他の組み立てられたデバイスおよびシステムのコントローラをプログラムすることができる。
コーディングサーバは、外部コントローラがハードウェア制限およびソフトウェア制限(たとえば、低い能力のプロセッサ、限られたメモリ容量、縮小されたオペレーティングシステム、命令セットの欠如など)に起因して実行を制限される、より複雑なプログラムを実行するために、より重い処理負荷を実行する。コーディングサーバは、追加のサードパーティデータベースおよびサービス(たとえば、AMAZON、EBAY、FACEBOOK(登録商標)、APPLE PUSH NOTIFICATIONサーバ、テキストメッセージサーバ、電子メールサーバなど)を認証し、これにアクセスするためにコマンドを実行することもできる。
コードは、カスタマイズされたグラフィカルユーザインターフェース(GUI)を介して、外部コントローラおよび動作のために自動的に生成される。コードは、外部コントローラに関する着信および発信の処理されたデータを扱うために、コントローラのために自動的に生成されたコードをミラーリングするプログラムを有することもできるリモートコーディングサーバと互いに整合的に作用する。GUIは、選択されたコントローラと、そのコントローラがリモートコーディングサーバ上のプロセスにアクセスし、これに対する呼出しを生成するための動作の事前に決定されたリストおよびライブラリとを表す。GUIは、コントローラの実際のピンの表現を含む。ピンレイアウト内のピンの選択は、選択されたコントローラに関するプロセス呼出しに対応する事前に生成されたコードにデータが挿入されることと解釈される。いくつかの実施形態では、プロセス呼出しは、リモートサーバまたはコーディングサーバに常駐するプロセスに対するものである。コントローラ上に記憶される自動的に生成されたコントローラプログラム(AGCP)は、複数のプロセス呼出しを含むことができる。プロセス呼出しおよび変数に関する関連するデータは、AGCPからの変数データを記憶し、これを使用してコードを実行するリモートコーディングサーバに通信される。事前に生成されたコードを実行した後に、リモートコーディングサーバは、外部コントローラタイプにネイティブであるフォーマットされたデータをフィルタリングし、処理し、返す。他の実施形態では、AGCPは、伝統的なコードおよびプロセス呼出しをも含む。さらなる実施形態は、後続のプロセス呼出しに関してコントローラに送信するための、リモートコーディングサーバ上でのコードの生成を含む。
説明される以下の実施形態では、「プロセス」は、実行コンピュータ(たとえば、サーバ、パーソナルコンピュータ、モバイルデバイスなど)上にすでに展開されている、走らせる準備のできたコードベースまたは事前に生成されたコードを指す。各プロセスは、名前、プロセスID、アイコン、またはユーザに対する他の識別子によって、ユーザに対して一意に識別される。「実行」は、コンピュータ上のプロセスの開始(ローカルもしくはリモート、またはクラウドベース)を指す。「バンドル」は、共通の属性(API名、共通のパラメータ、SDK、パラメータ名、リモートサーバなど)によって編成されたプロセスの集合を指す。本明細書で議論される例は、範囲において限定的ではなく、むしろ説明のために特定の実施形態を区別するものである。
図1は、本発明の1つまたは複数の実施形態による、自動デバイスプログラム生成システム100の概略図である。システム100は、ユーザデバイス105、集積回路デバイス(すなわち、電子デバイス)130、リモートコーディングサーバ135、および外部サーバ140を含む。いくつかの実施形態では、リモートコーディングサーバ135は、複数のリモートコーディングサーバのうちの少なくとも1つである。同様に、いくつかの実施形態では、外部サーバ140は、複数の外部サーバのうちの少なくとも1つである。いくつかの実施形態では、ユーザデバイス105および集積回路デバイス130は、インターネット154または他のネットワークを介して通信可能に結合される。しかし、説明の簡単さのために、下の実施形態は、ユーザデバイス105が集積回路デバイス130に直接に(たとえば、USB、パラレル/シリアルデータケーブル、ネットワークケーブルなどを介して)結合されると企図する。
集積回路デバイス130は、外部コントローラ110およびメモリ115を含む。いくつかの実施形態では、集積回路デバイス130は、外部コントローラ110に結合された周辺エレクトロニクス120をさらに含む。周辺エレクトロニクス120は、センサ、ライト、オーディオスピーカ、アクチュエータ、ディスプレイ、プリンタ、スキャナ、入出力デバイス、および類似物を含むが、これに限定はされない。外部コントローラ110を、マイクロコントローラ(たとえば、PIC、ARDUINO YUN、および類似物)とすることができる。外部コントローラ110は、インターネット154、クラウド、ネットワーク、または類似物を介してリモートコーディングサーバ135に通信可能に結合される。いくつかの実施形態では、外部コントローラ110は、ユーザデバイス105による自動プログラム生成ならびに/または対応するヘッダファイルおよびライブラリがリモートコーディングサーバ135上の命令を実行するためにメモリ115に記憶された後に、リモートコーディングサーバ135に結合される。ヘッダファイルは、リモートコーディングサーバ135上のリモートプロセス呼出しの実行を可能にする。
リモートコーディングサーバ135は、外部コントローラ110上で記憶されたAGCPに統合されたユーザデバイス上での選択された提供される動作を実行するために、ライブラリ、アプリケーションプログラムインターフェース(API)、およびソフトウェア開発キット(SDK)を記憶する。いくつかの実施形態では、リモートコーディングサーバ135は、外部コントローラ110上で記憶されたAGCP内のリモートプロセス呼出しを実行するために、ユーザアカウント、証明書、および他のデータを記憶する。リモートコーディングサーバ135は、リモートプロセス呼出しを実行するために外部サーバ140とインターフェースするのにも、プログラム論理ライブラリ、記憶されたAPI、および証明書を使用する。リモートコーディングサーバ135は、プログラム論理ライブラリ内に記憶された機能を展開するために、リモートプロセス呼出し内に埋め込まれたパラメータデータを受信する。いくつかの実施形態では、プロセス呼出しは、マークアップ言語(たとえば、XML、JAVASCRIPT(登録商標)、および類似物)で事前に生成され得る所定のコードに対応する。マークアップ言語は、変数データおよびパラメータの割振り、解析、および事前に生成されるコードを含む所定の提供される動作への挿入を可能にする。しかし、代替実施形態は、所定のコード構文に基づいて、パラメータおよび変数データの受信時にコードを生成することを含む。
リモートコーディングサーバ135上での処理および実行に続いて、リモートコーディングサーバ135は、リモートプロセス呼出しおよび/またはリモートコーディングサーバ135上で記憶されたユーザアカウントの所定の命令に従って、受信されたデータを外部コントローラ110にネイティブなコードに変換することができる。いくつかの実施形態では、リモートコーディングサーバ135は、リモートプロセス呼出しを実行するために、コードジェネレータおよびランタイムエンジン(図示せず)を含むこともできる。そのような実施形態では、集積回路デバイス130から受信されたリモートプロセス呼出しは、リモートプロセスをトリガし、このリモートプロセスは、ランタイムエンジンによる展開のためにコードをさらに生成する。プログラムは、外部または内部とされ、外部APIを含むことができるコードユーティリティを介して外部サーバ140にアクセスするコードを含むことができる。コードユーティリティは、データ変換、ファイル変換、暗号化、デバッギング、および類似物など、技術的問題を解決するルーチンである。
外部サーバ140は、実行可能命令を介してアクセスされるサードパーティデータベースおよびサービスをホスティングするコンピュータを含む。外部サーバ140は、AMAZON、EBAY、TWITTER(登録商標)、電子メールサーバ、テキストメッセージサーバ、銀行口座、および類似物など、プライベートサーバおよびパブリックサーバを含む。外部サーバ140は、リモートコーディングサーバ135に直接に接続される(矢印160として図示)。他の実施形態では、外部サーバ140は、インターネット154または他のネットワークを介してリモートコーディングサーバ135に通信可能に接続される。
ユーザデバイス105は、ユーザインターフェースおよび統合開発環境(IDE)を有するコンピュータ、ラップトップ、タブレット、または他の電子処理デバイスとすることができる。ユーザデバイス105は、CPU 108と、サポート回路112と、命令およびアルゴリズムを含むメモリ114とを含む。CPU 108は、ユーザデバイス105への入力および出力を処理する。CPU 108は、任意の市販プロセッサ、マイクロプロセッサ、マイクロコントローラ、および類似物とすることができる。サポート回路112は、ユーザインターフェース、クロック回路、ネットワーク通信、キャッシュ、電源、入出力回路、および類似物など、CPU 108に機能性を提供する周知の回路を含む。代替実施形態は、カスタム特定用途向け集積回路(ASIC)上の制御アルゴリズムを使用することができる。いくつかの実施形態では、ユーザインターフェースは、キーパッド、電子ボタン、スピーカ、タッチスクリーン、ディスプレイ、または他のユーザ対話機構を含む。いくつかの実施形態では、ユーザインターフェースは、集積回路デバイス130と通信することができる。
メモリ114は、データおよび実行可能ソフトウェアを記憶するのに使用される、任意の形のデジタルストレージとすることができる。そのようなメモリは、ランダムアクセスメモリ、読取専用メモリ、ディスクストレージ、光ストレージ、および類似物を含むが、これに限定はされない。メモリ114は、オペレーティングシステム116、IDE 118、およびビジュアルコントローラモジュール122に対応するコンピュータ可読命令を記憶する。ビジュアルコントローラモジュール122は、説明の簡単さのために単一のモジュールとして説明されるが、他の実施形態は、ストレージまたは処理の効率を改善するために別々のモジュールに分離された特定のプロセスを含む。
ビジュアルコントローラモジュール122は、リモートコーディングサーバ135によって実行され得る事前に生成されたバンドルおよび動作を取り出すために、リモートコーディングサーバ135と通信する(矢印150)。リモートコーディングサーバ135は、プログラム論理ライブラリ、API、SDK、および、いくつかの実施形態ではリモートプロセス呼出しに対応する事前に生成されたコードを記憶する。ビジュアルコントローラモジュール122は、インターネット154および/または他のネットワークを介してリモートコーディングサーバ135と通信する。ビジュアルコントローラモジュール122は、ユーザが外部コントローラ110のためのAGCPに組み込むために選択するための選択可能な動作のライブラリを生成する。ライブラリは、インターネット154を介してリモートコーディングサーバ135からダウンロードされ得る(矢印150として図示)。
いくつかの実施形態では、ビジュアルコントローラモジュール122およびIDE 118は、リモートコーディングサーバ135上のAGCPのためのプロセスまたはプログラムをさらに記憶する。AGCPに対応するプログラムの記憶は、リモートコーディングサーバ135が、外部サーバ140からのデータをリスンし、追加処理および外部コントローラ110へのデータの送信を実行することを可能にする。たとえば、ツイートがユーザによって受信される時に必ず、外部コントローラ110のピンに結合されたLEDを光らせるAGCPが、生成され得る。ツイートは、外部コントローラ110によって直接には受信されない。そうではなく、ユーザアカウントに受信されるツイートは、TWITTER(登録商標)にアクセスするためにユーザアカウント認証証明書を有するリモートコーディングサーバ135への通知をトリガすることができる。ビジュアルコントローラモジュール122からのプログラムに従うリモートコーディングサーバは、ツイート通知を「PIN 7 HIGH」コマンドに変換し、このコマンドを外部コントローラ110に通信する。AGCPに従う外部コントローラ110は、PIN 7 HIGHコマンドを待ち、その後、接続されたLEDをオフに切り替えるために、ピン6をロウにセットする。したがって、上の例では、リモートコーディングサーバ135上のプログラムは、外部コントローラ110上でAGCPを正しく実施するように準備されなければならない。
ビジュアルコントローラモジュール122は、外部コントローラ110のトポロジを表す、外部コントローラ110のビジュアル表現をも生成する。下でさらに説明するように、ビジュアル表現は、ピンレイアウトとすることができる。選択が、ピンレイアウト内で行われ、選択されたピンをプログラム内の変数に関連付ける。たとえば、ユーザは、センサ(たとえば、温度計、光ダイオード、マイクロホン、電圧計、および類似物)およびアクチュエータ(モータ、リレー、および類似物)などのピンに結合されたある種の周辺エレクトロニクスのピンレイアウトに関して明記することができる。
ビジュアルコントローラモジュール122は、選択された動作の機能に対応する所定のフィールド内でプログラムのための追加パラメータを受信する。その後、ビジュアルコントローラモジュール122は、選択された動作、ピンデータ、およびパラメータを有する、コントローラのネイティブ言語で記述されたパッケージ化されたプログラムを自動的に生成するためにIDE 118と通信し、メモリ115内に記憶されるプログラムを外部コントローラ110に通信する(矢印145として図示)。いくつかの実施形態では、IDEは、リモートプロセス呼出しの実行のためにリモートコーディングサーバ135にアクセスするために、対応するヘッダファイルおよび単純化された命令を送信することができる。
動作中に、ユーザは、結合された温度センサがある温度値に達する時にテキストメッセージ(たとえば、あるフィールド内で指定される)を送信する動作を選択することができる。ユーザは、外部コントローラ110を温度センサに物理的に結合するピンを選択する。ユーザは、インターネット154にアクセスするために、接続された通信回路網に対応するピンを選択することもできる。完了したならば、IDE 118は、リモートコーディングサーバ135上に記憶されたテキストメッセージプロセスへのリモートプロセス呼出しを使用してテキストメッセージを送信するための、関連するピンおよびフィールドデータを有するプログラムを自動的にコンパイルする。その後、リモートコーディングサーバ135は、インターネット154を介して命令を受信し、外部サーバ140を介してテキストメッセージを送信する(矢印160として図示)ために所定のAPIにアクセスする。外部コントローラ110は、自動的に生成されたコントローラプログラム(AGCP)の独立実行のためにユーザデバイスから切断され得る。
外部コントローラ110が、インターネット154から開始されるデータを受信する実施形態では、リモートコーディングサーバ135は、AGCPと互いに整合的に作用するために、対応するプログラムを記憶する。外部コントローラ110が、FACEBOOK(登録商標)ポストが受信されるたびにLEDを光らせる例では、リモートコーディングサーバ135は、ユーザ証明書に基づいてFACEBOOK(登録商標)にログインする、事前に生成されたプロセスまたは記憶されたプログラムを有する。このプログラムは、その後、FACEBOOK(登録商標)通知をリスンし、その通知を、コントローラのネイティブ言語の対応する外部コントローラ110コマンド(たとえば、PIN 8 HIGH)に変換する。このプログラムは、インターネット154を介して外部コントローラ110にPIN 8 HIGHコマンドを送信する。その後、外部コントローラ110は、メモリ115内に記憶されたAGCPを使用してPIN 8 HIGHコマンドを処理する。
図2は、本発明の1つまたは複数の実施形態による、対話的ハードウェアビジュアライゼーションを用いてデバイス固有ハードウェアをプログラミングするための例示的なグラフィカルユーザインターフェース(GUI)200の図である。GUI 200は、上で図1で説明されたシステム100での動作を企図する。
GUI 200は、上で図1で議論されたIDE 118の一部として提示される。GUI 200は、サービスモジュール205と、ピンレイアウト210と、動作パラメータモジュール215および225と、コントローラレイアウトモジュール230と、アプリケーション選択モジュール235と、コーディングウィンドウ240と、展開ボタン245とを含む。サービスモジュール205は、ユーザによって入力されたパラメータだけを使用して特定の動作をプログラミングできるように、GUI 200を介してユーザによって選択され得る動作を編成し、提示するための命令を含む。サービスモジュール205は、IDE 118、リモートコーディングサーバ135、および外部サーバ140によって提供される動作のユーザ選択可能なバンドルを生成する。いくつかの実施形態では、サービスモジュール205は、リモートコーディングサーバ135から、動作の更新されたリストをダウンロードする。
コントローラレイアウトモジュール230は、IDE 118によってプログラムされ得る様々なコントローラタイプを記憶し、認識する。コントローラレイアウトモジュール230は、プログラムとインターフェースし、プログラムを様々なコントローラ上で記憶するために、コンパイルする言語とデータ通信命令とを判定する。コントローラレイアウトモジュール230は、ユーザによるプログラミング中にIDE 118およびUIを用いてピンレイアウト210とインターフェースし、これを生成するための命令および詳細をも含む。下でさらに説明するように、ピンは、選択された動作220に関連付けるためにユーザによって選択される。追加の実施形態は、ピンレイアウト210内に示されているように、選択された動作を展開するために必要なピン数のカウント特徴を含む。ユーザの選択したまたは自動的に判定された外部コントローラ110が、コントローラレイアウトモジュール230によって識別される(ARDUINO YUNとして図示)。
アプリケーション選択モジュール235は、外部コントローラ110に対応するコントローラレイアウトモジュールのために自動的に生成される少なくとも1つのプログラムに命名し、これを記憶するためのものである。説明される実施形態では、アプリケーションは、外部コントローラ110に結合された温度センサによって特定の温度が感知される時にテキストメッセージを送信する。生成されるプログラムに対応するコードは、コーディングウィンドウ240内に表示される。コーディングウィンドウ240は、外部コントローラ110およびメモリ115に記憶される前にコードに対する特定のカスタマイズを行うために、ユーザによって編集されることも可能である。展開ボタン245の選択は、プログラムを外部コントローラ110のネイティブ言語に変換し、このプログラムを通信する。いくつかの実施形態では、変換を、コンパイルする機能とすることができる。オプションの実施形態は、自動的に生成されたコードを異なるファイルフォーマット(たとえば、.js、.txt、.xml、および類似物)にエクスポートするためのダウンロードボタン250を含む。当業者は、本明細書で説明されるボタンが、任意のユーザ選択可能なアイコン、テキスト、またはビジュアルインターフェースを含むことを認めるはずである。
たとえば、選択された動作220は、ショートメッセージサービス(SMS)テキストメッセージを送信することである。テキストメッセージの宛先番号は、パラメータモジュール225内の対応するフィールドに入力される。さらに、選択されたピンは、やはりサービスモジュール205から選択される動作(たとえば、温度感知)に関するパラメータモジュール225内の事前に決定されたフィールド内で指定されるアナログ温度センサに対応する。温度感知に必要な追加パラメータは、動作パラメータモジュール215内で要求される。GUI 200は、選択された動作に必要なパラメータデータだけを表示する。
動作中に、SMSテキストメッセージは、リモートコーディングサーバ135上のリモートプロセスを呼び出すことによって送信される。外部コントローラ110は、記憶された命令(たとえば、ヘッダファイル)を介してリモートコーディングサーバ135に通信する。このプロセスは、ユーザが指定した電話番号に関してゲートウェイおよびルックアップテーブルを突き止めることによってSMSテキストメッセージを送信し、SMSサーバにアクセスするために、所定のコードを展開する。
例示的なシステムでは、このシステムは、コード生成サービスとしてTEMBOOサービスを使用することができる。TEMBOOクライアント(GUI 200)は、ARDUINOコントローラ上にフラッシュ書込されたスケッチプログラムを走らせつつあるARDUINOコントローラ内で接続性クライアントとして使用される。このシステムは、事前に生成されたコードおよび動作(たとえば、2000個を超える「スマートコードプロセス」)を有するTEMBOOコード生成サーバに到達するのに例示的なHTTPS通信プロトコルを使用する。事前に生成されたコードは、TEMBOOサーバ上のスマートプロセスへの呼出しを含むARDUINOコントローラにフラッシュ書込されたスケッチを実施するのに、データベース、コードユーティリティ、API、およびカスタムプロセスを利用する。ARDUINOは、本明細書で議論される実施形態と共に使用するために使用可能であるか使用可能になる可能性がある、無数の可能なマイクロプロセッサおよびコントローラの一例を表す。
図3は、本発明の1つまたは複数の実施形態による、対話的ハードウェアビジュアライゼーションの例示的なグラフィカルユーザインターフェース(GUI)の図である。この図は、上で図2で説明したピンレイアウト210に似た例示的なピンレイアウト305である。ピンレイアウト305は、上で議論したAGCPの動作に関連付けるために選択された、強調表示されたまたは強調されたピン3および4を含む。強調されたピンは、様々な色、シンボル、発光、形状、また選択されていないか動作に対応しないピンからのビジュアルな区別の他の形であるものとすることができる。いくつかの実施形態では、強調されたピンは、プログラミングにおける進行を示すために強調の組合せを使用する。言い換えると、ピンを、接続された周辺機器のための変数パラメータが欠けている時に光る赤、変数パラメータが入力済みの場合に緑とすることができる。たとえば、モータ負荷を測定する動作での検出された電流引出など、すべてのパラメータが対応する動作パラメータモジュール215内に入力されるまで、モータへの結合のために選択されているピンを、赤く光らせることができる。
選択されたピン310は、入力ピン315、出力ピン、クロック信号、および類似物など、自動生成されるプログラム内で役割を指定され得る。いくつかの実施形態では、ピンレイアウトのより高速のユーザ認識のために、ピンに、カスタマイズされた機能のラベル(たとえば、ライト、温度計、モータなど)を付けることができる。選択されたピン310は、アナログ信号またはデジタル信号など、信号タイプ320を受け取りまたは出力するようにもセットされる。選択されたピン、信号タイプ、および動作データは、上でGUI 200で議論されたAGCP内に統合される。
したがって、GUI 200全体は、ピンレイアウト305を介する外部コントローラ110のビジュアライゼーションを可能にすると同時に、外部コントローラ110上でユーザによって望まれる選択された動作220のプログラミングを単純化する。表示されたピンレイアウト305上で行われる選択は、物理ピン機能と、ピンが出力ピン、入力ピン、クロック、および類似物として指定されるのかどうかとのビジュアル調整を可能にする。ビジュアルキューは、外部コントローラ110上でプログラムを正しく実行するために、ユーザがネットリストに従ってまたは回路図をコントローラとペアにするのに費やす時間の長さを減らす。
図4は、本発明の1つまたは複数の実施形態による、リモートサービスと相互作用する自動的に生成されるデバイスプログラムを実行する外部コントローラ110によって実行される方法400の流れ図である。方法400は、リモートコーディングサーバ135、外部コントローラ110、およびGUI 200によって実施される。いくつかの実施形態では、GUI 200は、ホストコンピュータなどのユーザデバイス105上にある。
方法400は、ステップ405で開始され、ステップ410に継続する。ステップ410では、選択されたコントローラレイアウト、選択された動作、パラメータに基づいて、GUI 200およびIDE 118を介してプログラムが自動的に生成される。GUI 200を介して、ユーザは、選択されたコントローラのビジュアルピンレイアウト210上でピンを選択し、ピンに接続される周辺機器のタイプを選択することができ、IDE 118内で、外部コントローラ110のためのコードを生成するために、変数データを入力することができる。生成されるプログラムは、リモートコーディングサーバ135上の動作へのプロセス呼出しおよびローカルコントローラ機能に関するネイティブコードを含む。たとえば、生成されるプログラムは、図2におけるように外部コントローラ110が31℃を超える温度を検出する時に必ずテキストメッセージを送信するためのものとすることができる。したがって、プログラムは、温度センサに結合された外部コントローラ110の指定されたピン上の電圧を読み取るローカルコマンドに基づいて、リモートコーディングサーバ135によって(たとえば、ランタイムエンジンを介して)実行されるテキストメッセージの送信へのプロセス呼出しを含む。
AGCPは、外部コントローラ110に無線で(たとえば、Wi-Fi、セルラ、および類似物)または有線で(たとえば、USB、CAT5、および類似物)送信され得る。いくつかの実施形態では、メモリ115は、リモートコーディングサーバ135にアクセスするためのヘッダファイルを含めて、「フラッシュ書込」されまたはプログラムによって他の形で完全に上書きされる。いくつかの実施形態では、外部コントローラ110上へのプログラムの記憶は、コードを異なるコンピュータ言語(たとえば、機械語)に変換しまたはコンパイルすることを含む。
ステップ415では、外部コントローラ110のプログラムが、メモリ115上に記憶される。ステップ420では、AGCPが、外部コントローラ110上で実行を開始する。いくつかの実施形態では、外部コントローラ110は、関連するアタッチされた周辺エレクトロニクス120からサンプリングし、データを生成する。この例を続けると、外部コントローラ110は、環境温度条件に関して温度センサによって生成されるアナログ電圧レベルの読取を開始する。
方法400は、ステップ425に継続して、TEMBOOサービスなどのコード生成サービスを有するリモートコーディングサーバ135にリモートプロセス呼出しおよび関連する変数データを送信する。例を継続すると、温度しきい値を超えるものとして温度が読み取られたならば、外部コントローラ110は、リモートプロセス呼出しを実行して、リモートコーディングサーバ135上の事前に生成されたコードとして記憶されたテキストメッセージ動作への呼出しを通信することを介してテキストメッセージを送信する。
ステップ430では、リモートコーディングサーバ135が、リモートコーディングサーバ135上に記憶された事前に生成されたコードに変数データを挿入することによって、事前に生成されたコードを実行する。例を継続すると、リモートコーディングサーバ135は、SMSテキストメッセージを送信するための、事前に生成されたコードを取り出し、テキストストリングメッセージおよびGUI 200を使用する自動プログラム生成中に指定された受信者電話番号を挿入する。その後、リモートコーディングサーバ135は、電話番号に関連する受信者デバイスがテキストメッセージを受信するように、関連するインターネットプロトコルおよびセルラプロトコルを使用してネットワークにコードを展開する。
ステップ435では、外部コントローラ110が、リモートコーディングサーバ135サービスから、外部コントローラ110にネイティブな言語の、関連する変数データなどのデータを受信する。リモートコーディングサーバ135は、プロセス呼出しを実行するのに使用されるプログラミング言語からネイティブ言語へデータを変換することができる。外部コントローラ110は、プログラミング中にユーザによって選択された外部コントローラ110による効率的な処理のためにコード生成サービスによってネイティブフォーマット(たとえば、2進データ、ハイまたはロウの信号、数値、ストリング、および類似物)にフォーマットされた関連する変数データを受信する。例を継続すると、ユーザプログラムは、テキストメッセージが成功して送信される時に、ピン5に結合されたLEDを光らせる命令をも含むことができる。そのような場合に、変数データは、ピン5をハイにセットするコードを含む。代替実施形態では、変数データは、AGCPを実行するために外部コントローラ110によって値に復号されるデータとすることができる。そのような例では、「51」を、数値51に対応するデータをリスンする外部コントローラ110に送信することができ、この外部コントローラ110は、その後、ローカルの記憶された論理を使用して、第1の桁をピン番号として、第2の桁をハイ(「1」)またはロウ(「0」)のいずれかとして解析しまたは復号する。
ステップ440では、外部コントローラ110が、リモートコーディングサーバ135から受信されたデータを使用してAGCPの実行を継続する。例を終了すると、外部コントローラ110は、ピン5およびグラウンドに結合されたLEDを光らせるためにピン5に電圧バイアスをかけるために、外部コントローラ110に結合されたローカル電力を選択的にリダイレクトする。方法400は、ステップ445で終了する。
図5は、本発明の1つまたは複数の実施形態による、図2の例示的GUI 200との自動デバイスプログラム生成相互作用の例示的な方法500の流れ図である。GUI 200は、外部コントローラ110をプログラムするためにユーザデバイス105によって実施される。
この方法は、ステップ505で開始され、ステップ510に継続する。ステップ510では、リスト、アイコンの選択可能なグループ、および類似物として表示された事前に決定された複数のコントローラから選択されたものとしてコントローラのタイプを判定する。コントローラを選択することによって、ビジュアルコントローラモジュール122は、既知のライブラリ、ピン構成、ピン動作、最大電圧/電流許容範囲、クロック周波数、および類似物など、選択されたコントローラに独自の詳細を取り出し、投入する。いくつかの実施形態では、選択の判定は、ユーザデバイス105に接続された外部コントローラ110のタイプを自動的に検出することに基づく。
次に、ステップ515では、選択されたコントローラのビジュアルレイアウトをGUI 200内に表示する。ビジュアルレイアウトは、外部コントローラ110をプログラミングするために選択可能であり、対話的であるピンレイアウト210を含む。いくつかの実施形態では、ピンは、プログラム内の他の選択された動作で使用された割り当てられた機能に関して強調表示される。他の実施形態では、付随するマイクロコントローラデータシートからの追加の表示されるデータを抽出し、投入して、外部コントローラ110のビジュアライゼーションのプログラミングおよび生成においてユーザを支援することができる。
次に、ステップ520では、事前に決定された動作の選択において行われた判定をGUI 200内で受け取る。事前に決定された動作は、外部サーバ140上の外部電子サービスに関してサービスモジュール205によって提示されるサービスのバンドルの中での選択、および外部コントローラ110に関する事前に決定されたローカル機能または電子サービスとローカル機能との組合せを含む。たとえば、ツイートすることを、外部サービスとして選択することができ、アタッチされたプッシュボタンからの入力(たとえば、2つのピンにまたがる短絡)をリスンすることを、ローカル機能とすることができる。したがって、組合せの例は、プッシュボタンが押されるたびに特定のメッセージをツイートすることになるはずである。
次に、ステップ525では、ユーザによって入力される動作に関するパラメータデータを、事前に決定されるフィールドまたはドロップダウンメニューを使用して受け取る。追加の実施形態は、ラジオボタン、チェックボックス、ファイルアタッチメント、およびIDE 118内の他の入力インターフェースを選択することを含む。他の実施形態では、パラメータデータは、外部データベースから取り出される。プログラムを生成するための変数データとして動作データだけを受け入れることによって、所望の動作および動作パラメータだけが、知られる必要があるので、ユーザの展望からのプログラミングが、ビジュアル的に単純化される。より高度なソフトウェア開発者またはユーザは、関連するコーディングウィンドウ240内で行われる選択および入力に対応する生成されたコードを編集することができる。その後、方法500は、ステップ530に継続する。
ステップ530では、選択された動作のための通常の基本動作(たとえば、電力、クロック、通信、メモリ、および類似物)に関するピン以外に、外部コントローラ110のそれぞれのピンへのローカル外部接続があるかどうかを判定する。追加の接続がないと判定される場合には、方法500は、ステップ550に継続して、別の動作がAGCPに挿入されなければならないかどうかを判定する。
しかし、追加の接続が、選択された動作のために行われなければならない場合には、方法500は、ステップ535に継続する。ステップ535では、選択された動作の対応するピンに関して、ピンレイアウト210上でピンを選択する。次に、ステップ540では、選択された動作内で外部コントローラ110のためのピンを表す言語を関連付けることによって、ピン選択を動作に割り当てる。たとえば、コントーラ内で入力のためにピン5が選択される場合に、選択されたコントローラのためのコマンドを、「PIN IN 5」とし、選択された動作に関してコーディングウィンドウ240に挿入することができる。追加の実施形態では、ステップ540は、複数の動作が外部コントローラ110上の1つのピンの使用を必要とする可能性がある時などに、生成されるプログラム内の他の選択された動作のためにもピン選択を割り当てる。
その後、方法500は、ステップ545に継続して、動作呼出しを終了するために、ピン選択および割当を、フィールドからの要求されたデータパラメータと統合する。例を継続すると、「if then」ステートメントが、選択されたピンを挿入することによってプロセス動作のために作成される。サンプルコードは、コーディングウィンドウ240内で、「IF PIN IN 5 == 1 THEN Temboo.Tweet ('Little Red Button Pushed!')」のように見えるものとすることができる。代替実施形態は、選択された動作が多数のピンを利用するかどうかに依存して、より多くのピン選択を含むことができる。この方法は、ステップ550に継続する。
ステップ550では、方法500は、追加の動作をAGCPに追加しなければならないのかどうかを判定する。追加の動作を追加しなければならない場合には、方法500は、ステップ520に戻る。しかし、追加の動作を追加する必要がない場合には、ステップ555で、動作および動作データをパッケージ化するかまたは統合する。
ステップ555では、すべての動作を、外部コントローラ110上での記憶またはこれへのフラッシュ書込のためにパッケージ化する。パッケージ化は、ファイルを選択されたコントローラによって受け入れられるネイティブフォーマットにコンパイルすることまたは変換することを含む。追加の実施形態は、リモートコーディングサーバ135にアクセスするための命令を含むヘッダファイルを含む。いくつかの実施形態では、コンパイルされるプログラムをパッケージ化する時に、そのプログラムおよび選択された動作の実行に必要なコードライブラリも、パッケージ化される。たとえば、動作が、インターネット接続を必要とする場合には、HTTPライブラリまたはHTTPSライブラリを含めなければならず、あるいは、マルチスレッディングが、動作のために必要である場合には、選択されたコントローラのためにプログラムを変換する前に、別のライブラリが、コンパイルされ一緒にリンクされるために含まれなければならない。
ステップ560では、生成されたプログラムを外部コントローラ110に記憶するかまたはフラッシュ書き込みする。ステップ565では、コントローラが、外部コントローラ110上でAGCPを実行する。いくつかの実施形態では、AGCPの実行は、上で議論した選択された動作に対応するプロセスへのリモートプロセス呼出しを含む。プロセスは、インターネット154または他のネットワークを介して外部コントローラ110からリモートコーディングサーバ135上に展開される。さらに依然として、リモートコーディングサーバ135による処理の後に、外部コントローラ110にネイティブな言語で応答データを返す実施形態がある。方法500は、ステップ570で終了する。
図6は、本発明の1つまたは複数の実施形態による、図2の例示的GUI 200を介してプログラムされた外部コントローラ110によるリモートプロセス呼出しのためにコーディングサーバによって実行される例示的な方法600の流れ図である。
方法600は、リモートコーディングサーバ135が外部サーバ140上の外部サービスからデータを受信する時に発生する。リモートコーディングサーバ135は、受信されたデータを処理し、それに従って、リモートコーディングサーバ135上に記憶されたプログラムに基づいて、変換されたデータを外部コントローラ110に返す。いくつかの実施形態では、記憶されたプログラムは、外部コントローラ110上のAGCPと共に調整される。
方法600は、ステップ605で開始され、ステップ610に継続し、ここで、外部サーバ140が、インターネットからサービスデータを受信するか、またはリモートコーディングサーバ135上のプロセスに対応するデータを生成する。外部サービスは、リモートコーディングサーバ135によって以前に認証されたものとされ得る。たとえば、AGCPは、電子メールサーバが新しい電子メールメッセージを受信するたびに、外部コントローラ110に結合されたLEDを光らせることができ、リモートコーディングサーバ135は、電子メール受信トレイ通知をチェックする/受信することを認可されなければならない。代替の例は、FACEBOOK(登録商標)ステータスに対するコメントが行われる時に、LEDを光らせるはずであり、これは、FACEBOOK(登録商標)認証証明書を記憶することをも必要とする。ステップ615では、外部サーバ140が、リモートコーディングサーバ135(たとえば、TEMBOOサービス)にデータを送信する。
ステップ620では、リモートコーディングサーバ135が、外部サーバ140からサービスデータを受信する。ステップ625では、リモートコーディングサーバ135が、サービスデータを、プログラム論理ライブラリ内のプロセスおよびリモートコーディングサーバ135上に記憶されたユーザプログラムと照合する。プログラム論理ライブラリは、事前に生成されたコードを含むことができる。事前に生成されたコードは、関連付けられたサービス(たとえば、電子メール、FACEBOOK(登録商標)、テキストメッセージ、および類似物)または論理動作(たとえば、カウント、if/then条件ステートメント、および類似物)に従って編成される。例を継続すると、プロセスは、GUI 200および外部コントローラ110に従って記憶されたプログラムに従ってリモートコーディングサーバ135上に記憶されたユーザアカウントまたは受信者電子メールアドレスと一致する電子メール通知である。上の例では、ユーザは、ユーザアカウントまたは、外部サービスからのサービスデータをリスンするリモートコーディングサーバ135上に記憶されたプログラムを有することができる。
ステップ630では、変数のパラメータデータを、プログラム論理ライブラリに従ってサービスから抽出する/解析する。変数のデータまたはパラメータデータは、追加処理のための事前に生成されたコードへの挿入に備えてフィルタリングされる。フィルタリングおよび挿入は、コーディング構文内の事前に決定された関係(たとえば、IF-THEN、変数タイプ、式、および類似物)およびプログラム内で指定される動作に基づく。上の例を継続すると、電子メール通知サービスデータは、プログラム論理ライブラリ内の所定のプロセスによって要求されない、受信時刻、メッセージトピック、メッセージ本体などの追加情報を含む場合がある。
ステップ635では、ランタイムエンジンを介してプログラムデータを生成するために、記憶された事前に生成されたプロセスおよびプログラムに関連する機能に従って追加の動作を実行することによって、解析されたサービスデータに基づいて追加の処理を実行する。プログラムは、リモートコーディングサーバ135上の方法400および500で議論されたAGCPに関連付けられる。たとえば、プログラム論理ライブラリは、メッセージに関して他の電子メールアカウントを同時にチェックするためのパラメータを有することができる。
ステップ640では、リモートコーディングサーバ135が、リモートコーディングサーバ135上に記憶されたプログラムが1つまたは複数の外部サーバ140(たとえば、TWITTER(登録商標)、EBAY、緊急テキスト通知、および類似物)からの追加サービスデータを呼び出すべきかどうかを判定する。プログラムが追加サービスデータを必要とすると判定される場合には、方法600は、ステップ610に戻る。しかし、追加サービスデータが要求されないとの判定が行われる場合には、方法600はステップ645に進む。
ステップ645では、ステップ635でのプログラム論理からのプログラムデータを、プログラムのターゲットコントローラのためのネイティブ言語または信号に変換する。ターゲットコントローラは、プログラム内でまたはユーザアカウントプリファレンスに従って指定され得る。ステップ650では、変換されたプログラムデータを外部コントローラ110に送信する。データは、リモートコーディングサーバ135の通信回路を使用して送信される。変換されたプログラムデータは、効率的な処理をさらに提供するために外部コントローラ110によって内部的に生成されかつ/または期待されるはずのデータから実質的に区別不能とされ得る。
ステップ655では、外部コントローラ110が、変換されたプログラムデータを受信する。変換されたプログラムデータは、ネットワーク、インターネット、または直接接続を介して受信され得る。次に、ステップ660では、変換されたプログラムデータが、外部コントローラ110上でたやすく処理される。ステップ665では、外部コントローラ110が、メモリ115内の記憶された命令を実行する。いくつかの実施形態では、記憶された命令は、変換されたデータを使用するAGCPに対応する。その後、方法600は、ステップ670で終了する。
図7は、本発明の1つまたは複数の実施形態による、例示的なコンピューティングシステム700内のモジュールのブロック図である。このコンピュータシステムは、前述の実施形態のサーバまたは電子デバイスを含む、実質的に同様の構造を含む。
自動電子デバイスプログラム生成のための方法および装置の様々な実施形態。1つのそのようなコンピュータシステムは、図1〜図6に示された要素または機能性のいずれかを様々な実施形態内で実施することができる、図1によって示されるシステム100である。様々な実施形態では、コンピュータシステム700を、上で説明された方法を実施するように構成することができる。コンピュータシステム700は、上で説明された実施形態の任意の他のシステム、デバイス、要素、機能性、または方法を実施するのに使用され得る。図示の実施形態では、コンピュータシステム700は、様々な実施形態でプロセッサ実行可能プログラム命令722(たとえば、プロセッサ710によって実行可能なプログラム命令)として方法400、500、および600を実施するように構成され得る。
図示の実施形態では、コンピュータシステム700は、入出力(I/O)インターフェース730を介してシステムメモリ720に結合された1つまたは複数のプロセッサ710a〜710nを含む。コンピュータシステム700は、入出力インターフェース730に結合されたネットワークインターフェース740と、カーソル制御デバイス760、キーボード770、およびディスプレイ780などの1つまたは複数の入出力デバイス750とをさらに含む。いくつかの実施形態では、キーボード770を、タッチスクリーン入力デバイスとすることができる。
様々な実施形態では、コンポーネントのいずれかをシステムによって利用して、上で説明したファームウェアを仮想化することができる。様々な実施形態では、ユーザインターフェースを生成し、ディスプレイ780上に表示することができる。いくつかの場合に、諸実施形態を、コンピュータシステム700の単一のインスタンスを使用して実行することができると同時に、他の実施形態では、複数のそのようなシステムまたはコンピュータシステム700を構成する複数のノードを、様々な実施形態の異なる部分またはインスタンスをホスティングするように構成できることが企図されている。たとえば、一実施形態では、いくつかの要素を、他の要素を実施するノードとは別個のコンピュータシステム700の1つまたは複数のノードを介して実施することができる。別の例では、複数のノードが、分散された形でコンピュータシステム700を実施することができる。
異なる実施形態では、コンピュータシステム700を、パーソナルコンピュータシステム、メインフレームコンピュータシステム、ハンドヘルドコンピュータ、ワークステーション、ネットワークコンピュータ、アプリケーションサーバ、ストレージデバイス、スイッチ、モデム、ルータなどの周辺デバイス、または一般に任意のタイプのコンピューティングデバイスもしくは電子デバイスを含むがこれに限定されない様々なタイプのデバイスのいずれかとすることができる。
様々な実施形態では、コンピュータシステム700を、1つのプロセッサ710を含むユニプロセッサシステムまたは複数のプロセッサ710(たとえば、2つ、4つ、8つ、または別の適当な個数)を含むマルチプロセッサシステムとすることができる。1つのプロセッサ710を含むユニプロセッサシステムは、プログラムの同時データの処理および実行のために複数のプロセッサに見えるように単一のプロセッサの機能性を分割することができる。プロセッサ710は、命令を実行することができる任意の適切なプロセッサとすることができる。たとえば、様々な実施形態において、プロセッサ710は、様々な命令セットアーキテクチャ(ISA)のいずれかを実施する汎用プロセッサまたは組込みプロセッサとすることができる。マルチプロセッサシステムでは、プロセッサ710のそれぞれは、同一のISAを共通して実施することができるが、必ずしもそうとは限らない。
システムメモリ720は、プロセッサ710によってアクセス可能なプログラム命令722、ファームウェア733、および/またはデータ732を記憶するように構成され得る。様々な実施形態では、システムメモリ720は、スタティックランダムアクセスメモリ(SRAM)、シンクロナスダイナミックRAM (SDRAM)、不揮発性/フラッシュタイプのメモリ、または任意の他のタイプのメモリなど、任意の適切なメモリ技術を使用して実施され得る。図示の実施形態では、上で説明された実施形態の要素のいずれかを実施するプログラム命令およびデータを、システムメモリ720内に記憶することができる。他の実施形態では、プログラム命令および/またはデータを、システムメモリ720またはコンピュータシステム700とは別々の異なるタイプのコンピュータアクセス可能媒体または同様の媒体上で受信するか、送信するか、または記憶することができる。
一実施形態では、入出力インターフェース730を、プロセッサ710、システムメモリ720、および、ネットワークインターフェース740または入出力デバイス750などの他の周辺インターフェースを含むデバイス内の任意の周辺デバイスとの間の入出力トラフィックを調整するように構成することができる。いくつかの実施形態では、入出力インターフェース730は、任意の必要なプロトコル、タイミング、または他のデータ変換を実行して、データ信号をあるコンポーネント(たとえば、システムメモリ720)から別のコンポーネント(たとえば、プロセッサ710)による使用に適するフォーマットに変換することができる。いくつかの実施形態では、入出力インターフェース730は、たとえばPeripheral Component Interconnect (PCI)バス標準規格またはUniversal Serial Bus (USB)標準規格の変形など、様々なタイプの周辺バスを介してアタッチされたデバイスに関するサポートを含むことができる。いくつかの実施形態では、入出力インターフェース730の機能を、たとえばノースブリッジおよびサウスブリッジなど、複数の別々のコンポーネントに分割することができる。また、いくつかの実施形態では、システムメモリ720へのインターフェースなど、入出力インターフェース730の機能性の一部またはすべてを、プロセッサ710内に直接に組み込むことができる。
ネットワークインターフェース740は、コンピュータシステム700と1つもしくは複数の外部システムなどのネットワーク(たとえば、ネットワーク790)にアタッチされた他のデバイスとの間またはコンピュータシステム700のノードの間でデータを交換することを可能にするように構成され得る。様々な実施形態では、ネットワーク790は、ローカルエリアネットワーク(LAN)(たとえば、イーサネット(登録商標)または会社ネットワーク)、広域ネットワーク(WAN)(たとえば、インターネット)、無線データネットワーク、セルラネットワーク、Wi-Fi、何らかの他の電子データネットワーク、またはその何らかの組合せを含むがこれに限定されない1つまたは複数のネットワークを含むことができる。様々な実施形態では、ネットワークインターフェース740は、たとえば任意の適切なタイプのイーサネット(登録商標)ネットワークなど、有線または無線の一般的なデータネットワークを介するか、アナログ音声ネットワークもしくはデジタルファイバ通信ネットワークなどの遠隔通信/テレフォニネットワークを介するか、ファイバチャネルSANなどのストレージエリアネットワークを介するか、または任意の他の適切なタイプのネットワークおよび/もしくはプロトコルを介する、通信をサポートすることができる。
入出力デバイス750は、いくつかの実施形態で、1つもしくは複数のディスプレイ端末、キーボード、キーパッド、タッチパッド、タッチスクリーン、スキャニングデバイス、音声認識デバイスもしくは光学認識デバイス、または1つもしくは複数のコンピュータシステム700によってデータを入力するかもしくはデータにアクセスするのに適する任意の他のデバイスを含むことができる。複数の入出力デバイス750が、コンピュータシステム700内に存在することができるか、または、コンピュータシステム700の様々なノード上に分散され得る。いくつかの実施形態では、同様の入出力デバイスが、コンピュータシステム700から分離され得、ネットワークインターフェース740を介するなど、有線または無線の接続を介してコンピュータシステム700の1つまたは複数のノードと相互作用することができる。
いくつかの実施形態では、図示されたコンピュータシステムは、図3〜図5の流れ図によって示される方法など、上で説明された方法のいずれかを実施することができる。他の実施形態では、異なる要素およびデータを含めることができる。
当業者は、コンピュータシステム700が、単に例示的であって、実施形態の範囲を限定することが意図されていないことを認めるであろう。具体的には、コンピュータシステムおよびデバイスは、コンピュータ、ネットワークデバイス、インターネットアプライアンス、スマートフォン、タブレット、PDA、無線電話機、ページャ、および類似物を含む、様々な実施形態の示された機能を実行することのできるハードウェアまたはソフトウェアの任意の組合せを含むことができる。コンピュータシステム700は、図示されていない他のデバイスにも接続され得るか、またはその代わりに、独立型システムとして動作することができる。さらに、図示のコンポーネントによって提供される機能性を、いくつかの実施形態で、より少数のコンポーネント内で組み合わせるか、または追加のコンポーネント内で分散させることができる。同様に、いくつかの実施形態で、図示されたコンポーネントのいくつかの機能性が、提供されなくてもよく、かつ/または、他の追加の機能性を使用可能にすることができる。
当業者は、様々な項目が、使用されつつある間にメモリ内またはストレージ上に記憶されるものとして図示されたが、これらの項目またはそれらの一部が、メモリ管理およびデータ完全性の目的のためにメモリと他のストレージデバイスとの間で転送され得ることをも了解するであろう。代替案では、他の実施形態において、ソフトウェアコンポーネントの一部またはすべてが、別のデバイス上のメモリ内で実行し、コンピュータ間通信を介して図示のコンピュータシステムと通信することができる。システムコンポーネントまたはデータ構造の一部またはすべてを、適当なドライブによって読み取られるコンピュータアクセス可能媒体または携帯可能な物品上に記憶することもでき(たとえば、命令または構造化データとして)、その様々な例は、上で説明される。いくつかの実施形態では、コンピュータシステム700とは別々のコンピュータアクセス可能媒体上に記憶される命令を、コンピュータシステム700に、伝送媒体または、ネットワークおよび/もしくは無線リンクなどの通信媒体を介して伝えられる電気信号、電磁信号、もしくはデジタル信号などの信号を介して送信することができる。様々な実施形態は、コンピュータアクセス可能媒体上でまたは通信媒体を介して前述の説明に関連して実施される命令および/またはデータの受信、送信、または記憶をさらに含むことができる。一般に、コンピュータアクセス可能媒体は、磁気媒体または光媒体、たとえばディスクまたはDVD/CD-ROM、RAM(たとえば、SDRAM、DDR、RDRAM、SRAM、および類似物)、ROM、および類似物などの揮発性または不揮発性の媒体などの記憶媒体またはメモリ媒体を含むことができる
本明細書で説明される方法を、異なる実施形態で、ソフトウェア、ハードウェア、またはその組合せで実施することができる。さらに、方法の順序を変更することができ、様々な要素を、追加、並べ変え、組合せ、省略、または他の形で変更することができる。本明細書で説明されたすべての例は、非限定的な形で提示される。本開示の利益を有する当業者に明白になるはずであるように、様々な修正および変更を行うことができる。諸実施形態による実現は、特定の実施形態の文脈において説明された。これらの実施形態は、例示的であって限定的ではないことが意図されている。多数の変形形態、修正形態、追加、および改善が可能である。したがって、複数のインスタンスが、単一のインスタンスとして本明細書で説明されるコンポーネントについて提供され得る。様々なコンポーネント、動作、およびデータストアの間の境界は、多少任意であり、特定の動作は、特定の例示的構成の文脈において示される。機能性の他の割振りが、想像されており、以下の特許請求の範囲に含まれ得る。最後に、例の構成において別個のコンポーネントとして提示された構造および機能性を、組み合わされた構造またはコンポーネントとして実施することができる。上記および他の変形形態、修正形態、追加、および改善は、以下の特許請求の範囲で定義される実施形態の範囲に含まれ得る。
前述は、本発明の実施形態を対象とするが、本発明の他のおよびさらなる実施形態が、本発明の基本的な範囲から逸脱せずに考案され得、本発明の範囲は、以下の特許請求の範囲によって決定される。
100 自動デバイスプログラム生成システム
105 ユーザデバイス
108 CPU
110 外部コントローラ
112 サポート回路
114 メモリ
115 メモリ
116 オペレーティングシステム
118 IDE
120 周辺エレクトロニクス
122 ビジュアルコントローラモジュール
130 集積回路デバイス
135 リモートコーディングサーバ
140 外部サーバ
154 インターネット
200 GUI
205 サービスモジュール
210 ピンレイアウト
215 動作パラメータモジュール
220 選択された動作
225 動作パラメータモジュール
230 コントローラレイアウトモジュール
235 アプリケーション選択モジュール
240 コーディングウィンドウ
245 展開ボタン
250 ダウンロードボタン
305 ピンレイアウト
310 選択されたピン
315 入力ピン
320 信号タイプ
400 方法
500 方法
600 方法
700 コンピューティングシステム
710 プロセッサ
710a〜710n プロセッサ
720 システムメモリ
722 プロセッサ実行可能プログラム命令
730 入出力(I/O)インターフェース
732 データ
733 ファームウェア
740 ネットワークインターフェース
750 入出力デバイス
760 カーソル制御デバイス
770 キーボード
780 ディスプレイ
790 ネットワーク

Claims (12)

  1. 対応する外部コントローラに通信可能に結合されたユーザデバイス上のグラフィカルユーザインターフェース(GUI)内に表示された複数のコントローラの中からコントローラを決定するステップと、
    前記コントローラについて前記GUI内にユーザ対話的ピンレイアウトを生成するステップと、
    前記GUI内に、前記コントローラによる実行のための複数の動作を表示するステップと、
    前記コントローラのための前記複数の動作の中から動作を決定するステップであって、前記複数の動作はリモートコーディングサーバへの少なくとも1つのリモートプロセス呼出しを含む、ステップと、
    選択されたピンを前記動作のパラメータに関連付けるステップと、
    前記GUI内の少なくとも1つのデータ入力フィールドから前記動作のためのパラメータデータを受け取るステップと、
    前記ユーザ対話的ピンレイアウト、前記受け取られたパラメータデータ、および前記動作に基づいて前記コントローラのためのプログラムを生成するステップであって、前記プログラムは前記少なくとも1つのリモートプロセス呼出しを含み、前記少なくとも1つのリモートプロセス呼出しに従って、前記リモートコーディングサーバに記憶された事前に生成されたコードが実行される、ステップと、
    前記外部コントローラ上のメモリ内での記憶のために前記プログラムを送信するステップと
    を含む、デバイスプログラムの自動生成のためのコンピュータ実施される方法。
  2. 前記ピンを関連付けるステップは、前記動作に関して前記ピンに少なくとも1つの変数を割り当てるステップをさらに含む、請求項1に記載の方法。
  3. 前記ユーザ対話的ピンレイアウト内で選択されるピンは、選択されないピンの中で強調される、請求項1に記載の方法。
  4. 前記ピンを関連付けるステップは、前記ピンが異なる動作に以前に関連付けられたと判定するステップと、前記関連付けの通知を生成するステップとをさらに含む、請求項1に記載の方法。
  5. 前記GUIは、前記コントローラ上の前記ピンの選択およびこれへの関連付けのために少なくとも1つの周辺デバイスを表示するステップをさらに含む、請求項1に記載の方法。
  6. 前記少なくとも1つの周辺デバイスは、センサ、アンテナ、入力デバイス、発光デバイス、ディスプレイ、またはスピーカのうちの少なくとも1つである、請求項5に記載の方法。
  7. 前記動作は、前記ピンから生成されるデータを受信するように構成されたリモートコーディングサーバへの少なくとも1つのリモートプロセス呼出しをさらに含む、請求項1に記載の方法。
  8. 前記プログラムを送信するステップは、前記プログラムを前記コントローラのネイティブ言語に変換するステップをさらに含む、請求項1に記載の方法。
  9. ディスプレイと、
    プロセッサと、
    対応する外部コントローラに通信可能に結合された装置上のグラフィカルユーザインターフェース(GUI)内に表示された複数のコントローラの中でコントローラを決定し、前記コントローラについて前記GUI内にユーザ対話的ピンレイアウトを生成し、前記GUI内に、前記コントローラによる実行のための複数の動作を表示し、前記コントローラのための前記複数の動作の中から動作を決定し、ピンを前記動作のパラメータに関連付け、前記GUI内の少なくとも1つのデータ入力フィールドから前記動作のためのパラメータデータを受け取り、前記ユーザ対話的ピンレイアウト、前記受け取られたパラメータデータ、および前記動作に基づいて前記コントローラのためのプログラムを生成し、前記外部コントローラ上のメモリ内での記憶のために前記プログラムを送信するように構成されたビジュアルコントローラモジュールであって、前記複数の動作はリモートコーディングサーバへの少なくとも1つのリモートプロセス呼出しを含み、前記プログラムは前記少なくとも1つのリモートプロセス呼出しを含み、前記少なくとも1つのリモートプロセス呼出しに従って、前記リモートコーディングサーバに記憶された事前に生成されたコードが実行される、ビジュアルコントローラモジュール
    を含むプロセッサ実行可能命令を含むメモリと
    を含む、デバイスプログラムの自動生成のための装置。
  10. 前記ピンを関連付けることは、前記動作に関して前記ピンに少なくとも1つの変数を割り当てることをさらに含む、請求項9に記載の装置。
  11. 前記ユーザ対話的ピンレイアウト内で選択されるピンは、選択されないピンの中で強調される、請求項9に記載の装置。
  12. 前記ピンを関連付けることは、前記ピンが異なる動作に以前に関連付けられたと判定することと、前記関連付けの通知を生成することとをさらに含む、請求項9に記載の装置。
JP2016545976A 2014-01-10 2015-01-08 自動デバイスプログラム生成のための方法および装置 Active JP6581097B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201461926168P 2014-01-10 2014-01-10
US61/926,168 2014-01-10
PCT/US2015/010562 WO2015105936A1 (en) 2014-01-10 2015-01-08 Method and apparatus for automatic device program generation

Publications (2)

Publication Number Publication Date
JP2017502431A JP2017502431A (ja) 2017-01-19
JP6581097B2 true JP6581097B2 (ja) 2019-09-25

Family

ID=53521381

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016545976A Active JP6581097B2 (ja) 2014-01-10 2015-01-08 自動デバイスプログラム生成のための方法および装置

Country Status (8)

Country Link
US (1) US9619112B2 (ja)
EP (1) EP3092561A4 (ja)
JP (1) JP6581097B2 (ja)
KR (1) KR102304698B1 (ja)
CN (1) CN106170764B (ja)
CA (1) CA2931512C (ja)
SG (1) SG11201605563YA (ja)
WO (1) WO2015105936A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10997531B2 (en) 2007-09-11 2021-05-04 Ciambella Ltd. System, method and graphical user interface for workflow generation, deployment and/or execution
US9959103B2 (en) * 2010-11-19 2018-05-01 Microsoft Technology Licensing, Llc Code deployment assistance
JP6494610B2 (ja) 2013-06-18 2019-04-03 チャンベッラ・リミテッド コードの仮想化およびリモートプロセスコール生成のための方法および装置
SG11201805215UA (en) 2015-12-21 2018-07-30 Ciambella Ltd Method and apparatus for creating and managing controller based remote solutions
US11087249B2 (en) 2016-05-24 2021-08-10 Ciambella Ltd. Method and apparatus for triggering execution of a workflow over a network
US10798780B2 (en) 2016-08-22 2020-10-06 Ciambella Ltd. Method and apparatus for creating and managing controller based remote solutions
CN109891854B (zh) * 2016-08-22 2022-04-08 西安姆贝拉有限公司 用于创建和管理基于控制器的远程解决方案的方法和设备
CN108259199B (zh) * 2016-12-29 2020-04-21 大唐移动通信设备有限公司 一种自动化命令生成方法及装置
SG11201908483SA (en) 2017-03-14 2019-10-30 Ciambella Ltd Method and apparatus for automatically generating and incorporating code in development environments
US10592370B2 (en) * 2017-04-28 2020-03-17 Advantest Corporation User control of automated test features with software application programming interface (API)
EP3460594A1 (en) * 2017-09-26 2019-03-27 Vestel Elektronik Sanayi ve Ticaret A.S. Systems and methods for controlling operation of a home appliance
US10664636B2 (en) * 2017-12-20 2020-05-26 International Business Machines Corporation Pin number definition based analytics
US10264122B1 (en) * 2018-05-31 2019-04-16 RapdiDeploy, Inc. Emergency data gateway device
KR102098635B1 (ko) * 2018-06-20 2020-04-08 주식회사 리젠어스 기록매체에 저장된 프로그래밍 어플리케이션, 이를 포함하는 프로그래밍 시스템 및 이를 이용한 마이크로 콘트롤러 유닛의 프로그래밍 방법
KR101993858B1 (ko) * 2018-10-05 2019-06-27 주식회사 엔터핀 프로그램 개발 시스템 및 이를 이용한 개발 방법
CN109740282A (zh) * 2019-01-16 2019-05-10 杭州嘉楠耘智信息科技有限公司 一种芯片引脚配置方法及装置、设备、介质
KR102131918B1 (ko) * 2019-04-19 2020-07-08 주식회사 엔터핀 소프트웨어 개발 시스템 및 방법
DE102020118563A1 (de) * 2019-07-17 2021-01-21 Steering Solutions Ip Holding Corporation Middleware-system und -verfahren
US11405768B2 (en) 2019-10-16 2022-08-02 RapidDeploy, Inc. Data relay for multi-tenant emergency call system
CN111427567B (zh) * 2020-03-20 2023-08-18 杭州涂鸦信息技术有限公司 一种智能产品快速生成方法及其系统和设备
KR102185290B1 (ko) * 2020-05-07 2020-12-01 주식회사 엔터핀 소프트웨어 개발 시스템 및 방법
KR102185292B1 (ko) * 2020-05-07 2020-12-01 주식회사 엔터핀 소프트웨어 개발 시스템 및 방법
KR102185289B1 (ko) * 2020-05-07 2020-12-01 주식회사 엔터핀 소프트웨어 개발 시스템 및 방법
KR102185291B1 (ko) * 2020-05-07 2020-12-01 주식회사 엔터핀 소프트웨어 개발 시스템 및 방법
US11553618B2 (en) 2020-08-26 2023-01-10 PassiveLogic, Inc. Methods and systems of building automation state load and user preference via network systems activity
US20220334836A1 (en) * 2021-04-15 2022-10-20 Dell Products L.P. Sharing of computing resources between computing processes of an information handling system
KR102347203B1 (ko) * 2021-11-24 2022-01-03 조동건 개체-관계 다이어그램 정보에 기초한 프로그램 코드 자동 생성 방법

Family Cites Families (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5852733A (en) * 1996-12-16 1998-12-22 Chien; Yung-Ping S. Microcontroller development tool using software programs
DE19880536B4 (de) * 1997-03-11 2004-08-05 Mitsubishi Denki K.K. Visuelles Programmierverfahren und dieses Verfahren anwendendes Pogrammiersystem
US6065053A (en) * 1997-10-01 2000-05-16 Micron Electronics, Inc. System for resetting a server
US6401156B1 (en) * 1999-08-23 2002-06-04 Advanced Micro Devices, Inc. Flexible PC/AT-compatible microcontroller
US8176296B2 (en) * 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US6931288B1 (en) * 2001-04-16 2005-08-16 Rockwell Automation Technologies, Inc. User interface and system for creating function block diagrams
US8131827B2 (en) * 2001-05-09 2012-03-06 Rockwell Automation Technologies, Inc. PLC with web-accessible program development software
US7039892B2 (en) * 2001-07-24 2006-05-02 Hewlett-Packard Development Company, L.P. Systems and methods for ensuring correct connectivity between circuit designs
US7143360B1 (en) * 2001-10-29 2006-11-28 Cypress Semiconductor Corporation Pin-out connections/drive levels direct-set by drop down list
US8078970B1 (en) * 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US7086014B1 (en) * 2001-11-19 2006-08-01 Cypress Semiconductor Corporation Automatic generation of application program interfaces, source code, interrupts, and datasheets for microcontroller programming
US7010773B1 (en) * 2001-11-19 2006-03-07 Cypress Semiconductor Corp. Method for designing a circuit for programmable microcontrollers
US6715132B1 (en) * 2001-11-19 2004-03-30 Cypress Semiconductor Corporation Datasheet browsing and creation with data-driven datasheet tabs within a microcontroller design tool
US6966039B1 (en) * 2001-11-19 2005-11-15 Cypress Semiconductor Corp. Method for facilitating microcontroller programming
US7331047B2 (en) * 2003-11-25 2008-02-12 Microsoft Corporation Deterministic system and method for implementing software distributed between a desktop and a remote device
GB2411495A (en) * 2004-02-27 2005-08-31 Cyan Holdings Ltd Method and apparatus for generating configuration data
US20060020910A1 (en) * 2004-07-22 2006-01-26 Steven Schlanger Devices and methods for communicating with a microcontroller
US20060041854A1 (en) * 2004-07-22 2006-02-23 Steven Schlanger Devices and methods for programming microcontrollers
JP2006079447A (ja) * 2004-09-10 2006-03-23 Fujitsu Ltd 集積回路設計支援装置、集積回路設計支援方法及び集積回路設計支援プログラム
US20070174037A1 (en) * 2005-11-10 2007-07-26 Chuan-Po Ling Multiple-microcontroller emulation system, multiple-microcontroller integrated development environment, and method for the same
US7813909B2 (en) * 2006-05-03 2010-10-12 Sony Computer Entertainment Inc. Register mapping in emulation of a target system on a host system
US8028258B1 (en) * 2006-02-16 2011-09-27 Cypress Semiconductor Corporation Interactive graphical pin assignment
US7627838B2 (en) * 2006-04-25 2009-12-01 Cypress Semiconductor Corporation Automated integrated circuit development
US7886234B2 (en) * 2006-10-13 2011-02-08 Mediatek Inc. Systems and methods for creating embedded target images
US20080109782A1 (en) * 2006-10-18 2008-05-08 Utstarcom, Inc. Method and system for pin assignment
CN201017215Y (zh) * 2007-03-29 2008-02-06 王忠伟 一种终端控制器
WO2009073932A1 (en) * 2007-12-13 2009-06-18 Labtronics Technology Pty Ltd Application specific virtual real-time operating system compiler
US8099694B1 (en) * 2009-04-15 2012-01-17 Altera Corporation Interactive tool for contemporaneous design of integrated circuits having different device packages
CN102422263B (zh) * 2009-05-07 2016-03-30 赛普拉斯半导体公司 开发、编程和除错环境
CN102999322A (zh) * 2011-09-16 2013-03-27 深圳市吉阳自动化科技有限公司 一种工业控制器软件界面设计方法
KR20130115729A (ko) * 2012-04-13 2013-10-22 삼성전자주식회사 디스플레이장치, 리모컨 및 그 제어방법

Also Published As

Publication number Publication date
KR20160108306A (ko) 2016-09-19
KR102304698B1 (ko) 2021-09-28
CA2931512A1 (en) 2015-07-16
US20150199088A1 (en) 2015-07-16
EP3092561A4 (en) 2017-11-22
WO2015105936A1 (en) 2015-07-16
EP3092561A1 (en) 2016-11-16
CA2931512C (en) 2020-12-08
SG11201605563YA (en) 2016-08-30
CN106170764B (zh) 2019-12-10
US9619112B2 (en) 2017-04-11
JP2017502431A (ja) 2017-01-19
CN106170764A (zh) 2016-11-30

Similar Documents

Publication Publication Date Title
JP6581097B2 (ja) 自動デバイスプログラム生成のための方法および装置
US9619122B2 (en) Method and apparatus for automatic device program generation
KR102622652B1 (ko) 컨트롤러 기반 디바이스들의 그룹에 대한 자동 소프트웨어 개발을 위한 방법 및 장치
US10079874B2 (en) System, non-transitory computer readable medium storing a computer readable program for executing a method for an interaction logic through the system, and IoT interaction system
US10732969B2 (en) Method and apparatus for creating and managing controller based remote solutions
CN112335204B (zh) 由助理客户端设备本地控制和/或注册智能设备
JP6464162B2 (ja) ファームウェア仮想化のための方法および装置
CN105337787A (zh) 一种多服务器监控方法、装置和系统
CN110213163A (zh) 一种基于nginx和zuul的路由转发方法及装置
WO2020123692A2 (en) Internet of things system topology generation
CN107092474B (zh) 程序开发方法、etl处理方法及装置
CN106354966B (zh) 芯片ide工程文件转换及快速配置仿真调试环境的方法
US20230136504A1 (en) Method for generating application for controlling external electronic device and electronic apparatus for supporting the same
CN104572441A (zh) 移动应用功能测试的环境搭建方法、装置、服务器及系统
US20230102570A1 (en) System and method for scripting generators
CN109743355B (zh) 物联设备功能开发的方法、装置、计算机设备及存储介质
Frankston # APIFirst: How things speak to each other [Bits Versus Electrons]
CN104253839B (zh) 一种操作服务器的系统
Lakshmanan Internet Of Things (IoT) Application Simulation

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20181130

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20181210

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190306

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190401

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190701

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20190809

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190829

R150 Certificate of patent or registration of utility model

Ref document number: 6581097

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250