Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  7 1097
Hei.
Usikker på tittel, men prøver.
Jeg sender verdi via bluetooth fra fra telefonen's kompass.

Kode

C0.53999996;3.1799998;-46.079998 D52 C0.48;3.1799998;-46.14 D51
Denne koden skal sendes til en ardino, men jeg ønsker bare å hente ut det tallet som kommer etter "D" da det er det som er relevant for meg.
Altså, hvilke funksjon kan jeg bruke i arduino koden slik at jeg filtrerer vekk det andre og bare står igjen med f.eks D51?

Ble litt rotete dette, men håper noen skjønner hva jeg mener.
Sist endret av redkite; 7. mai 2013 kl. 14:10.
Nå har jeg ikke peiling på arduino, men jeg har litt peiling på C/C++ som jeg antar brukes til å programmere Arduino.

Funksjonen strstr() søker gjennom en streng. Da kan du altså:

1. Finn "D" i strengen din
2. Finn " " i strengen som starter der du fant D.
3. Nå har du nok info til å kun hente ut f.eks. "D52"
Jeg antar at du må deale med dette i binær form, sant? I så fall kan du bare ta en AND operasjon med den verdien du får. Hvis du f.eks. får en byte med data, men du er kun interessert i den nest siste biten kan du ANDe med 00000010. Dette vil kun gi deg den verdien som ligger på den nest siste plassen.
if (lastRecievedChar == 'D')
{
ta vare på de to(?) neste verdiene
}
Skrev et enkelt eksempel på hvordan du kan gjøre det i C, ved kun bruk av de mest grunnleggende funksjonalitetene som stammer fra stdio.h, stdlib.h og string.h.

Kode

int i;
char recvByte;
char *recvData = malloc (sizeof (char) * 512);

memset (recvData, '\0', 512);

recvData = "C0.53999996;3.1799998;-46.079998 D52 C0.48;3.1799998;-46.14 D51";

for (; *recvData != '\0'; recvData++)
{
    if ( *recvData == 'D' )
    {
        printf ( "D%c%c\n", *(recvData + 1), *(recvData + 2));
    }
}
Sist endret av 0xFF; 12. mai 2013 kl. 00:45.
jeg ville gjort minst mulig på arduinoen, kan ikke dette fikses i java på telefonen før du sender dataene?
Post koden din sålangt, så er det lettere å hjelpe..
Trådstarter
Jeg bruker Amarino. Jeg er ikke kommet så langt at jeg har skrevet noe kode enda.

Men ser nå når jeg prøver å sende verdiene til pc'en så kommer det litt renere tall opp(A21 A22 A35 osv)
Så da blir det hele litt lettere. Så takk for svar og beklager for at jeg ikke har lagt merke til dette før nå