JP2012516515A - 通信システム及びプロトコル - Google Patents

通信システム及びプロトコル Download PDF

Info

Publication number
JP2012516515A
JP2012516515A JP2011548292A JP2011548292A JP2012516515A JP 2012516515 A JP2012516515 A JP 2012516515A JP 2011548292 A JP2011548292 A JP 2011548292A JP 2011548292 A JP2011548292 A JP 2011548292A JP 2012516515 A JP2012516515 A JP 2012516515A
Authority
JP
Japan
Prior art keywords
message
messages
user
memory
storing
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.)
Granted
Application number
JP2011548292A
Other languages
English (en)
Other versions
JP5667083B2 (ja
JP2012516515A5 (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 JP2012516515A publication Critical patent/JP2012516515A/ja
Publication of JP2012516515A5 publication Critical patent/JP2012516515A5/ja
Application granted granted Critical
Publication of JP5667083B2 publication Critical patent/JP5667083B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q10/00Administration; Management
    • G06Q10/10Office automation; Time management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/42Mailbox-related aspects, e.g. synchronisation of mailboxes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/226Delivery according to priorities

Landscapes

  • Engineering & Computer Science (AREA)
  • Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Entrepreneurship & Innovation (AREA)
  • Human Resources & Organizations (AREA)
  • Operations Research (AREA)
  • General Business, Economics & Management (AREA)
  • Marketing (AREA)
  • Data Mining & Analysis (AREA)
  • Quality & Reliability (AREA)
  • Tourism & Hospitality (AREA)
  • Physics & Mathematics (AREA)
  • Economics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Digital Computer Display Output (AREA)
  • Information Transfer Between Computers (AREA)
  • Mobile Radio Communication Systems (AREA)
  • Communication Control (AREA)
  • Stored Programmes (AREA)

Abstract

第1のデバイスが、第1のデバイスのユーザに、所定の順序で複数のメッセージを伝えられようにする通信システム及びプロトコルであって、複数のメッセージが第2のデバイスから第1のデバイスに提供されるまで、複数のメッセージ、その内容及びその所定の順序を第1のデバイスに知らせる必要はない。前記第1のデバイスのユーザは、第1のデバイスの必要最低限量のリソース(プロセッサのパワー及びメモリ等)を用いながら、メッセージを所定の順序のメッセージで順方向または逆方向に動かすことができる。
【選択図】図3

Description

本発明は、概して通信システム及びプロトコルに関し、より詳細には、デバイスがメッセージを当該デバイスのユーザに伝えることができ、メッセージの内容、順序、及び数をランタイム前に当該デバイスが知らなくて済む、通信システム及びプロトコルに関する。
多くの産業において、異なる分野の専門知識に属する企業同士が互いに共同し、各企業の能力を組み合わせて新製品を開発することがある。例えば、データセンタ用の無停電電源装置の設計で知られる企業が、メディアシステムサーバ及び制御デバイスの設計で知られる他の企業と協力し、他の企業のメディアシステムサーバ及び制御デバイスと統合したオーディオ及び/またはビデオシステム用の、電源の管理・保護のソリューションを提供することができる。このような共同製品の設計段階において、該製品の設計、特徴、及び性能等を反映した仕様をドラフトし、修正し、そして仕上げる。一度設計が仕上がると、共同製品のスケジュールに影響を与えずに、新規の特徴または機能性を製品に追加したり、または設計上の見落としを修正したりすることが困難になる。
通常、設計過程において早い段階で特定される(また、非常に頻繁に変更されたり、いずれ進展させたりする)共同製品の一部位は、ユーザインターフェースである。例えば、設計過程の早期段階において、共同製品が、ボタン、キー、ダイヤル、提示要素(例えば提示される行数、ステータスLED、ブザー等)、その他ユーザが利用可能な機能要素をいくつ有するか、及びそれらの機能性はどうするかについて、共同している企業は合意する必要がある。したがって、例えば共同製品が1行だけ提示するディスプレイや1つだけのボタンを有する場合、何らかのメッセージが存在する場合、例えば、製品に電源が投入された場合に、また、ユーザがボタンを1回押した場合に、さらにボタンが再度押された場合に、ユーザに対してディスプレイ上にどんなメッセージを提示するかについて、共同している企業は合意する必要がある。
通常の製品であれば、これらのメッセージ(すなわち、メッセージの内容、順番、及び典型的にはその数)は、製品のファームウェアに格納または反映され、該ファームウェアは通常の製品設計過程において、生産に十分余裕を持って凍結される。これは不都合なことである。なぜならば、このコードの凍結は、エラーが発見されるかもしれない、または新規或いは異なる機能性を提供すべき決定がなされるかもしれない最終確認試験のずっと前に生じることがよくあるためである。
本発明の一態様によれば、デバイスが実質上無制限の数のメッセージを当該デバイスのユーザに伝える必要があることができ、ランタイム前に、メッセージの数、順序及び内容をデバイスが知る必要はない、柔軟で、効率的で、メモリに依存するメッセージングシステム及びメッセージ提示プロトコルを提供する必要があることがわかる。好適には、メッセージングシステム及びメッセージングプロトコルは、メッセージをユーザストアに使えるか、またはROMベースのメモリ(ROM、PROM、EEPROM、フラッシュメモリ等)のような、デバイス固有の静的メモリからのメッセージにアクセスするデバイスを必要としないか、または大量の動的メモリ(例えばRAM)及び大量のプロセス能力を必要としないのが有利である。ランタイム前にメッセージの数、順序及び内容を知っておく(すなわちデバイス内に格納する)必要がないため、メッセージの追加、並び替え、削除または変更を行うことができる。さらに、デバイスの電源を投入する度に、新たな機能性を提供することもできる。
本発明の一実施形態によれば、決まった順序に配列された複数のメッセージを、第1のデバイスのユーザに伝える方法が提供される。前記複数のメッセージには、決まった順序に並べられた最初のメッセージ、2番目のメッセージ、最後から2番目のメッセージ及び最後のメッセージが含まれる。本発明による方法は、前記第1のデバイスに、前記複数のメッセージのうち、最初のメッセージと最後のメッセージを格納する行為と、前記第1のデバイスのユーザに3番目のメッセージを伝える行為とを含む。前記第1のデバイスのユーザから受け取ったナビゲーションコマンドの方向に応答して、本発明の方法はさらに、前記ナビゲーションコマンドが第1の方向を示す場合には、前記第1のデバイスのユーザに前記最初のメッセージを伝え、第2のデバイスに前記2番目のメッセージを要求するとともに、前記2番目のメッセージを前記第1のデバイスに格納する行為と、前記ナビゲーションコマンドが前記第1の方向とは反対の第2の方向を示す場合には、前記最後のメッセージを前記第1のデバイスのユーザに伝え、第2のデバイスに前記最後から2番目のメッセージを要求するとともに、前記最後から2番目のメッセージを前記第1のデバイスに格納する行為とを含む。
本発明の他の実施形態によれば、決められた順序を有する複数のメッセージが格納される第1のデバイスと、前記複数のメッセージを、前記決められた順序でユーザに提示する第2のデバイスとを備える通信システムが提供される。前記複数のメッセージは、最初のメッセージ、2番目のメッセージ、最後から2番目のメッセージ及び、最後のメッセージを決められた順序で含んでいる。前記第2のデバイスは、バスによって相互接続されたプロセッサ、メモリ及びディスプレイを含む。前記プロセッサは、一連の命令を実行するようにプログラムされており、前記命令によって前記プロセッサは、前記第2のデバイスのメモリに、前記複数のメッセージのうち、前記最初のメッセージと前記最後のメッセージを格納させ、3番目のメッセージを、前記第2のデバイスのユーザに提示させ、且つ前記第2のデバイスのユーザから受け取ったナビゲーションコマンドの方向に応答して、前記ナビゲーションコマンドが、第1の方向を示す場合には、前記第2のデバイスのユーザに、前記最初のメッセージを提示し、前記第1のデバイスから前記2番目のメッセージを要求し、前記第2のデバイスのメモリに、前記2番目のメッセージを格納し、一方、前記ナビゲーションコマンドが、前記第1の方向とは反対の第2の方向を示す場合には、前記第2のデバイスのユーザに、前記最後のメッセージを提示し、前記第1のデバイスに、前記最後から2番目のメッセージを要求し、前記第2のデバイスのメモリに、前記最後から2番目のメッセージを格納する。
本発明の他の実施形態によれば、第1のデバイスのユーザに複数のメッセージを伝える方法が提供される。前記方法には、前記第1のデバイスに、前記複数のメッセージのうち最初のメッセージと2番目のメッセージを格納する行為と、前記第1のデバイスのユーザに、3番目のメッセージを伝える行為と、前記第1のデバイスのユーザから受け取ったナビゲーションコマンドの方向に応答して、前記ナビゲーションコマンドが第1の方向を示す場合に、前記第1のデバイスのユーザに、前記最初のメッセージを伝え、第2のデバイスに4番目のメッセージを要求し、前記第1のデバイスに前記4番目のメッセージを格納する行為と、前記ナビゲーションコマンドが第2の方向を示す場合には、前記2番目のメッセージを、前記第1のデバイスのユーザに伝え、前記第2のデバイスに5番目のメッセージを要求し、前記第1のデバイスに前記第5のメッセージを格納する行為が含まれる。
第1のシステムが知っているメッセージを第2のシステムに提示し得る、本発明による通信システムを示す図である。 本発明により実施し得るメッセージングループを機能的に示す図である。 ユーザにメッセージを伝えるために用いることができる本発明によるプロセスを示す図である。 本発明の様々な態様を実施し得る無停電電源装置の正面図である。 本発明の様々な態様を実施し得るプロセッサベースシステムの機能ブロック図である。
本発明のさらなる特徴及び利点と、本発明の様々な実施形態の構造及び動作を、添付された図面を参照して以下詳述する。図面において、同様の参照番号は、同様または機能的に類似する構成要素を示す。さらに、参照番号の左から1、2番目の数字は、該参照番号が最初に現れる図面の番号を示す。
添付の図面は、正しい縮尺で記載することを意図していない。図面中において、様々な図面に描かれている同一または略同一の要素には、同様な参照番号が付されている。明瞭化のため、すべての図のすべての要素に参照符号を付してはいない。
図1は、本発明の様々な態様を実施し得る通信システムを示す。特に、通信システム100は、1つ以上のシステム110及びシステム120を含む。これらのシステム110及びシステム120は、メッセージ通信プロトコルに従って、通信媒体130を介して互いに通信する。システム110及びシステム120の各々は、完全に独立した、及び/または、個別のプロセッサベースシステムまたはデバイスとする、あるいは、単一のシステムまたはデバイス内に備えられる、例えば、無停電電源装置や、環境制御システム等のような、異なるサブシステムまたはサブデバイスとすることもできる。通信媒体130は、情報を送ることができる、例えばポイント・ツー・ポイント接続や、バスや、ネットワーク等のような、従来既知の、任意の有線または無線通信媒体とすることができる。システム100を、メディアエンターテインメントシステムとする本発明の一実施形態によれば、システム110は、プロセッサベースのメディアシステムコントローラとすることができ、またシステム120は、プロセッサベースの無停電電源システムとすることができる。
図1に示すように、システム120は、複数の機能要素125、127を含み、これらの機能要素125、127を介して、情報をシステム120のユーザに伝え、また情報をシステム120のユーザから受け取ることができ、ユーザはシステム120と対話してすることができる。複数の機能要素は、情報をユーザに伝えることができる少なくとも1つの提示デバイス125と、ユーザがシステム120と対話して、少なくとも1つの提示デバイス125を介してユーザに伝えられる情報を選択できるようにする少なくとも1つの入力デバイス127とを備える。本発明の一実施形態によれば、少なくとも1つの提示デバイス125は、情報を視覚的にユーザに提示するディスプレイデバイスとすることができる。しかしながら、他の種類の提示デバイスを用いることもできることは明らかである。例えば別の実施形態では、提示デバイス125を、オーディオスピーカとすることができ、さらに他の実施形態では、複数の種類の提示デバイスを用いることもでき、例えばビジュアルディスプレイ及びオーディオスピーカを設けることもできる。本発明の実施形態によれば、少なくとも1つの入力デバイス127は、少なくとも1つの押しボタンまたはキーを備え、これによってユーザは、彼らに伝えられる情報を選択することができる。しかしながら、他の種類の入力デバイス(例えば、トラックボール、マウス、又はキーボード等)を代わりに用いることもできる。
図1には示されていないが、システム110も同様に、システム120につき上述したものに類似する機能要素を含み、これらの機能要素により、情報をシステム110のユーザに伝え、またシステム110のユーザから情報を受信することができる。システム100は本発明の様々な実施形態による通信プロトコルの1つ以上の態様を実装することができるシステムの例示的な実施形態に過ぎず、システムの他の実装(例えばシステム100よりも多くの、又はより少ないシステムを有する変形例)も可能であり、それらは本発明の範疇にあることは明らかである。
本発明によれば、システム110を「メッセージ提供システム」と称し、これは、システム110は、システム120のユーザに伝えるべき複数のメッセージを格納可能なメモリを含む。ここで、「メッセージ提示システム」と称するシステム120は、ユーザがとった所定の行為に応答して、提示デバイス125を介してユーザに複数のメッセージを伝えるか、または提示する。本発明の態様によれば、メッセージ提示システム120のユーザに伝えられる情報は、ランタイム前にメッセージ提示システム120に知らせる、即ち、メッセージ提示システム120に格納する必要がない。その代わりに、メッセージ提示システム120のユーザに伝えられる情報は、メッセージ提供システム110によってメッセージ提示システム120に伝達する。このようにすれば、メッセージ提示システム120は、例えばCPU電源、ユーセージ(usage)及びメモリ等のような、メッセージ提示システムのリソースをほとんど必要としないで、可変の内容を持つ無制限の数のメッセージをユーザに提示することができるので有利である。実際、本発明の態様によれば、メッセージ提示システム120は、2つまたは3つのメッセージを格納するのに十分な量のメモリと、他のメッセージを要求する能力とを必要とするだけである。本発明の様々な実施形態に関わるこれらの態様及び利点を、図2〜5を参照して以下詳細に説明する。
図2は、本発明の実施形態に従って実行しうるメッセージループを機能的に示す図である。メッセージループ200は、図1のメッセージ提供システム110のようなメッセージ提供システムにより提供されるメッセージに基づいて、図1のメッセージ提示システム120のようなメッセージ提示システムにより実行される。メッセージの数及びその内容はランタイムに先立ってメッセージ提示システムは知らなくて良く、また、メッセージは、聴覚的、視覚的、またはその他の方法により提示することができる。
図2に示すように、メッセージループ200は、複数のフレキシブルメッセージ210を含む。メッセージ提示システムはランタイム前に、複数のフレキシブルメッセージ210の内容及び数を知る必要がない(従って、これらのメッセージを、ここでは「フレキシブル」メッセージと称している)。本発明の一実施形態によれば、これらのフレキシブルメッセージ210は、メッセージ提示システム中の、ダイナミックRAMのような揮発性メモリに格納され、常に、限られた数のメッセージだけが格納される。例えば、一実施形態では、常に、2つのメッセージだけを格納し、また、他の実施形態では、常に、3つのメッセージだけを格納する。フレキシブルメッセージ210のサイズ(すなわちメッセージ長)は、メッセージ提示システムの能力次第で変えることができる。本明細書にて用いる「メッセージ」とは、ユーザに提示できる任意形式の情報であり、英数字のデータ及び画像コンテンツ等を含む。一実施形態によれば、メッセージは視覚的に提示可能な文字ベースの英数字情報を含むが、他の種類の視覚的に提示可能な情報を用いることもできることは明らかである。メッセージは完全な単語や考えやリフを伝えるために、多数のメッセージを必要とするような、完全な構成とする必要はない。
図2に示されるように、メッセージループ200は、1つまたは複数の静的メッセージ220を含むことができ、これらのメッセージ220は、ランタイム前にメッセージ提示システムが知っていても、知らなくてもよく、静的メッセージ200は例えばメッセージ提示システムの不揮発性メモリ(ROM等)に格納することができる。例えば、メッセージ提示システムが、規格品をカスタマイズしたバージョンに相当する場合、これらの静的メッセージ220は規格品の中心的な機能性に関連するメッセージを反映することができるのに対し、フレキシブルメッセージ210は、規格品をカスタマイズしたバージョンに固有な追加の能力を反映するメッセージを反映することができる。一実施形態によれば、ユーザは、例えばキー又はボタンを押すことによって、ループの静的メッセージ及びフレキシブルメッセージをインクリメントまたは進めることができる。例えば、電源投入後の初期設定時に、メッセージ提示システムは第1の静的メッセージである、静的メッセージ1を提示することができる。ユーザがダウンキーまたはダウンボタンを押すことに応えて、静的メッセージ2が提示される。ユーザが同じ方向(例えば下方)に押し続ける場合には、ある時点にて最後の静的メッセージである静的メッセージmが提示されるようになり、続いて最初のフレキシブルメッセージである、フレキシブルメッセージ1が提示され、次にフレキシブルメッセージ2等が提示されるようになる。ユーザが同じ方向に押し続けている場合には、最後のフレキシブルメッセージである、フレキシブルメッセージNが提示され、続いて静的メッセージ1が提示され、次に静的メッセージ2等が提示され、このようにして、メッセージループが実行される。
代わりに、本発明の実施形態によれば、メッセージループ200を反対方向にトラバース、即ち進めることもできる。例えば、初期設定して、静的メッセージ1を提示した後にユーザが繰り返しアップキーまたはアップボタンを押した場合には、フレキシブルメッセージNが提示され、続いてフレキシブルメッセージN−1等が提示され、メッセージループ200を他の方向(例えば上方)にトラバースするようになる。ユーザがメッセージループ200を同じ方向にトラバースさせ続けるものとすれば、或る時点に、フレキシブルメッセージ1が提示され、続いて静的メッセージm、m−1等が提示されることになる。特定の実施形態では、単一の静的メッセージしかなく、最初の静的メッセージと最後の静的メッセージが事実上同一のメッセージとなるようにすることができ、他の実施形態では静的メッセージを全く存在させずに、全てのメッセージをフレキシブルメッセージとすることができる。
本発明の態様によれば、メッセージ提示システムがユーザにメッセージのループを提示することができる通信プロトコルが提供される。メッセージのループは反対方向にトラバースさせることができ、ループ内のメッセージの数、順序及び内容を(すなわち、メッセージループはフレキシブルである)は、ランタイム前にメッセージ提示システムに知らせる必要はない。これらのメッセージをメッセージ提示システムに提供するメッセージ提供システムは、メッセージ提示システムとやりとりする前に、メッセージの数、内容及び順序を知っているが、他にメッセージ提供システムに要求されることはほとんど無い。ある実施形態によれば、通信プロトコルはコマンドのセットを含み、これらのコマンドによりメッセージ提示システムは、メッセージ提供システムに対し、ループの最初及び最後のメッセージを要求することができ、また、ループをいずれかの方向にトラバースする場合に、メッセージ提供システムにループ内の次のメッセージを要求することができる。このような通信プロトコルを用いることで、メッセージ提示システムは現行のメッセージを提示し、次のメッセージを要求し、且つ前のメッセージを保有して、ループをトラバースする方向に無関係に、次にユーザに提示するメッセージを、メッセージ提示システム内にて局所的に見つけ(例えば格納し)、ユーザにほぼ即時に提示することができる。
メッセージ提示システムが、1つ以上の静的メッセージも提示できる一実施形態では、通信プロトコルは、フレキシブルメッセージループのターミネータも含み、このターミネータは、フレキシブルメッセージループが終了する方向に関係なく、メッセージ提示システムに、フレキシブルメッセージループの終了を警告する。メッセージ提示システムは、フレキシブルメッセージループのターミネータを受け取ると、再び静的メッセージを提示したり、その他の動作を行ったりする。このようなメッセージ通信プロトコルを以下、下記の表1および表2につき説明する。
表1は、メッセージ提示システムがメッセージ提供システムに送信するフレキシブルメッセージループに対するコマンドの典型例の一式と、メッセージ提供システムが該コマンドを受け取った際にとる動作を示す。
模範的なフレキシブルメッセージループのコマンド
Figure 2012516515
この模範的なメッセージの通信プロトコルによると、メッセージ提供システムは、直近にメッセージ提示システムに送信したメッセージを同定するインデックス(カレントメッセージインデックス)を格納する。メッセージ提供システムはまた、最初のフレキシブルメッセージ(すなわちメッセージ1)及び最後のフレキシブルメッセージ(すなわちメッセージN)と考えられるフレキシブルメッセージを同定する識別子を格納する。どのメッセージを最初のメッセージ及び最後のメッセージと考えられるかは、メッセージ提示システムと対話するまでは、メッセージ提供システムだけが知って必要があることは明らかである。従って、最初のメッセージ及び最後のメッセージ、さらにメッセージの数、その内容及びその順序を時とともに変えることができる。
表1に示すように、フレキシブルメッセージループのコマンドには、DEC_LEFTコマンド、INC_RIGHTコマンド、MSG_Nコマンド、及びMSG_1コマンドが含まれる。メッセージ提示システムは、ループをある方向(例えば上方または逆方向)にトラバースする場合に、DEC_LEFTコマンドをメッセージ提供システムに送信して、ループの次のメッセージを要求する。メッセージ提供システムは、DEC_LEFTコマンドに応答し、メッセージ(カレントメッセージインデックス−1)を返答し、カレントメッセージインデックスの値を1つデクリメントする。メッセージ提示システムは、ループの反対方向(例えば下方または順方向)にトラバースする場合に、INC_RIGHTコマンドをメッセージ提供システムに送信し、次のメッセージを要求する。メッセージ提供システムは、INC_RIGHTコマンドに応答し、メッセージ(カレントメッセージインデックス+1)を返答し、カレントメッセージインデックスの値を1つインクリメントする。
メッセージ提示システムは、MSG_Nコマンドをメッセージ提供システムに送信し、ループの最後のメッセージ(例えばメッセージN)を要求する。メッセージ提供システムは、MSG_Nコマンドに応答し、ループの最後のフレキシブルメッセージ(すなわちメッセージN)を返答し、カレントメッセージインデックスの値をNに設定する。メッセージ提示システムは、MSG_1コマンドをメッセージ提供システムに送信し、ループの最初のメッセージ(例えばメッセージ1)を要求する。メッセージ提供システムは、MSG_1コマンドに応答し、ループの最初のフレキシブルメッセージ(すなわちメッセージ1)を返答し、カレントメッセージインデックスの値を1に設定する。
表2に示すように、メッセージ提示システムが、1つ以上の静的メッセージを提示することができる本発明の一実施形態によれば、フレキシブルメッセージループのコマンドには、フレキシブルメッセージのターミネータを含むこともできる。
典型的なフレキシブルメッセージループの端部を示すコマンド
Figure 2012516515
一実施形態によれば、フレキシブルメッセージのターミネータは、”APC”の値を持つが、他の値を代わりに用いることもできることは明らかである。一般に、フレキシブルメッセージの値は、実際のフレキシブルメッセージにはあり得ないものとすべきである。メッセージ提供システムは、コマンドDEF_LEFTまたはコマンドINC_RIGHTのいずれかに応答して、フレキシブルメッセージループの端部に到達し、従ってメッセージ1またはメッセージNのいずれかが直近に送信されたことを、メッセージ提示システムに示す、フレキシブルメッセージターミネータのEOMSG(端部のメッセージ)を送信する。メッセージ提示システムは、フレキシブルメッセージループのメッセージの数を知ることを必要としていないため、このメッセージを受け取ることで、ループの端部に到達したことを知る。フレキシブルメッセージループのターミネータに応答して、メッセージ提示システムは、静的メッセージを提示することができ、他の行為をとることもできる。
本発明の一実施形態によれば、フレキシブルメッセージループのターミネータを受け取った後に、どの静的メッセージが提示されるかを、現在ループを移動している方向によって変えることができる。ある実施形態では、ユーザが順方向または下方に進んでフレキシブルメッセージループの端部に到達した時(すなわち、フレキシブルメッセージループを、フレキシブルメッセージ1からフレキシブルメッセージNまで移動した時)には、最初の静的メッセージ(すなわち静的メッセージ1)を提示し、ユーザが逆方向または上方に進んでフレキシブルメッセージループの端部に到達した時(すなわち、フレキシブルメッセージループを、フレキシブルメッセージNからフレキシブルメッセージ1まで移動した時)には、最後の静的メッセージ(すなわち静的メッセージm)を提示する。
本発明の態様によれば、通信プロトコルには最小限の数の規則が含まれ、メッセージ提示デバイスが送信するメッセージは該規則に従う。例えば、一実施形態において、各フレキシブルメッセージには、最初のキャラクタであるACKキャラクタ(ASCII十進数値6)及び最後のNULLキャラクタ(ASCII十進数値0)が含まれて、メッセージ提示システムがメッセージの最初と最後を認識することができる。この実施形態において、最小のメッセージ長(ACK及びNULLキャラクタを除く)は1であるが、他の制約はほとんど課されることがない。例えば、この実施形態において、フレキシブルメッセージの数またはその内容の数に上限は無く、フレキシブルメッセージの長さは、提示デバイスの能力(例えばディスプレイスクリーンのサイズ等)のみに制約される。
表1及び表2に記述されるフレキシブルメッセージループのコマンドの一式は、事実上例示であって、フレキシブルメッセージ及び静的メッセージの両方を用いる本発明の特定の実施形態のみに関連することが明らかである。代替的な実施形態において、メッセージループのコマンドの一式を変えることができる。例えば、メッセージの提示システムは、ループを一方向のみに動かすことも可能であるため、ユーザがメッセージループをナビゲート(すなわち、順方向または逆方向のいずれかであって、両方ではない)させる単一のボタンのみを備え、次のメッセージを要求する1つのコマンドのみ(例えばDEC_LEFTまたはINC_RIGHT)が提供/サポートされる必要がある。そのような一方向のループの移動のみが許容される実施形態では、メッセージ提示システムは、3つではなく2つのみのメッセージ(すなわち現行のメッセージ及び次のメッセージ)を格納することができる。あるいは、メッセージ提示システムの他の実施形態では、静的メッセージを持たず、全てのメッセージがフレキシブルメッセージであり、それゆえにメッセージのターミネータを提供する必要がない。かかる実施形態において、メッセージ提示システムは単に、ユーザによって選択された移動方向に基づいてフレキシブルメッセージループを移動し続けるのみである。
図3は、本発明の一実施形態により、ユーザと通信し、ユーザにメッセージを提示するプロセスを示す図である。該プロセスは、図5を参照して以下に詳細が説明されるメッセージ提示システムのプロセッサ等によって実行される。図3に示されるメッセージ通信プロセスの間、多数の変数が初期化され、プロセッサが、現行のメッセージをユーザに提示し、ユーザに提示する準備ができている他のメッセージ(ループの次のメッセージまたは、ループの1つ前のメッセージ)を有することができる状態を維持する。ユーザがメッセージループを順方向に進むのに応答し、プロセッサは次のメッセージを提示し、それからメッセージ提供システムに、メッセージループの順方向の次のメッセージを提供するように要求する。ユーザがメッセージループを両方向に動かすことが許容されている場合、ユーザが方向転換を決めた際に、逆方向または順方向のどちらにメッセージループの移動を開始する場合でも、プロセッサは、ユーザに1つ前のメッセージを提示する準備ができるようにしておく。ユーザが逆方向に移動するのに応答して、プロセッサは1つ前のメッセージを提示し、それからメッセージ提供システムに、メッセージループ逆方向の次のメッセージを提供するように要求する。以下、図3のメッセージ提示ルーチン300に関する、メッセージ通信プロセスを詳述する。
ブロック310で、プロセッサは多数の変数を初期化する。2つの反対の方向に動かす(すなわち、メッセージループを動かす)ための進行ボタンを備える本発明の一実施例において、ブロック310で初期化される変数には、ループの現行のメッセージ(CURR_MSG)の内容を格納する変数、ループの次のメッセージ(NXT_MSG)の内容を格納する変数、ループの1つ前のメッセージ(PREV_MSG)の内容を格納する変数が含むことができる。一実施形態によれば、現行のメッセージ(CURR_MSG)を格納する変数を初期化して、メッセージ提示システムの電源が投入された後に提示されるメッセージの内容にすることができる。このメッセージを、メッセージ提示システムのプロセッサがアクセス可能な不揮発性のメモリ内に前もって格納される静的メッセージとすることができ、また代わりに、メッセージ提供システムが提供するフレキシブルメッセージとすることもできる。次のメッセージ(NXT_MSG)を格納する変数を、最初のフレキシブルメッセージであるメッセージ1の内容に初期化することができ、1つ前のメッセージ(PREV_MSV)を、最後のフレキシブルメッセージであるメッセージNの内容に初期化することができる。次のメッセージ(NXT_MSG)の変数の内容と、前のメッセージ(PREV_MSG)の変数の内容をローカルで格納することによって、ユーザが進行するメッセージループの方向に関わらず、メッセージ提示システムは、ループ中の次のメッセージに素早くアクセスしてユーザに提示することができる。
例えばある実施形態では、メッセージ提示システムはブロック310において、メッセージ提供システムに、MSG_Nコマンドの次にMSG_1コマンドを送信することができる。それぞれのコマンドに応答し、メッセージ提供システムは、メッセージ提示システムに、メッセージNに続いてメッセージ1を送信し、メッセージ提供システムのカレントメッセージインデックスがメッセージ1を指すようにする。メッセージ提示システムはそれから、変数CURR_MSGを静的メッセージの内容に、PREV_MSGの内容をメッセージNに、NXT_MSGの内容をメッセージ1に初期化し、メッセージ提示システムが、ユーザが進行する方向に関わらず、次のメッセージを遅延無くユーザに提示できるように、次のメッセージをローカルで利用可能とすることができる。
メッセージ提示ルーチン300はブロック320で、変数CURR_MSGの内容をユーザに提示した後に、ブロック330に進み、ユーザからのナビゲーションコマンドを待つ。ブロック330において、ユーザからナビゲーションコマンドを受け取っていない場合には、単に変数CURR_MSGの内容がユーザに対して提示(表示)される。あるいは、メッセージ提示ルーチンがユーザから受け取ったナビゲーションコマンドに応答して、ルーチンはブロック340に進み、次のメッセージを予測する。ブロック340では、ブロック330で受け取ったナビゲーションコマンドの方向に基づいて次のメッセージが予測される。例えば、ブロック330でのユーザから受け取ったナビゲーションコマンドが、順方向移動コマンド(例えば下、右またはインクリメント進行ボタンの押下)に一致した場合は、ルーチンはループ順方向の次のメッセージ(例えばメッセージ2)を次のメッセージと予測する。あるいは、ブロック330でユーザから受け取ったナビゲーションコマンドが、逆方向移動コマンド(例えば上、左またはデクリメント進行ボタンの押下)に一致した場合は、ルーチンはループ逆方向の次のメッセージ(例えばメッセージN−1)を次のメッセージと予測する。次のメッセージを予測した後、メッセージ提示ルーチンはブロック350に進む。
ブロック350で、メッセージ提示ルーチン300は、メッセージ提供システムに対してループの次のメッセージを要求する。例えば、ブロック340でループの次の予測メッセージが順方向であると判断された場合、メッセージ提示システムは、INC_RIGHTコマンドをメッセージ提供システムに送信する。このコマンドに応答して、メッセージ提供システムは、「カレントインデックス+1」のメッセージ(例えばメッセージ2)を送信することができる。ブロック360で、メッセージ提示ルーチンは、現行のメッセージに対する変数(すなわちCURR_MSG)、次のメッセージに対する変数(NXT_MSG)及び1つ前のメッセージに対する変数(PREV_MSG)を更新する。従って、例えばユーザがループ順方向に移動した場合、現行のメッセージの変数(CURR_MSG)を、次のメッセージの変数(NXT_MSG)が以前格納していたものに更新し、1つ前のメッセージの変数(PREV_MSG)を、現行のメッセージの変数(CURR_MSG)が以前格納していたものに更新し、次のメッセージの変数(NXT_MSG)を、メッセージ提供システムから直近に受け取った内容(この例ではメッセージ2)に更新することができる。本発明の一実施形態によれば、ブロック360における変数の更新は単に、変数CURR_MSG、NXT_MSG及びPREV_MSGに対応する、メッセージ提示システムのメモリ位置のポインタを設定することだけで実行できる。ブロック360で変数を更新した後、メッセージ提示ルーチンはブロック320に進み、現行のメッセージの変数(CURR_MSG)の内容がユーザに対して提示される。その後はブロック320からブロック360までのプロセスが繰り返される。
下記に示す表3及び表4は、メッセージループを順方向及び逆方向に移動する時に、各々図3のメッセージ提示ルーチンに従い、現行のメッセージ(すなわちCURR_MSG)、次のメッセージ(NXT_MSG)及び1つ前のメッセージ(PREV_MSG)を表す変数の内容の典型例を示す。表3及び表4において、値「Message0」は、メッセージ提示システムの電源投入時の初期化後に提示されるメッセージを示し、例えば静的メッセージとすることができる。表3及び表4に示されるように、電源投入時の初期化後、現行のメッセージの変数(すなわちCURR_MSG)、次のメッセージの変数(すなわちNXT_MSG)、及び1つ前のメッセージの変数(すなわちPREV_MSG)は、表の列「現在の値」に表される値を持つ。順方向の移動に対応するナビゲーションコマンドをユーザから受け取った場合に、これらの変数は表の列「インクリメント受取時」に示される値に更新される。一方、逆方向の移動に対応するナビゲーションコマンドをユーザから受け取った場合に、これらの変数は表の列「デクリメント受取時」に示される値に更新される。
ループの順方向における典型的な変数の状態
Figure 2012516515
ループの逆方向における典型的な変数の状態
Figure 2012516515
表3及び4を見ると、ある状態から次の状態に遷移する際に、メッセージの内容の2つは依然同じものであることから、ポインタを動かすだけで、現行のメッセージ(すなわちCURR_MSG)、次のメッセージ(すなわちNXT_MSG)及び1つ前のメッセージ(すなわちPREV_MSG)を効率的に更新することができる。現行のメッセージ、次の予測メッセージ及び1つ前のメッセージのコピーを、メッセージ提示システムのローカルのメモリに維持することで、メッセージ提示システムは、ユーザからのあらゆる入力に対して素早く応答することができるとともに、利用するシステムリソースの量を最小限とすることができることが明らかである。
図4は、本発明の一実施形態におけるラックマウント可能な無停電電力装置の前面図を示すものであり、本発明の様々な態様を実施することができ、図1のメッセージ提示システム120に対応し、図2、3を参照して上述したフレキシブルメッセージループを実行する。図4に示すように、無停電電力装置(UPS)システム400は、様々なユーザがアクセス可能な機能要素を備え、UPSシステムのユーザに情報を伝え、ユーザとUPSシステム400との対話を可能とする。これらの機能要素には、ディスプレイスクリーン410、進行ボタン420及び430、電源スイッチ440、セットアップボタン450、ステータスボタン460及び複数のステータスインジケータ470が含まれる。ある実施形態によれば、ディスプレイスクリーン410には、各行20文字表示可能な、2行表示の真空蛍光灯ディスプレイを含むことができるが、異なるサイズのディスプレイまたは異なる種類のディスプレイを代わりに用いることができ、本発明は特定のサイズや特定の種類のディスプレイに限定されるものではないことは明らかである。
本発明の態様によれば、ディスプレイ410は、ステータス及び設定情報をユーザに伝えるために用いられ、ボタン420、430、450、460は、様々な機器設定や動作ステータスを決定したり、様々な機器設定をセットしたり、変更したり、調節したりするために用いられる。例えば、ユーザは進行ボタン420及び430によって、UPSシステムと対話することが可能となり、例えば、UPSシステムの動作状態または設定情報を反映する一連のメッセージまたは他の情報を、上方または下方にスクロールさせたり、特定のモードにおいて、設定値を上下させたり、設定の有効、無効を切り替えたりすることができる。好ましくは、2つの対立する方向(例えば上下、入出、左右)を表す2つの進行ボタンが設けられ、ユーザは、情報をいずれかの方向にもスクロールさせることができる。しかしながら、以下に詳述するように、本発明は、異なる2つの対立する進行ボタンを使用するものに限定されるものではなく、例えば1つのみの進行ボタンを設けることもできる。本発明の態様によれば、進行ボタン420及び430によって、ディスプレイ410によってユーザに提示される可変の内容のメッセージの量を、実質的に無制限とすることができる。さらに、UPSシステム400は、UPSシステム400のディスプレイ410に提示されるメッセージの内容、メッセージの数及び表示されるメッセージの順序を、ランタイム前に知っている必要はない。
UPSシステムがラックにマウントされて、UPSシステムの前面のみがアクセス可能な時でも、ユーザはUPSシステム400のフロントパネルに配置された電源スイッチ440に容易にアクセスすることができる。ユーザはセットアップボタン450によって、様々な機器設定及び動作を決定することができる。また、ユーザはステータスボタン460によって、様々な電気的測定値、環境的測定値、動作ステータスメッセージ、バッテリー状態メッセージ及び他のシステム情報を順次参照することができる。複数のステータスインジケータ470は、ユーザへの優先順位がより高い特定の情報を提示するために用いられ、その情報は例えば、電源がバッテリーから供給されているか、UPSシステムがオンラインであるか、UPSシステムのバッテリーの残寿命がある量を下回っているか、UPSシステムに供給されるAC電源が許容できる動作範囲内にあるか、ノイズフィルタリングが動作しているか等の情報である。
本発明の態様によれば、UPSシステム400は、複数のフレキシブルメッセージをディスプレイ410に提示させることができ、UPSシステムはランタイム前に、フレキシブルメッセージの数、順序、内容を知らず、すなわち、フレキシブルメッセージはUPSシステムの固定記憶に格納されない。一実施形態において、フレキシブルメッセージは、DRAM等の動的メモリに格納され、UPSシステムは、現行のディスプレイスクリーン、次のディスプレイスクリーン、1つ前のディスプレイスクリーンに対応する3つのメモリ位置のみを常に動的に格納する。フレキシブルメッセージを提示している間、UPSシステム400は、図3を参照して上述した、メッセージ提示ルーチンを実行する。例えば、UPSシステム400は、ユーザがダウン進行ボタン430を押下したことに反応し、ループ下方または順方向に存在する、次のメッセージを提示して、メッセージ提供システムにINC_RIGHTコマンドを送信することができ、また、UPSシステム400は、ユーザがアップ進行ボタン420を押下したことに対応し、ループの上方または逆方向に存在する、1つ前のメッセージを提示して、メッセージ提供システムにDEC_LEFTコマンドを送信することができる。
本発明の様々な実施形態では、1つ以上のプロセッサベースシステムを実装することができ、例えば1つのプロセッサベースUPSシステムを実装することができる。これらのプロセッサベースシステムでは、例えば、インテル社のPentium型のプロセッサ、Motorola社のPowerPCプロセッサ、サン・マイクロシステムズ社のUltraSPARCプロセッサ、Hewlett-Packard社のPA-RISCプロセッサ、または他のあらゆる種類のプロセッサ等をベースとする汎用プロセッサを利用することができる。あるいは、これらのプロセッサベースシステムは、専用プロセッサまたはASIP(例えば、STマイクロエレクトロニクス社の8ビットのST72F321プロセッサ、または16ビットのSTM32F102プロセッサ)をベースとすることができる。そのようなプロセッサベースシステムで実行されるソフトウェアは、UPSシステム等のシステムの動作を、用途の範囲内で制御するコントローラとして振る舞う。そのようなソフトウェアには、本発明によるメッセージングシステム及びメッセージングプロトコルを実装する、特殊化されたソフトウェアのコードが含まれる。本発明の実施形態を実施し、図4のUPSシステムの一部を構成する、典型的なプロセッサベースシステムについて、以下図5を参照して説明する。
プロセッサベースシステム500は一般に、バス560によって相互接続される、プロセッサ510、メモリ520、通信インタフェース530、入出力サブシステム540及び、ディスプレイサブシステム550を備える。上述したように、プロセッサ510は汎用プロセッサ、または他のあらゆる種類の既知のプロセッサとすることができ、本発明は特定の種類のプロセッサのいずれにも限定されるものではない。一実施形態では、プロセッサはSTマイクロエレクトロニクス社の8ビットのST72F321プロセッサである。メモリ520を用いて、プロセッサベースシステム500の動作中に、プログラム及びデータを格納しておくことができる。概してメモリ520には、比較的高性能で揮発性のRAM(例えばダイナミック・ランダム・アクセス・メモリ(DRAM))や、より固定型のメモリ(ROM、PROM、EEPROM等)が含まれるが、ディスクドライブまたは他の不揮発性のストレージデバイス等のあらゆるデータ格納デバイスもメモリ520に含まれ得る。
プロセッサベースシステム500は、通信インタフェース530を使用して、図1のメッセージ提供システム110等の他のデバイスと、無線または有線の任意の通信媒体で通信を行うことができる。例えば、通信インタフェースを、無線または有線のイーサネット通信インタフェース、ユニバーサル・シリアル・バス(USB)インタフェース、RS−232、RSー422または、RS−485シリアルインタフェース、IEE−1284パラレルインタフェース、またはデータを送受信できる任意の他の種類の通信インタフェースとすることができる。
プロセッサベースシステム500は、入出力サブシステム540を使用して、ユーザからの入力を受け取り、及び/またはユーザへの出力を提供することができる。様々な入力デバイス(図4の進行ボタン420、430等)から入力が行われ、様々な出力デバイス(図4のインジケータ470等)に出力される。トラックボール、マウス、キーボード等の他の種類の入力デバイス及び出力デバイスを使用することも可能であり、本発明は特定の入力デバイスまたは出力デバイスに限定されるものではないことが明らかである。
プロセッサベースシステムは、図4に示されるディスプレイ410等のディスプレイサブシステム550によって、ユーザにメッセージを伝える。動作時にプロセッサ410は、ユーザに対する提示情報をディスプレイサブシステムに供給する。一実施形態によれば、提示情報には、各行最大20文字の2行の情報を含むことができる。他の種類の提示デバイスを代わりに使用することができ、他の種類のディスプレイ(例えばビットマップディスプレイ等)を代わりに使用することもできることが明らかである。
バス560には、システム要素間のあらゆる通信の組合わせが含まれ、専用または標準のコンピュータのバス技術(例えばIDE、SCSI、PCI及び、InfiniBand)が含まれる。従って、バス560は、プロセッサベースシステム400のシステム要素間で通信(例えばデータ及び命令)のやりとりを行うことを可能とする。
動作中、プロセッサ510は、他の作業の合間に、図3を参照して上述したようなメッセージ提示ルーチンを実施することができる。例えばプロセッサ510は、現行のメッセージ、次のメッセージ及び、1つ前のメッセージの内容をメモリ520に格納することができ、現行のメッセージの内容をディスプレイサブシステム550に送信し、ユーザに対し提示することができる。ユーザの進行ボタン押下に応答し、入出力システム540はプロセッサ510に進行ボタン押下のイベントを通知することができる。この通知に応答して、プロセッサ510は次のメッセージの内容をディスプレイサブシステム550に送信し、ユーザに対して表示することができ、通信インタフェース530に対してコマンドを送信してメッセージ提供システムにループの次のメッセージを要求することができる。
本発明の様々な態様及び機能が実施される、ある種類のプロセッサベースシステムを例として、プロセッサベースシステムが示されるが、本発明の態様は、図5に示されるシステムで実施されるものに限定されるものではない。本発明の様々な態様及び機能を、図5に示されるシステムとは異なるアーキテクチャ及びコンポーネントを持つ1つ以上のプロセッサベースシステムで実施することができる。
典型的なフレキシブルメッセージングアルゴリズム
下記に、本発明のフレキシブルメッセージングを実行するための、Cプログラミング言語で記述されたアルゴリズムの典型例が示される。本アルゴリズムは特に、各行20文字の、2行のディスプレイスクリーンに使用される。このアルゴリズムでは、2行のメッセージが同時に提示され、現行のディスプレイスクリーン、1つ前のディスプレイスクリーン、次のディスプレイスクリーンを格納する記憶アレイが設けられ、各々の記憶アレイは2行のメッセージを持つことができる。このアルゴリズムは最小限のメモリを使用し、あらゆるプロセッサで効率的に実行することができる。例えば、8ビットのST72F321プロセッサにおいて、このアルゴリズムが要求するメモリの量は134バイトのみで、各42ビットの3つ(現行のメッセージ、次のメッセージ及び1つ前のメッセージ)の表示情報を格納し、適切な変数及びポインタを維持し、両方向の移動を可能とするためのものである。この典型的なアルゴリズムには、一方向(例えば下方または順方向)のみの動作を行う機能性も含まれており、その場合、2つのみの表示情報が格納される。以下、典型的なアルゴリズムに定義される様々な関数の概要を説明する。
関数:FlxScrnCircle
この関数は、ユーザが順方向または下方に移動する際に、物理メモリの正しい領域の位置にポインタを操作するものである。より詳しくは、この関数はポインタを操作し、1つ前の表示を示すポインタ(pPrevScrn)を、以前「現行の提示情報」を格納していたメモリ位置とし、現行の表示を示すポインタ(pCurrScrn)は、以前「次の表示情報」を格納しているメモリ位置の位置を示し、次の提示を示すポインタ(pCurrLine)は、以前「1つ前の表示情報」のメモリ領域の1番目のメッセージラインを示す。
関数:FlxScrnCircle
この関数は、FlxScrnCircleとは正反対の振る舞いをし、ユーザが逆方向または上方に移動する際に、物理メモリの正しい領域の位置にポインタを操作するものである。より詳しくは、この関数はポインタを操作し、1つ前の表示を示すポインタ(pPrevScrn)を、以前「現行の提示情報」を格納していたメモリ位置とし、現行の表示を示すポインタ(pCurrScrn)は、以前「次の表示情報」を格納しているメモリ位置の位置を示し、次の提示を示すポインタ(pCurrLine)は、以前「1つ前の表示情報」のメモリ領域の2番目のメッセージラインを示す。
関数:Flx_IsItEndLoop
この関数は、「次の表示情報」を格納するメモリ位置を示すポインタ(pCurrLine)を操作し、移動の方向(順方向または逆方向)に基づき、正しい行(メッセージ)を指すようにする。従って、順方向に移動している場合には、ポインタは第1の行(メッセージ)sTextを指し、一方、逆方向に移動している場合には、ポインタは第2の行(メッセージ)sText2を指す。ポインタを操作した後、この関数は、フレキシブルメッセージのターミネータを、受け取っているかをチェックする。フレキシブルメッセージのターミネータを受け取ると、関数FlxEndLoopProcessが呼び出され、ポインタをNULL状態に設定する。
関数:FlexStartFirstLine
この関数は、ルーチンが最初のフレキシブルメッセージから開始された場合に、メッセージ提供システムから、最初のフレキシブルメッセージ(フレキシブルメッセージ1)を取得する。すなわち、静的メッセージのブロックを順方向に抜け出ることにより、このルーチンが開始された場合である。
関数:FlexStartFromLastLine
この関数は、ルーチンが最後のフレキシブルメッセージNから開始された場合に、メッセージ提供システムから、最後のフレキシブルメッセージ(フレキシブルメッセージN)を取得する。すなわち、静的メッセージのブロックを逆方向に抜け出ることにより、このルーチンが開始された場合である。
関数:DefaultStatusPrevFlexible
この関数は、ユーザが静的メッセージングに移行する際に、静的メッセージを扱うために従来のレガシーコードを使用できるようにする。この関数は、関数InitialTheLastFlexibleMessageによってシステムの電源投入後一度だけ呼び出されて、フレキシブルメッセージングに使用される変数を初期化する。従って、静的メッセージを扱うために従来のレガシーコードが使用され、一方、フレキシブルメッセージに対してはフレキシブルメッセージングのアルゴリズムが用いられる。
関数:InitialTheLastFlexibleMessage
この関数の目的は、システムの起動を円滑にすることである。システムの電源投入後、
この関数は予め設定された期間待ち、それから、変数の初期化を開始し、その後関数DefaultStatusPrevFlexibleを呼び出し、フレキシブルメッセージの提示が、最初のフレキシブルメッセージと最後のフレキシブルメッセージのいずれから開始されているかを判断する。
関数:FlexiblelnnerLoopNormal
この関数は、関数FlexibleStringlnnerLoopによって呼び出され、標準的な内部ループの条件をプロセスし、すなわち、ユーザがフレキシブルメッセージループの中間にいる場合に、順方向に移動している場合及び逆方向に移動している場合に関わらずフレキシブルメッセージループから抜け出し、静的メッセージループに入る。この関数は、移動の方向に基づき、INC_RIGHT_CMDコマンドまたはDEC_LEFT_CMDコマンドを送信し、メッセージ提供システムに次のメッセージを要求する。またこの関数は、関数FlexibleStringlnnerLoopによって呼び出される。
関数:FlexibleStringlnnerLoop
この関数は、必要に応じて他のすべてのコードセグメントを呼び出す、主要なコードセグメントである。この関数は、ユーザが「上」ボタンを押した場合にはIncFxnPtr、「下」ボタンを押し場合にはDecFxnPtrが呼び出す別セクションのコードによって、呼び出される。
//=============================================================
//=============================================================

#define FLEXIBLE_BUFFERS 1 // フレキシブル表示機能
// フレキシブル表示機能の無効時には
//0とする

#if FLEXIBLE_BUFFERS
#define FULL_LINE_SIZE_BUFF 21 // ディスプレイの物理的サイズに1を加えて
//決定される

#define BOTH_UPDOWN_DIRECTION 1 // 両方向の移動を可能とする
// 下方/右方のみの移動を行う場合は0を設定する

// 構造体内のバッファsText_nの数は、提示されるメッセージラインの数で決定される。
// FULL_LINE_SIZE_BUFFは、1つのメッセーシ゛の最大サイズに1を加えた値とすべきである。
//
// 下記の構造体は、ディスプレイに2行提示する構造体FLEXBUFFの定義の典型例である。
typedef struct FLEX_BUFF {

char sText[FULL_LINE_SIZE_BUFF]; // 第1の表示メッセージラインを格納する
char sText2[FULL_LINE_SIZE_BUFF]; // 第2の表示メッセージラインを格納する

} FLEXBUFF;

// 構造体FLEXSCNを定義する

typedef struct FLEXIBLE_SCREEN {

char *pCurrLine; // 次に来るメッセージを格納するバッファのポインタ

FLEXBUFF *pCurrScrn; // 現行のディスプレイ表示のポインタ
FLEXBUFF *pPrevScrn; // 1つ前のディスプレイ表示のポインタ
FLEXBUFF sLine[3]; // 本機能を扱うためには3つのFLEXBUFFが必要となる。

char bScreenIndex; // 表示制御パラメータ
// 0、1、2のいずれかの値を持つ、配列sLine[]のインデックスである

// メッセージ制御用の、メッセージ及び表示の状態変数
UBYTE bLoopCnt;
UBYTE bStatus;

// メッセージ要求のトラッキングの記録
UBYTE bIncMsgReq; // メッセージのインクリメント要求をカウントする

#if BOTH_UPDOWN_DIRECTION
UBYTE bDecMsgReq; // メッセージのデクリメント要求をカウントする
#endif


} FLEXSCN;

// ************ bStatus用の定義 ***************

#define fBackEndLoop 0x80 // 第7ビット 1: セットされている場合、逆方向に移動してループの端部に到達したことを示す
#define fAcknowledged 0x40 //第6ビット 1: ACKキャラクタの受信、0:未受信
#define fNotInitialState 0x20 //第5ビット 1: 初期状態でない, 0: 初期状態
#define fEndLoop 0x10 //第4ビット 1: フレキシブル内部ループの端部 (EOMSG)
#define fScrnReady 0x08 //第3ビット 1: 次のメッセージを表示する準備ができている
#define f1stLine 0x04 //第2ビット 1: 1行目, 0: 2行目; 下記の備考を参照
#define fDefaultScrn 0x02 //第1ビット 1: 負/デクリメント/逆方向
#define fIncfunc 0x01 //第0ビット 1: IncFxn, 0: DecFxn;
// 備考:1ビットの代わりに1バイトが使用された場合、256行を収容できる。

FLEXSCN FlxScn; // 物理メモリをここに割り当てる

//=============================================================
//
// 関数: FlxScrnCircle ( )
//
// 説明: 表示のインクリメント/右回りの移動
//
// 入力:
// char bScrnIndex - 表示インデックス番号 ( 0, 1, 2 )
//
//=============================================================
//
void FlxScrnCircle ( char bScrnIndex )
{
FlxScn.pCurrScrn = &(FlxScn.sLine[ bScrnIndex ]);
FlxScn.pPrevScrn = FlxScn.pCurrScrn++;

if ( bScrnIndex == 2 ) // この条件が満たされたときのみ、次の命令文を実行する
FlxScn.pCurrScrn = &(FlxScn.sLine[0]);

// 新しいメッセージを受け取るバッファのポインタ
FlxScn.pCurrLine =
FlxScn.pCurrScrn->sText;
}

//=============================================================
//
// 関数: FlxScrnCounterCircle ( )
//
// 説明: 表示のデクリメント/左回りの移動
//
// 入力:
// char bScrnIndex - 表示インデックス番号 ( 0, 1, 2 )
//
//=============================================================
//
void FlxScrnCounterCircle ( char bScrnIndex )
{
FlxScn.pCurrScrn = &( FlxScn.sLine[ (2 - bScrnIndex) ] );
FlxScn.pPrevScrn = FlxScn.pCurrScrn--;
if ( bScrnIndex >= 2 ) // この条件が満たされたときのみ、次の命令文を実行する
FlxScn.pCurrScrn = &(FlxScn.sLine[2]);

//新しいメッセージを受け取るバッファのポインタ
FlxScn.pCurrLine = FlxScn.pCurrScrn->sText2;
}

//=============================================================
//
// 関数: Flx_IsItEndLoop ( )
//
// 説明: フレキシブルメッセージループの端部かどうか確かめる
//
// 入力:
// char bScrnIndex - 表示インデックス番号 ( 0, 1, 2 )
// UBYTE fIncFxn - 0の場合は上(左)に移動し、その他の場合は下(右)に動かす
//
//=============================================================
//
void Flx_IsItEndLoop ( char bScrnIndex, UBYTE fIncFxn )
{
FLEXBUFF *pScrn; // 適切な表示ポインタ
char *pStr;

if ( !fIncFxn ) //上(左)に移動している場合
{
pScrn = &( FlxScn.sLine[ (2 - bScrnIndex) ] );
pStr = pScrn->sText2; }
else //下(右)に移動している場合
{
pScrn = &( FlxScn.sLine[ bScrnIndex ] );
pStr = pScrn->sText;
}

if ( !*pStr || !strcmp( pStr, "APC" ) )
FlxEndLoopProcess ( );
}

//====================================================
//
// 関数: FlxEndLoopProcess ( )
//
// 説明: フレキシブルメッセージループの端部のプロセス
//
// 入力:なし
//
//====================================================
//
void FlxEndLoopProcess ( void )
{
if ( ValTheBit(FlxScn.bStatus, f1stLine) )
{
if ( FlxScn.pCurrLine == FlxScn.pCurrScrn->sText )
FlxScn.pCurrScrn->sText2[0] = 0;
else
FlxScn.pCurrScrn->sText[0] = 0;
}
#if NO_TERMINATER_DISPLAY
*FlxScn.pCurrLine = 0;
#endif
// 端部を表す文字列を受け取る
SetTheBit( FlxScn.bStatus, (fEndLoop | fScrnReady) );
}

//=============================================================
//
// 関数: FlexStartFirstLine ( )
//
// 説明: 最初のフレキシブルメッセージラインの要求を設定する
//
// 入力: なし
//
//=============================================================
//
void FlexStartFirstLine ( void )
{
ClrTheBit( FlxScn.bStatus, fScrnReady );
FlxScrnCircle ( FlxScn.bScreenIndex );
#if BOTH_UPDOWN_DIRECTION
SetTheBit(FlxScn.bStatus, (fIncfunc | f1stLine | fBackEndLoop) );
#else
SetTheBit(FlxScn.bStatus, f1stLine );
#endif

SendInsertCmd ( INC_MSG_1_CMD );
}

//=============================================================
//
// 関数: FlexStartFromLastLine ( )
//
// 説明: 最後のフレキシブルメッセージラインの要求を設定する
//
// 入力: なし
//
//=============================================================
//
void FlexStartFromLastLine ( void )
{
FlxScrnCounterCircle ( FlxScn.bScreenIndex );
#if BOTH_UPDOWN_DIRECTION
SetTheBit( FlxScn.bStatus, (f1stLine | fBackEndLoop) );
ClrTheBit(FlxScn.bStatus, fIncfunc);
#else
SetTheBit( FlxScn.bStatus, f1stLine );
#endif

SendInsertCmd ( DEC_MSG_N_CMD );
}

//=============================================================
//
// 関数: DefaultStatusPrevFlexible ( )
//
// 説明: 最後のフレキシブルメッセージラインを、既定状態に設定する
//
// 入力:なし
//
//=============================================================
//
void DefaultStatusPrevFlexible ( void )
{
if ( !ValTheBit( FlxScn.bStatus, fDefaultScrn ) )
{
if ( !ValTheBit( bbmCommFlags, fUI_uLinkMode ) ) // レガシーコードの条件
//が満たされる場合、
//付加的な作業を行う
{

#if BOTH_UPDOWN_DIRECTION
if ( EE_default_screen < 4 )
FlexStartFromLastLine ( );
else
#endif
FlexStartFirstLine ( );
}

SetTheBit( FlxScn.bStatus, fDefaultScrn );
}
}

//=============================================================
//
// 関数: InitialTheLastFlexibleMessage ( )
//
// 説明: 最後のフレキシブルメッセージ用の初期化
//
// 入力:なし
//
//=============================================================
// void InitialTheLastFlexibleMessage ( void )
{
if ( !ValTheBit( FlxScn.bStatus, fNotInitialState ) )
{
if ( FlxScn.bLoopCnt++ >= 126 ) // 下記のプロセスを遅延させ、最小化させる
//タイミング制御文
{
SetTheBit( FlxScn.bStatus, fNotInitialState );
ClrTheBit( FlxScn.bStatus, fDefaultScrn ); DefaultStatusPrevFlexible ( );
}
}
}

//=============================================================
//
// 関数: FlexibleInnerLoopNormal ( )
//
// 説明: 標準の内部ループの条件プロセス
//
// 入力:
// UBYTE max_funcs - 関数メニューの項目数
// UBYTE fIncFxn -1の場合、IncFxnPtr( )から呼び出されている
// その他の場合、DecFxnPtr( )から呼び出されている
// char bScrnIndex - 表示インデックス番号( 0, 1, 2 )
//
//=============================================================
//
void FlexibleInnerLoopNormal ( UBYTE max_funcs,
UBYTE fIncFxn,
char bScrnIndex )
{
SetTheBit( FlxScn.bStatus, f1stLine ); // 第一の表示ラインを満たす処理の開始

#if BOTH_UPDOWN_DIRECTION
if ( fIncFxn )
{
SetTheBit( FlxScn.bStatus, fIncfunc );

FlxScrnCircle ( bScrnIndex );

bFuncIndex = (max_funcs-4) + (bScrnIndex << 1);

SendInsertCmd ( INC_RIGHT_CMD );
}
else
{
ClrTheBit( FlxScn.bStatus, fIncfunc );

FlxScrnCounterCircle ( bScrnIndex );

bFuncIndex = max_funcs - (bScrnIndex << 1);

SendInsertCmd ( DEC_LEFT_CMD );
}

// 即座に静的メッセージの状況を返答するように制御する
if ( ValTheBit( FlxScn.bStatus, fDefaultScrn ) )
ClrTheBit( FlxScn.bStatus, fDefaultScrn );

#else

FlxScrnCircle ( bScrnIndex );

bFuncIndex = (max_funcs-4) + (bScrnIndex << 1);

SendInsertCmd ( INC_RIGHT_CMD );

#endif // BOTH_UPDOWN_DIRECTIONのブロック

}

//=============================================================
//
// 関数: FlexibleStringInnerLoop ( )
//
// 説明: インクリメントまたはデクリメントのファンクションキーが押された場合に、
// 終了シグナルまで、ループ中のフレキシブルメッセージをプロセスする
//
// Input:
// UBYTE max_funcs - 機能メニューの項目数
// UBYTE fIncFxn - 1の場合、IncFxnPtr( )から呼び出されている
// その他の場合、DecFxnPtr( )から呼び出されている
//
//=============================================================
void FlexibleStringInnerLoop ( UBYTE max_funcs, UBYTE fIncFxn )
{
char bScrnIndex; // より柔軟にするため、ローカル変数を使用する

// 新しいスクリーンメッセージを更新するため、フラグをクリアする
ClrTheBit( FlxScn.bStatus, fScrnReady );

bScrnIndex = FlxScn.bScreenIndex + 1;
if ( bScrnIndex > 2 )
bScrnIndex = 0;

#if BOTH_UPDOWN_DIRECTION

// 内部ループの中にいる場合、方向転換のプロセスを行う
if ( fIncFxn != ValTheBit( FlxScn.bStatus, fIncfunc ) )
{
if ( bScrnIndex < 2 )
bScrnIndex {circumflex over ( )}= 0x01; // 高速に切り替える技術を使用している

// ここでは、押されるキーの方向が変更されたかチェックし、
// 現在の表示にはターミネータが含まれるかをチェックする

if ( ValTheBit( FlxScn.bStatus, fBackEndLoop ) )
{
SetTheBit( FlxScn.bStatus, fEndLoop );
}
else
{
// 方向が変更されたため、以前のEndLoopはもはや有効でない
if ( ValTheBit( FlxScn.bStatus, fEndLoop ) )
{
ClrTheBit( FlxScn.bStatus, fEndLoop );
}
if ( ( !fIncFxn && (FlxScn.bIncMsgReq == 5) )
|| ( fIncFxn && (FlxScn.bDecMsgReq == 5) ) )
Flx_IsItEndLoop ( bScrnIndex, fIncFxn );
}
}
#endif // BOTH_UPDOWN_DIRECTIONのブロック

FlxScn.bScreenIndex = bScrnIndex; // 現行の表示を更新する

if ( !ValTheBit( FlxScn.bStatus, fEndLoop ) )
{
FlexibleInnerLoopNormal ( max_funcs, fIncFxn, bScrnIndex );
}
else // if ( ValTheBit( FlxScn.bStatus, fEndLoop ) )
{
// フレキシブルメッセージループから静的メッセージに移動した場合、
// フレキシブルメッセージを開始する準備をする必要はなく、
// 固定メニューからフレキシブルメニューに移動するキーが押されたときに、
//表示の準備はできている

ClrTheBit( FlxScn.bStatus, fEndLoop );

#if BOTH_UPDOWN_DIRECTION

if ( !fIncFxn )
{
bFuncIndex = max_funcs - 6;
ClrTheBit( FlxScn.bStatus, fIncfunc );
}
else
{
bFuncIndex = 0;
SetTheBit( FlxScn.bStatus, fIncfunc );
}

#else

bFuncIndex = 0;

#endif // BOTH_UPDOWN_DIRECTIONのブロック
if ( FlxScn.bIncMsgReq & 1 )
SetTheBit( FlxScn.bStatus, fScrnReady );
}
}

#endif // FLEXIBLE_BUFFERSのブロック
上記のアルゴリズムは、メッセージ提供システムに次のフレキシブルメッセージ(例えばメッセージi)を要求し、該メッセージを次のディスプレイスクリーンを示すメモリ位置に設定し、ポインタ*pCurrLineを設定する。例示する実施形態では、各々のディスプレイスクリーンは2つのメッセージを含むことができるため、現在の移動方向の次のメッセージ(例えばメッセージi+1または例えばメッセージi−1)も要求される。一実施形態では、この次のメッセージは下記のコードを含むProcess_FlexibleStringUpdateと呼ばれる関数により要求される。

#if BOTH_UPDOWN_DIRECTION

if ( ValTheBit(FlxScn.bStatus, fIncfunc) )
{
FlxScn.pCurrLine = FlxScn.pCurrScrn->sText2;
SendInsertCmd ( INC_RIGHT_CMD ); // メッセージ提供システムからの
// フレキシブル文字列の更新要求

else
{
FlxScn.pCurrLine = FlxScn.pCurrScrn->sText;
SendInsertCmd ( DEC_LEFT_CMD ); // メッセージ提供システムからの
// フレキシブル文字列の更新要求
}
#else

FlxScn.pCurrLine = FlxScn.pCurrScrn->sText2;
SendInsertCmd ( INC_RIGHT_CMD ); // メッセージ提供システムからの
// フレキシブル文字列の更新要求
#endif
この例示的な実施形態では、下記のコードのセグメントにより、DEC_LEFT_CMDまたはINC_RIGHT_CMDが通信インタフェースに提供され、メッセージ提供システムに送信される際に、関数Process_FlexibleStringUpdateが呼び出される。
#if FLEXIBLE_BUFFERS

case DEC_LEFT_CMD:
case INC_RIGHT_CMD:
case DEC_MSG_N_CMD:
case INC_MSG_1_CMD:
Process_FlexibleStringUpdate ( bRxChar );
break;

#endif
本発明の少なくとも1つの実施形態の各々の態様を記載したが、当業者は様々な置換、変更及び改善をたやすく行うことができることは明らかである。そのような置換、変更及び改善は本開示の一部と解釈され、本発明の範囲に含まれることは明らかである。従って、上述の記載は単なる例示のみを目的とするものである。

Claims (25)

  1. 決まった順序で配列された複数のメッセージを、第1のデバイスのユーザに伝える方法であって、前記複数のメッセージは、最初のメッセージ、2番目のメッセージ、最後から2番目のメッセージ及び最後のメッセージを前記決まった順序で含み、前記方法は、
    前記第1のデバイスに、前記複数のメッセージのうちの、最初のメッセージと最後のメッセージを格納する行為と、
    前記第1のデバイスのユーザに3番目のメッセージを伝える行為と、
    前記第1のデバイスのユーザから受け取ったナビゲーションコマンドの方向に応答して、
    前記ナビゲーションコマンドが第1の方向を示す場合に、前記第1のデバイスのユーザに前記最初のメッセージを伝え、第2のデバイスに前記2番目のメッセージを要求するとともに、該2番目のメッセージを前記第1のデバイスに格納する行為と、
    前記ナビゲーションコマンドが前記第1の方向とは反対の第2の方向を示す場合には、前記最後のメッセージを前記第1のデバイスのユーザに伝え、第2のデバイスに前記最後から2番目のメッセージを要求するとともに、前記最後から2番目のメッセージを前記第1のデバイスに格納する行為とを含む通信方法。
  2. 前記複数のメッセージの各々は、これら複数のメッセージの各々が前記第1のデバイスに格納されるまでは、前記第1のデバイスにではなく、前記第2のデバイスに対して前もって同定される、請求項1に記載の方法。
  3. 前記第2のデバイスに前記最初のメッセージ及び前記最後のメッセージを要求する行為をさらに含む、請求項2に記載の方法。
  4. 前記2番目のメッセージを格納する行為は、前記最後のメッセージを以前に格納した前記第1のデバイスのメモリ位置に2番目のメッセージを格納する行為を含む、請求項3に記載の方法。
  5. 前記最後から2番目のメッセージを格納する行為は、前記最初のメッセージを以前に格納した前記第1のデバイスのメモリ位置に、前記最後から2番目のメッセージを格納する行為を含む、請求項4に記載の方法。
  6. 前記2番目のメッセージを格納する行為は、前記最後のメッセージを以前に格納した前記第1のデバイスのメモリ位置に2番目のメッセージを格納する行為を含む、請求項1に記載の方法。
  7. 前記第1のデバイスと前記第2のデバイスとが物理的に別個のものである、請求項1に記載の方法。
  8. いずれの時点においても、前記第1のデバイスのメモリに、前記複数のメッセージのうち、わずか3つのメッセージを格納する行為をさらに含む、請求項1に記載の方法。
  9. 前記第1のデバイスに、前記複数のメッセージの各々を格納するために所定量を越えないメモリを割り当てる行為であって、前記所定量のメモリは、前記複数のメッセージのうち、わずか3つのメッセージを格納するのに十分である、メモリ割り当て行為をさらに含む請求項1に記載の方法。
  10. 複数のメッセージが格納されている第1のデバイスであって、前記複数のメッセージは、決められた順序を有し、且つ最初のメッセージ、2番目のメッセージ、最後から2番目のメッセージ、及び最後のメッセージを前記決められた順序で含んでいる、第1のデバイスと、
    前記複数のメッセージを、第2のデバイスのユーザに、前記決められた順序で提示する第2のデバイスであって、該第2のデバイスは、バスによって相互接続されたプロセッサ、メモリ及びディスプレイを含み、前記プロセッサは、一連の命令を実行するようにプログラムされている第2のデバイスで、
    前記命令によって前記プロセッサは、
    前記第2のデバイスのメモリに、前記複数のメッセージのうち、前記最初のメッセージと前記最後のメッセージを格納させ、
    3番目のメッセージを、前記第2のデバイスのユーザに提示させ、且つ
    前記第2のデバイスのユーザから受け取ったナビゲーションコマンドの方向に応答して、
    前記ナビゲーションコマンドが、第1の方向を示す場合に、前記第2のデバイスのユーザに、前記最初のメッセージを提示し、前記第1のデバイスから前記2番目のメッセージを要求し、前記第2のデバイスのメモリに、前記2番目のメッセージを格納し、
    前記ナビゲーションコマンドが、前記第1の方向とは反対の第2の方向を示す場合には、前記第2のデバイスのユーザに、前記最後のメッセージを提示し、前記第1のデバイスに、前記最後から2番目のメッセージを要求し、前記第2のデバイスのメモリに、前記最後から2番目のメッセージを格納する、第2のデバイスとを備えている通信システム。
  11. 前記複数のメッセージのいずれも、前記第2のデバイスのメモリに格納されるまでは、前記第2のデバイスに対して同定されない、請求項10に記載の通信システム。
  12. 前記一連の命令は前記プロセッサをして、前記第1のデバイスに、前記最初のメッセージと、前記最後のメッセージを要求する命令をさらに含んでいる、請求項11に記載の通信システム。
  13. 前記一連の命令は、前記プロセッサをして、以前に前記最後のメッセージを格納した前記第2のデバイスのメモリの第1の部分に、前記2番目のメッセージを格納させる命令をさらに含んでいる、請求項12に記載の通信システム。
  14. 前記一連の命令は前記プロセッサをして、以前に前記最初のメッセージが格納した前記第2のデバイスのメモリの第2の部分に、前記最後から2番目のメッセージを格納させる命令を含んでいる、請求項13に記載の通信システム。
  15. 前記一連の命令は前記プロセッサをして、以前に前記最後のメッセージを格納した前記第2のデバイスのメモリの一部に、前記2番目のメッセージを格納させる命令をさらに含んでいる、請求項10に記載の通信システム。
  16. 前記第1のデバイスは、前記第2のデバイスとは物理的に別個のものである、請求項10に記載の通信システム。
  17. 前記第2のデバイスのメモリは、いずれの時点にも、前記複数のメッセージのわずか3つのメッセージのみを格納する、請求項10に記載の通信システム。
  18. 前記一連の命令は、前記プロセッサをして、前記第2のデバイスに、前記複数のメッセージの各々を格納するために、前記第2のデバイスに所定量を超えないメモリを割り当てる命令をさらに含み、前記第2のデバイスのメモリの所定量は、前記複数のメッセージのうちの、わずか3つのメッセージを格納するのに十分である、
    請求項10に記載の通信システム。
  19. 第1のデバイスのユーザに複数のメッセージを伝える方法であって、
    前記第1のデバイスに、前記複数のメッセージのうち最初のメッセージと2番目のメッセージを格納する行為と、
    前記第1のデバイスのユーザに、3番目のメッセージを伝える行為と、
    前記第1のデバイスのユーザから受け取ったナビゲーションコマンドの方向に応答して、
    前記ナビゲーションコマンドが第1の方向を示す場合に、前記第1のデバイスのユーザに前記最初のメッセージを伝え、第2のデバイスに4番目のメッセージを要求し、前記第1のデバイスに前記4番目のメッセージを格納する行為と、
    前記ナビゲーションコマンドが第2の方向を示す場合には、前記2番目のメッセージを前記第1のデバイスのユーザに伝え、前記第2のデバイスに5番目のメッセージを要求し、前記第1のデバイスに前記5番目のメッセージを格納する行為とを含む方法。
  20. 前記複数のメッセージの各々は、これら前記複数のメッセージの各々が前記第1のデバイスに格納されるまでは、前記第1のデバイスにではなく、前記第2のデバイスに対して同定される、請求項19に記載の方法。
  21. 前記最初のメッセージと前記2番目のメッセージを前記第2のデバイスに要求する行為をさらに含む、請求項20に記載の方法。
  22. 前記4番目のメッセージを格納する行為は、前記第2のメッセージを以前に格納したメモリ位置に前記4番目のメッセージを格納する行為を含む、請求項21に記載の方法。
  23. 前記5番目のメッセージを格納する行為は、前記最初のメッセージを以前に格納したメモリ位置に前記5番目のメッセージを格納する行為を含む、請求項22に記載の方法。
  24. いずれの時点にも、前記第1のデバイスのメモリ内に、前記複数のメッセージのわずか3つのメッセージを格納する行為をさらに含む、請求項19に記載の方法。
  25. 前記第1のデバイスに、前記複数のメッセージの各々を格納するために、所定量を越えないメモリを割り当てる行為であって、前記所定量のメモリは、前記複数のメッセージのうち、わずか3つのメッセージだけを格納するのに十分である、メモリ割り当て行為をさらに含む請求項24に記載の方法。
JP2011548292A 2009-01-29 2010-01-28 通信システム及びプロトコル Expired - Fee Related JP5667083B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/361,591 US7865643B2 (en) 2009-01-29 2009-01-29 Communication system and protocol
US12/361,591 2009-01-29
PCT/US2010/022396 WO2010088380A1 (en) 2009-01-29 2010-01-28 Communication system and protocol

Publications (3)

Publication Number Publication Date
JP2012516515A true JP2012516515A (ja) 2012-07-19
JP2012516515A5 JP2012516515A5 (ja) 2013-03-14
JP5667083B2 JP5667083B2 (ja) 2015-02-12

Family

ID=42060516

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011548292A Expired - Fee Related JP5667083B2 (ja) 2009-01-29 2010-01-28 通信システム及びプロトコル

Country Status (7)

Country Link
US (1) US7865643B2 (ja)
EP (1) EP2391992B1 (ja)
JP (1) JP5667083B2 (ja)
CN (2) CN102365662A (ja)
AU (1) AU2010208235B8 (ja)
CA (1) CA2751249A1 (ja)
WO (1) WO2010088380A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9826027B2 (en) * 2014-08-19 2017-11-21 Bank Of America Corporation User interfaces generated by a workflow engine

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0448326A (ja) * 1990-06-18 1992-02-18 Ricoh Co Ltd 端末装置のテキスト情報表示方式
JPH04257127A (ja) * 1991-02-08 1992-09-11 Nec Corp 選択呼出受信機
JPH10322739A (ja) * 1997-05-16 1998-12-04 Oi Denki Kk 無線式個別受信装置
JP2000029448A (ja) * 1998-07-13 2000-01-28 Toshiba Corp 画像情報提供システム、画像情報表示端末およびサーバ装置

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3166943B2 (ja) * 1992-12-31 2001-05-14 ソニー株式会社 データベースアクセス処理方法
JPH1175233A (ja) * 1997-08-29 1999-03-16 Matsushita Electric Ind Co Ltd 無線呼出装置と着信呼出方法およびメッセージ読出方法
JP2978907B1 (ja) * 1998-08-28 1999-11-15 静岡日本電気株式会社 表示機能付き個別選択呼出受信機
US6609138B1 (en) * 1999-03-08 2003-08-19 Sun Microsystems, Inc. E-mail list archiving and management
CN1658656A (zh) * 2004-02-20 2005-08-24 亚洲光学股份有限公司 图像摄取装置之图像管理之方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0448326A (ja) * 1990-06-18 1992-02-18 Ricoh Co Ltd 端末装置のテキスト情報表示方式
JPH04257127A (ja) * 1991-02-08 1992-09-11 Nec Corp 選択呼出受信機
JPH10322739A (ja) * 1997-05-16 1998-12-04 Oi Denki Kk 無線式個別受信装置
JP2000029448A (ja) * 1998-07-13 2000-01-28 Toshiba Corp 画像情報提供システム、画像情報表示端末およびサーバ装置

Also Published As

Publication number Publication date
EP2391992B1 (en) 2016-07-20
AU2010208235B2 (en) 2014-10-16
CA2751249A1 (en) 2010-08-05
CN102365662A (zh) 2012-02-29
JP5667083B2 (ja) 2015-02-12
WO2010088380A1 (en) 2010-08-05
US20100191882A1 (en) 2010-07-29
EP2391992A1 (en) 2011-12-07
CN105704011A (zh) 2016-06-22
US7865643B2 (en) 2011-01-04
WO2010088380A8 (en) 2011-03-17
CN105704011B (zh) 2018-06-01
AU2010208235B8 (en) 2014-10-23
AU2010208235A1 (en) 2011-08-18

Similar Documents

Publication Publication Date Title
US8887080B2 (en) Indicating status of application program with icons
CN100440126C (zh) 虚拟存储器远程控制
CN112073994A (zh) 用于空中升级的方法、装置、电子设备及可读存储介质
US8972857B2 (en) Generating user help information for customized user interfaces
JPH087661B2 (ja) 従属ワークステーションのマウスサポート
CN112346612B (zh) 页面显示方法和装置
US6980882B2 (en) Display apparatus of injection molding machine
JP5667083B2 (ja) 通信システム及びプロトコル
US20130293590A1 (en) Mobile terminal comprising a graphical user interface
JP2001014155A (ja) ソフト部品実行制御装置
CN114020741A (zh) 车辆里程信息的存储方法、装置、车辆电子系统及车辆
CN113377473A (zh) 任务创建方法、装置、电子设备及计算机可读存储介质
CN112306413A (zh) 用于访问内存的方法、装置、设备以及存储介质
CN111176776A (zh) 一种信息处理方法和电子设备
JP5835218B2 (ja) 表示制御装置、方法、及び、プログラム
KR20020061958A (ko) 복수의 개인정보단말기를 이용한 멀티 비전 표시방법
CN110310471B (zh) 一种家电遥控方法及系统
JP2000020112A (ja) 表示器
CN112347400A (zh) 多语种页面数据的缺失检测方法、装置、设备及存储介质
KR20100123600A (ko) 정보 처리 장치, 실행 방법 및 실행용 프로그램
CN114764388A (zh) 用户界面控件的标签生成方法、装置、设备及存储介质
CN113282313A (zh) 固件更新方法、装置及存储介质
CN115373930A (zh) 视图的管理方法、装置、电子设备及存储介质
CN112181237A (zh) 显示方法、装置和电子设备
CN111880875A (zh) 多媒体播放的控制方法、装置、设备、存储介质和系统

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130122

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130122

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140124

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140128

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20140203

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20140428

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: 20141118

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20141211

R150 Certificate of patent or registration of utility model

Ref document number: 5667083

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees