moro Postat Septembrie 7, 2014 Partajează Postat Septembrie 7, 2014 Va salut, vreau sa imi fac o telecomanda pentru o jucarie, folosind un pic18f pe post de emitator si un stm32f4 pe post de "jucarie". Legatura intre cele doua am zis ca le fac prin module wireless care lucreaza pe serial cu microcontrolerul. Partea proasta este ca n-am lucrat cu serial niciodata... Aici vin cu o intrebare... cum este mai bine sa trimit datele? In format "charstring" sau hex? Am incercat cu strings Dau un exemplu de 4 canale pentru telecomanda, prin care trimit valori de la 00 la 99, fiecare canal este format din id si valoare id1 - xx, id2 -xx, id3-xx, id4-xx. Toate astea imi vin pe serial intr-un buffer char char buffer[21]="id166id233id322id488" char *c1 = strstr(bfr, "id1"); // cauta id1 in buffer-ul meu si il aloca in c1 int pos1=c1-bfr; // determina pozitia lui id1 in buffer, in cazul de fata il gaseste pe id1 la pozitia 0 Stiind astfel pozitia lui id1 care este 0 (pos1==0) , atunci pot deduce ca buffer[pos1+3] si buffer[pos1+4] sunt caracterele care contin valoarea ce o vreau de pe id1, respectiv 66 In cazul de fata m-am blocat la faza cu asignarea separata pentru buffer[3] si buffer[4], pe care vreau sa-i iau separat ca si char, apoi sa-i concatenez. Adica ceva de genul char aa=buffer[3] char bb=buffer[4] char zz =strcat(aa, bb); // il adaug pe bb la sfarsitul lui aa, apoi le bag in zz Link spre comentariu
tes2000 Postat Septembrie 7, 2014 Partajează Postat Septembrie 7, 2014 De ce te complici degeaba cu string? De ce nu trimiti direct binar?De ce mai ai nevoie de id daca informatia e redundanta?(pozita e tot acolo?) "id66332288" e mult mai scurt dar nici asta nu e cea mai buna solutie deoarece trebuie convertit din string in binar si trebuie trimis 10 biti.Daca trimit direct binar de ex F066332288 direct in binar (5 biti) F0 reprezinta header, (eventual inca una pt crc ca sa sti ca datele sunt corecte),asa nu trebuie convertit nimic.Cauti F0 si bagi direct in variabaila unsigned char id1=buffer[pos+1];Iar daca lungimea variaza si variabilele sunt doar 0-99 (sub 127) atunci se poate folosi msb pt. a da id-ul dorit urmat de variabala. Link spre comentariu
Postări Recomandate
Creează un cont sau autentifică-te pentru a adăuga comentariu
Trebuie să fi un membru pentru a putea lăsa un comentariu.
Creează un cont
Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!
Înregistrează un nou contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum