Forum: PC-Programmierung RS232 Spectrophotometer (Gretag Spectrolino) ansprechen


von Serge B. (sergeberlin)


Lesenswert?

Hallo,

ich möchte eine "quick and dirty" Lösung programmieren, mir der man die 
Messdaten ansehen und weiterverarbeiten kann. Es gibt schon so ein 
Programm (KeyWizard von GretagMacBeth - der Hersteller des Gerätes) - 
macht genau das selbe. Speichert oder zeigt die Daten sofort an. Ich 
will aber meine eigene, eher experimentelle Version programmieren.

Ich versuche gerade über serielle Schnittstelle mit dem 
Spektralmessgerät zu kommunizieren.
Ich benutzte hierfür Flash+Zinc (Compiler für exe) mit ComPort API > 
[http://www.multidmedia.com/support/livedocs/index.php?url=class.php?action=class¬class=COMPort]

Serial Interface "HOW TO" für Spectrolino  > 
[http://www.mcolorcontrol.com/_pdf/Sl/spectrolino_serial_5-en.pdf]
Anhand dieser Dokumentation habe ich versucht das Gerät zu 
initialisieren usw. - es klappt nicht so richtig. Das Gerät sollte 
eigentlich auf die Befehle reagieren (reply) aber da tut sich nichts und 
beim manuellen Auslösen der Messtaste am Gerät liefert der sehr knappe 
Daten. Hm... Die ComPort API ist auch so ziemlich abgespeckt - da fehlen 
einige Befehle - ich habe die Trace-Protokolle vom Herstelleprogramm und 
meinem vergliechen  - wichtige fehlende SET Befehle

IOCTL_SERIAL_SET_TIMEOUTS
IOCTL_SERIAL_SET_WAIT_MASK
IOCTL_SERIAL_SET_HANDFLOW

Es ist möglich mit Zinc DLL API eine dll anzusprechen und steuern > 
[http://www.multidmedia.com/support/livedocs/index.php?url=class.php?action=class¬class=DLL]

Was würdet ihr mir empfehlen wie es fortzufahren ist: eine Möglichkeit 
wäre z.B. mit Delphi und einer COM Komponente eine DLL zu kompilieren 
oder gibt es schon kompilierte (mit Dokumentation) die ich einfach 
nutzen kann? Falls nicht - welche Komponente würdet ihr mir empfehlen 
damit es übersichtlich bleibt und auch funktioniert.

Welche Methoden wären vielleicht sogar besser?

Ich danke euch

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Dein Problem scheint also viel weniger die Kommunikation mit dem Gerät 
zu sein, sondern eher, wie man aus Flash heraus die serielle 
Schnittstelle anspricht.

von Karl H. (kbuchegg)


Lesenswert?

Serge Berlin wrote:

> Ich versuche gerade über serielle Schnittstelle mit dem
> Spektralmessgerät zu kommunizieren.
> Ich benutzte hierfür Flash+Zinc (Compiler für exe) mit ComPort API >
> 
[http://www.multidmedia.com/support/livedocs/index.php?url=class.php?action=class¬class=COMPort]
>
> Serial Interface "HOW TO" für Spectrolino  >
> [http://www.mcolorcontrol.com/_pdf/Sl/spectrolino_serial_5-en.pdf]
> Anhand dieser Dokumentation habe ich versucht das Gerät zu
> initialisieren usw. - es klappt nicht so richtig.

Ich geh normalerweise so vor:
Bevor ich auch nur 1 Zeile Code schreibe, hänge ich das Gerät an die 
Serielle Schnittstelle, starte Hyperterm oder was ich sonst als 
Terminalprogramm vorrätig habe und versuch erst mal das Gerät 'mit der 
Hand' über die serielle anzusprechen.
Das gibt normalerweise einen guten Überblick darüber, wie sich das Gerät 
verhält, klärt Unklarheiten in der Doku, zeigt auf wo die Doku 
fehlerhaft ist etc. Auch kann man so leicht und schnell ausprobieren, 
wie sich Konfigurationsänderungen auswirken, wie das Gerät antwortet, 
was im Fehlerfall passiert, etc.

Nach einer Zeit des Spielens kristallisieren sich dann die Sequenzen 
heraus, die ich zu benutzen gedenke. Und erst dann wird Editor + 
Compiler angeworfen.

von Serge B. (sergeberlin)


Lesenswert?

Hm...
so oder so ähnlich hatte ich zuerst auch gemacht. Ich hatte über 
Terminal (simples Delphi Beispiel) versucht erst ein Mal das Gerät zu 
initialisieren, Terminal, was ich mit Flash+Zinc (DLL API) selbst 
programmiert habe, wo man Codes bzw. Code-Sequenzen ausführt und auch im 
Serial Interface Tracer(Serial Port Monitor von eltima) - das Gerät 
antwortet nicht.

Decimal Initialisierungssequenz:

; 0#13#10
; 43#13#10
; 90 1 4 5#13#10

@kbuchegg : ich versuch über Hyperterm und berichte später

Danke für den Einsatz :-)

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du solltest die Kommunikation zwischen der bestehenden Software und dem 
Gerät abhören, dann findest Du am leichtesten heraus, wie die Feinheiten 
des Protokolles aufgebaut sind.

von Thomas L. (tom)


Lesenswert?

Also das #13#10 sieht verdammt nach einem \r\n aus - bist du dir sicher 
dass du die Daten korrekt sendest?
Baudrate richtig eingestellt? Verwende einmal hterm, damit solltest du 
schonmal weiterkommen.

von Serge B. (sergeberlin)


Lesenswert?

Hallo Leute!

Ich danke euch für die Hilfe - habe die Ursache gefunden - es lag 
alleine an der Baudrate, zwar unterstützt das Gerät von 110-57600, aber 
funktionieren tut es nur mit 19200.

Seltsam, aber wahr! Auf jeden Fall funktioniert jetzt alles.

Gruss

von Thomas L. (tom)


Lesenswert?

Eigentlich gar nicht so seltsam. Oftmals hast du einen Befehl im Gerät 
mit dem du die Baudrate umstellen kannst (trotzdem ist sie immer auf 
eine eingestellt).
Ausnahme war nur mal ein HP Switch, der konnte mit ein paar 
Tastendrücken (Enter) die Baudrate automatisch einstellen :)

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.