Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

Wichtig: Bevor Du wegen einem Problem mit der CC2 postest, stelle sicher, daß Du
die neueste OS-Version, die neuseste Compiler-DLL und die neuesten Modulversionen benutzt!
Beachte, daß sich auf der CD zur CC2-Unit/Station auch jetzt noch die ältesten Dateien befinden!
Es gelten folgende Anleitung und Regeln: Regeln CC2Net.de-Forum
Zurück zum Artikel  (Blaue Felder sind Pflichtfelder)


Name:   UserID: 
 E-Mail:
Kategorie
Betreff
Homepage:
Link-Titel:
Link-URL:
Cookie für Name, UserID, E-Mail, Homepage-URL setzen
(Erspart die Neueingabe bei Beiträgen und Antworten)
(Zum Löschen des Cookies hier klicken)
Ich nutze:
C-Control II Unit
C164CI-Controllerboard
C-Control II Station
CCRP5 mit CC2-Unit (Conrad Roboter)
CC2-Application-Board
CC2-StarterBoard
CC2-ReglerBoard
eigenes Board
original OS     OSOPT_V2     OSOPT V3.0 OSOPT V3.1

Kommentar:
Einfügen von HTML im Kommentar:

Link einfügen: <a href="LINKURL" target="_blank">LINKTITEL</a>
Bild einfügen: <img src="BILDURL">
Text formatieren: <b>fetter Text</b>  <i>kursiver Text</i> <u>unterstrichener Text</u>
Kombinationen sind auch möglich z.B.: <b><i>fetter & kursiver Text</i></b>
C2 Quellcode formatieren: <code>Quellcode</code>
ASM Quellcode formatieren: <asm>Quellcode</asm>
(Innerhalb eines Quellcodeabschnitts ist kein html möglich.)
Wichtig: Bitte mache Zeilenumbrüche, bevor Du am rechten Rand des Eingabefeldes ankommst !  

> Hallo Tom! > Dir auch besten Dank für Deine Idee. Hört sich gut an! > Ich werde das einfach mal mit einem Tread probieren. > > Gruß Fischi alla skontox! > > ######### > > > > Hallo Skontox, > > > > ich denke das ein Thread sich nur um die Serielle Schnittstelle kümmern sollte. > > > > 1.Erkennen des Anfangs > > 2.Empfangen der Daten > > 3.Vergleichen der Daten mit dem letzten Frame > > 4.Daten in globalen Variablen zur Verfügung stellen > > 5.Globale Daten für geändert erklären > > 6.und das ganze von vorne > > > > zu 3. Vergleichen der Daten mit dem letzten Frame > > Da ich denke das sehr viele Frames gleich sind sollte der Empfäger die Daten mit > > dem letzten Frame vergleichen, und nur bei Änderungen Punkt 4. und 5. ausführen. > > Das hat den Vorteil das dein Thred, der auf die geänderten Daten reagieren soll nur > > dann reagiert, wenn auch geänderte Daten vorhanden sind, und nicht auf jeden > > Frame. Das sollte enorm Rechenzeit sparen. Bei den globalen Variablen mußt Du nur > > beachten das in einem Multi Thread Programm auch die Captures und Releases für > > das eintragen und auslesen der Daten sauber sind, sonst gibt's Chaos.Wie Du schreibst > > willst Du später mal einen 6-Achs Roboter steuern.Ich denke jedoch das dies wenn > > überhaupt nur mit ASM gelingen wird. > > > > Wenn Du noch Fragen zu den Globalen Variablen und Captures und Releases hast, poste > > einfach wieder. > > > > mfg Tom > > > > > > > Ein wunderschönen Tag! > > > Ich habe die CC2 mit einem Datenhandschuh über die RS232-Schnittstelle mit 9600 Baut gekoppelt! > > > Problem ist, dass der Handschuh seine Daten permanent sendet (kein Empfang möglich!) und ich bei größeren > > > Berechnungen mit den empfangenen Werten Probleme mit der Synkronisation mit dem Empfang habe. > > > Bei kleineren Berechnungen läuft es ganz gut! > > > Was kann man da machen? Wahrscheinlich ist mein Code auch nicht so super, aber auf die Schnelle > > > viel mir nix besseres ein. > > > Zum Testen habe ich hier einen ferngesteuerten Wagen über den Handschuh gesteuert. > > > D.H der Handschuh hat einen Bewegungssensor. Wenn der Handschuh nach vorne kippt, dann würde > > > der Wagen nach vorne fahren. Wenn der Handschuh nach hinten kippt nach hinten. Und nach rechts und links, > > > dann würde der Wagen nach rechts und links fahren, das klappt auch fast immer, aber manchmal bekommt er halt > > > Probleme mit der Synkronisation. Um den Wagen zusteuern, werden einfach Port 0,1,2,3 benutzt. > > > Diese Ports ersetzen die Knöpfe an der Fernbedienung! > > > Hier mal mein Beispiel-Code: > > > > > > <code> > > > function Glove_Miniwagen() > > > { > > > setzte_int_Display("Glo-Mini"); //Funktion für die interne LCD-Anzeige > > > sleep 1000; > > > > > > //# Glove_Erkennung # > > > Glove_Erkennung (); //Um zuerkennen, ob ein Handschuh angeschlossen ist. > > > > > > //Erneute Erkennung zur Synchronisation und Datenerfassung > > > // Variablen deklarieren > > > int empfang1,empfang2,syncerror_flag,syncerror2_flag,poweron_flag; > > > int count,linkswert,rechtswert; > > > float links, rechts, wert; > > > string ueberwachung; > > > syncerror_flag=0; > > > syncerror2_flag=0; > > > poweron_flag=0; > > > > > > //Hardware-RS232-Schnittstelle initialisieren > > > hwcom.init(); > > > hwcom.setspeed(5); //9600 Baud > > > > > > while syncerror_flag!=1 > > > { > > > syncerror2_flag=0; > > > wait hwcom.rxd(); > > > empfang1= hwcom.get(); > > > if empfang1==1 //Endzeichen im Paket > > > { > > > wait hwcom.rxd(); > > > empfang2= hwcom.get(); > > > if empfang2==128 //Startzeichen im Paket > > > { > > > while syncerror2_flag!=1 > > > { > > > for count = 1 ... 10 > > > { > > > wait hwcom.rxd(); > > > wert= hwcom.get(); > > > > > > if count==6 //Enthält den "Pitch"-Wert Wert 255 ganz nach vorne gekippt! > > > //Wert 0 ganz nach hinten. 127 genau die Waage > > > { > > > if wert>=130 and wert<=155 //Der Wagen soll nicht fahren! > > > { > > > ports.set(0,0); //Vorwärts ist aus > > > ports.set(1,0); //Rückwärts ist aus > > > } > > > if wert<130 //Der Wagen soll Rückwärts fahren > > > { > > > ports.set(0,0); //Vorwärts ist aus > > > ports.set(1,1); //Rückwärts ist an > > > } > > > if wert>155 //Der Wagen soll Vorwärts fahren > > > { > > > ports.set(1,0); //Rückwärts ist aus > > > ports.set(0,1); //Vorwärts ist an > > > } > > > } > > > if count==7 //Enthält den "Roll"-Wert Wert 255 ganz nach vorne gekippt! > > > //Wert 0 ganz nach hinten. 127 genau die Waage > > > { > > > if wert>=100 and wert<=155 //Der Wagen soll nicht lenken! > > > { > > > ports.set(2,0); //Rechts ist aus > > > ports.set(3,0); //Links ist aus > > > } > > > if wert<100 > > > { > > > ports.set(2,0); //Rechts ist aus > > > ports.set(3,1); //Links ist an > > > } > > > if wert>155 > > > { > > > ports.set(3,0); //Links ist aus > > > ports.set(2,1); //Rechts ist an > > > } > > > } > > > if count==9 //Endzeichen des Paketes muß 1 sein > > > { > > > if wert!=1 > > > { > > > syncerror2_flag=1; > > > } > > > } > > > } > > > } > > > } > > > } > > > } > > > Portsoff(); //diese Funktion setzt die verwendeten Ausgangsport wieder auf 0 > > > setzte_int_Display("Sy-Error"); //Funktion für die interne Anzeige > > > sleep 1000; > > > setzte_int_Display("Auswahl"); > > > } > > > </code> > > > > > > Vielleicht kann mir mal jemand einen Tipp geben, sprich bessere Vorgehensweise > > > in Verbindung mit der hwcom-Schnittstelle! > > > > > > Gruß skontox > > >
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB