Für dieses Forum muß Javascript im Browser aktiviert werden!
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 ! > Für das Auslesen des I2C-EEPROMs gibt es ja fertige Funktionen. Entweder Du sendest in bestimmten Zeitintervallen von der CC2 aus Messwerte auf die RS232 oder Du fragst gezielt Werte oder Wertebereiche ab. > Hierbei musst Du in Schleife, eigener Thread ist angebracht, die RS232 von der CC2 aus abfragen. So gibst Du Werte vom PC zur CC2. Darauf muss die CC2 reagieren. > > Hier der Teil der ein Token in der CC2 erkennt. Der Rest ist reine Tipparbeit. > > > /*************************************************************/ > // das ist der einzige Thread > // er wird zyklisch abgearbeitet > > thread com > > { > int i; // lokale Variable vom Typ Integer > int j; > int iAnzZeichen; > int iRetCode; > byte x; > string s; > string Token[12]; > int MaxToken; > > Token[ 0] = "HKSEN"; // Zuordnung Heizkreis - Sensor übertragen > Token[ 1] = "HKV"; // Vorgaben für Heizkreise übertragen > Token[ 2] = "??"; // > Token[ 3] = "??"; // > Token[ 4] = "SE"; // Speicherausgabe Ein > Token[ 5] = "SA"; // Speicherausgabe Aus > Token[ 6] = "EE"; // Einzelausgabe Ein > Token[ 7] = "EA"; // Einzelausgabe Aus > Token[ 8] = "GD"; // Datum ausgeben > Token[ 9] = "GT"; // Zeit ausgeben > Token[10] = "SD"; // Datum setzen > Token[11] = "ST"; // Zeit setzen > > MaxToken = 11; > > lcd.clear(); // Loeschen des Display > s= "Warten"; // String s mit Zeichenkette laden > lcd.print(s, str.length(s)); // Zeichenkette auf LC-Display ausgeben > hwcom.setspeed(5); // Baudrate einstellen, Standardeinstellung 9600 Baud > > // String t mit Zeichenkette laden, Text "Hallo COM" und neue Zeile (\n) > SendeMsg("C-Controll II ist bereit.\r\n"); > lcd.clear(); // LCD-Anzeige loeschen > > s = ""; // Zeichenkette leeren > iAnzZeichen = 0; // Zähler auf 0 > > loop > { > // warten bis Zeichen auf HWCOM empfangen wurde > // (Zeichen ist von PC-Terminalprogramm zu senden) > wait hwcom.rxd(); > lcd.clear(); // LCD-Anzeige loeschen > > // Variable i mit Wert des an HWCOM empfangenen Zeichens laden > // get() liefert Wert des Typ INT > i= hwcom.get(); > // empfangenen Wert in Zeichenkette umwandeln und an String s anhaengen > str.putchar(s, i); > // Ausgabe des empfangenen Zeichens auf das LC-Display > lcd.print(s, str.length(s)); > // warten bis LCD-Ausgabe beendet ist > wait lcd.ready(); > // Ausgabe des empfangenen Zeichens auf HWCOM (Echo) > // (das PC-Terminalprogramm zeigt das Echo des gesendeten Zeichens an) > hwcom.put(i); > > for j = 0 ... MaxToken > { > x = mystr.Compare(s,Token[j]); > if x == 253 break; // Teil eines Token gefunden. > if x == 255 // Token exact gefunden > { > s = "Befehl '"; > str.putstring(s, Token[j]); > str.putstring(s, "'\r\n"); > SendeMsg(s); > if j == 0 {Token_0() ; break;} > if j == 1 {Token_1() ; break;} > if j == 2 {Token_2() ; break;} > if j == 3 {Token_3() ; break;} > if j == 4 {Token_4() ; break;} > if j == 5 {Token_5() ; break;} > if j == 6 {Token_6() ; break;} > if j == 7 {Token_7() ; break;} > if j == 8 {Token_8() ; break;} > if j == 9 {Token_9() ; break;} > if j == 10 {Token_10(); break;} > if j == 11 {Token_11(); break;} > // Fehler, Token nicht behandelt > SendeMsg("Fehler: Token '"); > SendeMsg(s); > SendeMsg("' nicht behandelt.\r\n"); > s = ""; > break; > } > } > if x == 255 > { > s = ""; // Token behandelt > } > else > { > if x == 0 or x == 254 > { > SendeMsg("Fehler: Befehl '"); > SendeMsg(s); > SendeMsg("' nicht vorhanden.\r\n"); > s = ""; > hwcom.flush(); // Eingehede Zeichen löschen > } > if str.length(s) > 20 // Hänger so vermeiden? > { > SendeMsg("Fehler: Befehl '"); > SendeMsg(s); > SendeMsg("' zu lang.\r\n"); > s = ""; > hwcom.flush(); // Eingehede Zeichen löschen > } > } > } > } > > > Hier noch die Compare-Function: > > > //******************************************************************* > // Lib: MyStr.c2 > // > // function Compare(byte string1[], byte string2[]) returns byte > // Getchar ( byte s[], int position ) returns byte > // Str2Int(byte Wert[]) returns int > // > // > /******************************************************************** > > Vom "Das C-Control - 2 - Forum" > Geschrieben von Reiner am 24. Dezember 2000 14:39:06: > > Funktion zum Vergleichen zweier Stringvariablen > -> gibt 0 zurück wenn strings ungleich > -> gibt 255 zurück wenn strings gleich > > // Beispiel > thread main > { > string s1; > string s2; > byte x; > > s1 = "Halli"; > s2 = "Hallo"; > > x = compare (s1,s2); > > } > -------------------------------------- > Klaus Rawski, 09. Oktober 2001, Funktion leicht verbessert > > 14. Oktober 2001, Vergleich auf Excat und > Str2 geht in Str1 auf. > Begrenzung des Vergleichs wenn > Str1 zu Ende ist. > > > ********************************************************************/ > > function Compare(byte string1[], byte string2[]) returns byte > { > byte i; > byte RetCode; > byte b1; > byte b2; > > RetCode = 255; // Exacter Vergleich OK > for i = 0 ... 29 > { > b1 = string1[i]; > b2 = string2[i]; > if string1[i] == 0 and string2[i] == 0 > { > break; > } > if string1[i] == 0 > { > RetCode = 253; // String 1 geht in String 2 auf > break; > } > if string2[i] == 0 > { > RetCode = 254; // String 2 geht in String 1 auf > break; > } > if string1[i] != string2[i] > { > RetCode = 0; // Keine Übereinstimmung > break; > } > } > return RetCode; > } > > > > > > > Hallo, > > > > ich suche ein Beispiel mit dem ich Messergebnisse aus dem Speicher auf der RS232 auslesen kann! > > > > Ich wollte einen Speicher an der I2C-Schnittstelle verwenden. > > > > Kann mir jemand helfen? > > > >