MTSAM
19.10.2004, 08:03
Hi ich habe ein Problem mit der adressierung meines ADC10 Sensors am CC2 ich besitze einen CC2, ein Applicationsboard, ein 2W-Bus Modem und einen ADC10 Sensor.
Hier mein Problem: Ich möchte meinen ADC10 Sensor adressieren leider kommt von dem Sensor immer nur ein fehlerhafter Antwortstring zurück ich weiß echt nicht woran das liegen könnte hier mal mein Programm:
thread main
{
// lokale Zeichenkette fuer LCD-Ausgabe
string disp;
// lokale Zeichenkette fuer TWB-Ein/Ausgabe
string s;
// lokale Variable vom Typ Long
long l;
int x;
//Initialisierung des Externen Lcd-Display
lcdext.init();
// loeschen des LC-Display
lcd.clear();
// Initialisierung des TWB
twb.init();
sleep 3000;
// Zusammenstellen des Stringes fuer Commando "SET SENSOR ADDRESS" (Kommando 3)
str.clear(s);
str.putchar(s,0x03); // ! Kommando 3
str.putchar(s,0x55); // ! Sensoradresse bei gestecktem Jumper (85 dezimal)
str.putchar(s,0x20); // ! frei vorgegebene Modemadresse
str.putchar(s,0x00); // nicht relevant -> definiert auf 0 gesetzt
str.putchar(s,0x00); // nicht relevant -> definiert auf 0 gesetzt
str.putchar(s,0x00); // nicht relevant -> definiert auf 0 gesetzt
str.putchar(s,0x01); // ! gewuenschte Sensoradresse
str.putchar(s,0x00); // nicht relevant -> definiert auf 0 gesetzt
x= twb.io(s);
lcd.clear();
lcd.goto(0,0);
//Ausgabe des Rückgabewertes der Funktion twb.io auf dem Lcd
disp="x=";
lcd.print (disp,str.length(disp));
lcd.goto (1,0);
disp="";
str.putintf(disp,x,4);
lcd.print(disp,str.length(disp));
sleep 2000;
lcd.clear();
lcd.goto(0,0);
//Ausgabe des Anwortstrings
disp="s=";
lcd.print(disp,str.length(disp));
lcd.goto (1,0);
lcd.print(s,str.length(s));
sleep 2000;
x=twb.rxd();
lcd.clear();
lcd.goto(0,0);
//Ausgabe ob der Antwortrahmen vom 2W-Bus Modem empfangen worde ist
disp="x2=";
lcd.print(disp,str.length(disp));
disp="";
str.putintf(disp,x,5);
lcd.goto(1,0);
lcd.print(disp,str.length(disp));
sleep 2000;
// Abfrage ob die Ausgabe ohne Fehler beendet und die Antwort empfangen wurde
if (! x)
// wenn keine Antwort dann LCD-Ausgabe "TIMEOUT" und Beenden des Programmes
{
wait lcd.ready();
lcd.clear();
disp="TIMEOUT";
lcd.print(disp, str.length(disp));
}
// Ausgabe des Antwortstrings als Zahlenwert
else
{
/* Schreiben des Zahlenwertes aus dem Bytepuffer des Antwortstrings und
Ausgabe auf dem Externen Lcd */
l=mem.getlong(s,0);
lcdext.clear();
lcdext.goto(0,0);
disp="l=";
lcdext.print(disp,str.length(disp));
disp="";
str.putlongf(disp,l,4);
lcdext.goto(1,0);
lcdext.print(disp);
}
// Programmende
quit 1;
}
/* Ausgaben am LCD:
X = -0001
S = 1. Zeichen: Y mit einem = Zeichen durch die mitte
2. Zeichen: Leerzeichen
3. Zeichen: f mit einem Horizontalen Strich unten
4. Zeichen: @
5. Zeichen: @
6. Zeichen: @
7. Zeichen: f mit einem Horizontalen Strich unten
8. Zeichen: #
X2 = -00001
l = 52429056
So das ist mein Programm falls jemand von euch einen Fehler entdeckt, verbesserungsvorschläge oder eine Hilfe hat der möge sich bitte melden.
Bis bald und schonmal mal im voraus danke.
MTSAM
Hier mein Problem: Ich möchte meinen ADC10 Sensor adressieren leider kommt von dem Sensor immer nur ein fehlerhafter Antwortstring zurück ich weiß echt nicht woran das liegen könnte hier mal mein Programm:
thread main
{
// lokale Zeichenkette fuer LCD-Ausgabe
string disp;
// lokale Zeichenkette fuer TWB-Ein/Ausgabe
string s;
// lokale Variable vom Typ Long
long l;
int x;
//Initialisierung des Externen Lcd-Display
lcdext.init();
// loeschen des LC-Display
lcd.clear();
// Initialisierung des TWB
twb.init();
sleep 3000;
// Zusammenstellen des Stringes fuer Commando "SET SENSOR ADDRESS" (Kommando 3)
str.clear(s);
str.putchar(s,0x03); // ! Kommando 3
str.putchar(s,0x55); // ! Sensoradresse bei gestecktem Jumper (85 dezimal)
str.putchar(s,0x20); // ! frei vorgegebene Modemadresse
str.putchar(s,0x00); // nicht relevant -> definiert auf 0 gesetzt
str.putchar(s,0x00); // nicht relevant -> definiert auf 0 gesetzt
str.putchar(s,0x00); // nicht relevant -> definiert auf 0 gesetzt
str.putchar(s,0x01); // ! gewuenschte Sensoradresse
str.putchar(s,0x00); // nicht relevant -> definiert auf 0 gesetzt
x= twb.io(s);
lcd.clear();
lcd.goto(0,0);
//Ausgabe des Rückgabewertes der Funktion twb.io auf dem Lcd
disp="x=";
lcd.print (disp,str.length(disp));
lcd.goto (1,0);
disp="";
str.putintf(disp,x,4);
lcd.print(disp,str.length(disp));
sleep 2000;
lcd.clear();
lcd.goto(0,0);
//Ausgabe des Anwortstrings
disp="s=";
lcd.print(disp,str.length(disp));
lcd.goto (1,0);
lcd.print(s,str.length(s));
sleep 2000;
x=twb.rxd();
lcd.clear();
lcd.goto(0,0);
//Ausgabe ob der Antwortrahmen vom 2W-Bus Modem empfangen worde ist
disp="x2=";
lcd.print(disp,str.length(disp));
disp="";
str.putintf(disp,x,5);
lcd.goto(1,0);
lcd.print(disp,str.length(disp));
sleep 2000;
// Abfrage ob die Ausgabe ohne Fehler beendet und die Antwort empfangen wurde
if (! x)
// wenn keine Antwort dann LCD-Ausgabe "TIMEOUT" und Beenden des Programmes
{
wait lcd.ready();
lcd.clear();
disp="TIMEOUT";
lcd.print(disp, str.length(disp));
}
// Ausgabe des Antwortstrings als Zahlenwert
else
{
/* Schreiben des Zahlenwertes aus dem Bytepuffer des Antwortstrings und
Ausgabe auf dem Externen Lcd */
l=mem.getlong(s,0);
lcdext.clear();
lcdext.goto(0,0);
disp="l=";
lcdext.print(disp,str.length(disp));
disp="";
str.putlongf(disp,l,4);
lcdext.goto(1,0);
lcdext.print(disp);
}
// Programmende
quit 1;
}
/* Ausgaben am LCD:
X = -0001
S = 1. Zeichen: Y mit einem = Zeichen durch die mitte
2. Zeichen: Leerzeichen
3. Zeichen: f mit einem Horizontalen Strich unten
4. Zeichen: @
5. Zeichen: @
6. Zeichen: @
7. Zeichen: f mit einem Horizontalen Strich unten
8. Zeichen: #
X2 = -00001
l = 52429056
So das ist mein Programm falls jemand von euch einen Fehler entdeckt, verbesserungsvorschläge oder eine Hilfe hat der möge sich bitte melden.
Bis bald und schonmal mal im voraus danke.
MTSAM