rlodina Postat Iulie 19, 2014 Partajează Postat Iulie 19, 2014 @nimeni_altci: cu placere. Pe scurt: 1. Limbajul C# este simplu de invatat (1-2 saptamani) mai ales ca o paralela cu C++. Caut o carte si ti-o trimit (din pacate nu pot decat saptama viitoare). Te descurci cu engleza ? 2. Sa te familiarizezi un pic cu IDE-ul Visual studio : 2-3 ore 4. Batalia se da cu invatarea claselor din bibliotecile .NET framework (exemplele de mai sus se compileaza fara probleme si in 2.0) - aici depinde de tine : poate dura si o luna asimilarea completa - dar dupa 20 min de studiu lucruri normale simple le faci fara probleme - sunt sigur. Si aici caut o carte care sa nu te abureasca prea mult; punct ochit punct tintit. Am folosit Windows.Forms (implementat in .NET in cateva DLL-uri) si contin sute de clase folosite (in special) pentru implementarea unei interfete grafice (ferestre, diverse controale, etc) - un pic depasita (eu nu am mai scris cod in ea de ani (multi) ) - asta nu inseamna ca nu este ok pt. scopul nostru. Cred totusi ca inainte de a te apuca de invatat toate astea ar trebui sa-mi descrii mai generic ce vrei defapt sa faci - pentru ca nu cred ca acesta solutie tehnica este cea mai potrivita, si, eventual pot sa-ti dau o solutie mai adaptata vremurilor. Azi au greutate termenii: mobile (esti/rulezi pe mobile: existi) si cross platform (cum sa fac sa muncesc cat mai putin si aplicatia mea sa mearga pe cat mai multe platforme: ex: Windows, Android, iOS, Linux). Link spre comentariu
nimeni_altci Postat Iulie 19, 2014 Autor Partajează Postat Iulie 19, 2014 (editat) Ceea ce vreau eu de fapt e sa imi fac propria aplicatie cu care sa controlez un robot(adica cu care sa comunic cu arduino) si in care sa primesc informatii de la senzori, si sa afiseze datele frumos, poate chiar sa faca si cateva grafice pe baza datelor. Dar din cate am auzit Visual Studio e un program destul de folosit si poate nu ar strica sa invat sa folosesc si C#, mai ales ca mi se pare interesant sa fac astfel de lucruri, cu atat mai mult dupa ce am vazut exemplele de la tine. Stau bine cu engleza, deci pot sa invat si dintr-o carte in engleza. Multumesc inca odata pentru timpul acordat. Editat Iulie 19, 2014 de nimeni_altci Link spre comentariu
nimeni_altci Postat Iulie 21, 2014 Autor Partajează Postat Iulie 21, 2014 Mai am o intrebare. Pana la urma de ce este mai ok Visual C# decat Visual C++. Nu as putea folosii C++ impreuna cu librariile .net? Link spre comentariu
rlodina Postat Iulie 22, 2014 Partajează Postat Iulie 22, 2014 (editat) Cel mai ok este sa folosesti ceea ce stii. Se poate folosi si C++ : C++ CLI mai exact (o extensie adusa de Microsoft la C++ care compileaza in acel byte code pt. .NET ). Daca ai instalat full VisualStudio vezi la proiecte (New ...) C++ CLI Problema cu aceste extensii (la limbaj) este ca mai inveti un set de n conventii/extensii - cu zero portabilitate. Ex: void Main(array<String^>^ args) unde caracterul ^ (carat) este un fel de pointer (managet pointer mai exact) echiv lui *. Eu am refuzat sa le invat, plus ca cu C# a fost dragoste la prina vedere - este un limbaj usor de invatat, relativ simplu insa f. expresiv (cu siguranta este cel mai utilizat limbaj pe platforma .NET). PS: Trimite-mi te rog (pe PM) o adresa de email (pt. doc de C#). Un comentariu legat si de solutia software pt. control si monitorizare Arduino: aplicatia ar trebui sa o dezvolti HTML + JavaScript Avantaje: ruleaza pe orice platforma (calc, tableta, tel), in browser sau nu (vezi: apache.cordova), remote (internet ?) simplu de implementat, Dezavantaje: Dezvoltarea unei aplicatii cu JavaScript este un pic greu decat in c#. Nu te lasa influentat de ideea ca JavaScript este un limbaj de scripting banal cu care ... , etc. JavaScript este un limbaj de puternic, flexibil cu cateva concepte extrem de interesante care-ti dau o buna productivitate si impreuna cu HTML poti fi extrem de expresiv .... Conectarea la Arduino poti sa o faci cu un Ethernet Shield (cred ca costa ~50 lei + are si SD Card) - pe care-l conectezi direct in ruter. Aplicatia JavaScript se conecteaza direct la Arduino (prin reteaua locala) unde implementezi un server simplu (gen REST sau websocket - sunt cateva implementari pe github super). In fine este doar o idee .... Apropo - toate ideile mele au un termen de expirare (unele sunt de-a dreptul perisabile). Editat Iulie 22, 2014 de rlodina 2 Link spre comentariu
Guevara Postat August 4, 2014 Partajează Postat August 4, 2014 Iti recomand cu incredere softul Processing. Gasesti documenatie garla pentru el, iar daca accesezi linkul din semnatura mea vei gasi si cateva exemple facute de mine. Succes. 1 Link spre comentariu
rlodina Postat August 26, 2014 Partajează Postat August 26, 2014 Buna ziua,Va deranjez in legatura cu programul Visual Studio. Pana acum am fost ocupat cu realizarea fizica a robotului, iar dupa ce am terminat aceasta etapa am revenit la dezvoltarea aplicatiei PC. Vreau sa va intreb cum as putea sa fac comenzile seriale sa se activeze la apasarea unei taste. Adica sa il controlez din sageti, nu dand click pe acele butoane. Am tot cautat pe internet inainte sa intreb dar tot ce gaseam e ca se face cu OnkeyPress event si nu gaseam cum se implementeaza. Daca ma puteti ajuta cu un sfat as fi recunoscator.Cu respect,Vlad Servus Vlad. Cel mai simplu mod este sa interceptezi toate tastele la nivelul cel mai superior - in controlul forma: 1. Setezi proprietatea KeyPreview = True la forma (click dreapta pe forma intr-o zona libera -> Properties ... si in fereastra de proprietati (apare in dreapta) cauti proprietatea KeyPreview) 2. Adaugi un nou handler de tratare a evenimentelor de la tastatura: 3. Codul functiei KeyDown poate sa arate asa: //proprietatea KeyPreview a acestei forme am pus-o pe Trueprivate void Form1_KeyDown(object sender, KeyEventArgs e) { if (btnConnect.Enabled) return; //not connected switch (e.KeyCode) { case Keys.Up: SendCmd("U"); break; case Keys.Down: SendCmd("D"); break; case Keys.Left: SendCmd("L"); break; case Keys.Right: SendCmd("R"); break; default: break; }} Am adaugat o mica functie SendCmd: private void SendCmd(string cmd) { port.Write(cmd);} In cazul in care vrei sa tratezi si modificatorii (Alt, Shift sau Ctrl) te poti folosi de e.Modifiers: if (e.KeyCode == Keys.S && (e.Modifiers & Keys.Control) == Keys.Control) { // Ctrl+S} Succes Radu 1 Link spre comentariu
nimeni_altci Postat August 30, 2014 Autor Partajează Postat August 30, 2014 As dori sa intreb daca Visual Studio poate recunoase apasarea mai multor taste. Am incercat inlocuirea lui : case Keys.Up: SendCmd("U"); break; cu: case (Keys.Up & Keys.Down): port.Write("U"); break; M.am gandit ca ar trebui sa mearga in fata la apasarea simultana a sagetilor Up si Down, dar nu face asta. Nu inteleg de ce. Multumesc! Link spre comentariu
Liviu M Postat August 31, 2014 Partajează Postat August 31, 2014 In c && c++ un singur & inseamna "fa operatia si (and)". Daca vrei sa testezi doua variabile intr-un if/while/switch, folosesti &&. Link spre comentariu
godFather89 Postat August 31, 2014 Partajează Postat August 31, 2014 As dori sa intreb daca Visual Studio poate recunoase apasarea mai multor taste. Am incercat inlocuirea lui : case Keys.Up: SendCmd("U"); break; cu: case (Keys.Up & Keys.Down): port.Write("U"); break; M.am gandit ca ar trebui sa mearga in fata la apasarea simultana a sagetilor Up si Down, dar nu face asta. Nu inteleg de ce. Multumesc! Keys.Up si Keys.Down sunt doua valori dintr-un enum. Practic, doua numere. Operatorul "&" intre numere este o operatie de si aritmetic (nu logic). In al 2 lea rand, evenimentul este apelat in momentul in care se apasa o tasta. Argumentul evenimentului contine tasta apasata. Nu va veni niciodata cu 2 taste apasate chiar daca tu crezi ca le apesi simultan. In al 3 lea rand invata sa folosesti debugger-ul. Pune breakpoint-uri, watch-uri, etc. Ar trebui sa mearga asa (in afara switch-ului): if (Keyboard.IsKeyDown(Keys.Up) && Keyboard.IsKeyDown(Keys.Down)){ //up si down sunt apasate} Link spre comentariu
nimeni_altci Postat August 31, 2014 Autor Partajează Postat August 31, 2014 (editat) Multumesc pentru raspuns. As mai avea o intrebare. Cum pot sa fac dintr.un vector de cifre un numar intreg? De exemplu daca am int v[3] cu v[0]=1; v[1]=2; v[2]=3; si vreau sa fac numarul int a; a=123; @godFather89 am incercat linia de cod propusa de tine dar primesc urmatoarea eroare: "Error 1 The name 'Keyboard' does not exist in the current context" Editat August 31, 2014 de nimeni_altci Link spre comentariu
Liviu M Postat August 31, 2014 Partajează Postat August 31, 2014 De exemplu daca am int v[3] cu v[0]=1; v[1]=2; v[2]=3; si vreau sa fac numarul int a; a=123;Habar n-am daca ai vreo functie in vreo biblioteca care sa fie mai buna/eleganta, dar merge sigur cu a=v[0]*100 + v[1]*10 + v[2] Link spre comentariu
godFather89 Postat August 31, 2014 Partajează Postat August 31, 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. Link spre comentariu
nimeni_altci Postat Septembrie 1, 2014 Autor Partajează Postat Septembrie 1, 2014 Am inteles. Probabil va trebui sa instalez Visual Studio 2012 sau 2013 pentru a avea support Net framework 4.5. Liviu M multumsesc de raspuns, nu stiu cum de nu mi-a dat prin cap solutia ta. Link spre comentariu
rlodina Postat Septembrie 1, 2014 Partajează Postat Septembrie 1, 2014 (editat) Nu trebuie sa instalezi o alta versiune de Visual Studio - este suficient sa-ti instalezi versiune de .NET framework de care ai nevoie. - pe un sistem pot fi instalate simultan mai multe versiuni de .NET framework - pt. a modificata versiunea de framework intr-un proiect (cel putin teoretic): - click dreapta pe proiect -> Properties - modifici Target framework la valoarea dorita (ai aici intr-un combo toate vers. de .NET instalate pe sistem). Succes Editat Septembrie 1, 2014 de rlodina Link spre comentariu
nimeni_altci Postat Septembrie 1, 2014 Autor Partajează Postat Septembrie 1, 2014 (editat) Multumesc de raspuns. Azi m-am framantat cu o alta problema. Vreau sa transmit un numar din Aplicatia mea in Robot. Si nu stiu cum mai exact sa fac asta. Numarul acela va reprezenta marimea PWM-ului. Asadar am facut un trackbar in Visual Studio si trimit un felul urmator: port.Write(trackbar.Value+" "). Dar in loc sa trimita valoarea trackbarului trimite numere care nu stiu ce legatura au. Si ce nu mai reusesc e sa diferentiez numarul trimis de aplicatie de celelalte comenzi( pentru ca Arduino sa stie ca doar acel numar sa il atribuie functiei de PWM. Adica sa nu atribuie si celelalte comenzi. Ar fi aiurea ceva de genul: analogWrite(pin, value)='U', care e comanda pentru mers in fata. Pentru asta m.am gandit la ceva de genul: If(Serial.read()>100) { "secventa de atribuire PWM" } Dar nu pot miza pe faptul ca toate celelalte litere in cod ascii sunt mai mici ca 100. Este posibil sa mai fac un PWM si pentru ledurile de pe el si atunci nu va stii care valoare carui PWM sa o atribuie. Multumesc. Editat Septembrie 1, 2014 de nimeni_altci 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