2026-03-04 17:03:09 +09:00

92 lines
2.6 KiB
VB.net

Module SpectrumModule
Private myMgr As Ivi.Visa.Interop.ResourceManager
Private mySpec As Ivi.Visa.Interop.FormattedIO488
Private strQueryRes As String
Public Function SpecOpen(SpecID As String, ToCount As Integer) As String
Try
myMgr = New Ivi.Visa.Interop.ResourceManager
mySpec = New Ivi.Visa.Interop.FormattedIO488
mySpec.IO = myMgr.Open(SpecID)
mySpec.IO.Clear()
mySpec.IO.Timeout = ToCount
strQueryRes = SpecQueryStr("*IDN?")
Return strQueryRes
Catch ex As Exception
Return "FAIL"
End Try
End Function
Public Function RunCommand(command As String) As String
Dim errStr As String
Try
mySpec.WriteString(command)
errStr = CheckError()
If errStr.Replace(" ", "") <> "" Then
Return errStr
End If
Return "PASS"
Catch ex As Exception
Return "VISA COM Error: " + vbCrLf + CStr(Err.Number) + ", " + Err.Source + "," + Err.Description
End Try
End Function
Public Function SpecQueryStr(query As String) As String
Dim errStr As String
Try
mySpec.WriteString(query)
SpecQueryStr = mySpec.ReadString
errStr = CheckError()
If errStr.Replace(" ", "") <> "" Then
Return SpecQueryStr & " / " & errStr
End If
Return SpecQueryStr
Catch ex As Exception
Return "VISA COM Error: " + vbCrLf + CStr(Err.Number) + ", " + Err.Source + "," + Err.Description
End Try
End Function
Private Function CheckError() As String
Dim strerrval As String
Dim strout As String = ""
mySpec.WriteString(":SYSTem:ERRor?")
strerrval = mySpec.ReadString
While Val(strerrval) <> 0
strout = "INST Error: " + strerrval
mySpec.WriteString(":SYSTem:ERRor?")
strerrval = mySpec.ReadString
End While
If Not strout = "" Then
'MsgBox(strout, vbExclamation, "INST Error Messages")
mySpec.FlushWrite(False)
mySpec.FlushRead()
Return strout
End If
Return ""
End Function
''' <summary>스펙트럼 분석기 버퍼 초기화. 연결된 경우에만 동작.</summary>
Public Sub SpecClear()
Try
If mySpec IsNot Nothing AndAlso mySpec.IO IsNot Nothing Then
mySpec.IO.Clear()
End If
Catch
' 연결 해제 등으로 접근 불가 시 무시
End Try
End Sub
End Module