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サーバを選択するダイアログが表示されます。

emwin vnc startviewer

 

シミュレーションを使って同じ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 viewerwin32

 

ターゲットに接続
emwin vnc viewertarget

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【図】


emWinホームに戻る 


 
SEGGER
RTOS&Middleware