IBDA_DiseqCommand
COM公式ドキュメント
Digital Satellite Equipment Control (DiSEqC) コマンドを使用して、ケーブルテレビ衛星機器を制御します。
解説(Remarks)
使用しているケーブルテレビ機器に応じて、このインターフェースを使用して LNB コンバーターのソースを選択したり、モーター駆動のディッシュを動かしたり、無線周波数 (RF) スイッチング機器を制御したりできます。
このインターフェースのインターフェース識別子 (IID) を宣言するには、__uuidof 演算子を使用します: __uuidof(IBDA_DiseqCommand)。
メソッド 6
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
Digital Satellite Equipment Control (DiSEqC) コマンドの使用を有効または無効にします。
| bEnable | BOOLEAN | in | TRUE の場合、DiSEqC コマンドが有効になります。それ以外の場合、DiSEqC コマンドは無効になります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
衛星の設置状況によっては、DiSEqC コマンドが必要になる場合があります。ただし、DiSEqC を有効にすると、ドライバーがトランスポンダーを切り替えるのにかかる時間が長くなることがあります (通常は 100〜300 ミリ秒)。したがって、DiSEqC コマンドが不要な場合は無効にすることをお勧めします。
低雑音ブロック (LNB) コンバーターのソースを設定します。
| ulLNBSource | DWORD | in | 使用する LNB コンバーターのソース。
|
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
Tone-Burst コマンドを有効または無効にします。
| bUseToneBurst | BOOLEAN | in | TRUE の場合、Tone-Burst コマンドが有効になります。それ以外の場合、Tone-Burst コマンドは無効になります。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
Tone-Burst コマンドは、22 kHz のキャリア信号を使用してソース位置 A またはソース位置 B のいずれかを選択します。
通常、アプリケーションが IBDA_DiseqCommand::put_DiseqLNBSource を呼び出すと、ドライバーは必要に応じて Tone-Burst を有効または無効にします。ただし、チャンネル切り替えを改善するため、または特定の機器との互換性を維持するために、put_DiseqUseToneBurst メソッドを使用してこのモードのオン/オフを切り替えることができます。Tone-Burst を使用すると、チューニングに必要な時間が約 40 ミリ秒増加する可能性がある点に注意してください。
Digital Satellite Equipment Control (DiSEqC) コマンドの繰り返しを有効または無効にします。
| ulRepeats | DWORD | in | 各 DiSEqC コマンドを繰り返す回数。コマンドの繰り返しを無効にするには、ulRepeats を 0 に設定します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
2 つの DiSEqC スイッチがカスケード接続されている場合、チューナーは遠い側のデバイスに対してコマンドを繰り返す必要が生じることがあります。ただし、コマンドを繰り返すと、チューニングに必要な時間が約 100 ミリ秒増加する可能性があります。したがって、コマンドの繰り返しが不要な場合は無効にすることをお勧めします。
Digital Satellite Equipment Control (DiSEqC) コマンドを送信します。
| ulRequestId | DWORD | in | アプリケーションが割り当てる、コマンドの識別子。 |
| ulcbCommandLen | DWORD | in | pbCommand 配列のサイズ (バイト単位)。 |
| pbCommand | BYTE* | in | フレーミングバイトから始まる DiSEqC コマンドを格納したバイト配列へのポインター。パリティビットはドライバーが挿入します。 |
戻り値
このメソッドが成功した場合は S_OK を返します。それ以外の場合は HRESULT エラーコードを返します。
解説(Remarks)
このメソッドは、DiSEqC コマンドセットのバージョン 1.2 以降で必要です。
ドライバーからのコマンド応答を取得するには、IBDA_DiseqCommand::get_DiseqResponse を呼び出します。
Digital Satellite Equipment Control (DiSEqC) コマンドに対するドライバーの応答を取得します。
| ulRequestId | DWORD | in | コマンドの識別子。アプリケーションが IBDA_DiseqCommand::put_DiseqSendCommand を呼び出したときにこの値を割り当てます。 |
| pulcbResponseLen | DWORD* | inout | 入力時には、pbResponse 配列のサイズ (バイト単位) を指定します。出力時には、pbResponse バッファーに書き込まれたデータのバイト数を受け取ります。 |
| pbResponse | BYTE* | inout | ドライバーの応答を受け取るバイト配列へのポインター。 |
戻り値
このメソッドは、次のいずれかの値を返すことがあります。
| Return code | Description |
|---|---|
| メソッドは成功しました。 | |
| pbResponse パラメーターで指定されたバッファーが小さすぎます。 |
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IBDA_DiseqCommand "{F84E2AB0-3C6B-45E3-A0FC-8669D4B81F11}" #usecom global IBDA_DiseqCommand IID_IBDA_DiseqCommand "{}" #comfunc global IBDA_DiseqCommand_put_EnableDiseqCommands 3 int #comfunc global IBDA_DiseqCommand_put_DiseqLNBSource 4 int #comfunc global IBDA_DiseqCommand_put_DiseqUseToneBurst 5 int #comfunc global IBDA_DiseqCommand_put_DiseqRepeats 6 int #comfunc global IBDA_DiseqCommand_put_DiseqSendCommand 7 int,int,var #comfunc global IBDA_DiseqCommand_get_DiseqResponse 8 int,var,var ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数は var(変数直渡し)。varptr 方式にも切替可。#define global IID_IBDA_DiseqCommand "{F84E2AB0-3C6B-45E3-A0FC-8669D4B81F11}" #usecom global IBDA_DiseqCommand IID_IBDA_DiseqCommand "{}" #comfunc global IBDA_DiseqCommand_put_EnableDiseqCommands 3 int #comfunc global IBDA_DiseqCommand_put_DiseqLNBSource 4 int #comfunc global IBDA_DiseqCommand_put_DiseqUseToneBurst 5 int #comfunc global IBDA_DiseqCommand_put_DiseqRepeats 6 int #comfunc global IBDA_DiseqCommand_put_DiseqSendCommand 7 int,int,sptr #comfunc global IBDA_DiseqCommand_get_DiseqResponse 8 int,sptr,sptr ; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。 ; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。 ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。