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 !  

> > > key = Taste(); > > > if key > -1 and key ... usw. > > > > > > Gruß > > > > > > Udo > > > > Hallo Udo, > > > > danke für Deinen Tipp. > > Die Funktion Taste sieht so aus: > > > > <code> > > function Taste () returns int > > { > > int u1, u2, key; > > while (ports.adc(7)>900); > > u1= ports.adc(7); > > u2= ports.adc(7); > > if (math.abs(u1-u2))< 4 > > { > > if u1<901 key=3;//3 > > if u1<825 key=6;//6 > > if u1<755 key=9;//9 > > if u1<690 key=12;//# > > if u1<620 key=2;//2 > > if u1<550 key=5;//5 > > if u1<480 key=8;//8 > > if u1<410 key=0;//0 > > if u1<335 key=1;//1 > > if u1<270 key=4;//4 > > if u1<190 key=7;//7 > > if u1<110 key=11;//* > > if u1>1000 key=-1; > > } > > return key; > > } > > </code> > > > > Das habe ich schon probiert, was Du mir geschrieben hast. Leider funktioniert es auch nicht !? > > > > Wie würdest Du denn solch ein Problem angehen? > > > > Danke! > > > > MfG > > > > Olaf > > Hallo, > > Du machst mehrere prinzipielle Fehler. > Zunächst darfst Du in Deinem Hauptprogramm die Funktion Taste nur 1 mal aufrufen und dann nur > noch die zugewiesene Variable benutzen wie oben beschrieben. Andernfalls machst Du 4 Tastatur- > abfragen in Folge und alle 4 müssten ein identisches Ergebnis liefern, damit der Programmablauf > Sinn macht. > > Die Funktion Taste hat auch so ihre Probleme. Das erste ist, die Funktion wird nie mehr verlassen, > wenn keine Taste gedrückt wird (kann aber auch Absicht sein). Danach fragst Du 2 mal den AD- > Wandler ab und vergleichst die beiden Werte. Aber was, wenn die Differenz eben nicht kleiner als > 4 ist? Dann wird key zurückgeliefert ohne dass jemals ein Wert zugewiesen wurde. Da diese Abfrage > sehr schnell geht, ist die Wahrscheinlichkeit, dass dies geschieht sogra recht hoch. Du musst sicher- > stellen, dass der AD-Wandler solange abgefragt wird, bis die Differenz kleiner 4 ist und erst danach > darfst Du den Wert zuordnen. > > Weiterhin kann es Sinn machen, die Funktion Taste() erst dann wieder zu verlassen, wenn die Taste > losgelassen wurde. So können auf einfache Weise fehlerhafte Doppeleingaben vermieden werden. Bei > normaler Betätigung einer Taste ist diese Verzögerung kaum spürbar. > > Hier ein Beispiel aus der mitgelieferten CD. Da sich das Beispiel auf die Station bezieht, sind die > AD-Werte nicht mit Deinen vergleichbar, aber ich denke das Funktionsprinzip ist erkennbar. > > int keycode; muss global definiert sein. > > <code> > /*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*/ > /*HHHHHHHHHH KEYBOARD DECODER AND UTILITIES HHHHHHHHHH*/ > /*HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH*/ > /* NOMINAL ADC READINGS: */ > /* 1=264 2=329 3=394 4=459 5=524 6=590 7=655 8=788 9=721 */ > /* 0=855 CLEAR=923 ENTER=992 F1=67 F2=133 F3=196 */ > /******************************************************************/ > > /***********************************/ > /* Get single Key # */ > /***********************************/ > function getkey()returns int > { > int adcval; > int oldval; > if ports.adc(7)< 32 {keycode=255;return keycode;} > // let the adc value get stable > oldval=0; > while math.abs(oldval-ports.adc(7))>10 > {oldval=ports.adc(7);sleep 20;} > // decode the pressed key > adcval=ports.adc(7); > if adcval>32 {keycode=10;}//F1 - 67 > if adcval>98 {keycode=11;}//F2 - 134 > if adcval>161 {keycode=12;}//F3 - 200 > if adcval>229 {keycode=1;} // - 264 > if adcval>294 {keycode=2;} // - 330 > if adcval>359 {keycode=3;} // - 395 > if adcval>424 {keycode=4;} // - 461 > if adcval>489 {keycode=5;} // - 526 > if adcval>555 {keycode=6;} // - 592 > if adcval>620 {keycode=7;} // - 657 > if adcval>686 {keycode=9;} // - 727 > if adcval>753 {keycode=8;} // - 790 > if adcval>820 {keycode=0;} // - 858 > if adcval>888 {keycode=13;}//CLEAR - 926 > if adcval>957 {keycode=14;}//ENTER - 996 > return keycode; > } > //---------------------------------- > //---- WAIT FOR KEY RELEASE-------- > //---------------------------------- > function wait_for_release() > { > while keycode != 255 > {keycode=getkey();} > } > </code>
Dateianhang: (.gif, .png., .jpg, .zip, .rar)
max. 256kB
max. 256kB