Realisierung RoboterMessstand mit Thraeds in c/C++



  • Hallo,bin erst seit heute angemeldet.-und das aus gutem Grund.
    Ich bzw. wir (mein Techniker-SchülerTeam) brauchen dringend Hilfe..

    Wir bauen bei der Firma Philips in Sindelfingen einen Robotermessstand um dessen Abweichungen zu messen.Die Hardware ist fertig und seit etwa zwei Monaten kämpfen wir mit den Tüken der Doku und der vor allem der Programmierung.ja und nun auch zum Problem:
    Wir haben zwei "Boxen",die die Schnittstelle zu unserer Hardware
    darstellen, welche über USB mit dem Rechner komo.
    Unser Programm muß nun stendig die Daten, welche die "Boxen" mit 20kHz in den FIFO schreiben abholen und auswerten.Gleichzeitig muß auf diese Daten noch reagiert und analoge bzw. digitale Ausgänge über Einzelwertausgaben gesetzt werden.

    Haben angefangen dies mit nem Thread zu realiseren doch kommen mit unserem "Schulwissen" nicht weiter.
    Der Robbi fährt schon.Die Steuerung und die Grundstruktur schein einigermaßen zu stimmen.
    Wir bekommen aber die Synchronisation/die Sicherung des kritischen Bereiches nicht in den Griff.Es lässt sich einfach nichts rechts finden(zb.mal en Demoprogramm...)irgenwas wo ich mal lauffähiges zu rumprobieren.

    Würden uns rießig über Hilfe freuen!!

    Wer will den kann ich auch Bilder oder unser bisherges Programm schicken.

    danke



  • Hmm wie wäre es mit ein paar mehr Informationen über das SDK usw. Du beschreibst zwar im Moment etwas, dass einen Fehler verursacht, sagst uns aber garnicht WAS es ist.



  • die frage ist auch mit was für einem system ihr arbeitet etc. Denn Thread handling sind im normallfall Betriebssystem interne funktionen. Jedes BS hat da eigene aufrufe um kritische bereiche zu erzeugen/löschen, sperren etc.



  • Erst mal Danke fürs Interesse.

    Wir arbeiten mit Borland Builder 5 prof.
    Das Programm sollte erstmal auf nem AMD Rechner mit XP laufen.

    Wir brauchen zwei von der GUI unabhängigen Routinen, welche ständig laufen.
    Beider arbeiten mit den selben globalen Variablen.
    Die eine beschreibt die V. ständig, die andere ließt diese und reagiert auf Änderungen.
    Unsere erste Lösung war nur mit einem Thread.leider wurde die Routine da aber zu langsam abgearbeitet, da in ihr oft über den USB die analogen und digitalen Kanäle
    geschaltet wurden.Also hab ich nen zweiten Thread angelegt, der nur auf die Änderung der Variablen, welche von dem ersten beschrieben werden "hört und reagiert."(die Ausgänge uber den USB steuert).
    Nun gilt es die beden miteinander zu synchronisieren...

    Hoffe ich das Problem verständlich beschrieben.->wenn nicht bitte fragt.



  • Das hört sich wie das klassische Erzeuger-Verbraucher Problem an.
    Das könnte helfen.
    http://www.google.de/search?hl=de&q=Erzeuger-Verbraucher+Problem&btnG=Google-Suche&meta=

    Das Problem ist über Semaphore lösbar. Konkrete Implementationen in C++ gibt es garantiert in Hülle und Fülle.



  • Die Lib die ihr verwendet habt, um die Threads zu erzeugen bietet sicher ein Mutex an. WinAPI hat z.B. CreateMutex http://msdn2.microsoft.com/en-us/library/ms682411.aspx



  • Danke für den link
    habs mir grad durchgelesen und versucht zu verstehen.
    mir fehlt glaub noch das nötige hintergundwissen um grad mit so CreateMutex usw. umzugehen.kann mir jemand ein Beispielprogramm oder nen endsprechenden link senden?
    habs gestern noch mit TMultiReadExclusiveWriteSynchronizer versucht zu lösen da es laut der borland hilfe als eine der besten Lösungen beschrieben wird.
    Hab leider das Prinzip nicht ganz verstanden.
    Wie lege ich zb die zu schützenden globalen Variablen an.?



  • Dieser Thread wurde von Moderator/in HumeSikkins aus dem Forum C++ in das Forum VCL/CLX (Borland C++ Builder) verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


Log in to reply