Hallo,
ich möchte ein Programm schreiben welches die Daten von Messgeräten auslesen und dann anzeigen soll. Das Gerät soll dabei vom PC aus ferngesteuert werden. Die Kommunikation erfolgt über den Messgerätebuss GPIB und als zugehörige Bibliothek wird die VISA-Bibliothek von Keysight verwendet.
Ich frage mich aber, wie der Code am besten gegen Fehlebedienung abgesichert werden kann. Hierzu bitte ich um Hilfe. Folgende Fehlersituationen kann ich mir vorstellen:
- Notwendige Bibliotheken sind nicht installiert
- Das Massgerät ist ausgeschaltet
- Die falsche Messgeräteadresse wurde gewählt. Also irgendein Grund, bei dem Die Kommunikation fehlschlägt.
Die Fehlermeldungen für zwei Fehlerzustände habe ich als Bild angehängt. Solche Fehler können passieren und müssen irgendwie abgefangen werden.
Zur Information habe ich noch ein Bild angehängt, wie ich die Bibliotheken eingebundne habe. Ob das der elegante Weg ist, kann ich nicht abschätzen. Die Bibliothek sollten nur so eingebunden werden, dass das Programm auch dann läuft, wenn auf einem fremden Rechner die Bibliothekenüber die Herstellerroutine eingebunden installiert worden sind (So habe ich es auch gemacht - unter Win10).
Hier zwei Unterprogramme. Im ersten wird nur die Herstellerkennung abgefragt In dem zweiten Unterprogramm wird von einem Spektrum Analyser (Hochfrequenzmessgerät zur Erfassung und Darstellung eines Signals im Frequenzbereich) eine Messung durchgeführt und die Messdaten eingelesen. In einem späteren Schritt werden sie dann grafisch dargestellt. Hierzu habe ich Bild von meinem Testprogramm hochgeladen.
Rechnerumgebung: Windows 10 und Visual Studio 2019
ich möchte ein Programm schreiben welches die Daten von Messgeräten auslesen und dann anzeigen soll. Das Gerät soll dabei vom PC aus ferngesteuert werden. Die Kommunikation erfolgt über den Messgerätebuss GPIB und als zugehörige Bibliothek wird die VISA-Bibliothek von Keysight verwendet.
Ich frage mich aber, wie der Code am besten gegen Fehlebedienung abgesichert werden kann. Hierzu bitte ich um Hilfe. Folgende Fehlersituationen kann ich mir vorstellen:
- Notwendige Bibliotheken sind nicht installiert
- Das Massgerät ist ausgeschaltet
- Die falsche Messgeräteadresse wurde gewählt. Also irgendein Grund, bei dem Die Kommunikation fehlschlägt.
Die Fehlermeldungen für zwei Fehlerzustände habe ich als Bild angehängt. Solche Fehler können passieren und müssen irgendwie abgefangen werden.
Zur Information habe ich noch ein Bild angehängt, wie ich die Bibliotheken eingebundne habe. Ob das der elegante Weg ist, kann ich nicht abschätzen. Die Bibliothek sollten nur so eingebunden werden, dass das Programm auch dann läuft, wenn auf einem fremden Rechner die Bibliothekenüber die Herstellerroutine eingebunden installiert worden sind (So habe ich es auch gemacht - unter Win10).
Hier zwei Unterprogramme. Im ersten wird nur die Herstellerkennung abgefragt In dem zweiten Unterprogramm wird von einem Spektrum Analyser (Hochfrequenzmessgerät zur Erfassung und Darstellung eines Signals im Frequenzbereich) eine Messung durchgeführt und die Messdaten eingelesen. In einem späteren Schritt werden sie dann grafisch dargestellt. Hierzu habe ich Bild von meinem Testprogramm hochgeladen.
Rechnerumgebung: Windows 10 und Visual Studio 2019
VB.NET-Quellcode
- Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
- Dim ioMgr As Ivi.Visa.Interop.ResourceManager
- Dim instrument As Ivi.Visa.Interop.FormattedIO488
- Dim idn As String
- ioMgr = New Ivi.Visa.Interop.ResourceManager
- instrument = New Ivi.Visa.Interop.FormattedIO488
- instrument.IO = CType(ioMgr.Open("GPIB0::20::0::INSTR"), Ivi.Visa.Interop.IMessage)
- instrument.WriteString("*IDN?")
- idn = instrument.ReadString()
- MsgBox("The IDN String is: " & idn, vbOKOnly, "IDN Result")
- 'Muss hier nicht auch das "instrument" wieder geschlossen werden?
- End Sub
- Private Sub Button3_Click(sender As Object, e As EventArgs) Handles Button3.Click
- Dim ioMgr As Ivi.Visa.Interop.ResourceManager
- Dim instrument As Ivi.Visa.Interop.FormattedIO488
- Dim idnItems As Object() 'Ist das richtig????
- Dim idnItem As Object 'Ist das richtig????
- Dim n As Integer
- Dim messwerte(1000) As String
- ioMgr = New Ivi.Visa.Interop.ResourceManager
- instrument = New Ivi.Visa.Interop.FormattedIO488
- instrument.IO = CType(ioMgr.Open("GPIB0::20::1::INSTR"), Ivi.Visa.Interop.IMessage)
- instrument.WriteString("SPECtrum:FREQuency:STARt ” + "5E+07")
- instrument.WriteString("SPECtrum:FREQuency:STOP ” + "1.5E+08")
- instrument.WriteString("INITIATE:SPECtrum”)
- instrument.WriteString("READ:ARRAY:SPECTRUM:CURRENT?”)
- idnItems = CType(instrument.ReadList(Ivi.Visa.Interop.IEEEASCIIType.ASCIIType_Any, “,”), Object())
- 'idnItems = CType(instrument.ReadList(), Object()) ' geht auch
- For Each idnItem In idnItems
- n = n + 1
- messwerte(n) = idnItem.ToString
- Next idnItem
- Dim sResult As String = ""
- For Each elem As String In messwerte
- sResult &= elem & " "
- Next
- MsgBox(sResult) 'Hier fehlt noch die Ausgabe im Diagramm
- End Sub