Private Sub calc_send_code()
Dim smin_tx_code(96, 32) As Integer
Dim smin_rx_code(96, 32) As Integer
Dim bypass_tx_code(96, 32) As Integer
Dim bypass_rx_code(96, 32) As Integer
Dim code_point As Integer = 16384
Dim send_code(code_point) As Integer
Dim gain_num, mod_num, port_num As Integer
Dim file_num, sosi_num, freq_num, code_num As Integer
Dim read_path As String = ""
Dim pc_path As String = ""
Dim fp, point_num As Integer
Dim buf As String
Dim strline() As String
For file_num = 0 To 3 Step 1
Select Case file_num
Case 0
read_path = HAMEN_path & "SMin_TX_HOSEI_CODE.csv"
Case 1
read_path = HAMEN_path & "Bypass_TX_HOSEI_CODE.csv"
Case 2
read_path = HAMEN_path & "SMin_RX_HOSEI_CODE.csv"
Case 3
read_path = HAMEN_path & "Bypass_TX_HOSEI_CODE.csv"
End Select
If System.IO.File.Exists(read_path) Then
sosi_num = 0
Try
fp = FreeFile()
FileOpen(fp, read_path, OpenMode.Input)
Do Until EOF(fp)
buf = LineInput(fp)
strline = Split(buf, ",")
If strline(0) = "素子" Then
Do Until EOF(fp)
buf = LineInput(fp)
strline = Split(buf, ",")
For freq_num = 0 To 31 Step 1
Select Case file_num
Case 0
smin_tx_code(sosi_num, freq_num) = Int(strline(freq_num + 1))
Case 1
bypass_tx_code(sosi_num, freq_num) = Int(strline(freq_num + 1))
Case 2
smin_rx_code(sosi_num, freq_num) = Int(strline(freq_num + 1))
Case 3
bypass_rx_code(sosi_num, freq_num) = Int(strline(freq_num + 1))
End Select
sosi_num = sosi_num + 1
Next
Loop
End If
Loop
Catch ex As Exception
TextBox18.AppendText("ファイル取得エラー(" & ex.Message & ")" & vbCrLf)
End Try
Else
'ファイルがない場合は0xFFを配列に読み込む
For sosi_num = 0 To 95 Step 1
For freq_num = 0 To 31 Step 1
Select Case file_num
Case 0
smin_tx_code(sosi_num, freq_num) = &HFF
Case 1
bypass_tx_code(sosi_num, freq_num) = &HFF
Case 2
smin_rx_code(sosi_num, freq_num) = &HFF
Case 3
bypass_rx_code(sosi_num, freq_num) = &HFF
End Select
Next
Next
End If
'フラッシュROM、書き込みフォーマット
code_num = 0
For freq_num = 0 To 31 Step 1
For gain_num = 0 To 1 Step 1
For mod_num = 0 To 15 Step 1
For port_num = 0 To 1 Step 1
If gain_num = 0 Then
For sosi_num = 0 To 7 Step 1
If port_num = 0 Then
If sosi_num < 6 Then
send_code(code_num) = smin_tx_code(mod_num * 6 + sosi_num, freq_num)
Else
send_code(code_num) = &HFF
End If
code_num = code_num + 1
Else
If sosi_num < 6 Then
send_code(code_num) = smin_rx_code(mod_num * 6 + sosi_num, freq_num)
Else
send_code(code_num) = &HFF
End If
code_num = code_num + 1
End If
Next
Else
For sosi_num = 0 To 7 Step 1
If port_num = 0 Then
If sosi_num < 6 Then
send_code(code_num) = bypass_tx_code(mod_num * 6 + sosi_num, freq_num)
Else
send_code(code_num) = &HFF
End If
code_num = code_num + 1
Else
If sosi_num < 6 Then
send_code(code_num) = bypass_rx_code(mod_num * 6 + sosi_num, freq_num)
Else
send_code(code_num) = &HFF
End If
code_num = code_num + 1
End If
Next
End If
Next
Next
Next
Next
Next
pc_path = HAMEN_path & "HOSEI_CODE.bin"
If System.IO.File.Exists(pc_path) Then
If DialogResult.OK = MessageBox.Show("「HOSEI_CODE.bin」のファイルが存在します。" & vbCrLf & "上書きしますか?", "確認", MessageBoxButtons.OKCancel, MessageBoxIcon.Information) Then
Using wr As New BinaryWriter(New FileStream(pc_path, FileMode.Create))
For point_num = 0 To code_point - 1 Step 1
wr.Write(send_code(point_num))
Next
End Using
Else
MessageBox.Show("「HOSEI_CODE.bin」は更新されていません!")
End If
Else
'新規作成
Using wr As New BinaryWriter(New FileStream(pc_path, FileMode.Create))
For point_num = 0 To code_point - 1 Step 1
wr.Write(send_code(point_num))
Next
End Using
End If
End Sub