Meine Schrittmotorensteuerung - Probleme

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

So ich denke es müsste laufen!
Habe es nur noch nicht testen können. Der eingabe Bereich fehlt noch.

So jetzt kommt die frage:
Wie machen ich ein Bildschirmlayout?
Es sollte nur in einem Dosfenster erscheinen.

So solls ungefäh aussehen:

Bild

Ich habe schon gesucht nur nichts gefunden, vieleicht benutzen ich einfach die Falschen begriffe?

Gruß
Andyh
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Willst du eine Textmode-UI haben? Da würde man dann ncurses oder urwid verwenden...
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

also ich denke das ich das will (hoffe ich mal), muss halt unter Win gehen.

Kennt da jemand ein gutes tutorial dazu?

Oder kann mir jemand sonst wie helfen?

Gruß
Andyh
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Unter Windows ist sowas nicht üblich, da denken die Leute immer an DOS. Selbst wenn es um die Eingebeaufforderung geht, sagen die Leute immer DOS-Box, was aber eigentlich hinten und vorne nicht stimmt.
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Ich sage auch immer nur Dos, weill dann jeder gleich weis was gemeint ist.
Ist natürlich nicht mit der guten alten Dos Box zu vergleichen.

Ich glaube es ist mit Tkinter einfacher das zu realisieren, nachdem was ich schon gesehen habe.

Bei fragen melde ich micht wieder :D .

Gruß
Andyh
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Die Grafische Bedienoberfläche habe ich erst mal auf eis gelegt weil es andere Probleme zu Lösen gibt.

Eins ist mir ganz wichtig:
Wie gebe ich ein + in diesem Beispiel ein:

Code: Alles auswählen

def test(a, b):
    if a == "+":
        print "a ist +"
    else:
        print "a ist nicht plus"

input()
b soll ein Int sein.
Mit raw_input kommt zwar kein fehler, aber es passiert einfach nichts.

Ich gebe "test(+,20)" ein.

Wahrscheinlich ist die Lösung wieder so leicht das ich gar nicht draufkommt.

Gruß
Andyh
BlackJack

Das '+' gibst Du als Zeichenkette ein. `a` wird ja auch mit einer Zeichenkette verglichen.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Ich möchte mich mal kurz für eure Bemühungen danken!

Leider konnte ich mein Programm noch nicht in der Praxis testen (tja man sollte eben nicht seinen Versuchaufbau grillen :oops: )

Meine Frage:
Ich möchte zum Konsolenteil noch zwei Fenster öffnen und zwar als separate Programme. Ist ja auch nicht schwer:

Code: Alles auswählen

import os 
os.startfile("datei.exe")
Jetzt möchte ich das das erste Programm die Aktuelle Maschinenposition ausliest, diese sind im Hauptprogramm mit den Variable Xpos, Ypos und Zpos beschrieben.

Wie kann ich die vom zweiten Programm Auslesen?
(bei popen und subprocess habe ich schon geschaut und bin noch nicht schlau geworden)
Und wie zeige ich diese an besten an? (ich dachte an eine label)

Das andere Programm soll im Haupprogramm eine Schleife abbrechen (Notaus-Button)
Wie mache ich das am besten?

Gruß
Andyh
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Andyh hat geschrieben:Aktuelle Maschinenposition ausliest, diese sind im Hauptprogramm mit den Variable Xpos, Ypos und Zpos beschrieben.
[...]
Das andere Programm soll im Haupprogramm eine Schleife abbrechen (Notaus-Button)
Hallo Andyh!

Es gibt mehrere Möglichkeiten. Eine ziemlich unkomplizierte Möglichkeit ist, dass du aus deinem Hauptprogramm einen XMLRPC-Server machst und von den anderen Programmen aus per XMLRPC zugreifst. Das klingt schlimmer als es in Wirklichkeit ist.

http://www.python-forum.de/topic-5478.html

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Danke, wird morgen gleich ausprobiert.

Wenn jemand noch andere Methoden kennt, nur her damit :D .
Will ja auch was lernen dabei.

Gruß
Andyh
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Ich bin mir nicht ganz sicher ob der XMLRPC-Server das richtige ist.

Denn Server muss ich ja ins hauptprogramm machen.
Damit der austausch klappt muss er ja ständig laufen, also in einem eigenen Thread, richtig?

muss ich den rest vom Programm dann auch umstellen, ist alles ohne Threads, oder kann ich den XMLRPC eifach unten dran hängen.


EDIT: Habe es herausgefunden:
Noch eine Frage:

wie tauscht der Server und der Client die Daten aus? Ich sehen nur Chinesisch.

Ich habe mir jetzt das Umfassende Buch über Python gekauft, geht es da auch im Threading?

Gruß
Andyh
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Hallo Andyh!

Ich verstehe nur Chinesisch :?:

Ein Beispiel für die Kommunikation per XMLRPC hast du ja schon. Probier aus wie es funktioniert. Erweitere es um eine zustätzliche Funktion und lies dir die Hilfe zu den Modulen *SimpleXMLRPCServer* und *xmlrpclib* durch.

- http://docs.python.org/lib/module-Simpl ... erver.html
- http://docs.python.org/lib/module-xmlrpclib.html

Weiters findest du hier im Forum sicher noch Einiges zu XMLRPC und Threading -- inkl. einigen Beispielen.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Leonidas
Python-Forum Veteran
Beiträge: 16025
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Andyh hat geschrieben:Ich habe mir jetzt das Umfassende Buch über Python gekauft, geht es da auch im Threading?
Was ist denn das "Umfassende Buch ueber Python"? Etwa das dicke, unbrauchbare, was letztens so gehyped wurde?
My god, it's full of CARs! | Leonidasvoice vs (former) Modvoice
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Ja das "dicke", aber unbraubar würde ich nicht sagen. Mit hat es bis jetzt schon ein paar fragen beantwortet.

Gruß
Andyh
BlackJack

Das Buch wurde hier im Thread Python - Das umfassende Handbuch diskutiert. Ich habe nur den Teil über Objektorientierung gelesen und der war wirklich schlecht, sowohl technisch als auch was Python-Idiome angeht. Das wurde eindeutig von jemandem geschrieben der von Python keine Ahnung hat. Wie gut kann dann der Rest vom Buch sein!?
audax
User
Beiträge: 830
Registriert: Mittwoch 19. Dezember 2007, 10:38

Also ich habs mir auch angeschaut...und kanns es ebenso keinem empfehlen. Einfach nur schlecht. Ein Java-Progger hat ein Python-Buch geschrieben!
Aus dem Buch lernt man jedenfalls nichts.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Also ob das Buch jetzt gut ist oder nicht hat man ja schon an anderer Stelle Diskutiert.

Ich habe meine Schrittmotorensteuerung kommplte umgeworfen und fange nochmal von vorne an, weil das programm einfach zu unstrukturiert war.

Ich will diesmal gleich alles in eine GUI bauen.

Ich habe mal eine Frage wie ihr das machen würdet.

Also das muss alles gleichzeitig gehen:

- Schrittmotor anzeuern
- Maschinenposition mitrechen und anzeigen (in Labels)
- die drei Labels in der GUI mit der aktuellen Pos. aktualisieren
- Endschalter überwachen (wenn ein signal über den LPT kommt muss die maschine anhalten)

Also das letzte mal habe ich alles in threads gebaut (gut es hat nicht alles funktioniert z.B. das aktualisieren der drei labels)

Wenn ich weiter mache braue ich irgendwann mal 20 threads.

Also wie würdet ihr sowas angehen?

Gruß
Andyh
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

Noch bevor die anderen Frgane beantortet sing kommen schon neue:

Wie mache ich es das ich "G1 X12 F30" eingaben kann und es auch so verstanden wird.

Für alle die sich nicht mit CNC auskennen: Ich brauche aus diesem Sting die Variable G, F da diese veränderbar sind. X kann auch Y oder Z heisen, muss man auch erkennen und den wert dahinter.

Es gibt ja sicher eine "Relativ" einfache methode dafür, oder?

Gruß
Andyh
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Andyh hat geschrieben:Für alle die sich nicht mit CNC auskennen: Ich brauche aus diesem Sting die Variable G, F da diese veränderbar sind.
Hallo Andyh!

Meinst du damit, dass du die einzelnen Befehle aufsplitten möchtest? So etwas z.B.?

Code: Alles auswählen

>>> cmd_string = "G1 X12 F30"
>>> cmd_list = cmd_string.split()
>>> cmd_list
['G1', 'X12', 'F30']
>>> cmd_details = [ (cmd[0], int(cmd[1:])) for cmd in cmd_list ]
>>> cmd_details
[('G', 1), ('X', 12), ('F', 30)]
>>> cmd_dict = dict(cmd_details)
>>> cmd_dict
{'X': 12, 'G': 1, 'F': 30}
>>> 
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Andyh
User
Beiträge: 319
Registriert: Dienstag 8. Januar 2008, 19:52
Kontaktdaten:

Hallo

@gerold

Ja ich denke das ich das will. Danke!
Werde es mal ausprobieren

Gruß
Andyh
Zuletzt geändert von Andyh am Samstag 9. Februar 2008, 21:12, insgesamt 1-mal geändert.
Antworten