rlodina Postat Septembrie 1, 2014 Partajează Postat Septembrie 1, 2014 Salut. Nu pot decat sa-ti admir determinarea - felicitari. O posibila rezolvare (un pic simplista) ar fi sa implementezi (la comunicarea PC -> Arduino) o conventie de genul: <CMD>[param1 [param2] .. [paramN]] - <CMD> - este un char si reprezinta comanda - param- sunt parametrii (optionali) si fiecare comanda este direct raspunzatoare de tratarea lor (Atentie ! - la citirea lor completa din buffer-ul serial) Ex: Comanda PWM de sclipire ochi are sintaza O (char) urmat de un byte ce reprezinta PWM-ul nostru. PC->Arduino: SendCmd(String.Format("O{0}", (byte) trackbarSclipireOchi.Value)); Arduino: if (cmd == 'O'){ byte pwm = Serial.read(); //aici citim parametrul comenzii 'O' AnalogWrite(PIN_OCHI, pwm);} PS: cod de mai sus este netestat - dar in principiu cred ca ai prins ideea. Succes Link spre comentariu
nimeni_altci Postat Septembrie 2, 2014 Autor Partajează Postat Septembrie 2, 2014 Buna dimineata, Dupa cateva ore de incercari noaptea trecuta am reusit sa il fac sa mearga. Am incercat codul de mai sus, dar problema e ca Visual Studio trimite serial, deci cifra cu cifra, si in loc de 100 imi trimitea: 1 0 0 Asa ca a trebuit sa il citesc de 3 ori. Nu stiu de ce nu puteam sa memorez in byte, pentru ca daca memoram Serial.read() in byte, imi afisa 49 indifferent de valoare. Am facut urmatoarea modificare si merge perfect: if(Serial.read()=='O') { arc[0]=Serial.read(); arc[1]=Serial.read(); arc[2]=Serial.read(); Serial.print(arc); Serial.println(); // partea de memorare in intreg: cifra[0]=arc[0]-'0'; cifra[1]=arc[1]-'0'; cifra[2]=arc[2]-'0'; val=100*cifra[0]+10*cifra[1]+cifra[2]; Serial.println(val); Multumesc inca odata pentru ajutor! Link spre comentariu
rlodina Postat Septembrie 2, 2014 Partajează Postat Septembrie 2, 2014 Este greseala mea: In loc de: SendCmd(String.Format("O{0}", (byte) trackbarSclipireOchi.Value)); cred ca trebuia: Port.Write('O'); //comanda Port.Write((byte) trackbarSclipireOchi.Value)); // parametru Link spre comentariu
nimeni_altci Postat Septembrie 2, 2014 Autor Partajează Postat Septembrie 2, 2014 Primesc o eroare de la Visual Studio, cum ca nu pot pune ceva de tip byte in campul stringului.( Port.Write((byte) trackbarSclipireOchi.Value)); ). Merge binisor cum l.am facut eu, adica sa astepte pe rand caracterele, sa le memoreze in char si apoi sa le converteasca la int. Dar mai are si scapari. Trackbarul meu trimite numere de la 100 la 255, dar se mai intampla cate odata sa receptionez numere ca de exemplu -439 sau -5439. Nu exista vreo posibilitate ca Visual Studio sa trimita numere dintr.o bucata?Adica nu cifra cu cifra. Multumesc! Link spre comentariu
nimeni_altci Postat Septembrie 2, 2014 Autor Partajează Postat Septembrie 2, 2014 Am reusit. Am introdus cate un delay intre citirile seriale si acum e totul ok. Link spre comentariu
costi002 Postat Septembrie 3, 2014 Partajează Postat Septembrie 3, 2014 Salut, Am incercat si eu sa rulez primul program, dar am o eroare, atat in simulare cat si in rulare . Erorile sunt cele de mai jos De precizat: - folosesc 2 comuri virtuale conectate soft(com 12 si 13), in celalalt com este pus hiperterminalul - caracterul apare in hiperterminal dar apare eroare -daca in rulare dau ignore, se pot retrimite si alte comenzi, dar cu eroarea aferenta -am testat si un alt program care trebuie sa faca un lucru similar si rezultatul este acelasi. Nu imi dau seama de unde ar veni eroarea si cum as putea sa o corectez. Sistemul de operare este win7 64 bit Link spre comentariu
nimeni_altci Postat Septembrie 3, 2014 Autor Partajează Postat Septembrie 3, 2014 Clasa Keyboard se afla in namespace-ul "System.Windows.Input" din PresentationCore (http://msdn.microsoft.com/en-us/library/system.windows.input.keyboard.iskeydown(v=vs.110).aspx). Deci trebuie adaugata referinta la PresentationCore si un "using System.Windows.Input;" la inceputul fisierului. A fost facuta (clasa Keyboard) mai mult pentru WPF (care e recomandat, WinForms fiind deprecated) dar ar trebui sa mearga. Din pacate tot nu merge. Primesc eroarea : Error 2 The name 'Keyboard' does not exist in the current context Mentionez ca am adaugat la inceputul documentului using System.Windows.Input; 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