C# と VB.NET の質問掲示板

わんくま同盟

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト


(過去ログ 176 を表示中)
■101331 / )  『インデックスが配列の対象外』が出現有無がおきる件
□投稿者/ ヨンパチ (1回)-(2023/02/06(Mon) 18:26:13)

分類:[VB.NET/VB2005 以降] 

visual Studio 2019を使用しております。

測定装置からデータを落とすために、以下のプロファイルを作成しました。
うまく落とせるときもあれば、なぜかタイトルのようにエラーが出てしまいます。
エラーは一番下のところで発生します。

開発初心者で申し訳ございませんが、私よりも詳しい方、ご教授いただければ幸いです。


Dim i_debugflg As Integer = 1 '確認をする場合 : 1- OFF 2- Check

Dim i As Integer
Dim j As Integer
Dim counter As Integer

Dim intDataDim As Integer
Dim dlCent As Double
Dim dlSpan As Double
Dim dlFreq As Double
Dim StrStimData1 As String

Dim delimiter() As Char = {","c}
Dim StrArrayData1() As String

Dim PathSavefile As String
Dim SavefileName As String

Dim StrBuf As String

Dim SwtimedataInit, SwtimedataNow, SwtimedataPast As Long


StrBuf = New String(Chr(&H0S), 30)

counter = Integer.Parse(txtMeasCounter.Text)
Txt_SaveFilename2.Text = "Average" & counter.ToString()
counter = counter + 1
txtMeasCounter.Text = counter.ToString()

If i_debugflg = 2 Then

U2GPIBAX.gpwrt(GpadrsBuf3, "SING")
SwtimedataInit = timeGetTime
Do
SwtimedataNow = timeGetTime

SwtimedataPast = (SwtimedataNow - SwtimedataInit) / 1000
Loop While SwtimedataPast < 30

End If

'/- 測定ポイント数の読み込み
U2GPIBAX.gpwrt(GpadrsBuf3, "POIN?")         ' 測定ポイント数
U2GPIBAX.gpred(GpadrsBuf3, StrBuf, Len(StrBuf))
intDataDim = Convert.ToInt32(StrBuf)
'intDataDim = Integer.Parse(StrBuf)

' intDataDim = Integer.Parse(201)
If i_debugflg = 2 Then MessageBox.Show("測定ポイント数:” & intDataDim.ToString())

'/- 中心周波数の読み込み
U2GPIBAX.gpwrt(GpadrsBuf3, "CENT?")         '  中心周波数
U2GPIBAX.gpred(GpadrsBuf3, StrBuf, Len(StrBuf))
dlCent = Convert.ToDouble(StrBuf)
'dlCent = Double.Parse(StrBuf)
If i_debugflg = 2 Then MessageBox.Show("中心周波数(Hz):” & dlCent.ToString())

'/- 中心周波数の読み込み
U2GPIBAX.gpwrt(GpadrsBuf3, "SPAN?")         ' 周波数幅
U2GPIBAX.gpred(GpadrsBuf3, StrBuf, Len(StrBuf))
dlSpan = Convert.ToDouble(StrBuf)
'dlSpan = Double.Parse(StrBuf)
If i_debugflg = 2 Then MessageBox.Show("周波数幅(Hz):” & dlSpan.ToString())


StrStimData1 = New String(Chr(&H0S), intDataDim * 30)


U2GPIBAX.gpwrt(GpadrsBuf3, "FORM4")   'ASCIIフォマットの指定
U2GPIBAX.gpwrt(GpadrsBuf3, "OUTPFORM?") 'Agilent E5100Aのデータトレースの問合せ
U2GPIBAX.gpred(GpadrsBuf3, StrStimData1, Len(StrStimData1))

If i_debugflg = 2 Then MessageBox.Show("測定終了")

' カンマ区切りで分割して配列に格納する
StrArrayData1 = StrStimData1.Split(delimiter)

PathSavefile = Txt_SavePoint.Text
SavefileName = Txt_SaveFilename2.Text & ".csv"

Dim sw As New System.IO.StreamWriter(PathSavefile & SavefileName, False)

sw.Write("Time")
sw.Write(",")
sw.Write(NowTime)
sw.Write(vbCrLf, ToString())
sw.Write("SetTemp")
sw.Write(",")
sw.Write(setTemp)
sw.Write(vbCrLf, ToString())
sw.Write("SetPower")
sw.Write(",")
sw.Write(setPower)
sw.Write(vbCrLf, ToString())
sw.Write("Temp")
sw.Write(",")
sw.Write(Tempdata)
sw.Write(vbCrLf, ToString())
sw.Write("Power")
sw.Write(",")
sw.Write(Powerdata)
sw.Write(vbCrLf, ToString()) ' 改行

For i = 0 To intDataDim - 1

j = 2 * i
dlFreq = (dlCent - dlSpan / 2 + (dlSpan / (intDataDim - 1)) * i) ' Frequency[Hz]
sw.Write(dlFreq / 1000000.0) ' Frequency[MHz]
sw.Write(",")

※エラーが出るポイント ここから
sw.Write(StrArrayData1(j).ToString())
sw.Write(",")
sw.Write(StrArrayData1(j + 1).ToString())

※エラーが出るポイント ここまで

sw.Write(vbCrLf, ToString()) ' 改行
Next i

sw.Close() '閉じる




お手数をおかけしますが、よろしくお願い致します。


返信 編集キー/


管理者用

- Child Tree -