Seite 1 von 4

Probleme mit der IP Adresse

Verfasst: Dienstag 21. Oktober 2008, 10:23
von Ingo
Hallo zusammen,
ich habe folgendes Problem:
Ich habe ein Messgerät, dass mit meinem PC über Ethernet verbunden ist. Das Messgerät hat eine eigen IP Adresse bekommen. Zu dem Messgerät gibt es eine Software dazu. Es ist möglich mit dieser Software und der IP Adresse mit dem Gerät zu kommunizieren(Über IEEE 488.2-1992). Das sind Kommandos mit denen man mit messgeräte kommuniziert. Angeblich kann man mit diesen Kommandos mit jeder Programmiersprache koppeln. Jetzt möchte ich über Python mit dem Gerät kommunizieren. Ich wollte das mit Socket machen.
Mein Code sieht so aus:

Code: Alles auswählen

# Echo server program
import socket

HOST= '172.28.12.150'
PORT = 50000              # Arbitrary non-privileged port
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind((HOST, PORT))

s.listen(1)
conn, addr = s.accept()
print 'Connected by', addr
while 1:
    data = conn.recv(1024)
    if not data: break
    conn.send(data)
conn.close()

Code: Alles auswählen

# Echo client program
import socket


HORST= '172.28.76.145'   
PORT = 50000              # The same port as used by the server
 
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HORST, PORT))
s.send("Hold on")
s.close()
print 'Received', `data`
Folgende Fehlermeldung bekomme ich:
Traceback (most recent call last):
File "C:\dSPACE50\Common\Python22\Core\lib\site-packages\Pythonwin\pywin\framework\scriptutils.py", line 301, in RunScript
exec codeObject in __main__.__dict__
File "J:\Turbo\ar-VTA\ane\anev\Schin\Pyhton\Programme\Beispiel.py", line 8, in ?
s.bind((HOST, PORT))
File "<string>", line 1, in bind
error: (10049, "Can't assign requested address")

Wo liegt mein Fehler, was mache ich falsch?

Verfasst: Dienstag 21. Oktober 2008, 10:28
von Hyperion
Hallo Ingo und Willkommen im Forum!

Es gibt hier die sogenannten Code-tags. Damit wird Dein Code lesbar für uns andere ;-)

Beispiel:
def foo():
print "bar"

-> Die Einrückung ist futsch und der Code so nur schwer lesbar.

Besser ist:

Code: Alles auswählen

def foo():
    print "bar"
Dafür schreibst Du um Deinen Quellcode einfach (code=Python)
#Code
(/code)
Und ersetzt die runden durch eckige Klammern.

Danach wird es leichter, das zu analysieren, was Du bisher gemacht hast.

Verfasst: Dienstag 21. Oktober 2008, 10:31
von Hyperion
Also ich würde mal aus der Fehlermeldung schließen, dass Du unter dieser Adresse einfach keine Verbindung aufbauen kannst. Also stimmt die Adresse nicht, oder aber Du kannst sie von Deinem Standort nicht erreichen (nur Uni-Netz intern z.B.?).

Edit: Ich sehe gerade, dass Du 2 Dateien gepostet hast ... wieso gibt es denn ein Client und ein Server-Programm? Ich habe das bisher so verstanden, dass in dem Messgerät ein Server drin steckt? Vielleicht solltest Du das noch einmal präziser beschreiben!

Verfasst: Dienstag 21. Oktober 2008, 11:32
von Ingo
Ich habe das so Verstanden, dass ich den Sever Code auch doch brauche. Ich habe ja keine Pyhton auf dem Messgerät.

Verfasst: Dienstag 21. Oktober 2008, 11:51
von Leonidas
Ingo hat geschrieben:Ich habe ja keine Pyhton auf dem Messgerät.
Aber du hast doch sicher einen ansprechbaren TCP/IP-Server, oder?!

Verfasst: Dienstag 21. Oktober 2008, 11:55
von Ingo
Ich habe eine IP Adresse, die ich vergeben habe eine Net Mask und ein Gateway. Woran erkenne ich, dass ich eine Server habe?

Verfasst: Dienstag 21. Oktober 2008, 12:01
von Hyperion
Du musst Dich bitte ein wenig klarer ausdrücken! Was heißt vergeben? Wie konfigurierst Du denn das Messgerät? Wie einen Router per Webinterface o.ä.? Oder steckt das Messgerät als Karte in einem PC und Du konfigurierst diesen?

Was genau ist denn in der Doku beschrieben? So wie ich das bisher verstanden habe beherrscht das Teil ein Kommunikationsprotokoll, ähnlich wie ein Drucker usw. Desweiteren soll man per TCP/IP sich an dieses Gerät konnektieren können und durch eine aufgebaute Verbindung Daten senden und ggf. empfangen können. Ist das so weit korrekt? Gibt es vielleicht ein Bsp in der Doku? (Muss ja nicht Python sein!)

Verfasst: Dienstag 21. Oktober 2008, 12:18
von Ingo
Das ist richtig. Mit hilfe dieser Commandos kann ich mit dem Gerät Messen speichern ich kann die Messung anhalten usw. Ich brauche für meine Kommunikation ein Router zwischen dem Messgerät und meinem PC und das habe ich. Bei dem Messgerät war eine Software dabei, wo man die Commandos eingibt. Das funktioniert auch. Damit aber die Kommunikation mit dem Messgerät funktioniert muss man am Gerät selber die IP Adresse eingeben usw. Das Gerät sieht aus wie ein Oszilloskop. Mein PC ist ein Labtop. Soll ich nur mit dem Client Code arbeiten? Das habe ich auch schon probiert.
Folgende Fehlermeldung bekomme ich:

error: (10061, 'Connection refused')

Verfasst: Dienstag 21. Oktober 2008, 12:27
von Hyperion
Ingo hat geschrieben:Bei dem Messgerät war eine Software dabei, wo man die Commandos eingibt. Das funktioniert auch.
Diese Software läuft also auf Deinem Client-PC und nutzt also auch netzwerkkommunikation, richtig?
Soll ich nur mit dem Client Code arbeiten? Das habe ich auch schon probiert.
Folgende Fehlermeldung bekomme ich:

error: (10061, 'Connection refused')
Prinzipiell ja! Das Gerät selber muss ja einen Server betreiben, der Daten per TCP/IP annehmen kann. Du könntest mal per "telnet" probieren, auf das Gerät zuzugreifen. Gibt es denn ggf. noch andere Hinweise zum remote-Zugriff? Als letztes Mittel würde ein Netzwerksniffer sicherlich gute Dienste leisten. Damit könntest Du die Kommunikation zwischen dem funktionierenden Programm und dem Messgerät überwachen.

Bist Du Dir sicher, dass es sich um TCP/IP handelt?

Gibt es in der Doku wirklich keinerlei Beispiele / Beschreibungen, wie solch eine Kommunikation auszusehen hat?

Verfasst: Dienstag 21. Oktober 2008, 12:37
von HWK
Ist HORST denn die richtige IP-Adresse oder doch HOST?
MfG
HWK

Verfasst: Dienstag 21. Oktober 2008, 13:24
von Ingo
Host ist doch nur eine Variable in der die IP Adresse steht oder?

Verfasst: Dienstag 21. Oktober 2008, 13:31
von andilar
Ja ob du die HORST oder HOST oder Ingo nennst ist egal...
Stimmt die Portnummer über die du versuchst dein Gerät zu erreichen?

Verfasst: Dienstag 21. Oktober 2008, 13:56
von Hyperion
@andilar und @ingo: Ja klar! Aber HWK meinte sicherlich auch den Inhalt davon. Also, welche IP ist denn nun die vom Messgerät?

Verfasst: Dienstag 21. Oktober 2008, 14:00
von Ingo
Die IP vom Messgerät lautet 172.28.12.150

Verfasst: Dienstag 21. Oktober 2008, 14:02
von Hyperion
Aha! Dann schau mal in Deinen Code - und denke dann noch mal über HWKs Kommentar nach :-D

Verfasst: Dienstag 21. Oktober 2008, 14:02
von Ingo
Im Messgerät kann ich aber keine Portnummer eingeben.

Verfasst: Dienstag 21. Oktober 2008, 14:06
von Hyperion
Ingo hat geschrieben:Im Messgerät kann ich aber keine Portnummer eingeben.
Hä? Das ändert doch nichts daran, dass die IP-Adresse in Deinem Code falsch ist!

Verfasst: Dienstag 21. Oktober 2008, 14:22
von Ingo
Die IP Adresse habe ich in der zwischen Zeit geändert, deshalb ist das jetzt eine andere. Von meinem Messgerät lautet die IP Jetzt 172.28.12.150. das Steht auch jetzt im Code

Verfasst: Dienstag 21. Oktober 2008, 14:31
von Hyperion
Ingo hat geschrieben:Die IP Adresse habe ich in der zwischen Zeit geändert, deshalb ist das jetzt eine andere. Von meinem Messgerät lautet die IP Jetzt 172.28.12.150. das Steht auch jetzt im Code
Also in dem Code aus Deinem ersten Posting steht noch was anderes ;-)

Was heißt hier eigentlich Zwischenzeit? HWK und ich fragten ja nur, ob Du auch die richtige IP verwendest - was hat sich da also in der Zwischenzeit getan?

Was ist mit meinen anderen Vorschlägen und Fragen?

Verfasst: Dienstag 21. Oktober 2008, 14:38
von Ingo
Ich glaube HWK hat recht die portnummer ist wahrscheinlich das problem aber ich kann die im Messgerät nicht definieren ich weiß nur ich kann ab 49152 mir den port bei meinem pc aussuchen aber beim messgerät gibt es keine möglichkeit ein port zu definieren.