UDPDevice
In-Sight スプレッドシートのセルを UDP デバイス (クライアントまたはサーバ) として定義します。この関数を定義すると、In-Sight ビジョンシステムとほかの UDP デバイスとの接続が可能になり、ネットワークを介してデータを共有することができます。UDP の接続が確立すると、ReadDevice 関数、WriteDevice 関数、および QueryDevice 関数を使用してデータを通信します。UDPDevice 関数が、ネットワークのほかの UDP デバイスと通信を開始する場合、セルは UDP クライアントとして動作します。UDPDevice 関数が、ネットワークにあるほかの UDP デバイスからの受信を待機する場合は、セルは UDP サーバとして動作します。
TCP に代わる User Datagram Protocol (UDP) はコネクションレス型通信トランスポート方法で、インターネットプロトコル経由でのメッセージ交換の際に限定的なサービスを提供します。TCP とは異なり、UDP では配信の確認や保証は行われません。また、パケットを順番どおりに並べることもありません。
UDPDeviceの入力パラメータ
Syntax:UDPDevice(ホスト名,ポート,タイムアウト,バイナリーパケット)
ホスト名 |
UDPDevice 関数が含まれているセルをクライアントにする場合は、接続を確立する UDP サーバの名前を指定します。 注 :
|
ポート |
UDP デバイスとの間で接続を確立する UDP サーバのポート番号です。ホスト名が指定された場合、入力されたポート番号はサーバ側にも割り当てる必要があります。ホスト名が指定されない (空の文字列である) 場合、このパラメータでこのデバイスに UDP/IP ポート番号が割り当てられます。 1 つのホストで、2 つの UDPDevice 関数が同じ UDP ポート番号を共有することはできません。この場合、一方のデバイスは UDP 接続を確立することができなくなります。例えば、1 つの In-Sight スプレッドシートの 2 つのセルにデフォルトのポート番号として「3000」を使用する UDPDevice 関数が入力されている場合、どちらか 1 つのセルのみが UDP デバイスとして機能します。ポート番号の割り当ての重複を避けることは重要です。 注 : 有効なポート番号は、In-Sight の通信に使用されるポートを除く、1 ~ 65535 の範囲で未使用の番号です。PC のサービスで予約されているポート番号との競合を避けるために、In-Sight エミュレータの設定では、必ず 3000 (デフォルト) 以降のポート番号を割り当ててください。
|
タイムアウト | UDP 接続の確立を試みてから中断するまでの待機時間をミリ秒単位 (100 ~ 15000、デフォルト = 1000) で指定します。このパラメータは、UDPDevice 関数がセルで UDP クライアントとして定義されている場合のみ適用されます。 |
バイナリーパケット | データをバイナリデータパケット、または文字列情報のどちらとして処理するかを指定します。デフォルトでは、このオプションは無効にされており、データは文字列情報として処理されます。 |
UDPDeviceの出力
戻り値 |
デバイスデータ構造体。入力パラメータが無効の場合か、タイムアウトの設定時間を超えた場合は、#ERR が返されます。 注 : 1 つのジョブに挿入できるデバイス構造体の数は最大 12 個です。
|
結果 | 関数がセルに入力されると、右側の隣接したセルに追加の関数が自動的に挿入されます。関数が UDP クライアントである場合は WriteDevice 関数で、UDP サーバである場合は ReadDevice 関数です。 |
UDPDevice例
以下の例は、次のように設定されている場合、UDPDevice 関数をどのように使用するのかを示します。応答を必要としない UDP クライアント、応答が必要な UDP クライアント、メッセージのみ受信する UDP サーバ、メッセージを受信して応答する UDP サーバ
応答を必要としない UDP クライアント
この設定では、UDP メッセージを UDP サーバデバイスに送信するように In-Sight ビジョンシステムを設定します。
設定
ジョブに UDPDevice 関数が追加され、この関数に対して有効な [ホスト名] および [ポート] パラメータが設定されます。UDPDevice 関数がクライアントとして動作することが決定されると、このジョブに WriteDevice 関数が自動的に追加されます。この WriteDevice 関数は有効な [イベント] パラメータを適用することによって設定されます。[デバイス] パラメータには、UDPDevice 関数によって出力されるデータ構造体が設定されます (これは WriteDevice 関数がジョブに追加されたときに自動的に設定されます)。また、有効なバイナリデータパケットまたは文字列情報を出力するセルが参照されます。
実行
ビジョンシステムがオンラインである場合、WriteDevice 関数が有効なイベントを受信するたびに、UDP メッセージが送信されます。サーバからの応答は必要ないため、[タイムアウト] パラメータは必要ありません。
応答を必要とする UDP クライアント
この構成では、UDP メッセージを UDP サーバデバイスに送信し、[タイムアウト] パラメータに設定された期限が切れるまで、サーバデバイスからの応答を待機するように In-Sight ビジョンシステムを設定します。
設定
ジョブに UDPDevice 関数が追加され、この関数に対して有効な [ホスト名] および [ポート] パラメータが設定されます。次に、[タイムアウト] パラメータに適切なタイムアウト値を設定し、自動的に追加された WriteDevice 関数を設定します。それらの関数の設定後、QueryDevice 関数を追加し、その Event 関数を適切なイベントに設定し、[デバイス] パラメータを UDPDevice 関数と送信される適切なデータへの参照によって出力される データ構造体に設定します。ジョブに UDPDevice 関数が追加され、この関数に対して有効な [ホスト名] および [ポート] パラメータが設定されます。UDPDevice 関数がクライアントとして動作することが決定されると、このジョブに WriteDevice 関数が自動的に追加されます。この WriteDevice 関数は有効な [イベント] パラメータを適用することによって設定されます。[デバイス] パラメータには、UDPDevice 関数によって出力される
データ構造体、および送信される適切なデータへの参照が設定されます。
実行
ビジョンシステムがオンラインである場合、QueryDevice 関数の [イベント] パラメータがトリガされるたびに UDP メッセージが送信されます。サーバからの応答を待っている間、このジョブのそのほかの関数が実行されます。サーバから応答が来ない場合、または [タイムアウト] パラメータの期間を過ぎてから応答を受信した場合はエラーが返されます。このエラーは、次のイベントによって新たな UDP メッセージの送信がトリガされたときにクリアされます。
メッセージを受信するだけの UDP サーバ
この構成では、UDP クライアントデバイスから UDP メッセージを受信するように In-Sight ビジョンシステムを設定します。
設定
ジョブに UDPDevice 関数が追加されます。[ホスト名] パラメータは空のままですが、[ポート] パラメータには有効な値が設定されます。UDPDevice 関数がサーバとして動作することが決定されると、このジョブに ReadDevice 関数が自動的に追加されます。この ReadDevice 関数は有効な [イベント] パラメータを適用することによって設定されます。[デバイス] パラメータには、UDPDevice 関数によって出力されるデータ構造体が設定されます (これは ReadDevice 関数がジョブに追加されたときに自動的に設定されます)。
実行
ビジョンシステムがオンラインの場合、これはスプレッドシートのバックグラウンドで実行され、メッセージの送信を待機する UDP サーバとして動作します。メッセージを受信したサーバはスプレッドシートをトリガして ReadDevice 関数を実行し、着信データをこの関数に代入します。このメッセージはビジョンシステムの IP アドレスに直接送信することができ、またはネットワーク上にある複数のビジョンシステムにブロードキャストメッセージとして送信することもできます。
メッセージを受信し応答する UDP サーバ
この構成では、UDP クライアントデバイスから UDP メッセージを受信し、メッセージが正常に受信されたことを示す応答を送信するように In-Sight ビジョンシステムを設定します。
設定
2 つの UDPDevice 関数がジョブに追加されます。1 つめの UDPDevice 関数はサーバとして設定されます ([ホスト名] パラメータは空のままですが、[ポート] パラメータには有効な値が設定されます)。2 つめの UDPDevice 関数はクライアントとして設定されます。着信パケットのリモートアドレスの取得には、GetRemoteAddress 関数が使用されます。また、パケットを発行したリモートポートの取得には GetRemotePort 関数が使用されます。
実行
サーバの着信メッセージおよび発信メッセージの処理には、2 つの UDPDevice 関数が使用されます。メッセージを受信すると、このメッセージを実行し、処理するために、スプレッドシートがトリガされます。ジョブが応答を作成した場合、このイベントによって、応答パケットを送信するための WriteDevice 関数もトリガされます。着信パケットには IP アドレスとポート番号が含まれています。これらは、WriteDevice 関数によって、応答パケットの送信に使用されます。このメッセージはビジョンシステムの IP アドレスに直接送信することができ、またはネットワーク上にある複数のビジョンシステムにブロードキャストメッセージとして送信することもできます。