Forum: HF, Funk und Felder Programmierung CMU200 und CRTU-RU mit vb.net


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Joern DK7JB .. (moin)


Bewertung
0 lesenswert
nicht lesenswert
Ich versuche gerade über den GPIB-Bus einen CRTU-RU anzusteuern und 
benötige Hilfe.
Ich verwende ein GPIB-Interface von National Instruments und versuche 
über die VISA-GPIB Schnittstelle zuzugreifen. Programmiert wird unter 
vb.net.
Mit einem Beispiel habe ich es schon geschafft *IDN? zu übertragen und 
eine Antwort zu bekommen. Das mit den geräteigenen Befehlen klappt aber 
noch nicht.

Könnt ihr mir vielleicht mit Beispielprogrammen in vb.net von euch 
helfen?

von Markus W. (dl8mby)


Bewertung
0 lesenswert
nicht lesenswert
Hallo Joern,

möglicherweise hilft Dir das weiter:

Beitrag "Re: CMU200 Erfahrungen und Modifikationen"

Markus
DL8MBY

von Tom B. (hf_tom)


Bewertung
0 lesenswert
nicht lesenswert
Hallo,
gibt es Erfahrungen mit mit Windows-Programmen, die auf den CRTU oder 
CMU200 zugreifen? Ich würde mich freuen, wenn ich mir Beispieprogramme 
ansehen dürfte. Irgendwie fällt mir der Einstieg schwer.
Grüße Tom

von Edson (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Tom B. schrieb:
> Hallo,
> gibt es Erfahrungen mit mit Windows-Programmen, die auf den CRTU oder
> CMU200 zugreifen?

A bissl ;)

> Ich würde mich freuen, wenn ich mir Beispieprogramme
> ansehen dürfte. Irgendwie fällt mir der Einstieg schwer.
> Grüße Tom

Also Beispielprogramme findet man im Manual vom CMU200, hast Du das 
nicht?

von Tom B. (hf_tom)


Bewertung
0 lesenswert
nicht lesenswert
Hmmm welches PDF meinst du genau? Ich habe in den PDFs bisher keine 
Beispielprogramme finden können.

von Tom B. (hf_tom)


Bewertung
0 lesenswert
nicht lesenswert
Auch habe ich nicht verstanden, wie das Handling mit der ersten und der 
zweiten GPIB Adresse funktioniert.

von Tom B. (Gast)


Bewertung
0 lesenswert
nicht lesenswert
Jetzt antworte ich mir selbst. Gemeint ist das PDF "CMU_Rev10_e.pdf" 
Operating Manual. Ich hatte gehofft ein lauffähiges Programm studieren 
zu können, da in der Realität oft noch irgendwelche Hürden zu überwinden 
sind, bis ein Programm wirklich funktioniert und den CRTU ansteuern 
kann.

Einige Fragen hätte ich noch?
- Warum gibt es zwei GPIB Adressen? Und wie wird die ersten und wie die 
zweite Adresse angesprochen?
- Spielt es eine Rolle, welcher GPIB-Adapter verwendet wird? Also 
"NI-GPIB-USB-HS GPIB-USB Adapter" oder "HP Keysight Agilent 82357B 
USB-GPIB Interface High-Speed USB 2.0" oder "Prologix GPIB-USB 
Controller"?

von Edson (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Tom B. schrieb:
> Jetzt antworte ich mir selbst. Gemeint ist das PDF "CMU_Rev10_e.pdf"
> Operating Manual. Ich hatte gehofft ein lauffähiges Programm studieren
> zu können, da in der Realität oft noch irgendwelche Hürden zu überwinden
> sind, bis ein Programm wirklich funktioniert und den CRTU ansteuern
> kann.

Ah, sorry. Ich habe Vorgestern nicht mehr reingeschaut.

>
> Einige Fragen hätte ich noch?
> - Warum gibt es zwei GPIB Adressen? Und wie wird die ersten und wie die
> zweite Adresse angesprochen?

Zum warum: Geräte können die Möglichkeit bieten, individuell 
Funktionsgruppen* und Testmodi unter einer Secondary-Address 
anzusprechen. Das ist beim CMU200 der Fall (CRTU weiß ich jetzt nicht). 
Der Device-Descriptor sieht dann z.B. bei Primary Address = 10 und 
Secondary Address = 1 so aus: "GPIB0::10::1::INSTR"
Ein Gerät das keine Secondary Address bietet/benötigt, würde das so 
aussehen: "GPIB0::10::INSTR"

> - Spielt es eine Rolle, welcher GPIB-Adapter verwendet wird? Also
> "NI-GPIB-USB-HS GPIB-USB Adapter" oder "HP Keysight Agilent 82357B
> USB-GPIB Interface High-Speed USB 2.0" oder "Prologix GPIB-USB
> Controller"?

Laut CMU-Manual muss man bei Verwendung von NI-Treibern zur Secondary 
Address den Wert 96 addieren. Ich verwende die VISA-Library von 
Keysight, daher kann ich dazu nicht viel mehr sagen.
Der HP82357B Adapter geht auf jeden Fall damit, die Prologix-Teile kenne 
ich nicht.

*) bei meinem CMU200 habe ich z.B. die Module "RF" und "AUDIO" den 
sekundären Adressen 1 und 2 zugewiesen.

von Edson (Gast)


Bewertung
1 lesenswert
nicht lesenswert
Edson schrieb:
> *) bei meinem CMU200 habe ich z.B. die Module "RF" und "AUDIO" den
> sekundären Adressen 1 und 2 zugewiesen.

Die sekundäre Adresse 0 ist für das CMU-Basissystem reserviert.

d.h. ich benutze je nach Ziel die Device-Descriptor 
"GPIB0::10::0::INSTR", "GPIB0::10::1::INSTR" und "GPIB0::10::2::INSTR"

von Joern DK7JB .. (moin)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hier zwei vb.net Codeschnipsel von mir:
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::1::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?
        'Wurden die VISA Bibliotheken richtig eingebunden?
    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
        'Dim idn As String
        'Dim idn2() 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

        'Hier fehlt noch die Ausgabe

        Dim sResult As String = ""
        For Each elem As String In messwerte
            sResult &= elem & " "
        Next
        MsgBox(sResult)
    End Sub

Muss man die Verbindungen am Ende wieder schließen oder ist bie mir 
alles richtig. Wie auch immer - die Ausgaben in dem Infofenster sind 
alle richtig. Ich werde nun alles weiterentwickeln und ein richtiges 
Programm mit grafischer Darstellung schreiben schreiben. Der große 
Programmierheld bin ich nicht und freue mich immer, wenn größere 
Programme das machen was sie sollen. Daher würde ich mich über eine 
Rückmeldung freuen.

In der "Private Sub Button1" wird der Gerätename ausgelesen und in der 
zweiten Sub das Frequenzspektrum als Liste in einem Infofenster. Im 
angehängten Bild habe ich gezeigt, wie ich die Bibliotheken eingefügt 
habe. Im Bild findet ihr auch zwei Fragen die ich noch habe.

Als Bibliothek läuft bei mir die von Keysight. Die Treiber von NI sind 
aber auch auf dem Rechner, werden aber momentan nicht verwendet.

von Joern DK7JB .. (moin)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hier das Bild von dem kleinen Testprogramm.Die zugehörigen Frequenzen 
muss man sich dann aus der Start- und Stoppfrequenz und der festen 
Anzahl der Messpunkte ausrechnen.

Wie kann man die Bilder (Hardcopy des Bildschirms) auslesen, die im 
Gerät mit dem Printbefehl erzeugt worden sind? Habt ihr das schon 
hinbekommen?

Muss das mit "New Ivi.Visa.Interop.FormattedIO488" erzeugt objekt am 
Ende der Sub-Routine wieder geschlossen werden?

: Bearbeitet durch User
von Meister E. (edson)


Bewertung
0 lesenswert
nicht lesenswert
Joern DK7JB .. schrieb:
> Hier das Bild von dem kleinen Testprogramm.Die zugehörigen Frequenzen
> muss man sich dann aus der Start- und Stoppfrequenz und der festen
> Anzahl der Messpunkte ausrechnen.
>
> Wie kann man die Bilder (Hardcopy des Bildschirms) auslesen, die im
> Gerät mit dem Printbefehl erzeugt worden sind? Habt ihr das schon
> hinbekommen?
MMEM:CDIR "\USERDATA\PRINT"
MMEM:DATA? "PRINT00.WMF"            (Dateiname bitte anpassen)

Nach dem MMEM:DATA? muss Deine Software die Blockdaten in 3 Schritten 
einlesen:

(1) die ersten zwei Zeichen lesen, das 1.Zeichen muss '#' sein, das 
2.Zeichen sagt Dir im ASCII-Code, wieviele Zeichen die Anzahl folgender 
Bytes bilden. Nehmen wir an, das 2.Zeichen ist 0x34 (='4')
(2) soviele Zeichen einlesen, wie vorhin festgestellt, und diesen String 
als Ganzzahl wandeln
(3) soviele Bytes lesen, wie in Schritt 2 festgestellt. Diese Daten dann 
in eine Datei schreiben (mit passender Dateiendung) - fertig

> Muss das mit "New Ivi.Visa.Interop.FormattedIO488" erzeugt objekt am
> Ende der Sub-Routine wieder geschlossen werden?

Edit:

Kann auf jeden Fall nicht Schaden. Ich schaue mir Dein Programm 
demnächst mal genauer an. Ich mache das (unter VBA) alles etwas anders, 
das hat aber auch mit der Lib zu tun.

: Bearbeitet durch User
von Joern DK7JB .. (moin)


Bewertung
0 lesenswert
nicht lesenswert
Fertige Routinen zum Einlesen der Bilder oder sonstiger Dateien würde 
mich interessieren, da ich bisher keine Möglichkeit gefunden habe die 
Länge des Einlesens zu steuern.

von Manfred L. (mandi007)


Bewertung
-1 lesenswert
nicht lesenswert
Suche ein dig modul a7  für das Teil hat wer sowas

von A. K. (foxmulder)


Bewertung
0 lesenswert
nicht lesenswert
Evtl. würde es helfen deine Projektmappe hier hochzuladen, als ZIP.

von Manfred L. (mandi007)


Bewertung
-1 lesenswert
nicht lesenswert
Versteh ich ni ht?

von A. K. (foxmulder)


Bewertung
1 lesenswert
nicht lesenswert
Manfred L. schrieb:
> Versteh ich ni ht?

Die Nachricht galt dem TO, das hier ist ein Thread bei dem es um 
Software geht.
Du kannst ja einen eigenen Thread aufmachen.

mfg

von Manfred L. (mandi007)


Bewertung
0 lesenswert
nicht lesenswert
Es dürfte sich laut meiner Information um einen Sw Fehler handeln  das 
Gerät fährt hoch  und findet das dig port nicht es zeigt eine 
fehlermeldung
Sstem Error  Filname tsk.cpp
Line 676
Add Info
Rev./main/5.20/1
Int:154

In eebog hatte ich gefunden dass ev das Problem im A7 Modul liegt
Mfg

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.