Seite 1 von 1
Read S-parameters from Anritsu MS46122B using python
Verfasst: Mittwoch 5. Oktober 2022, 08:09
von mureed.niazie
Hello Everyone.
i wanna read S11, S12, S21, S22 Parameters from Anritsu MS46122B using tkinter, Ploting.
is anybody can suggest?
Re: Read S-parameters from Anritsu MS46122B using python
Verfasst: Mittwoch 5. Oktober 2022, 09:41
von noisefloor
Hallo,
Tkinter hat damit erstmal nichts zu tun, das ist ja "nur" ein Framework zum Erstellen von GUIs. Was meinst du mit "Ploting"?
Gruß, noisefloor
Re: Read S-parameters from Anritsu MS46122B using pyth
Verfasst: Mittwoch 5. Oktober 2022, 10:03
von __deets__
Das hier ist das Programmierhandbuch:
https://dl.cdn-anritsu.com/en-us/test-m ... 0746AA.pdf - laut dem nutzt das Ding Ethernet over USB, und dann SCPI Kommandos.
Re: Read S-parameters from Anritsu MS46122B using python
Verfasst: Samstag 8. Oktober 2022, 09:21
von mureed.niazie
ja ich habe Anritsu Messgerät, und shockline software um den Anritsu einstellen und laufen lassen.
jetzt ich möchte ein python script haben um die messergibnisse (spricht alle vier s parameters)
in python lesen kann. zum beispiel die S parameters im verschidenen formaten wie .CSV oder .S2p speichern. ode ode ode
Re: Read S-parameters from Anritsu MS46122B using pyth
Verfasst: Donnerstag 13. Oktober 2022, 15:46
von mureed.niazie
ich brauche keine buch alta
Re: Read S-parameters from Anritsu MS46122B using python
Verfasst: Donnerstag 13. Oktober 2022, 15:53
von noisefloor
Hallo,
was ist "buch alta"? Beziehst du sich auf das "Buch Alta" (was auch immer das "Buch Alta" ist...), oder wolltest du sagen: "Ich brauche kein Buch, Alter"? Mal abgesehen von der Orthographie ist das Komma dann essentiell wichtig für den Sinn / die Aussage des Satzes. Da gibt es ja das schöne Beispiel "Kommas können leben retten": "Komm wir Essen Opa" vs. "Komm wir Essen, Opa"
Was du brauchst bzw. suchst ist eine Lösung. Den Weg hat __deets__ dir skizziert. Der beinhaltet nun mal das Studium des Handbuchs. Oder, wie man unter Programmieren sagt: RTFM

Gut, das relevante Kapitel hat ein paar hundert Seiten. Aber so ist das bei der von dir verwendeten Hardware nun mal.
Gruß, noisefloor
Re: Read S-parameters from Anritsu MS46122B using pyth
Verfasst: Donnerstag 13. Oktober 2022, 16:38
von __deets__
mureed.niazie hat geschrieben: Donnerstag 13. Oktober 2022, 15:46
ich brauche keine buch alta
Doch, tust du. Und wenn du meinst, mit dem Tonfall hier Freund zu finden - vergiss es, "Alta". Leuten, von denen du Hilfe erwartest, in deiner umfaenglichen Ahnungslosigkeit, vor das Knie zu treten, ist ein ganz bescheidener move. Fang dich mal wieder ein, oder du redest in Zukunft hier nur noch mit dir selbst. Alta.
Re: Read S-parameters from Anritsu MS46122B using python
Verfasst: Freitag 14. Oktober 2022, 07:51
von mureed.niazie
Hi. nein. Sie haben falsch verstanden. eigentlich das war mein (typing) fehler. ich wollte Buch Halter. schreiben aber wenn ich gepostet, erst dann habe ich mitbekommen dass ich nicht richtig geschriben. aber dann war zu spät weil man kann nicht wieder löschen.
Re: Read S-parameters from Anritsu MS46122B using python
Verfasst: Freitag 14. Oktober 2022, 07:54
von mureed.niazie
zum beispiel ich habe diese script und theoritisch kann man S parameter vom Anritsu als .csv speichern, aber weiß ich nicht warum taucht ein fehler.
fehler ist. Traceback (most recent call last):
File "C:/Users/Mureed/PycharmProjects/Anritsu/ubung/grabData.py", line 99, in <module>
grabData(fname)
File "C:/Users/Mureed/PycharmProjects/Anritsu/ubung/grabData.py", line 47, in grabData
for m in range(len(f) + 1):
TypeError: object of type 'NoneType' has no len()
# Script ist.
import visa
import time
import os
import pyvisa.resources
import pyvisa
from past.builtins import raw_input
def grabData(fname):
rm = pyvisa.ResourceManager()
# Input the target instrument IP address
Addr = 'TCPIP0::192.168.200.102::5001::SOCKET'
VNA = rm.open_resource(Addr) # return Anritsu
print("Please wait, retrieving data...")
VNA.write("CH1")
f = VNA.ask_for_values("OFV")
S11 = VNA.ask_for_values("OFD")
VNA.write("CH2")
S21 = VNA.ask_for_values("OFD")
VNA.write("CH3")
S12 = VNA.ask_for_values("OFD")
VNA.write("CH4")
S22 = VNA.ask_for_values("OFD")
# Open the file to save data to
file = open(fname, "w")
## Write a header, to set up each channel
file.write("Frequency,S11 Magnitude,S11 Phase,S21 Magnitude,S21 Phase,S12 "
"Magnitude,S12 Phase,S22 Magnitude,S22 Phase \n")
file.write("GHz,dB,deg,dB,deg,dB,deg,dB,deg \n")
file.write("\n")
## Loop through all the data, writing it line by line to a csv
for m in range(len(f) + 1):
file.write(str(f[m + 1] / 1000000000) + ", " +
str(S11[2 * m + 1]) + ", " + str(S11[2 * m + 2]) + ", " +
str(S21[2 * m + 1]) + ", " + str(S21[2 * m + 2]) + ", " +
str(S12[2 * m + 1]) + ", " + str(S12[2 * m + 2]) + ", " +
str(S22[2 * m + 1]) + ", " + str(S22[2 * m + 2]) + "\n")
file.close()
VNA.close()
# end of grabData def
## Ask for the filename
t = raw_input("Enter name for file and then press RETURN: ")
## Open up a file and start writing
os.mkdir(t)
## Get the VNA data
rm = pyvisa.ResourceManager()
# Input the target instrument IP address
Addr = 'TCPIP0::192.168.200.102::5001::SOCKET'
VNA = rm.open_resource(Addr) # return Anritsu
# VNA = visa.instrument("GPIB::06")
VNA.write("CH1")
refS11t = VNA.ask_for_values("RDT?")
VNA.write("CH2")
refS21t = VNA.ask_for_values("RDT?")
VNA.write("CH3")
refS12t = VNA.ask_for_values("RDT?")
VNA.write("CH4")
refS22t = VNA.ask_for_values("RDT?")
## Open file for extra information
fname = t + "/" + t + ".txt"
file = open(fname, "w")
file.write("Reference Delay - Time (s) \n")
file.write("S11: " + str(refS11t) + " \n")
file.write("S21: " + str(refS21t) + " \n")
file.write("S12: " + str(refS12t) + " \n")
file.write("S22: " + str(refS22t) + " \n")
file.close()
## take the measurement
fname = t + "/" + t + "_1_1.csv"
grabData(fname)
Re: Read S-parameters from Anritsu MS46122B using python
Verfasst: Freitag 14. Oktober 2022, 09:58
von __blackjack__
@mureed.niazie: `f` hat anscheinend nicht den Wert den Du denkst das es haben sollte. `f` ist laut Fehlermeldung `None` und nicht wie Du erwartest eine Sequenz mit Werten, und von `None` kann man keine Länge ermitteln:
Code: Alles auswählen
In [80]: len(None)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
Input In [80], in <cell line: 1>()
----> 1 len(None)
TypeError: object of type 'NoneType' has no len()
Das ``+ 1`` wäre dann übrigens auch komisch, weil Du damit in der Schleife dann so ziemlich garantiert beim letzten Durchlauf einen `IndexError` bekommen würdest.
Und so eine Schleife ist an sich auch „unpythonisch“, denn der Index `m` wird hier nur verwendet um auf Elemente von Sequenzen zuzugreifen. Man kann aber in Python direkt über die Elemente von Sequenzen iterieren, ohne den Umweg über einen Laufindex. Wenn man über mehrere Sequenten ”parallel” iterieren möchte, dann nimmt man dafür die `zip()`-Funktion. Und um nur jedes zweite, oder allgemein n-te Element aus einer Sequenz zu nehmen, gibt es die Slice-Syntax.
CSV-Dateien schreibt man mit Hilfe des `csv`-Moduls aus der Standardbibliothek. Da bastelt man sich nicht selber Zeichenketten mit Kommas drin.
Beim öffnen von Dateien sollte man die ``with``-Anweisung verwenden. Bei Textdateien immer explizit die Kodierung angeben. Beim `csv`-Modul kommt dann noch das passende `newline`-Argument dazu, wie dort in der Dokumentation beschrieben.
Pfade setzt man nicht mit Zeichenkettenoperationen zusammen. Dafür gibt es das `pathlib`-Modul. Was auch viele Funktionen aus `os` und `os.path` ersetzt.
Namen werden in Python klein_mit_unterstrichen geschrieben. Ausnahmen sind Konstanten (KOMPLETT_GROSS) und Klassen (PascalCase).
Namen sollten keine kryptischen Abkürzungen enthalten oder gar nur daraus bestehen, und man nummeriert keine Namen. Wenn man Namen nummeriert, will man sich entweder bessere Namen überlegen, oder gar keine Einzelnamen/-werte, sondern eine Datenstruktur. Oft eine Liste.
Re: Read S-parameters from Anritsu MS46122B using python
Verfasst: Freitag 14. Oktober 2022, 10:48
von mureed.niazie
ahh. es bedeutet, dass das gesamte Skript wie falsch ist. Ich kann es wirklich nicht in eine bessere Form bringen. Wenn es möglich ist, helfen Sie mir bitte, es neu zu schreiben.
Re: Read S-parameters from Anritsu MS46122B using python
Verfasst: Sonntag 16. Oktober 2022, 18:07
von __blackjack__
@mureed.niazie: Warum `f` den Wert `None` hat, müsstest Du selbst heraus finden. Ich habe so ein Gerät ja nicht hier, und ich denke die meisten anderen auch nicht.
Zu den anderen Punkten: Was ist konkret unklar?
Re: Read S-parameters from Anritsu MS46122B using python
Verfasst: Samstag 22. Oktober 2022, 06:00
von mureed.niazie
@__blackjack__ können Sie bitte das bessere und richtige Code block wie Sie gemeint, hier schreiben um ich ein Augenblink habe. ich habe versucht das zu ändern wie Sie gemeint aber geht nicht. ich bitte Sie den Code block so wie Sie gemeint so es sein soll, mir schreiben.
diese satz habe ich nicht verstanden was Sie genau gemeint. (eine Schleife ist an sich auch „unpythonisch“, denn der Index `m` wird hier nur verwendet)