
遊びながら何かを学ぼうかな クラスの継承 9
2024.11.9
グダグダ言うだけでまだ何も手を付けず、気付けば既にシリーズが9まで来てしまった事に軽く目眩を覚えましたが、今日の17.3倍のヒットに一転気を良くし明日の予測を早々に済ませられたので、確保できたこの空白時間を継承学習に充てたいと思います。
以前も書いたように、まずは手続き型の基本コードからです。
' JVLinkライブラリをインポート
Imports JVDTLabLib
' Form1クラスを定義
Public Class Form1
' Button1クリックイベントのハンドラ
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' JVLinkClassのインスタンスを作成
Dim jv As New JVLinkClass()
' 変数宣言
Dim retval As Integer ' JVLinkメソッドの戻り値を格納
Dim buffer As String = "" ' JVReadで取得するデータを格納
' JVLinkの初期化メッセージをログに出力
TextBox1.AppendText("JVLinkの初期化" & Environment.NewLine)
' JVLinkの初期化を実行
retval = jv.JVInit("UNKNOWN")
If retval < 0 Then
' 初期化エラーの場合、エラーメッセージを出力して終了
TextBox1.AppendText($"JVInitエラー: {retval}" & Environment.NewLine)
Exit Sub
End If
' 初期化成功メッセージを出力
TextBox1.AppendText("JVInit成功" & Environment.NewLine)
' JVOpenでデータ取得の準備を開始
retval = jv.JVOpen("RACE", "20241103000000", 1, 0, 0, "")
If retval < 0 Then
' JVOpenエラーの場合、エラーメッセージを出力して終了
TextBox1.AppendText($"JVOpenエラー: {retval}" & Environment.NewLine)
Exit Sub
End If
' JVOpen成功メッセージ出力
TextBox1.AppendText("JVOpen成功" & Environment.NewLine)
' JVReadのループ処理を開始
Do
' JVReadを実行してデータ読み込み
retval = jv.JVRead(buffer, 40000, "")
' JVReadの戻り値を確認
If retval = 0 Then
' データ取得が完了したらループを終了
TextBox1.AppendText("JVRead完了" & Environment.NewLine)
Exit Do
ElseIf retval < -1 Then
' エラーの場合はメッセージを出力してループを終了
TextBox1.AppendText($"JVReadエラー: {retval}" & Environment.NewLine)
Exit Do
ElseIf retval = -1 Then
' retval < -1はデータ切り替わりのなので次のループへ
Continue Do
End If
' 取得したデータがRAで始まる場合のみ処理
If Not String.IsNullOrWhiteSpace(buffer) AndAlso buffer.StartsWith("RA") Then
' データの先頭50文字をログに出力
TextBox1.AppendText($"{buffer.Substring(0, Math.Min(50, buffer.Length))}" & Environment.NewLine)
End If
Loop
' JVCloseでJVLinkを終了
jv.JVClose()
' データ取得終了
TextBox1.AppendText("データ取得終了" & Environment.NewLine)
End Sub
End Class
コメント入れまくったので逆に見づらいですが、これからJVData取得を始める方向けに書きました。
とりあえずソリューションエクスプローラーのプロジェクトからJVDATLAbLibを追加→参照してやり、プロパティで相互運用というところをFalseにしてもらえば、あとはFormにButton1とTextBox1(ScrollBarsをVettical、MultilineをTrue)を張り付けただけなので、これを徐々に継承学習向けにいじっていくことになります。
データを取得してTextBoxに表示するだけですが、同じ機能を手続き型→クラス→継承と書き換えることで理解しながら学ぼうと思います。
飲みに行くので今日はここまでになってしまいました。