Hallo Leute, ich bin neu hier und bräuchte eure Hilfe. Ich bin ein absoluter Programmieranfänger und möchte es unbedingt lernen. Deshalb habe ich mir eine Studienarbeit ausgesucht, wo ich etwas programmieren muss. Mein Problem: Ich habe ältere PI (Physik Instrumente M-511.5i) Lineartische die ich in C++ programmieren möchte. Von PI habe ich schon eine .dll, .lib und eine headerdatei erhalten, ich konnte sie einbinden und die Tische konnte ich auch schon verfahren. Das funktioniert ziemlich einfach mit der funktion LAN_sendString("1MA66666");. Es wird ein string an den µc gesendet, der in diesem fall mit der "1" die Achse anspricht, danach MA (Move Absolut) und 66666 sind die Schritte. Damit bewegen sich die Achsen. Nun möchte ich die Achsen auch relativ bewegen lassen und das geht laut PI nicht so einfach. Es gibt die Basic commands wie das "MA" und die extended commands wie "MR" (Move Relative) siehe Scan. Um die extended commands zu benutzen muss die LAN_translate(char *command; char *report) funktion verwender werden. Ich denke, dass bei char *command der String reingeschrieben wird ("1MR50000"), ich weiss aber nicht was bei report rein kommt. Kennt sich vielleicht jemand mit den PI-Achsen aus und kann mir helfen? schon mal vielen Dank im Voraus
Vor sechs Jahren habe ich in einer Projektarbeit mit PI-Lineartischen unter Linux (Ubuntu) in C gearbeitet. Zumindest damals war PI selber sehr Hilfsbereit und hat mit unter anderem einen Linux-Treiber (experimentel oder noch in der Entwicklung, weiß ich nicht mehr genau) bereit gestellt. Ich weiß jetzt nicht mehr genau, was übergeben werden muss. Nachdem aber ein Pointer gefordert wird, sowohl für den Command-String als auch den Report-String würde ich es einfach ausprobieren. Ich meine mich zu erinnern, dass die Controller-Karte nach erreichen der Position eine Meldung zurückgegeben hat. Andernfalls würde ich einfach bei PI direkt mal nachfragen. Der Kontakt damals war sehr nett und äußerst Hilfsbereit.
Alex M. schrieb: > Ich denke, dass bei char *command > der String reingeschrieben wird ("1MR50000"), ich weiss aber nicht was > bei report rein kommt. Kennt sich vielleicht jemand mit den PI-Achsen > aus und kann mir helfen? Wenn das so aus der Dokumentation nicht hervor geht, dann ist das ein Bug in der Dokumentation. Wenn Firutin recht hat, freut sich der Hersteller ggf. sogar über feedback von Leuten, die da nicht jeden Tag mit arbeiten. Dokumentation wie "report: the report" sind immer sehr hilfreich! ;-)
Hallo also vielen Dank für eure Antworten. Ich habe wie empfohlen PI angeschrieben, leider war die Antwort nicht positiv, denn sie haben den Support für diese Tische eingestellt und konnten mir leider nicht helfen.
Hast Du es einfach mal mit einem leeren String für "report" versucht, so wie von Firutin vorgeschlagen? Und mal schauen, ob danach etwas anderes drin steht?
Kannst Du mehr von der Dokumentation hochladen? Vielleicht ergibt es sich ja aus dem Zusammenhang. Irgendwo ist bestimmt erwähnt, was es mit den Reports auf sich hat. Aus der Beschreibung der LAN_translate alleine ist mir nicht klar, was sie macht. Übersetzt sie tatsächlich zwischen den beiden Strings, also formt ein Command in ein Report um oder umgekehrt? Oder sendet sie das Command an die Hardware und liefert ein Report zurück? Oder kann man entweder ein Command oder ein Report übergeben und der andere Wert darf NULL sein? Könnte alles sein. Im Zweifel probier einfach mal ein paar Varianten aus und schau auf die Fehlercodes. Übergib beim jeweils anderen Parametern mal einen NULL-Pointer oder einen Zeiger auf freien Speicher und schau, ob sich danach etwas im Speicher geändert hat.
Die Info mit welchem Controller du die PI-Tische ansteuerst, wäre noch hilfreich. Ich habe damals (glaube ich zumindest) den Controller C-843 verwendet. http://www.physikinstrumente.de/produkt-detailseite/c-843-900950.html Und hier auch entsprechend die mitgelieferte DLL-Bibliothek. So viel ich weiß, sollten die meisten Controller vom Befehlssatz her den PI-GCS unterstützen. Damit sollte es zumindest für dich möglich sein, schon mal die richtigen Kommandes herauszufinden. Eventuell findest du auch auf der PI USA Seite noch etwas. http://www.pi-usa.us/products/Software/index.php Grundsätzlich hat es für ziemlich viele Programmiersprachen auch Beispiele von PI gegeben. Wenn du den Controller-Typen noch mitteilen kannst, finden wir vielleicht noch eine Lösung.
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.