Sari la conținut
ELFORUM - Forumul electronistilor

Transmisie Seriala dsPIC


Postări Recomandate

Salut,

Am si eu o problema in transmiterea seriala a unui vector de char, din dsPIC, intr.o aplicatie Visual Studio. Intentionez sa trimit un pachet de 1600 elemente de cate 8 biti(adica char), din dsPIC in aplicatie Visual C#, dar intampin o problema. Cand trimit aceste elemente si le citesc in VS cu comanda SerialPort.ReadLine(); , imi vede numarul trimit ca si character. De exemplu daca din PIC dau U1TXREG=123, in Visual studio in loc sa imi vada numarul "123", imi vede "}", adica acolada. Cum pot face ca aplicatia sa imi vada numarul, nu simbolul. As putea sa las programul asa si in urma primirii sa convertesc simbolul in numar, dar nu orice simbol este recunoscut de aplicatie, De exemplu din cele 1600 elemente trimise, doar vreo 300 le converteste la numar, pentru ca (presupun), pe restul nu le recunoaste. Are cineva o solutie pentru problema mea?

Multumesc anticipat.

Link spre comentariu
  • Răspunsuri 5
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

Eu am folosit de multe ori transmisia seriala de la PIC-uri fara probleme. Cand citesc un octet primesc codul ASCII al unui caracter. Transform codul in numar cu instructiunea (in VB6)  "numar = Asc(MSComm1.Input)" adica numarul ce reprezinta codul ASCII al caracterului receptionat. Nu mai stiu pe de rost instructiunea in VC#, dar se poate afla.

Link spre comentariu

Multumesc pentru raspunsuri. In final am reusit sa fac conversia, care merge pentru toate, mai putin pentru 10(in cod ASCII), care este de fapt 'n'. Cum aplicatia C# e facuta sa treaca pe linia urmatoare, practic, odata cu citirea lui '/n', trece la citirea urmatoare, fara a memora 'n' in vector. Pentru rezolvarea acestei probleme m.am gandit sa verific din PIC daca numarul trimis e 10, si daca este sa trimit pe rand 1 si 0. Credeti ca e ok?

Link spre comentariu

Cel mai bine, cum descrii este sa le trimiti ASCII.

 

Adica in loc de 0 trimiti 48

in loc de 1 ...49

si tot asa

+30h

In controller faci IntToAsc() si trimiti cifrele pe rand.

 

char numar[20];

IntToAsc();// aici nu mai stiu cum a fost sintaxa -> sa pui rezultatul in numar[]

for(n; ; ) U1TXREG=numar[n]......+send......

Editat de Mondan
Link spre comentariu

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 cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări