Ich möchte via serieller Schnittstelle Befehle an den uC (ATmega64)
senden, im Format:
1 | ServoA=1000
|
2 | ServoB=1200
|
3 | Lampe=0
|
4 | Text=Hallo Welt!
|
Sobald im empfangenen Text ein "Enter" vorkommt wird dieser als String
"SerialText" dem Programm übergeben. Soweit funktioniert alles
einwandfrei.
Die Servoposition konnte ich vor rund einem Jahr damit heraus lesen:
1 | sscanf(SerialText, "S=%d", &a);
|
Doch das scheint nicht mehr zu passen:
1 | Test232.c: In function 'main':
|
2 | Test232.c:337: warning: passing argument 1 of 'sscanf' discards qualifiers from pointer target type
|
Was stimmt nicht ?
Ich wollte darauf aufbauen:
1 | int main(void)
|
2 | {
|
3 | int a,b;
|
4 | char S1[30]="\0";
|
5 | char S2[30]="\0";
|
6 |
|
7 | for (;;)
|
8 | {
|
9 | if ( Enter == 1 )
|
10 | {
|
11 |
|
12 | sscanf(SerialText, "%s=%s", &S1, &S2);
|
13 |
|
14 | if (!strcmp(S1,"ServoA")) {
|
15 | sscanf(SerialText, "S=%d", &a);
|
16 | sprintf( s, "\n\rServo A = %i\n\r> ", a);
|
17 | Sende1String (s); //Echo an RS232
|
18 | Enter = 0;
|
19 | }//Servo A
|
20 |
|
21 | // weitere Abfragen...
|
22 |
|
23 | }//if Enter
|
24 | }//for
|
25 |
|
26 | }//main
|
Geht das so oder gibt es einen besseren Weg ?