参考
前回記事
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 のダウンロードと読み込み進捗表示が完了となります。