元野良猫のタキシードねこ「るひ・ルヒ・RUHI」との日々の生活

⑦JRA-VAN用競馬ソフトを作る

CATEGORYJRA-VAN
1.「競馬ソフト開発体験教室


〇ステップ3 レッスン開始!
<<< Lesson.1 >>>サービスキーを入力する仕組みを用意する

Lesson..2
JV-Dataをダウンロードする

JRA-VAN Data Lab.では競馬ソフトを、過去の全てのデータを保持する「蓄積系ソフト」と
該当週のレース予想に十分なデータのみを保持する「非蓄積系ソフト」の2つに分類しています。
この分類はJRA-VAN Data Lab.対応の競馬ソフトを作成する上で非常に重要な点ですので、
事前にJRA-VAN SDKに同梱されている
 「JRA-VAN Data Lab.開発ガイド_3.0.0.pdf」の「3.3 JV-Data取得方法の概念」の項で確認しておいてください。
「JV-Link」(プロパティ・メソッド等)のインターフェイスについては
 「JV-Linkインターフェイス仕様書_4.5.0(Win).pdf」を確認
「JV-Data」(データフォーマット・コード等)の仕様については
 「JV-Data450.pdfまたはxlsx」を確認

ちなみに今回から数回にわたる実装では、「非蓄積系ソフト」のイメージで作成していきます。


【 今回の目標 】
JV-Dataをダウンロードしてみる。

JV-Linkに実装されている以下のメソッドの使い方を理解する。
 ・JVInitメソッドでJV-Linkの初期化を実行
 【構文】
  Long JVInit ( String 型 sid );

 【パラメータ】
 sid 呼出元のソフトを識別するソフトウェア ID を最大64バイトの文字列で指定します。
 ここにセットさ れる値は JRA-VAN サーバーにアクセスする際に
 User-Agent HTTP ヘッダーとして使用されます。
 ソフトウェアID はJRA-VAN に登録済みのものである必要があります。
 デフォルトで "UNKNOWN"が使用可能です。
  また、使用可能な文字は、半角のみとし、
 アルファベット、数字、スペース、アンダースコア(_)、 ピリオド(.)、スラッシュ(/)です。

 【戻り値】
 初期化処理が正しく終了した場合は 0、エラーが発生した場合はエラーの理由コードとして負の値が返ります。
 0 正常
 -101 sidが設定されていない
 -102 sidが64byteを超えている
 -103 sidが不正(sidの1桁目がスペース)
 (「JV-Linkインターフェイス仕様書_4.5.0(Win).pdf」「3.コード表」参照)

 【解説】
 JVInit はJV-Link の初期化のために必ず最初に呼び出さなければなりません(※)。
 JVInit は JV-Link が使用する変数などのリソースを初期化します。
 サーバーとの通信は行なわれません。
 JVInit は自身のプロパティをレジストリの内容で初期化しますが、
 JVSetUIProperties を呼び出した後に変更されたレジストリの内容を読み込ませるという理由で再度 JVInit を呼び出す必要はあり ません。
 JVOpen あるいはJVRTOpen により変更されたレジストリ内容は再度読み込まれます。

 ※アプリケーションの初期化時に呼び出しを行ってください。
  JVOpen あるいはJVRTOpen の都度 呼び出す必要はありません。

 ・JVOpenメソッドJV-Dataの取得を要求
 【構文】
 Long JVOpen( String 型 dataspec , String 型 fromtime , Long 型 option , Long 型 readcount , Long 型 downloadcount , String 型 lastfiletimestamp );

 【パラメータ】
 dataspec 読み出したいデータを識別するデータ種別IDを文字列として連結したものを指定します。
 1つのデータ種別IDは4桁固定ですので dataspec に指定する文字列は4の倍数桁でなければいけません。
 option パラメータとの組み合わせで指定できないデータ種別ID があります。

 既知の障害について
 ・dataspecを複数個指定した場合、個別に指定した場合と比較すると「対象ファイル数が多い場合にJVRead の処理時間が遅くなる」という障害が報告されています。
 処理時間が遅い場合には、detaspec を個別に指定し回避してください。
 また、セットアップデータ取得時はoption=4(ダイアログ無しセットアップ)を指定することで、セットアップ時のダイアログ表示を回避可能です。

 指定可能なデータ種別IDについては「JV-Data仕様書」を参照して下さい。

 fromtime
  dataspec に指定したデータの読出し開始ポイントを時刻(YYYYMMDDhhmmss の形式)で指定 します。
  ここで指定した時刻より大きくかつ現在時刻までに提供されたデータが読み出しの対象となります。

 option
  option = 1 通常データ
  option = 2 今週データ
  option = 3 セットアップデータ
  option = 4 ダイアログ無しセットアップデータ (初回のみダイアログを表示します。)
  上記以外 エラー

 蓄積系ソフトがデータをメンテナンスする際の差分データの読み出しの場合は1を指定します。
 非蓄積系ソフトが今週ぶんのデータのみを読み出したい場合には2を指定します。
 2を指定す ると直近の未来のレースに関するデータ(出走予定馬の過去走情報を含む)と直前のレースの 成績関連のデータに該当するデータだけを読み出します。
 1を指定した場合は全てのデータの 中から dataspec,fromtime に該当するデータが読み出されます。
 また、蓄積系ソフトがセットアップを行なう場合は3または4を指定します。
 3または4を指定した 場合はセットアップ専用のデータをスタートキット(CD/DVD-ROM)あるいは JRA-VAN サーバー から取得し読み出します。 セットアップを分割して行いたい場合(データ種別毎にセットアップを行う場合等)には、4を指定 します。
 4を指定した場合は、セットアップデータの取得元を指定するダイアログが初回のみ表示され2回目以降は初回に指定した取得元にてセットアップが行われます。

 readcount
  dataspec,fromtime,option で指定した条件に該当する全ファイル数が返されます。呼び出し時に 値をセットする必要はありません。

 downloadcount
  readcount で返された数のうちダウンロードあるいはスタートキット(CD/DVD-ROM)からのコピーが必要なファイルの数が返されます。

 lastfiletimestamp
  dataspec,fromtime,option で指定した条件に該当する全ファイルのうち最も新しいファイルのタイ ムスタンプが YYYYMMDDhhmmss の形式で返されます。
 このタイムスタンプは次に JVOpen を呼び出す場合に fromtime として指定するために必要ですのでレジストリやファイルまたはデータベースなどに保存しておく必要があります。
 また、lastfiletimestamp の設定で JVRead/JVGets の中断・再開が可能です。

 設定方法は以下の通り。
 ・通常データの中断・再開
  最後に読込んだファイルの m_CurrentFileTimestamp を保持し、再開時のJVOpen の fromtime に、保持している m_CurrentFileTimestamp を設定することで JVRead/JVGets を再開することができます。
  (dataspec を個別に指定した場合は dataspec 毎に保持を行う。)
  ・セットアップデータの中断・再開 最後に読込んだファイル名を保持し、再開時には前回と同じパラメータにてJVOpen を行い、保持しているファイル名まで JVSkip を行う事でJVRead/JVGets を再開することができます。
  (dataspec を個別に指定した場合は dataspec 毎に保持を行う。)

【戻り値】
 オープン処理が正しく終了した場合、0 が返されます。エラーが発生した場合にはエラーの理由コ ードとして負の数が返されます。(「3.コード表」参照)

【解説】
 データ識別文字列の組み合わせと開始ポイント時刻(fromtime)で指定したデータ(ファイル群)を読み込むための準備をします。具体的には以下の処理を行います。
 ・dataspec,fromtime,option が正しいか検査を行います。
 ・dataspec,fromtime,option に該当するファイルのリストをサーバに問い合わせます。
 ・該当するファイルがローカルディスクに存在するかどうか検査します。
 ・ローカルディスクに無いデータをサーバーからダウンロードするスレッドを開始します。
 ・ダウンロードスレッドが開始したら処理をアプリケーションに返します。

 option パラメータの指定により JV-Link は以下のデータを返します。
1 サーバーが提供している全てのデータの中から dataspec が合致し、fromtime より大きくかつ現在時刻までに該当するデータを取得します。
2 先週のレース結果情報と次週のレース関連情報を含んだ約1週間ぶんのデータの中からdataspec が合致し、fromtime より大きい時刻に該当するデータを取得します。
3, 4 セットアップ用データの中から dataspecが合致する fromtimeより大きい時刻を持つ全てのデータ(前月までのデータ)と、今月のの通常データの中で dataspec が合致する現在時刻までに提 供しているデータを取得します。(※1)

以下の option パラメータとdataspec の組み合わせは指定できません。
1 TCOV,RCOV
2 DIFF,BLOD,SLOP,YSCH,COMM,MING
3, 4 TCOV,RCOV

option に3または4を指定した場合、スタートキット(CD/DVD-ROM)からセットアップするか全てのデータ をサーバーからダウンロードするかを選択する次のようなダイアログが表示されます。
(option に4を指定 した場合は、初回のみ表示されます。)

JRA-VAN 提供のスタートキット(CD/DVD-ROM)を持っている場合はこのダイアログで指定します。

このダイアログで「スタートキット(CD/DVD-ROM)を持っている」を選択すると指定されたドライブから必要なデータをローカルディスクにコピーし、足りないデータをサーバーからダウンロードします。
古 いスタートキット(CD/DVD-ROM)を使用した場合でも最大限スタートキット(CD/DVD-ROM)に収容されたデータを利用するように動作し、足りないぶんをサーバーからダウンロードします。

「スタートキット(CD/DVD-ROM)を持っていない」を選択するとセットアップのためのデータを全てサーバーからダウンロードします。セットアップのためのデータはデータ量が多いのでスタートキット(CD/DVD-ROM)を使用したセットアップをお勧めしています。

※1:dataspec=TOKU(特別登録馬)に関する注意事項
 セットアップデータ取得時には最新分(当週+翌週)の特別登録馬の取得が可能です。
 過去分の取得を行うには、通常データ取得にて fromtime を過去日付に設定し取得を行う必要があ ります。
 また、新しいお知らせや新しいバージョンの JV-Link がリリースされていれば、告知ダイアログを表示します
 (新しいお知らせは、JRA-VAN からのお知らせを表示するになっている場合のみ表示されます)。


 ・JVCloseメソッドJV-Dataの読み込み処理を終了
 【構文】
 Long JVClose( );

 【パラメータ】
 なし

 【戻り値】
 サービス終了処理が正しく終了した場合は、0 が返ります。

 【解説】
 開いているファイルを全てクローズし、実行中のダウンロードスレッドがあれば中止します。
  保存パスが示すフォルダから不要なファイルを削除します。



「SDK」「Win」「ドキュメント」内の
 JV-Linkインターフェース(Win版)仕様書(Ver.4.5.0)8ページ 2.メソッド参照

「メソッド一覧」
JVInit (JV-Link の初期化をします)
JVSetUIProperties (JV-Link の設定変更(ダイアログ版)をします)
JVSetServiceKey (JV-Link の設定変更(利用キー)をします)
JVSetSaveFlg (JV-Link の設定変更(保存フラグ)をします)
JVSetSavePath  (JV-Link の設定変更(保存パス)をします)

JVOpen (蓄積系データの取得要求をします)
JVRTOpen (リアルタイム系データの取得要求をします)
JVStatus (ダウンロード進捗情報の取得をします)
JVRead (JV-Data の読み込みをします)
JVGets (JV-Data の読み込みをします)
JVSkip (JV-Data の読みとばしをします)
JVCancel (ダウンロードスレッドの停止をします)
JVClose (JV-Data 読み込み処理の終了をします)
JVFileDelete (ダウンロードしたファイルの削除をします)

JVFukuFile (勝負服画像情報要求をします)
JVFuku (勝負服画像情報要求(バイナリ)をします)

JVMVCheck (JRA レーシングビュアー レース映像公開チェック要求をします)
JVMVCheckWithType (JRA レーシングビュアー映像公開チェック要求をします)
JVMVPlay (JRA レーシングビュアー レース映像再生要求をします)
JVMVPlayWithType (JRA レーシングビュアー映像再生要求をします)
JVMVOpen (動画リストの取得要求をします)
JVMVRead (動画リストの読み込みをします)

JVCourseFile (コース図の取得要求をします)
JVCourseFile2 (コース図の取得要求をします)

JVWatchEvent (確定・変更情報の発生を通知するイベント通知を開始します)
JVWatchEventClose (イベント通知を終了します)

【 やってみよう 】
  Lesson-1までを実装したフォーム(frmMain)を含むプロジェクトを開く。

デバックモードで正常に稼働したが、下記の警告が出た!
警告 1 変数 'strLastFileTimestamp' は、値が割り当てられる前に参照によって渡されています。Null 参照の例外が実行時に発生する可能性があります。



Lesson.3>>>>
 JV-Dataの内容を読み出す

COMMENTS

0 Comments

There are no comments yet.

REPLY

Leave a reply