Meßgerät über LAN ansteuern – Stringproblem

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
Antworten
pythonlooser
User
Beiträge: 3
Registriert: Freitag 7. September 2018, 14:00

Freitag 7. September 2018, 14:08

Hallo,

ich möchte ein Meßgerät über LAN ansteuern (automatische Messungen) und habe bisher folgendes:

Code: Alles auswählen

#http einbinden
import requests

#Variablen
server = "http://192.168.xxx.xxx/remote-access"
grundeinst = {'Setup.OutputFrequency': '12345’}

#einstellen
r = requests.get(server,params=grundeinst)
Das Teil stellt brav die Frequenz ein. :)

Jetzt will ich die Frequenz durch eine Variable ersetzen, zum z. B. eine Schleife zu programmieren.

Code: Alles auswählen

#Variablen
server = "http://192.168.xxx.xxx/remote-access"
frequency = 12345
grundeinst = {'Setup.OutputFrequency': 'FREQUENCY’}
An der GROẞ GESCHRIEBENEN Stelle soll also die Variable sitzen.

Bisher bin ich daran gescheitert, den String „grundeinst“ richtig zusammenzubauen.

Code: Alles auswählen

>>> grundeinst = "{'Setup.OutputFrequency': '"+str(frequency)+"'}"
>>> grundeinst
"{'Setup.OutputFrequency': '12345'}"
wird von „“ umschlossen – funktioniert nicht.

Code: Alles auswählen

>>> grundeinst = {'Setup.OutputFrequency': '+str(frequency)+'}
>>> grundeinst
{'Setup.OutputFrequency': '+str(frequency)+'}
übernimmt logischerweise die Variable nicht.

Wie geht das richtig?
__deets__
User
Beiträge: 3693
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 7. September 2018, 14:18

Code: Alles auswählen

{'Setup.OutputFrequency': ' str(frequency)}
ist alles, was du brauchst.
Benutzeravatar
ThomasL
User
Beiträge: 382
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Freitag 7. September 2018, 14:55

__deets__ hat geschrieben:
Freitag 7. September 2018, 14:18

Code: Alles auswählen

{'Setup.OutputFrequency': ' str(frequency)}
ist alles, was du brauchst.
da ist noch ein Anführungszeichen zuviel

Code: Alles auswählen

{'Setup.OutputFrequency': str(frequency)}
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
pythonlooser
User
Beiträge: 3
Registriert: Freitag 7. September 2018, 14:00

Freitag 7. September 2018, 14:59

danke, aber:

Code: Alles auswählen

    grundeinst = {'Setup.OutputFrequency': ' str(frequency)}
                                                           ^
SyntaxError: EOL while scanning string literal

edit:
@ThomasL - ebenso danke, jetzt funzt das ... :)

Code: Alles auswählen

Status: Ok, SetVariable: Setup.OutputFrequency, Value: 12345
Zuletzt geändert von pythonlooser am Freitag 7. September 2018, 15:06, insgesamt 2-mal geändert.
Benutzeravatar
kbr
User
Beiträge: 949
Registriert: Mittwoch 15. Oktober 2008, 09:27

Freitag 7. September 2018, 15:03

Nein, das öffnende ' vor str ist __deets__ dort versehentlich reingeraten.
Sirius3
User
Beiträge: 8598
Registriert: Sonntag 21. Oktober 2012, 17:20

Freitag 7. September 2018, 15:15

Das `str` ist überflüssig, das macht requests automatisch:

Code: Alles auswählen

grundeinst = {'Setup.OutputFrequency': frquency}
Benutzeravatar
ThomasL
User
Beiträge: 382
Registriert: Montag 14. Mai 2018, 14:44
Wohnort: Kreis Unna NRW

Freitag 7. September 2018, 15:16

kbr hat geschrieben:
Freitag 7. September 2018, 15:03
Nein, das öffnende ' vor str ist __deets__ dort versehentlich reingeraten.
ich vermute mal eher er hat es auf die schnelle versehentlich übersehen beim löschen der anderen überflüssigen Zeichen
aber: das wieso weshalb warum ist doch sowas von egal, oder?
Sollte wohl klar sein, dass er nicht mit Absicht da einen Fehler reinpackt.
Ich bin Pazifist und greife niemanden an, auch nicht mit Worten.
Für alle meine Code Beispiele gilt: "There is always a better way."
__deets__
User
Beiträge: 3693
Registriert: Mittwoch 14. Oktober 2015, 14:29

Freitag 7. September 2018, 15:31

ThomasL hat geschrieben:
Freitag 7. September 2018, 14:55
da ist noch ein Anführungszeichen zuviel
Ups. Danke!
Benutzeravatar
kbr
User
Beiträge: 949
Registriert: Mittwoch 15. Oktober 2008, 09:27

Freitag 7. September 2018, 15:41

ThomasL hat geschrieben:
Freitag 7. September 2018, 15:16
aber: das wieso weshalb warum ist doch sowas von egal, oder?
Sollte wohl klar sein, dass er nicht mit Absicht da einen Fehler reinpackt.
Das ist aus meiner Sicht eine Höflichkeitsfloskel, von der man gerade in Foren eher zu viel als zu wenig verwenden sollte.
pythonlooser
User
Beiträge: 3
Registriert: Freitag 7. September 2018, 14:00

Freitag 7. September 2018, 18:53

Sirius3 hat geschrieben:
Freitag 7. September 2018, 15:15
das macht requests automatisch
Danke nochmal, das wußte ich nicht - und hab dazu auch keinen Hinweis gefunden.
Ich hab von Python bisher noch nicht viel Ahnung, hab ein paar alte Meßgeräte, die über ebenso alte Hard-/Software (Pentium 2, Win98, QBasic 4.5) angesteuert werden. Das neuere Gerät mit dem LAN-Interface hab ich da nicht dran gekriegt, außerdem wird die alte Hardware ohnehin irgendwann wegsterben, also hab ich mich nach einer Alternative umgesehen.
Und zunächst hab ich also einfach probiert, ob ich die Interfaces zum Leben erwecken und an die Geräte schreiben und von diesen lesen kann.
Das funktioniert ja jetzt, und nun muß ich mal anfangen, die Sprache zu lernen ...
Antworten