Hi Leute!! Ich habe des kleine Programm, des untensteht, geschrieben. Es soll nur des Gerät HP3577B (Network Analyzer) in den Messeinstellungsmodus (IPR = Instrument Preset) gelangen und dann den Eingangskanal A (INA) auswählen. Nur des tut überhaupt nicht. Ich habe keine Ahnung mehr, was ich nun machen könnte habe schon einiges probiert, aber nix zu machen. Wäre über ne Idee von Euch sehr dankbar :) Bye, Kris :) ------------------------------------------------------------------------ ----- REM Wichtige Defintitionsdatei einbinden REM $INCLUDE: C:\qbasic\progra~1\qbsetup.bas CLS REM Parameter Datendirectory$ = C:\kristina\data\ ISC& = 7 HP& = 711 CALL IOSEND(ISC&, IPR, 3) CALL IOSEND(ISC&, INA, 3) END
ne veränderung hat zu folgendem geführt, vielleicht kann mir jetzt jemand helfen Mein kleines QuickBasic-Programm löste folgendes aus: 1. 2 Beep-Töne direkt hintereinander 2. die LEDs REMOTE und LISTEN leuchten 3. auf dem Display erscheint invalid HPIB command und ganz kurz zuvor invalid suffix oder so 4. ich kann keinen Hardkey mit Reaktion drücken erst wenn ich LCL gedrückt habe -> LED REMOTE aus, aber LED LISTEN leuchtet 5. mein Laptop geht aus aber des ist net so relevant Das ist mein Problem. Er macht nicht das was er tun soll. Dies ist mein Programm: REM Wichtige Definitionsdatei einbinden REM $INCLUDE: 'qbsetup.bas' CLS REM Parameter Datendirectory$ = "c:\kristina\data\" ISC& = 7 'Select Code von der HP-Karte HP& = 711 '7=Select Code 11=Adresse vom HP3577B CALL IOOUTPUTS(HP&, IPR, LEN(IPR)) CALL IOOUTPUTS(HP&, INA, LEN(INA)) END Und es sollte das selbe wie oben tun - mehr nicht Habe auch schon andere Befehle probiert, stets dasselbe.
"LCL" ist wohl die "Local"-Taste. DAmit Gibts du dem Gerät vor, dass Du es jetzt wieder manuell bedienen willst.
Hi! Ich hab das nun nicht genaustens durchgelesen, aber könnte daran etwas falsch sein? : >REM Wichtige Definitionsdatei einbinden >REM $INCLUDE: 'qbsetup.bas' Wenn du diese "wichtige definitionsdatei" wirklich einbinden willst musst du das 'REM' vor $include 'qbsetup.bas' schon weglassen, ansonsten wird es als kommentar interpretiert und nicht includiert. MFG Nik
Kannst Du vielleicht mal kurz Pasten, wie so ein Befehl aussehen soll, laut Handbuch? Thx, Patrick...
@ Nik der Befehl $INCLUDE: 'qbsetup.bas' ist ein Metabefehl und wird trotz Kommentar ausgeführt. Bin dem trotzdem nachgegangen, nach dem ich keine Compiling-Fehler mehr hatte, stand da jetzt INCLUDE: 'qbsetup.bas' und habe immer noch desselbe problem @Patrick Die Programming Codes stehen im handbuch im Anhang (2Spalten) Okay hiermal paar Beispiele: Function HP-IB (des ist der Code) INSTRUMENT PRESET IPR Input = A INA Store in register X1 SX1 DISPLAY FUNCTION DSF Phase DF5 Start Frequency (entry) FRA Im Handbuch steht des alles in HP-BASIC Beispiel für ne Programcodezeile: OUTPUT 711; "IPR;" noch fragen???? ich beantworte alles, sofern ich dann hoffetnlich weiterkomme Danke!!!
Hm, sieht so aus, als hättest Du da was vergessen ;) ändere mal CALL IOOUTPUTS(HP&, IPR, LEN(IPR)) CALL IOOUTPUTS(HP&, INA, LEN(INA)) in CALL IOOUTPUTS(HP&, IPR;, LEN(IPR;)) CALL IOOUTPUTS(HP&, INA;, LEN(INA;)) Sieht jedenfalls schwer danach aus...
Kannst Du denn vielleicht mal die "qbsetup.bas" hier veröffentlichen? Oder ist das Copyrighted? Warscheinlich liegts nur daran, daß da irgendwas in der Übertragungssequenz fehlt, vielleicht muss hinter diese "711" auch noch ein ;, aber wie man das machen muss, kann ich ohne weiteres über die IOOUTPUTS-Funktion nicht sagen... Wie lautet denn genau die Fehlermeldung, in der "invalid suffix" oder so ähnlich vorkommt?
Des ist die Datei "qbsetup.bas" Und des steht als erklärung im handbuch zu den fehlermessages INVALID HPIB COMMAND ERROR HP-IB. Code sent to HP 3577B not a valid HP 3577B HP-IB Code. INVALID SUFFIX ERROR HP-IB. Code sent to HP 3577B for a data entry suffix is not appropriate for prefix parameter or instrument state.
Hm, ich habe da ne vermutung, aber evtl. könntest Du noch das abschreiben, was auf der Seriellen Schnittstelle gesendet wird (also kein Quellcode, sondern so ne Art Frame-Doku). Wenns das im Handbuch gibt.
verstehe ich nicht wie meinst du des genau??? einbißchen ausführlicher bitte lass dir zeit - ich muss zum arzt trotzdem dank
Ah, moment, wird das überhaupt via COM-Port gesendet? Hab das jetzt einfach nur so angenommen, weis es aber nicht ;) Naja, jedenfalls würde ich gerne wissen, was da für Bytes übertragen werden müssen, um einen Befehl erfolgreich abzusetzen. So in der Art: |SOF|ADR|DELIM|CMD|DELIM|LEN|DELIM|EOF| Was dann beispielsweise so aussehen würde: |0x??|0x01|;|IPR|;|0x06|;|0x??| Das ist jetzt nur zusammenfantasiert ;) Meine Vermutung geht halt dahin, daß Du für ISC& und den STRN$ nicht das überträgst, was da rein sollte.
@ thkais habe uralt laptop. betriebssystem windows 95. und "system operates at 75MHz" oder was meinst du? (9600BD kann ich dir auch noch anbieten) @ Patrick gehe über den GP-IB (general purpose interface bus) mit dem output-befehl weiß er dass er dass er in den remote-modus gehen muss, weil was vom pc (laptop) kommt und der outputbefehl setzt des gerät in den LISTEN-zustand. und dann scheint er den Befehl nicht zu erkennen. ich weiß net mehr weiter.
Guten morgen zusammen! Also: DECLARE SUB IOOUTPUTS (ISC&, STRN$, COUNT%) Was steht denn in der Doku, was für ISC& und COUNT% übergeben werden soll? Ich weis, Du hast das oben in Deinem Programm schon mal hingeschrieben, aber was sagt die Doku? In Deinem Programm verwendest Du einmal ISC& und einmal HP&, übergibst an die Funktion aber NUR HP&... STRN$ wird wohl der Befehl sein ("IPR/INA/...") und COUNT% die länge des Befehls. Es könnte aber auch sein, daß die Adresse, bzw ISC&, in der Länge mit angegeben werden muss. Ich habe auch mal nach nem Manual in google gesucht, aber das gibts wohl nur als Hardcopy gegen Dollars ;)
Ebenfalls einen guten morgen :) DECLARE SUB IOOUTPUTS (ISC&, STRN$, COUNT%) ISC& -> specifies a device address (711) or specifies the interface select code (7) -> habe getestet, er geht nur in den REMOTE und Listen Modus wenn ich 711 also HP& einsetze STRN$ -> array specifying the string to be sent COUNT% -> specifies the length of the output string (An error occurs if the number is less than 0) Beispiel für QuickBASIC und QBasic: DEV& = 723 INFO$ = "1ST1" LENGTH% = LEN(INFO$) CALL IOOUTPUTS(DEV&,INFO$,LENGTH%) 'send "1ST1" to device 723 das habe ich aus dem buch "using HP-IB interface and command library with dos" und ist von HP
Aha! Hm, 'send "1ST1" to device 723 Wo kommt denn diese '1' her? Die Befehle, die Du bisher genannt hast, waren alle nur 3-Stellig... Ist das evtl. eine Art Präfix?
das war schon klar und das ist ne gute Frage, des haben die hier in dem Buch so nun mal gemacht. ... ich teste es mal ... warten bitte :)
egal ob ich "1IPR" "1IPR;" "1IPR; " als Befehl nehme, passiert das: emote und listen modus -- 1xbeep -- keine displayanzeige auf gerät -- gerät macht aber auch nicht des IPR -- laptop schmiert ab habe jetzt aber nur einen befehl drin, soll ich 2befehle mal probieren, so wie oben? --> ich mache es einfach mal... schon mal ein fortschritt oder???
:-) Vielleicht schmiert Dein Laptop ja ab, weil Du die Antwort nicht entgegennimmst...
Mal ne Frage zum Laptop: Bertreibst du den über Akku oder mit Netzkabel? Vielleicht bricht die Versorungsspannung ja so doll zusammen, dass er sich aufhängt... (Ist aber wohl eher unwahrscheinlich.)
mein laptop sitz auf der dockingstation zu den tests: des ist echt blöd, ich schicke die ein und die selbe exe datei an das gerät und kann 3 verschiedene reaktionen bekommen, ich glaub des ding mag mich net. die 3 möglichen reaktionen: 1. rein garnix und laptop schmiert ab 2. remote und listen modus -- 1xbeep -- keine displayanzeige auf gerät -- gerät macht aber auch nicht des IPR -- laptop schmiert ab 3. remote und listen modus -- 1xbeep -- kdisplayanzeige auf gerät -- gerät "invalid hpib command" -- macht sonst nix weiter -- laptop schmiert ab Der Laptop schmiert unter dos ab Unter windows kommt dann so ein Popupfenster mit folgendem test: "Diese Anwendung wird aufgrund eines unzulässigen Zugriffs beendet. Alle Anwendungen beenden und Computer neu starten. Falls bei Arbeit mit dem Programm permanent Probleme auftreten, ..." zusatzinfo: nach einer weile geht er selbstständig aus dem remote-modus raus, aber bleibt im listenmodus manchmal kommt nochmal ein beep, weiß aber net, ob des zur gleichen zeit passiert. geht auch aus dem remotemodus, wenn ich den laptop net mir STRG+ALT+ENTF wiederbeleben kann und ihm dann die Stromversorgung enziehe. kann aber nur zufall sein. Dein Kommentar "Vielleicht schmiert Dein Laptop ja ab, weil Du die Antwort nicht entgegennimmst..." --> Welche Antwort??? Ich verlange doch was von ihm. Ich sende was. Im Buch "using HP-IB interface and command library with dos", wo die befehle erklärt sind steht noch des: after the string is sent, the EOL string is sent and the EOI line is set (if enabled). ??? ich verzweifle .........
Daß Windows da motzt, ist klar. Du machst direkte Zugriffe auf die Hardware, was Windows überhaupt nicht mag. Es scheint fast so, als hättest Du zusätzlich noch ein Problem mit der Schnittstelle, die Du verwendest (welche auch immer). Dein Versuch mit DEV& = 711 INFO$ = "1IPR" LENGTH% = LEN(INFO$) CALL IOOUTPUTS(DEV&,INFO$,LENGTH%) Lässt sich aber noch reproduzieren, oder?
Ich bin mir nicht ganz sicher, aber müsste nach einem "write" nicht ein "read" komment, das die Bereitschaft des Analyzers klärt? Du hörst dich ja echt verzweifelt an; da muss ich doch wohl doch mal unters Bett kriechen und die alten Unterlagen suchen...
Du wolltest was über die Schnittstelle, dann schau in den anhang Mein Programm sieht jetzt so aus: INCLUDE: 'qbsetup.bas' CLS REM Parameter Datendirectory$ = "c:\kristina\data\" ISC& = 7 'Select Code von der HP-Karte HP& = 711 '7=Select Code 11=Adresse vom HP3577B INFO$="1IPR" LENGTH%=LEN(INFO$) CALL IOOUTPUTS(HP&, INFO$, LENGTH%) END Ergebnis: Nachdem er mermals nix getan hat, habe ich 2 neustarts direkt hinter einander gemacht. und sie dann: er machte wieder was. und zwar: REMOTE und LISTEN MODUS + 1 Beep + "INVALID HPIB COMMAND" Test: Habe die 1 mal wieder weggelassen, da kam auch nur INVALID HPIB COMMAND, aber ich denke, dass der andere Text INVALID SUFFIX nur zu schnell wieder weg war. Frage: Was meint irh immer mit diesem Read and Write? Ich sende doch nur was, warum soll ich was empfangen?????????
weisst du zufällig, mit welcher GPIB-Karte du arbeitest? Ist die von HP oder vielleicht von NationalInstruments? Ich habe meine Unterlagen gerade gefunden (lagen fast ganz oben auf dem Stapel). Damals hatte ich eine ISA-Karte von National Instruments in einem Compaq 486er (nur zur Info, was noch so in Firmen für Messplätze benutzt wird) unter Win95. Da gab es keine Probleme. Leider habe ich die Sachen nur noch auf Papier. Leider wird in deinem Dokument nur HP-VEE beschrieben. Das ist meiner Meinung eine Programmiersprache auf einer HP-Workstation unter HP-UNIX. Was uns helfen würde wäre eine Übersicht über die Befehle, die Dir zur Verfügung stehen.
Ich habe eine HP-IB Karte drin bekomme heute nachmittag ein anderes gerät zum anschließen, das war vorher dran und hat funktioniert. damit soll ich dann test, ob der laptop, die karte und die peripherie überhaupt noch tut, oder ob diese beim transport (schweiz -> deutschland) beschädigt wurde. des viel den Leute sehr früh ein, oder? Ich denke, ich melde mich heute nachmittag nochmal :) Vielen Dank an Euch! Ihr habt mir Erkenntnisse, Hilfe und Unterstützung gebracht, und besonders habt ihr mich vorm VERZWEIFELN gerettet. Danke! Bis später :)
Ich kenne auch nur Leute, die so wie ich denken: Wer einmal den HPIB benutzen mußte, faßt ihn nicht für alles Geld der Welt nochmal an. Das Problem ist nämlich, daß dort absolut nichts standardisiert ist. Z.B. kann das Ende mit dem EOI-Draht, 0x0A, 0x0D+0x0A, 0x0D+0x0A+EOI, 0x0D+EOI+0x0A oder sonstwie gekennzeichnet werden. Auch sind manche Interfaces wie tot, wenn nicht auch noch eine gültige Sekundäradresse empfangen wurde. Das A und O ist also eine möglichst ausführliche Beschreibung des HBIP-Protokolls Deines Gerätes. Z.B. hat mein HP-Multimeter schon allein 3 verschiedene Protokolle zur Auswahl: SCPI-Sprache HP3478A-Sprache Fluke 8840A-Sprache Was auch immer diese bedeuten mögen. Wenn ich mich recht erinnere, unterstützt LabVIEW den HPIB und wenn Du Glück hast, ist da schon eine fertige Bibliothek für Dein Gerät mit drin. Allerdings geht LabVIEW auch nur mit einigen bestimmten HPIB-Karten. Und kosten tuts natürlich auch nicht wenig. Peter
LabView auf nem P1 mit 75MHz ist bestimmt der Brüller... @Peter: Bei den verschieden Sprachen, die dein Multimeter unterstützt vermute ich Emulationen der verschiedenen Geräte. Schliesslich ist das Fluke 8840A quasi das Referenzgerät beim Kalibrieren meines Wissens vom Stand 1999 (da war ich zu letzt in der Messmittelkalibrierung tätig). @Kris: Leider sind meine Unterlagen von National Instruments (die Firma die auch LabView und DIAdem vertreibt). Ohne den Befehlssatz von HP wird das etwas schwierig. Ich werd mal einen unserer Messtechniker hier fragen. (Warum komme ich auf sowas immer erst so spät?)
"...meines Wissens vom Stand 1999..." Muß schon älter sein, mein HP ist von 1991. Ich hab auch nur das SCPI-Protokoll ausprobiert, ging relativ einfach. Alles sind Textkommandos ohne Sekundäradressen und sonstigen Schnulli. Also fast, wie über die RS-232, bloß daß man die Antworten extra auslesen muß. Das ging dann über das SRQ-Signal. Hat das HP eine Antwort zusammengebastelt, dann setzt es das SRQ und der PC weiß, daß er jetzt auslesen darf. SRQ mußte man natürlich vorher einschalten. Peter
Vielleicht hilft dir das hier erst mal, um festzustellen, ob die Kommunikation auf dem Bus überhaupt funktioniert. http://www.ni.com/support/gpib/at-gpib/diag.htm Einfach mal auf der Seite gucken. Auch wenn es sich um die "Konkurrenz" handelt.
Vielen dank an alle!!! Habe den Fehler gefunden, es war ein Fehler in der Biblitothek und somit konnte nicht richtig compiliert und gelinkt werden. Vielen dank nochmal.
Na sowas :-) Erst mal Glückwunsch! Und wie muss jetzt die IOOUTPUTS(.....) Zeile aussehen? Würd mich doch jetzt echt mal interessieren... Gruß, Patrick...
Danke Okay, die kann so aussehen CALL IOOUTPUTS(HP&, IPR, LEN(IPR)) oder so HP& = 711 INFO$ = "IPR" LENGTH% = LEN(INFO$) CALL IOOUTPUTS(DEV&,INFO$,LENGTH%) dabei kann INFO$ = "IPR INA" sein. also ganz toll. Vielen Dank für deine Hilfe. :) Ich wäre sons verzweifelt. Jetzt beise ich mich mit anderen Befehlen rum und versuche des Ding so zu steuern, wie ich es will. Was aber leider nicht durchgängig klappt. Egal, was soll´s. Vielen Dank! :))))
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.