文字放送プログラム開発キットマニュアル 有限会社アクセスビジョン 本キットは、文字放送データ取得、文字放送データデコーディング、データスキ ャン、ファイル操作のAPIと各種構造体からなります。ウィンドウズ用C/C++言 語で以下のライブラリ(Windows95のWin32環境)をリンクすることにより、文字放送 電子新聞のCHSCAN.EXEとTELETX32.DLLを直接アクセスして文字放送番組のデータを 利用したいろいろなプログラムを開発することができます。添付してあるサンプル ソースはVisual C++用です。 インクルードファイル ifchs32.h リンクライブラリ ifchs32.lib DLLライブラリ ifchs32.dll 文字放送データは著作権法に守られています。また文字放送データの利用方法は放 送法により制限が加えられています(営為行為や、ネットワークを経由した利用は 禁止されています)。個人的な用途以外には利用しないでください。 詳しくは文字放送局にお問い合わせください。 ----------------------- API --------------------------------------- -------------------------------------------------------------------------- −−−−−−−−ChScanオープン関数 BOOL OpenChScan(LPSTR lpOption); LPSTR lpOption; /*ChScanロードオプション*/ データ受信プログラムChScanとの通信をはじめます。 ChScanがロードされていない場合はオプションつきでロードします。 処理終了後、CloseChScanを実行する必要があります。 一般的にはプログラムの最初に実行します。 パラメータ lpOption ChScanロードオプション 例 "-i -m1 -c1" 戻り値 成功したらTRUEを返します。 −−−−−−−−ChScanクローズ関数 void CloseChScan(int mode); int mode; 0:通信終了のみ、1:通信終了とChScanの終了 ChScanとの通信を終了します。また、ChScanを終了させます。 OpenChScanを実行したら必ず呼び出す必要があります。 一般的にはプログラムの最後に実行します。 −−−−−−−−文字放送データハンドル取得関数 HANDLE GetPageDataHandle(int Ch, int Prog, int Page, WORD far *lpFlag); int Ch; /*チャンネル*/ int Prog; /*番組*/ int Page; /*ページ*/ WORD far *lpFlag; /*フラグのアドレス*/ 指定したチャンネル・番組・ページの文字放送データハンドルを取得します。ハン ドルは使用後、GlobalFree関数で破棄してください。ハンドルはヘッダー(HEADER TELETEXT)と生データからなるグローバルデータのハンドルです。生データはCRCチ ェック済みです。 パラメータ Ch チャンネル(1〜62) Prog 番組(0〜999) Page ページ(0、1〜99) lpFlag リターンフラグのアドレス。 フラグ:bit15 日付が古いデータです bit14 最新のスキャンデータでありません 戻り値 文字放送データハンドル 0の場合はデータがないときです。 −−−−−−−−ページ総数取得関数 int GetPageNumber(int Ch, int Prog); int Ch; /*チャンネル*/ int Prog; /*番組*/ 指定したチャンネル・番組のページ総数を取得します。 パラメータ Ch チャンネル(1〜62) Prog 番組(0〜999) 戻り値 ページ総数 0の場合はデータがないときです。 −−−−−−−−カレントページ取得関数 int GetNowPage(int Ch, int Prog); int Ch; /*チャンネル*/ int Prog; /*番組*/ 指定したチャンネル・番組の現在受信されているページ番号を取得します。この関 数はスキャン中のチャンネルに対して有効です。 パラメータ Ch チャンネル(1〜62) Prog 番組(0〜999) 戻り値 現在受信されているページ番号 0の場合はデータがないか、スキャン中でないチャンネルを指定 したときです。 −−−−−−−−ページデータID取得関数 WORD GetPageCRC(int Ch, int Prog, int Page, WORD far *lpFlag); int Ch; /*チャンネル*/ int Prog; /*番組*/ int Page; /*ページ*/ WORD far *lpFlag; /*フラグのアドレス*/ 指定したチャンネル・番組・ページの文字放送データに固有のIDを取得します。 このIDを比較することによりデータの変更を知ることができます。 パラメータ Ch チャンネル(1〜62) Prog 番組(0〜999) Page ページ(0、1〜99) lpFlag リターンフラグのアドレス。 フラグ:bit15 日付が古いデータです bit14 最新のスキャンデータでありません 戻り値 文字放送データ固有ID 0の場合はデータがないときです。 −−−−−−−−タイマースキャン関数 void RemoteTimerScan(int Ch, int nTime); int Ch; /*チャンネル*/ int nTimel /*スキャン時間(秒単位)*/ 指定したチャンネルを指定時間(秒単位)スキャンします。 パラメータ Ch チャンネル(1〜62) nTime スキャン時間(秒単位、1以上) −−−−−−−−スキャン操作関数 void RemoteScanOnOff(int Ch, int OnOff); int Ch; /*チャンネル*/ int OnOff; /*スキャンのON/OFF*/ 指定したチャンネルのスキャンを開始・終了します。 パラメータ Ch チャンネル(1〜62) OnOff 1:ON, 0:OFF −−−−−−−−ChScanオプション実行関数 void ChScanExecOption(int Set, LPCSTR sFile, int Mode, int ChBtn); int Set; /*チャンネルセット*/ LPCSTR sFile; /*番組ファイルのパス*/ int Mode; /*スキャンモード*/ int ChBtn; /*ボタン番号*/ ChScanをオプションつきで実行します。 Set チャンネルセット(1〜3) sFile; 番組ファイルのパス、NULLの場合現在セットされている番組 が指定される Mode スキャンモード(0〜3) ChBtn 番組ボタンの番号(上から数えて)(1〜8) 備考 ChScanヘルプの起動オプションを参照してください。 −−−−−−−−チェックオプション操作関数 void ChScanCheckOption(BOOL bFileLoad, BOOL bFileSave, BOOL bClearOld, BOOL bDataScan); BOOL bFileLoad; /*バッファファイルロードオプション*/ BOOL bFileSave; /*バッファファイルセーブオプション*/ BOOL bClearOld; /*非スキャンデータ消去オプション*/ BOOL bDataScan; /*データスキャンオプション*/ ChScanのチェックオプションを操作します。 パラメータ bFileLoad TRUE:ロードします FALSE:ロードしません bFileSave TRUE:セーブします FALSE:セーブしません bClearOld TRUE:消去します FALSE:消去しません bDataScan TRUE:スキャンします FALSE:スキャンしません 備考 ChScanヘルプの起動オプションを参照してください。 −−−−−−−−番組表取得関数 int GetProgramInfo(int Ch, WORD far *lpWord); int Ch; /*チャンネル*/ WORD far *lpWord; /*番組の領域*/ 指定したチャンネルの番組表を返します。ただし、現在放送されている番組では なくChScanでハンドルされている番組です。 Ch チャンネル lpWord 番組番号を格納するワード配列のアドレス。1000の配列を確保 してください。 戻り値 番組数 −−−−−−−−ChScan表示関数 void ChScanTopWin(BOOL bFlag); BOOL bFlag; /*表示フラグ*/ ChScanをポップアップしたりアイコン化したりします。 bFlag TRUE:ポップアップ、FALSE:アイコン化 −−−−−−−−テキスト表示処理関数 BOOL GetTT_Text(void far *pmt, HANDLE handle, LPSTR lpStr); void far *pmf; /*テキスト処理構造体のアドレス*/ HANDLE handle; /*文字放送データハンドル*/ LPSTR lpStr; /*リターンストリングのアドレス*/ 指定した文字放送データハンドルより抽出したテキスト表示形式のストリングを返 します。テキスト表示形式の各オプションはMODE_TEXT構造体で指定します。 パラメータ pmf MODE_TEXT構造体のアドレス handle 文字放送データハンドル lpStr リターンストリングのアドレス。4Kバイト以上必要です。 戻り値 何らかのエラーがあったときFALSEを返します。 −−−−−−−−テキスト定型処理関数 BOOL GetTT_Form(void far *pmf, HANDLE handle, LPSTR lpStr); void far *pmf; /*テキスト定型処理構造体のアドレス*/ HANDLE handle; /*文字放送データハンドル*/ LPSTR lpStr; /*リターンストリングのアドレス*/ 指定した文字放送データハンドルより抽出したテキスト表示形式のストリングを返 します。テキスト表示形式の各オプションはMODE_FORM構造体で指定します。 パラメータ pmf MODE_FORM構造体のアドレス handle 文字放送データハンドル lpStr リターンストリングのアドレス。4Kバイト以上必要です。 戻り値 何らかのエラーがあったときFALSEを返します。 −−−−−−−−文字放送表示処理関数 BOOL GetTT_Graph(void far *pmi, HANDLE handle, HDC hDC); void far *pmi; /*文字放送表示処理オプション構造体のアドレス*/ HANDLE handle; 文字放送データハンドル HDC hDC; デバイスコンテキスト 指定した文字放送データハンドルから文字放送画面を表示します。 パラメータ pmi MODE_IMAGE構造体のアドレス handle 文字放送データハンドル hDC デバイスコンテキストを指定します 戻り値 何らかのエラーがあったときFALSEを返します。 備考 上部15dot, 下部・左部・右部にそれぞれ3dotの遊びが あります。 −−−−−−−−文字放送ビットマップ取得関数 HBITMAP GetTT_Bitmap(void far *pmi, HANDLE handle); HDC hDC; デバイスコンテキスト HANDLE handle; 文字放送データハンドル 指定した文字放送データハンドルから文字放送画面ビットマップを取得します。 パラメータ pmi MODE_IMAGE構造体のアドレス handle 文字放送データハンドル 戻り値 ビットマップハンドル 何らかのエラーがあったとき0を返します。 −−−−−−−−文字放送表示処理関数(旧) BOOL GetTT_Image(HDC hDC, HANDLE handle, int size); HDC hDC; デバイスコンテキスト HANDLE handle; 文字放送データハンドル int size; サイズ 指定した文字放送データハンドルから文字放送画面を表示します。 パラメータ hDC デバイスコンテキストを指定します handle 文字放送データハンドル size 0:310×170, 1:310×204 ただし、上部15dot, 下部・左部・右部にそれぞれ3dotの遊びが あります。 戻り値 何らかのエラーがあったときFALSEを返します。 −−−−−−−−データファイルロード関数 HANDLE LoadDataHandle(LPCSTR FileName); LPCSTR FileName; /*ファイル名*/ 指定したファイルから文字放送データを読み込みます。 戻り値 文字放送データハンドル。0の場合はエラーのときです。 −−−−−−−−データファイルセーブ関数 BOOL SaveDataHandle(LPCSTR FileName, HANDLE handle); LPCSTR FileName; /*ファイル名*/ HANDLE handle; /*文字放送データハンドル*/ 指定したファイルに文字放送データを書き込みます。ファイルがある場合には上 書きします。拡張子は".TDB"です。 戻り値 FALSEの場合はエラーのときです。 −−−−−−−−ChScanチェック関数 BOOL CheckChScan(void); ChScanがすでにロードされていたらTRUE、ロードされていない場合FALSEを返し ます。 −−−−−−−−バッファファイルチェック指定関数 void CheckBufferMode(BOOL bCheck); ChScanのバッファファイルのアクセス方法を指定します。 パラメータ bCheck TRUE: ファイルアクセス時常にファイル名をチェックします。 (バッファファイル変更でも正しくファイルを読み込みます) FALSE: ファイルアクセス時にファイル名をチェックしません。 (アクセススピードが速くなります−デフォルト) −−−−−−−−バッファファイル変更関数 void ChangeBufferDir(BOOL bChange, LPSTR lpStr) BOOL bChange; /*変更フラグ*/ LPSTR *lpStr; /*バッファファイルパス*/ パラメータ bChange TRUE: lpStrで指定したバッファファイルにします。 FALSE: バッファファイルを標準に戻します。 lpStr バッファファイルのパス(bChangeがTRUEのとき有効) −−−−−−−− TTNews起動関数 void ExecuteTTNews(LPSTR lpStrOption, LPSTR lpStrFilePath) LPSTR *lpStrOption; /*オプションのストリング列*/ LPSTR *lpStrFilePath; /*TTWファイルパス*/ 備考 例: ExecuteTTNews("-q -s", "c:\\ttw\\screen.ttw"); TTNewsをスクリーンセーバーモードで起動しscreen.ttwを読み 込み番組ビュー1のデータをファイル化します。 −−−−−−−− TTNewsデータベース受信 void SetDatabaseWin(char *DataBaseClass, char *DataBaseName, char *DataBasePath, char *DataBaseExec) char *DataBaseClass; /*ウィンドウクラス名*/ char *DataBaseName; /*ウィンドウ名*/ char *DataBasePath; /*受信アプリケーションディレクトリのパス*/ char *DataBaseExec; /*受信アプリケーションのファイル名*/ TTNewsは番組ビューを選択してデータベースボタンを押すとあらかじめ指定されたディ レクトリに生データを格納します。本APIを呼び出すとデータの情報を指定したアプ リケーションに通知するモードにすることができます。このときデータは格納されず、 受信アプリケーションでこの情報をもとにデータの取り出し格納等の処理をすることが できます。受信アプリケーションが起動されていないときはTTNewsがこのアプリケーシ ョンを起動します。もとに戻すときはReleaseDatabaseWinを呼び出す必要があります。 通知される情報はメッセージで通知されます。 メッセージ :WM_USER+200 wParam : MAKELONG(MAKEWORD(ページモード,表示形式),0)の値 [LOWORD] (LOBYTE) ページモード 0:シンブルページモード、1:マルチページモード (HIBYTE) 表示形式 0:テキスト 1:文字放送 2:テキスト定型 [HIWORD] 未使用 lParam :MAKELONG(MAKEWORD(チャンネル,ページ),番組)の値 [LOWORD] (LOBYTE) チャンネル番号(1〜62) (HIBYTE) ページ番号(1〜99) (マルチページモードのとき不定) [HIWORD] 番組番号(0〜999) void ReleaseDatabaseWin() TTNewsのデータベースボタンの動作を元に戻します。 ----------------------- 構造体 ------------------------------------- ------------------------------------------------------------------------ −−−−−−−−テキスト表示処理オプション構造体 typedef struct { int ver; //バージョン(30) int mode_page; //0:single page, 1:multi page BOOL hka_zka ; //本文の小サイズカナの変換 0:半角 1:全角 BOOL hka_zka_h; //ヘッダーの小サイズカナの変換 0:半角 1:全角 BOOL hes_zes; //本文の小サイズ英数の変換 0:半角 1:全角 BOOL hes_zes_h ; //ヘッダーの小サイズ英数の変換 0:半角 1:全角 BOOL hhi_hka_zhi; //本文、ヘッダーの小サイズひらがなの変換 0:半角カナ 1:全角 BOOL header; //ヘッダーの表示 0:OFF, 1:ON BOOL honbun; //本文の表示 0:OFF, 1:ON char page_return; //ページに空白の改行を入れる BOOL pos_return; //1:指定位置改行 0:なし BOOL pos_return_once;//1:最初だけ指定位置改行 0:なし int del_spc; //削除するスペース数 char header_mark[8]; //ヘッダーマーク char pre_return1[8]; //文字列の手前を改行 char pre_return2[8]; //文字列の手前を改行 char next_return[8]; //文字列の後を改行 char row_return[8]; //先頭が〜の行を改行 char not_return[8]; //先頭が〜のページ以外を詰める(multi pag eのみ) BOOL lowest_off; //最下行を削除 char del_word[8]; //文字列の削除 char rep_word[8]; //未定義文字変換 } MODE_TEXT; −−−−−−−−テキスト定型表示処理オプション構造体 typedef struct { int ver; //バージョン(30) int mode_page; //0:single page, 1:multi page BOOL hka_zka ; //本文の小サイズカナの変換 0:半角 1:全角 BOOL hka_zka_h; //ヘッダーの小サイズカナの変換 0:半角 1:全角 BOOL hes_zes; //本文の小サイズ英数の変換 0:半角 1:全角 BOOL hes_zes_h ; //ヘッダーの小サイズ英数の変換 0:半角 1:全角 BOOL hhi_hka_zhi; //本文、ヘッダーの小サイズひらがなの変換 0:半角カナ 1:全角 BOOL rect_form; //定型四角形(位置が正確なフォーマット) char rep_word[8]; //未定義文字変換 } MODE_FORM; −−−−−−−−文字放送表示処理オプション構造体 typedef struct { int ver; //バージョン(30) int tele_size; //サイズ 0:310×170, 1:310×204 int bkcolor; //バックグランドカラー(0〜15) } MODE_IMAGE; −−−−−−−−文字放送データハンドルのヘッダー構造体 typedef struct { BYTE Ver; //Version (21以上) BYTE Base; //Base (no available) WORD Ch; //チャンネル WORD Prog; //番組 WORD Page; //ページ WORD CRC; //ページ固定値 BYTE Date; //日付 (不明確な値) BYTE Cycle; //サイクル (不明確な値) LONG Time; //読み込み日時(time_t) WORD Flag; //flag WORD size; //データサイズ(*22) } HEADERTELETEXT; size×22のサイズの生データが続きます −−−−−−−−−−−−−−−−−−−−−−−−−−−−−− 著作: 有限会社アクセスビジョン