Forum: Compiler & IDEs Kurze Frage zu uC/OS-II


von Joachim (Gast)


Lesenswert?

Hallo liebe Gemeinede,

Ich hätte kurz ne Frage weil ich irgendwie auf dem Schlauch steh.

hab bei einem uC/OS-II zwei Task´s die über Mailboxen Daten schicken. In 
Task1 wird mein double Wert erzeugt in einen String geschrieben und an 
die Mailbox verschickt. In Task2 soll der Wert an ein LCD ausgegeben 
werden bis hierhin kein Problem nur will ich jetzt noch den erzeugeten 
Wert der in dem String steht Im Task2 weiter bearbeiten, wie kann ich 
nun denn Wert in Task zwei aus dem String lösen und in double umwandeln?

1
void Task1( void *pdata)
2
{
3
4
  uint16_t temp;
5
  double dtemp;
6
  char adwert[80];
7
  INT8U err;
8
9
  while(1){
10
    OSTimeDlyHMSM(0,0,0,50);
11
  //  temp = ADC_WERT(0); // MUX-Bits auf 0b0000 -> Channel 0 
12
  //  dtemp = (double)temp*100;
13
  //  dtemp = dtemp+2;
14
    dtemp = 10;
15
    sprintf(adwert, "%d", dtemp);
16
    OSMboxPost(TxMbox, (void*) adwert);
17
    OSMboxPend(AckMbox, 0, &err);  
18
  }
19
}
20
21
22
void TASK2( void *pdata)
23
{
24
  char *rxmsg;
25
  char s[80];
26
  INT8U err;
27
  double tempw;
28
29
  while(1){
30
    OSTimeDlyHMSM(0,0,2,500);
31
    rxmsg = (char *)OSMboxPend(TxMbox, 0, &err);
32
    sprintf(s, "Mailbox = %s", rxmsg);
33
    LCDPrint(s);
34
    OSTimeDlyHMSM(0,0,0,500);    
35
    OSMboxPost(AckMbox, (void*) 1);  //benutze als Semaphore
36
37
    tempw=?????;
38
  }
39
}


mfg
Jo

von Klaus F. (kfalser)


Lesenswert?

Mit der Funktion sscanf(), z.B.

von 900ss (900ss)


Lesenswert?

Übergebe &dtemp (und nicht den String) an die zweite Task.

Dort machts du dann erst die Umwandlung in den String für dein LCD
und du hast den double Wert noch zum weiter verarbeiten.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.