VCL コンポーネント・リファレンス
 クラス一覧
 TTcpNumberReceiver コンポーネントクラス
構成
プロパティ一覧
メソッド一覧
イベント一覧
プロパティ
Active |
[アクセス] Read and Write
[データ型] Boolean
[初期値] False
[解説]
True にすると NumberWatcher サーバに接続(= Openメソッド呼び出し)し、False にすると接続を解除(= Closeメソッド呼び出し)します。エラーの場合は例外が発生します。
|
AsyncHandling |
[アクセス] Read and Write
[データ型] Boolean
[初期値] False
[解説]
NumberWatcher サーバとの通信処理は別スレッドで行っていますが、何らかのイベントが発生したときに、通信処理側スレッドから直接イベントハンドラを実行させるのか、あるいはメインスレッドと同期させてイベントハンドラを呼び出させるのかを設定します。True にするとメインスレッドとは非同期に呼び出され、False にするとメインスレッドと同期して呼び出されます。
Active=True 時に設定しようとすると ETcpNumberReceiver 例外が発生します。
※ OnAsyncError と OnAsyncTrace イベントハンドラはこのプロパティに関係なく非同期呼び出しされます。
|
BindAddr |
[アクセス] Read and Write
[データ型] string
[初期値] '' (空ストリング)
[解説]
ソケットにバインドする IP アドレスまたはホスト名を設定します。空ストリングにすると自動設定されます。
Active=True 時に設定しようとすると ETcpNumberReceiver 例外が発生します。
|
BindPort |
[アクセス] Read and Write
[データ型] Word
[初期値] 0
[解説]
ソケットに設定するポート番号を設定します。0 にすると自動設定されます。
Active=True 時に設定しようとすると ETcpNumberReceiver 例外が発生します。
|
BoundAddr |
[アクセス] Read Only
[データ型] string
[解説]
NumberWatcher サーバに接続した際の、ソケットにバインドされた IP アドレスです。Active=False 時には読み出さないようにして下さい。
|
BoundPort |
[アクセス] Read Only
[データ型] Word
[解説]
NumberWatcher サーバに接続した際の、ソケットに設定されたポート番号です。Active=False 時には読み出さないようにして下さい。
|
KeepAliveInterval |
[アクセス] Read and Write
[データ型] DWORD
[初期値] 60 (秒)
[解説]
NumberWatcher サーバとの接続を維持させるために、定期的にデータを送信しています。
このプロパティにはその送信間隔を秒数で指定しますが、送信間隔はサーバ側の numwat.ini ファイルの [Dispatch.TCP] keepAliveTimeout 設定値以下になるように設定する必要があります。
keppAliveTimeout 設定値以上にしてしまうと keepAliveTimeout 時間経過後にサーバに接続を解除されてしまいます。
(サーバ側の keepAliveTimeout の初期値は 90 秒です。)
定期的に NOP コマンドデータを送信しています。
Active=True 時に設定しようとすると ETcpNumberReceiver 例外が発生します。
|
KeepAliveResTimeout |
[アクセス] Read and Write
[データ型] DWORD
[初期値] 20 (秒)
[解説]
KeepAliveInterval の間隔で送信している NOP コマンドのレスポンスが返ってくるまでのタイムアウト時間を設定します。これは NumberWatcher サーバが生きているかどうか確認するためです。タイムアウトになるとサーバとの接続を解除します。
Active=True 時に設定しようとすると ETcpNumberReceiver 例外が発生します。
|
ServerAddr |
[アクセス] Read and Write
[データ型] string
[初期値] '127.0.0.1'
[解説]
接続する NumberWatcher サーバの IP アドレスまたはホスト名を設定します。
Active=True 時に設定しようとすると ETcpNumberReceiver 例外が発生します。
|
ServerPort |
[アクセス] Read and Write
[データ型] Word
[初期値] 9876
[解説]
接続する NumberWatcher サーバのポート番号を設定します。
Active=True 時に設定しようとすると ETcpNumberReceiver 例外が発生します。
|
メソッド
Close |
procedure Close;
[解説]
NumberWatcher サーバとの接続を解除します。これは Active=False と同じです。このメソッドまたは Active=False で明示的に接続を解除した場合は OnClose イベントは発生しません。
|
Open |
procedure Open;
[解説]
NumberWatcher サーバに接続します。これは Active=True と同じです。オープンできない場合は例外が発生します。
|
ReadMemory |
procedure ReadMemory(AdaptorIndex: Integer; Addr: Integer;
out NumberData: INumberDisplayData);
[解説]
ナンバーディスプレイアダプタのメモリを読み出します。AdaptorIndex には対象のナンバーディスプレイアダプタのインデックス(1台目 = 0, 2台目=1,...)を指定し、Addr には読み出すメモリアドレス(1 ~ 30)を指定します。
正常に読み出せた場合は NumberData に読み出した電話番号データのインタフェースポインタがセットされます。エラーの場合は ETcpNumberReceiver 例外が発生します。
|
WriteMemory |
procedure WriteMemory(AdaptorIndex: Integer; const Number: string);
[解説]
ナンバーディスプレイアダプタのメモリに電話番号を書き込みます。AdaptorIndex には対象のナンバーディスプレイアダプタのインデックス(1台目 = 0, 2台目=1,...)を指定し、Number には書き込む電話番号(数字のみ)を指定します。
エラーの場合は ETcpNumberReceiver 例外が発生します。
|
イベント
OnAsyncError |
procedure(Sender: TTcpNumberReceiver; const Msg: string) of object;
[解説]
OnError イベントと同じですが、このイベントハンドラは AsyncHandling の設定に関係なく、メインスレッドと非同期に呼び出されます。通常このイベントはハンドリングする必要はありません。
|
OnAsyncTrace |
procedure(Sender: TTcpNumberReceiver; const Msg: string) of object;
[解説]
OnTrace イベントと同じですが、このイベントハンドラは AsyncHandling の設定に関係なく、メインスレッドと非同期に呼び出されます。通常このイベントはハンドリングする必要はありません。
|
OnClose |
procedure(Sender: TObject) of object;
[解説]
サーバとの接続が解除された場合にこのイベントが発生します。Close メソッドまたは Active=False で明示的に接続を解除した場合はこのイベントは発生しません。
|
OnError |
procedure(Sender: TTcpNumberReceiver; const Msg: string) of object;
[解説]
内部でエラーが起きた場合に発生するイベントです。Msg にはエラーメッセージが入っています。通常このイベントはハンドリングする必要はありません。
|
OnPhoneDetect |
procedure(Sender: TTcpNumberReceiver; NumberData: INumberDisplayData) of object;
[解説]
電話を着信すると、このイベントが発生します。NumberData には電話番号データのインターフェースポインタが入っています。
|
OnTrace |
procedure(Sender: TTcpNumberReceiver; const Msg: string) of object;
[解説]
内部処理におけるトレースメッセージを出力するためのものです。通常このイベントはハンドリングする必要はありません。
|
 ETcpNumberReceiver 例外クラス
構成
プロパティ一覧
プロパティ
ErrorCode |
[アクセス] Read and Write
[データ型] Integer
[解説]
例外原因を識別するためのエラーコード値が格納されています。エラーコードは以下の通りです。
エラーコード表)
エラーコード値 |
エラー内容 |
1 |
コマンドのパラメータが正しくありません。 |
2 |
アダプタインデックス値が不正です。 |
3 |
ナンバーディスプレイアダプタがまだオープンしていません。 |
4 |
ナンバーディスプレイアダプタからのメモリ読み出し時エラー |
5 |
ナンバーディスプレイアダプタへのメモリ書き込み時エラー |
-1 |
管理者権限がないため実行できません。 |
-2 |
未定義コマンドです。 |
-99 |
NumberWatcher サーバがシャットダウン動作中です。 |
100 |
まだ NumberWatcher サーバに接続していません。 |
101 |
NumberWatcher サーバ接続中は設定変更できません。 |
102 |
NumberWatcher サーバとの接続が切断されました。 |
103 |
BindAddr プロパティ値が正しくありません。 |
104 |
ソケットを作成できません。 |
105 |
ServerAddr プロパティ値が正しくありません。 |
106 |
NumberWatcher サーバに接続できません。 |
200 |
NumberWatcher サーバからのレスポンス待ちタイムアウト |
201 |
レスポンスヘッダ部が正しくありません。 |
202 |
コマンドに対するレスポンスの不一致です。 |
203 |
レスポンスデータ部が正しくありません。 |
999 |
内部エラー |
|
 TMulticastNumberReceiver クラス
構成
プロパティ一覧
メソッド一覧
メソッド名 |
説明 |
Close |
マルチキャスト通信の終了 |
Open |
マルチキャスト通信の開始 |
イベント一覧
プロパティ
Active |
[アクセス] Read and Write
[データ型] Boolean
[初期値] False
[解説]
True にすると NumberWatcher サーバからの送信パケットを受信できるように通信状態を設定します。(= Openメソッド呼び出し) False にすると通信状態を解除します。(= Closeメソッド呼び出し) エラーの場合は例外が発生します。
|
AsyncHandling |
[アクセス] Read and Write
[データ型] Boolean
[初期値] False
[解説]
NumberWatcher サーバとの受信処理は別スレッドで行っていますが、何らかのイベントが発生したときに、受信処理側スレッドから直接イベントハンドラを実行させるのか、あるいはメインスレッドと同期させてイベントハンドラを呼び出させるのかを設定します。True にするとメインスレッドとは非同期に呼び出され、False にするとメインスレッドと同期して呼び出されます。
Active=True 時に設定しようとすると EMulticastNumberReceiver 例外が発生します。
※ OnAsyncError と OnAsyncTrace イベントハンドラはこのプロパティに関係なく非同期呼び出しされます。
|
BindAddr |
[アクセス] Read and Write
[データ型] string
[初期値] '' (空ストリング)
[解説]
ソケットにバインドする IP アドレスまたはホスト名を設定します。空ストリングにすると自動設定されます。
|
BindPort |
[アクセス] Read and Write
[データ型] Word
[初期値] 9876
[解説]
マルチキャスト送信された電話番号パケットを受信するポート番号を設定します。NumberWatcher サーバの numwat.ini ファイルの [Dispatch.Multicast] mcastPort の設定値に合わせるようにして下さい。そうしないと受信できません。
|
BoundPort |
[アクセス] Read Only
[データ型] Word
[解説]
オープン時にソケットに設定されたポート番号です。Active=False 時には読み出さないようにして下さい。
BindPort と同じ値(BindPort=0 以外のとき)になるはずなので、このプロパティは意味がありません。
|
MCastAddr |
[アクセス] Read and Write
[データ型] string
[初期値] '226.0.0.1'
[解説]
マルチキャスト送信された電話番号パケット受信する、マルチキャストアドレスを設定します。NumberWatcher サーバの numwat.ini ファイルの [Dispatch.Multicast] mcastAddr の設定値に合わせるようにして下さい。そうしないと受信できません。
マルチキャストアドレスの範囲は 224.0.0.0 ~ 239.255.255.255 です。(一部使えないアドレスがあります。)詳しくは、RFC2365, RFC1112, RFC2236 や関連サイト等を参照して下さい。
|
メソッド
Close |
procedure Close;
[解説]
マルチキャスト送信パケットの受信状態を解除します。これは Active=False と同じです。
|
Open |
procedure Open;
[解説]
NumberWatcher サーバからのマルチキャスト送信パケットを受信できる状態に設定します。これは Active=True と同じです。オープンできない場合は例外が発生します。
|
イベント
OnAsyncError |
procedure(Sender: TMulticastNumberReceiver; const Msg: string) of object;
[解説]
OnError イベントと同じですが、このイベントハンドラは AsyncHandling の設定に関係なく、メインスレッドと非同期に呼び出されます。通常このイベントはハンドリングする必要はありません。
|
OnAsyncTrace |
procedure(Sender: TMulticastNumberReceiver; const Msg: string) of object;
[解説]
OnTrace イベントと同じですが、このイベントハンドラは AsyncHandling の設定に関係なく、メインスレッドと非同期に呼び出されます。通常このイベントはハンドリングする必要はありません。
※ 現在このイベントは使われていません。
|
OnError |
procedure(Sender: TMulticastNumberReceiver; const Msg: string) of object;
[解説]
内部でエラーが起きた場合に発生するイベントです。Msg にはエラーメッセージが入っています。
|
OnPhoneDetect |
procedure(Sender: TMulticastNumberReceiver; NumberData: INumberDisplayData; const FromAddr: string; FromPort: Word) of object;
[解説]
電話を着信すると、このイベントが発生します。NumberData には電話番号データのインターフェースポインタが入っています。FromAddr, FromPort には電話番号パケットの送信元(NumberWatcher サーバ)の IP アドレスとポート番号が入っています。
|
OnTrace |
procedure(Sender: TMulticastNumberReceiver; const Msg: string) of object;
[解説]
内部処理におけるトレースメッセージを出力するためのものです。通常このイベントはハンドリングする必要はありません。
※ 現在このイベントは使われていません。
|
 EMulticastNumberReceiver 例外クラス
構成
プロパティ一覧
プロパティ
ErrorCode |
[アクセス] Read and Write
[データ型] Integer
[解説]
例外原因を識別するためのエラーコード値が格納されています。エラーコードは以下の通りです。
エラーコード表)
エラーコード値 |
エラー内容 |
101 |
通信有効状態のときは設定変更できません。 |
103 |
BindAddr プロパティ値が正しくありません。 |
104 |
ソケットを作成できません。 |
999 |
内部エラー |
|
 INumberDisplayData インターフェース
構成
プロパティ一覧
プロパティ
AdaptorIndex |
[アクセス] Read Only
[データ型] Integer
[解説]
電話着信元のナンバーディスプレイアダプタのインデックスです。例えばナンバーディスプレイアダプタを 2 台使っている場合は 1 台目が 0 で、2 台目が 1 となります。
|
Year |
[アクセス] Read Only
[データ型] Integer
[解説]
電話着信した日時の「年」(西暦)の部分です。この値はナンバーディスプレイアダプタには存在しないため、Month と Day の内容および NumberWatcher サーバマシンの日付を元に自動計算して割り出しています。
そのため正確な値にならない場合もあります。
電話番号が格納されていないメモリを読み出した場合は -1 になります。
|
Month |
[アクセス] Read Only
[データ型] Integer
[解説]
電話着信した日時の「月」の部分です。これはナンバーディスプレイアダプタから取得した値です。 値の範囲は 1 = 1月 ~ 12 = 12月 ですが、電話番号が格納されていないメモリを読み出した場合は 99 になります。
|
Day |
[アクセス] Read Only
[データ型] Integer
[解説]
電話着信した日時の「日」の部分です。これはナンバーディスプレイアダプタから取得した値です。 値の範囲は 1 = 1日~ 31 = 31日 ですが、電話番号が格納されていないメモリを読み出した場合は 99 になります。
|
DayOfWeek |
[アクセス] Read Only
[データ型] Integer
[解説]
電話着信した日時の「曜日」の部分です。これはナンバーディスプレイアダプタから取得した値です。 値の範囲は 0 = 日曜日~ 6 = 土曜日 ですが、電話番号が格納されていないメモリを読み出した場合は 9 になります。
|
Hour |
[アクセス] Read Only
[データ型] Integer
[解説]
電話着信した日時の「時」の部分です。これはナンバーディスプレイアダプタから取得した値です。 値の範囲は0 = 0時 ~ 59 = 59時 ですが、電話番号が格納されていないメモリを読み出した場合は 99 になります。
|
Minute |
[アクセス] Read Only
[データ型] Integer
[解説]
電話着信した日時の「分」の部分です。これはナンバーディスプレイアダプタから取得した値です。 値の範囲は 0 = 0分 ~ 59 = 59分 ですが、電話番号が格納されていないメモリを読み出した場合は 99 になります。
|
NumType |
[アクセス] Read Only
[データ型] TNumType
[解説]
電話着信した電話番号の種別です。TNumType の値の意味は以下の通りです。
ntValidNumber |
有効な電話番号 |
ntUnnotify |
非通知 |
ntOutOfRange |
表示圏外 |
ntPublicPhone |
公衆電話 |
ntNoNumber |
電話番号なし(メモリ履歴がないアドレス読み出し時) |
ntError |
エラー |
|
Number |
[アクセス] Read Only
[データ型] string
[解説]
電話着信した電話番号です。電話番号にはハイフン文字('-' )は含まれません。NumType の値が ntValidNumber のときだけ有効な電話番号が入っています。
|
|