• Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • Home
  • 日記
  • 競馬でプログラミング
    • JV-LinkをC#で使ってみる(WinForms版)
    • JV-LinkをC#で使ってみる(Console版)
  • このはとウェブログ
    • JavaScriptの話
    • WordPressの話
  • 私のバヌーシー出資馬について

sae-suki-blog.

  • メール
  • Instagram
  • RSS
  • Twitter

JV-LinkをC#で使ってみる(Console版) ~4.JV-Dataのダウンロード/読み込み進捗状況を表示する~

2018-10-19 by さえきさん

目次

  • 参考
    • 前回記事
    • WinForms版
    • 今回のソースコード
  • 開発環境
  • メインプログラムの作成
    • 進捗表示の作成(簡易プログレスバークラスの作成)
    • 簡易プログレスバークラスの組み込み
  • 動作確認

参考

前回記事

JV-LinkをC#で使ってみる(Console版) ~3.JV-Dataの内容を読み出す~

WinForms版

JV-LinkをC#で使ってみる(WinForms版) ~4.JV-Dataのダウンロード/読み込み進捗状況を表示する~

今回のソースコード

source – JV-LinkをC#で使ってみる(Console版) ~4.JV-Dataのダウンロード/読み込み進捗状況を表示する~


開発環境

  • Windows7 64ビット版
  • Visual Studio Community 2017
  • JV-Link Ver.4.5.1

メインプログラムの作成

進捗表示の作成(簡易プログレスバークラスの作成)

WinForms版を合わせてご参照ください。

WinForms版ではプログレスバーコントロールを使用していましたが、Console版では代わりになる簡易ProgressBarクラスを作成します。プログレスバーコントロールとプロパティ名を合わせましたので、使用方法は同等となっています。(名前はProgressBarですが実際にはただの「××/〇〇」表示です。)

//=====================================================================================
struct ProgressBar
{
    public int Maximum { set; get; }
    public int Value { set; get; }
}

簡易プログレスバークラスの組み込み

上で作成した簡易プログレスバーをアプリケーションへ組み込みます。まず簡易プログレスバークラスのオブジェクトのインスタンスを作成します。

//=====================================================================================
var prgDownload = new ProgressBar();
var prgJVRead = new ProgressBar();

次に簡易プログレスバーに初期値を与えます。ダウンロード数が0であった場合はダウンロードを「100/100」とし、ダウンロードが必要な場合はダウンロードを「0/総ダウンロード数」としています。データ読み込みは必ず「0/総読み込み数」としています。

//=====================================================================================
if (nDownloadCount == 0)
{
    prgDownload.Maximum = 100;
    prgDownload.Value = 100;
}
else
{
    prgDownload.Maximum = nDownloadCount;
    prgDownload.Value = 0;
}
prgJVRead.Maximum = nReadCount;
prgJVRead.Value = 0;

switch文のそれぞれの条件の通過時にダウンロードと読み込みの状況を取得/表示します。

  • 82,121行目
    「ファイル切り替わり」時と「読み飛ばし」時に読み込み進捗を1増加させます。

  • 86行目
    「ダウンロード」時にJVStatus()関数からダウンロード数を取得します。

switch (jvLink.JVRead(out strBuff, out nBuffSize, out strFileName))
{
    case 0: // 全ファイル読み込み終了
        prgDownload.Value = prgDownload.Maximum;
        prgJVRead.Value = prgJVRead.Maximum;
        Console.WriteLine("全ファイル読み込み終了: " + prgJVRead.Value + " / " + prgJVRead.Maximum + "\n");
        flg_exit = true;
        break;
    case -1: // ファイル切り替わり
        prgJVRead.Value = prgJVRead.Value + 1;
        Console.WriteLine("ファイル切り替わり: " + prgJVRead.Value + " / " + prgJVRead.Maximum + "\n");
        break;
    case -3: // ダウンロード中
        prgDownload.Value = jvLink.JVStatus();
        Console.WriteLine("ダウンロード中: " + prgDownload.Value + " / " + prgDownload.Maximum + "\n");
        break;
    case -201: // JVInit されてない
        Console.WriteLine("JVInit が行われていません。");
        flg_exit = true;
        break;
    case -203: // JVOpen されてない
        Console.WriteLine("JVOpen が行われていません。");
        flg_exit = true;
        break;
    case -503: // ファイルがない
        Console.WriteLine(strFileName + "が存在しません。");
        flg_exit = true;
        break;
    case int ret when ret > 0:
        switch (strBuff.Substring(0, 2))
        {
            case "RA":
                // レース詳細情報を構造体へ格納
                raceInfo.SetDataB(ref strBuff);
                // レース詳細を画面表示
                Console.WriteLine(
                    "年:" + raceInfo.id.Year +
                    " 月日:" + raceInfo.id.MonthDay +
                    " 場:" + raceInfo.id.JyoCD +
                    " 回次:" + raceInfo.id.Kaiji +
                    " 日次:" + raceInfo.id.Nichiji +
                    " R:" + raceInfo.id.RaceNum +
                    " レース名:" + raceInfo.RaceInfo.Ryakusyo10 +
                    "\n"
                    );
                break;
            default:
                // 読み飛ばし
                prgJVRead.Value = prgJVRead.Value + 1;
                Console.WriteLine("読み飛ばし: " + prgJVRead.Value + " / " + prgJVRead.Maximum + "\n");
                jvLink.JVSkip();
                break;
        }
        break;
}

動作確認

コードの編集が完了したらプログラムを実行して動作を確認します。


以上で、 JV-Data のダウンロードと読み込み進捗表示が完了となります。

Filed Under: JV-LinkをC#で使ってみる(Console版), 競馬でプログラミング 関連タグ:C#, JRA-VAN, 競馬

最初のサイドバー

More to See

csvファイルの配列化がおかしい、、、

2020-09-11 By さえきさん

エターナルハートが転厩するのはまあいいとして、、、

2020-09-09 By さえきさん

フォルダー構成のみなおしがメンドイ( 一一)

2020-09-09 By さえきさん

Tags

C# ConoHa WING CSS Genesis JavaScript JRA-VAN Magazine Pro THE THOR WordPress エターナルハート ギエナー2019 バヌーシー フランクエトワール 競馬

Categories

  • このはとウェブログ (3)
    • JavaScriptの話 (2)
    • WordPressの話 (1)
  • 日記 (17)
  • 競馬でプログラミング (14)
    • JV-LinkをC#で使ってみる(Console版) (6)
    • JV-LinkをC#で使ってみる(WinForms版) (7)

Footer

Profile

avatar
初音ミクが大好きな40代のおじさんです。
最近、バヌーシーで一口馬主を始めました。

Search

Copyright © 2021 · Magazine Pro on Genesis Framework · WordPress