見出し画像

遊びながら何かを学ぼうかな クラスの継承 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に表示するだけですが、同じ機能を手続き型→クラス→継承と書き換えることで理解しながら学ぼうと思います。

飲みに行くので今日はここまでになってしまいました。

いいなと思ったら応援しよう!