Ich möchte hier kurz ein Update geben, denn es ist endlich vollbracht: Der HP 300 spricht nun endlich mit dem 7475A Plotter via RS232!
Da es mich nun über 2 Wochen und unzählige Stunden gekostet hat die "Zauberformel" zu finden, möchte ich sie hier gerne der Nachwelt dokumentieren, damit es vielleicht in Zukunft jemandem nutzt. Wäre es doch bloß HPIB gewesen.. es hätte so einfach sein können!
Zunächst einmal ein spätes Danke für eure Tipps, es war letztendlich eine Kombination aus Steuerleitungschaos, benötigten Plotter-Kommunikationseinstellungen und RS232 Schnittstellen-Registerkonfiguration... aber hier der Reihe nach:
1. Kabel:
Nach sehr viel Trial&Error und Zweifeln am Kabel war das im Plotter-Manual beschriebene Kabel (HP 17255M) am Ende tatsächlich doch das Richtige:
Die Besonderheit des Kabels liegt dabei an der Verschaltung von Pin 20 (DTR) auf Pin 5 (CTS) und Pin 6 (DSR). Dies dient zum Hardware-Handshake des Plotters an den Computer. Der 7475A Plotter startet nach dem Einschalten standardmäßig in den Hardware-Handshake Modus und teilt dem Rechner mit, wenn sein interner Empfangsbuffer voll ist und erst abgearbeitet ("abgeplottet") werden muss. Auch der HP 300 startet per Default mit Hardware-Handshake.
Eine weitere Besonderheit des Kabels ist, dass es ein Male-Male Kabel ist, da sowohl Plotter als auch HP 300 weibliche Buchsen haben.
Empfohlene Lektüre: 7475A-OperationAndInterconnectionManual-07475-90002, Seite 90
2. HP 300 RS232 Register:
Damit die Kommunikation seitens des HP 300 funktioniert, muss im RS232 Control Register 12 das Carrier Detect ausgeschaltet werden. Dies führt dazu, dass der Rechner bei "ENTER" oder "PLOTTER IS" Operationen nicht auf das Carrier Detect Signal wartet. Wird dies nicht gemacht, kommt immer ein Error 167 "I/O interface status error". Carrier Detect Disable ist Bit Nr. 7 im Register und daher dezimal eine 128. Gesetzt wird es mittels:
CONTROL 9,12;128
Es empfiehlt sich außerdem, zu Beginn das RS232 Interface zurückzusetzen mittels:
CONTROL 9,0;1
Empfohlene Lektüre: 98613-90052_Basic_5.0_Language_Reference_Vol_2_Aug88, Seite 407pp.
3. Plotter Konfiguration:
Aus welchem Grund auch immer, passt die String-Terminierung des Plotters nicht zu der erwarteten Terminierung des HP 300. Soviel zur Kompatibilität von HP zueinander. Sowohl der ENTER Befehl in Basic als auch die Festlegung des Plotters mittels PLOTTER IS 9,"HPGL" erfordert eine Terminierung mit LF (Dezimal 10). Stattdessen terminiert der Plotter aber standardmäßig mit CR (Dezimal 13). Dies kann glücklicherweise im Plotter konfiguriert werden und zwar mit:
OUTPUT 9;CHR$(27)&".M;;;10;:"
Diese kryptische Zeichenfolge konfiguriert den Plotter zur Terminierung mittels LF anstelle von CR.
Zur Erklärung: Zur Konfiguration des Plotters gibt es sogenannte "RS232 Device Control Instructions", von denen wir die sogenannte "Set Output Mode Instruction" brauchen. Diese hat folgende Syntax: "ESC.M<Param1>;<Param2>;<Param3>;<Param4>;<Param5>:" Dabei müssen wir nur Parameter 4 setzen, da dieser die Terminierung einstellt. Die 10 steht also Dezimal für LF. Alle anderen Parameter werden auf Default belassen, daher nur die Semikolons ohne Wert dazwischen. Am Ende steht ein ":". Der Plotter merkt sich das nicht, das muss also nach jedem Neustart des Plotters neu gesendet werden.
Empfohlene Lektüre: 7475A-InterfacingAndProgrammingManual-07475-90001, Seite 209pp.
4. Zusammenfassendes Programmbeispiel in Basic 5.13:
CONTROL 9,0;1 ! RS232 Interface resetten
CONTROL 9,12;128 ! Carrier Detect Disable bit 7 in Register 12 setzen
OUTPUT 9;CHR$(27)&".M;;;10;:" ! Plotter Terminator LF anstelle CR
PLOTTER IS 9,"HPGL"
Und als Schmankerl, wer sich schon immer mal gefragt hat was bei "PLOTTER IS 9,"HPGL" eigentlich so besprochen wird:
Oder auf Deutsch:
Computer: ";IM36;OP;\r\n"
Plotter: "603,521,10603,7721\n"