VNCサポート
VNCは2つのソフトに分かれています。ディスプレイを生成するサーバと実際にお客様の前にある画面にディスプレイの内容を表示するビューアです。遠隔操作するマシンを見るだけでなく、マウスやキーボードを通して操作することができます。サーバとビューアは異なるマシン上で異なるアーキテクチャの上で動作している可能性がありますが、サーバとビューワを接続するプロトコルは、シンプルでありオープンかつプラッフォームに依存しません。ビューアにはなにも保存されていないので、サーバとビューアの接続が切断されてもデータが失われる心配はありません。サーバーとビューアの接続はどこからでも可能なので、ハードウェア本体を携行する必要がなく身軽になれます。VNCサーバを使用することでどこからでも本体を制御でき、画面のスクリーンショットをとることもできます。
要件
TCP / IPスタック
サーバとビューア間の通信はTCP / IP接続に基づいているため、VNCはTCP / IPスタックが必要です。Win32のシミュレーション環境では、TCP / IP(Winsock)は通常既に含まれています。TCP / IPスタックが存在する必要があります。TCP / IPスタックはemWinに含まれていませんが、柔軟なインタフェースをもつので、任意のTCP / IPスタックが利用できます。
マルチタスク
VNCサーバは、別スレッドとして実行する必要があるのでVNCサーバー側にマルチタスクシステムが必要になります。
VNC実装上の注意
対応するサーバメッセージクライアント
emWin VNCサーバは、ポインタのイベントメッセージとキーボードのイベントのメッセージをサポートしています。
エンコーディング
サーバは、Rawエンコーディングとhextileエンコーディングをサポートしています。
認証
サーバーは現在認証を必要としません。しかし認証機能は要求に応じて簡単にサーバに追加することができます。
パフォーマンス
ほとんどのビューアは圧縮率の高いhextileエンコーディングをサポートしています。標準的なQVGA画面では20~50KBのデータが必要になります。ARM7プラットフォーム(50 MHZ、キャッシュ付き)上で動作する場合1画面を更新するのに200-300ms必要になります。サーバは増分更新で処理をするので、ほとんどの場合、更新される表示領域はディスプレイに比べてずっと小さく、送信するデータは極僅かになります。よって標準的なARM7システムではリアルタイム更新が可能になります。
マルチサーバ
サーバーの実装は、全く安全でリエントラントです。マルチVNCサーバではおなじCPU 上に複数のレイヤ、ディスプレイを走らせることができます。遠隔操作する対象がマルチディスプレイまたはマルチレイヤーが有効になっている場合、このことは有用なオプションとなります。VNCサーバーは一対一対応でレイヤーと接続しています。
VNCビューア
入手
AT&Tケンブリッジ研究所からVフリーソフトウェアとして、GNU Public Licenseの条件の下で配布されています。http:// www.uk.research.att.com / vnc からダウンロードできます。
バージョン
emWinのVNCの実装は、バージョン3.3.3R2でテストされており、このバージョンまたはそれ以降のバージョンでも動作するはずです。
プラットフォーム
ビューアは、異なるプラットフォームで利用可能です。詳細については、AT&Tケンブリッジ研究所のウェブサイトを参照してください。http:// www.uk.research.att.com / vnc
VNCビューアの使用
ToolVNCViewer.exeをダブルクリックしてビューアを起動すると、接続するVNCサーバを選択するダイアログが表示されます。
シミュレーションを使って同じPCをVNCサーバとして接続する
一つのPC上でシュミレータとVNCビューアを使用する場合、”localhost:0”を入力するとVNCサーバに接続できる。":0"は、サーバーのインデックスが0であることを意味し、省略が可能である。なので、単に"localhost"と入力すると接続することができます。
別のPCまたはターゲット上で動作するVNCサーバへの接続
別のPCまたはターゲット上で動作しているVNCサーバーに接続するには、マシンの名前またはIPアドレスを入力してください。マシン名が"Joerg"、IPアドレス192.168.1.2であるVNCサーバに接続するには、"192.168.1.2:0"、"Joerg:0"または”Joerg”を入力すると接続することができます。
スクリーンショット例
シミュレーションに接続
ターゲットに接続
emWin VNCサーバの起動
VNCサーバを起動は関数GUI_VNC_X_StartServer()を呼び出すことでできます。
void MainTask(void) { GUI_Init(); GUI_VNC_X_StartServer(0, /* Layer index */ 0); /* Server index */ ... }
上記の関数呼び出すと、接続用にポート5900で待機するスレッドを作成します。接続が検出されると GUI_VNC_Process()を呼び出します。
ポート
VNCサーバは590xポートで待機します、xはサーバーのインデックスです。デフォルトでディスプレイ0を使用するためほとんど場合ポートは5900になります。
サンプル
シングルレイヤのサンプル
シミュレーションのスクリーンショット【図】
VNCサーバのスクリーンショット【図】
マルチレイヤーのサンプル
シミュレーションのスクリーンショット【図】
VNCサーバのスクリーンショット
レイヤ0【図】
レイヤ1【図】