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,
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.
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 :)
> 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...
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.
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...
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
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......
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.