Forum: PC-Programmierung Protokoll anhand der TCP-Pakete erkennen


von asd (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

ich hab ein Messegerät (R&S FSP Spektum-Analysator) das mit Hilfe einer 
proprietären DLL (rsib32.dll) von meinem PC aus mit einer Excel-Tabelle 
mit Marko mit dem Teil kommuniziert. Soweit so gut. Jetzt will ich aber 
keine Excel-Makros machen, sondern eher mit Python ö.ä.
Ich könnte versuchen mit der dll zu reden. Ein anderes Messgerät 
erwartet seine Befehle im ASCII Format per Telnet-Verbindung auf einem 
nicht-standard Port. Das hat bei dem Gerät hier nicht funktioniert. Ich 
hab die Kommunikation mal per Wireshark mitgehört.

Ich hoffe mit den Screenshots keine internen Firmendaten zu verraten 
(Ansonsten an die Admins hier: Bitte den Beitrag sicherheitshalber 
löschen...)
10.61.16.93 ist mein PC, 172.16.48.10 ist das Messgerät (sollten beides 
rein interne IP Adressen sein.
Das "*IDN?" im ersten Paket ist der eigentliche Befehl (VISA/GPIB, 
irgendwas standardisiertes in der Gegend), die Nutz-Bytes des tCP Pakets 
davor gehören zum Übertragungsprotokoll (00 00 01 00 90 00 03)
Der zweite Screenshot ist dann die Antwort vom Gerät, der dritte ist 
wieder ein Paket vom PC. Dann ist die Kommunikation erst mal vorbei.

Könnte es sein dass das Protokoll jemand erkennt? Mit ein bisschen Pech 
ist es natürlich was selbst gestricktes. Telnet hat auf jeden Fall nicht 
funktioniert...

Viele Grüße,

von Peter II (Gast)


Lesenswert?

ich würde es mit der dll versuchen, wenn das Makro mit der dll redet 
kommt man eventuell an den Quellcode des Makros ran. Dann sollte das mit 
der dll kein Problem sein. Man kann doch bestimm so eine dll auch von 
pyton aus nutzen.

von Roland Praml (Gast)


Lesenswert?

Mach mal im Wireshark "Follow TCP Stream"

Gruß
Roland

von meiner (Gast)


Lesenswert?

der fsp sollte ganz normal per visa anzusteuern sein, dafür gibts auch 
interfaces für python...

r&s hat übrigens nen sehr guten support :)

von asd (Gast)


Angehängte Dateien:

Lesenswert?

> Mach mal im Wireshark "Follow TCP Stream"

siehe Anhang.

> der fsp sollte ganz normal per visa anzusteuern sein, dafür gibts auch
> interfaces für python...

Ich kenn micht mit dem Automatisierungs-Kram jetzt gar nicht aus... hast 
du einen Link damit ich den Einstieg finde? Beispiele von der 
Hersteller-Webseite waren immer eher für Visual Basic, oder sonst 
LabView. Für zweiteres hab ich keine Lizenz, ersteres wollte ich nicht 
lernen...

von Peter II (Gast)


Lesenswert?

asd schrieb:
> Hersteller-Webseite waren immer eher für Visual Basic, oder sonst
> LabView. Für zweiteres hab ich keine Lizenz, ersteres wollte ich nicht
> lernen...
aber an den beispielen sollte sich auch ohne genaus wissen der spache 
doch so viel erkennen lassen damit man die dll nutzen kann.

von Matthias (Gast)


Lesenswert?

Gott ist das übel, was soll das werden ?

Agilent-Geräte lassen sich komfortabel mittels Agilent VEE ansteuern. 
Ähnliches müßte bei R&S-Geräten mit LabView möglich sein. Es ist dabei 
nicht zwingend notwendig Vee oder LabView zu benutzen, sondern es wird 
eine Bibliothek mitgeliefert, die sich z.B. für eigene VBA oder 
VisualBasic-Programme nutzen läßt.

Ansonsten unbedingt bei R&S auf der Homepage nach Treibern oder 
sonstigen Unterlagen nachschauen und den Support kontaktieren, auch wenn 
es 'nur' ein altes Second-Hand-Gerät sein sollte, werden sie Dir helfen.

Und mach Dich schlau, was GBIP ist; *IDN? z.B. ist ein Standardbefehl, 
für alle Geräte gleich welcher Marke.

Aber den Netzverkehr mitlesen, um daraus auf die verwendeten Befehle 
schließen zu können...

von Matthias (Gast)


Lesenswert?

Auf der R&S-Homepage findet sich doch alles, was Du brauchst ?!?!

http://www.rohde-schwarz.de/de/Produkte/messtechnik-testsysteme/signal-und-spektrumanalysatoren/FSP-|-Treiber-|-25-|-811.html

siehe auch die application notes

von Dario B. (abcd)


Lesenswert?

wollte doch gerade sagen: die kommandos sind i.d.r. im handbuch 
abgedruckt und erläutert. das muss man nur lesen, dann klappt das auch 
mit dem kommandos verschicken. ich hab den gpib-bus und angeschlossene 
geräte auch schon in c programmiert......

von asd (Gast)


Lesenswert?

mit ctypes hab ich es jetzt geschafft die dll anzusprechen:
http://www.python.net/crew/theller/ctypes/tutorial.html
Problem gelöst. Vielen Dank an die Tippgeber.

Falls zukünftige jemand sucht:
1
from ctypes import *
2
3
serverHostIP = '172.16.48.10'            # aktuelle IP des FSP7
4
MAXSTRLEN = 250                  # Laenge des Standard-String-Puffers
5
6
7
print windll.kernel32.GetModuleHandleA # doctest: +WINDOWS
8
9
print 'vorm send'
10
11
#UD = RSDLLibfind("172.16.48.10", ibsta, iberr, ibcntl)
12
#short FAR PASCAL RSDLLibfind( char far *udName, short far *ibsta,
13
#                              short far *iberr, unsigned long far *ibcntl)
14
ibsta = c_short()
15
iberr = c_short()
16
ibcntl = c_ulong()
17
rs_handle = c_short()
18
# Pointer in DLL-Funktionen verwendet wie in: 
19
# http://www.python.net/crew/theller/ctypes/tutorial.html#id9
20
21
rs_handle = windll.rsib32.RSDLLibfind(serverHostIP,byref(ibsta),byref(iberr),byref(ibcntl))
22
23
print 'nach dem send'
24
25
print 'vorm send'
26
rs_status = windll.rsib32.RSDLLibwrt(rs_handle,"*IDN?",byref(ibsta),byref(iberr),byref(ibcntl))
27
print rs_status
28
print 'nach dem send'
29
30
print 'vorm lesen'
31
antwortstr = create_string_buffer('\000' * MAXSTRLEN)
32
rs_status = windll.rsib32.RSDLLibrd(rs_handle,antwortstr,byref(ibsta),byref(iberr),byref(ibcntl))
33
print rs_status
34
print 'nach dem lesen'
35
print repr(antwortstr.value)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.