Differences

This shows you the differences between two versions of the page.

Link to this comparison view

sde:laboratoare:13_embedded [2020/05/12 14:27]
ioana_maria.culic created
— (current)
Line 1: Line 1:
-====== Laborator 13 - Aplicații embedded ====== 
  
-===== Prezentare teoretică ===== 
-În acest laborator vom folosi Python pentru a controla o placă de dezvoltare embedded. Laboratorul va fi rezolvat utilizând simulatorul [[https://​micropython.org/​unicorn/​|MicroPython unicorn]]. 
- 
-===== MicroPython ===== 
-Node.js este un mediu de programare JavaScript care este caracterizat prin suportul pentru operații asincrone. 
- 
-Pentru a instala node.js, accesați următorul link: https://​nodejs.org/​en/​. 
- 
-=====Funcții asincrone===== 
- 
-În node.js, o funcție asincronă are următorul format: 
-<code javascript>​ 
-function foo ([p1, p2, ..., ]callbackFunction){ 
-    <​code>​ 
-    callbackFunction ([param1, param2,​...]);​ 
-} 
-</​code>​ 
- 
-Practic, funcția asincronă primește ca parametru o altă funcție, pe care o apelează odată ce termină procesarea. 
- 
-Apelul unei funcții asincrone arată astfel: 
-<code javascript>​ 
-foo ([p1, p2, ...,] function ([param1, param2,​...]){ 
-    <​code>​ 
-}); 
-</​code>​ 
- 
-Același cod poate fi scris și astfel: 
-<code javascript>​ 
-foo ([p1, p2, ...,] ([param1, param2,​...])=>​{ 
-    <​code>​ 
-}); 
-</​code>​ 
- 
-Apelul unei funcții asincrone va întoarce imediat, iar programul va continua să execute alte apeluri de funcție. Între timp, sistemul de operare va procesa cererile funcțiilor anterioare. Când procesarea unei funcții este gata, funcția de callback va fi apelată și se va executa rutina asociată acesteia. 
- 
-===fs=== 
-[[https://​nodejs.org/​api/​fs.html|fs]] este modulul Node.js care suportă operații cu fișiere. Cele mai importate funcții expuse de acesta sunt: 
-  * [[https://​nodejs.org/​api/​fs.html#​fs_fs_readfile_path_options_callback|fs.readFile]];​ 
-  * [[https://​nodejs.org/​api/​fs.html#​fs_fs_writefile_file_data_options_callback|fs.writeFile]];​ 
-  * [[https://​nodejs.org/​api/​fs.html#​fs_fs_readdir_path_options_callback|fs.readDir]]. 
- 
-Programul de mai jos folosește funcții asincrone pentru a scrie un fișier, după care citește conținutul acestuia: 
-<code javascript>​ 
-const fs = require ('​fs'​);​ 
-fs.writeFile ('​myFile',​ 'my message',​ function (err){ 
-  console.log ('​Processing done'​);​ 
-  if (err){ 
-    console.log ('​There was an error writing the file'​);​ 
-  } 
-  else{ 
-    fs.readFile ('​myFile',​ function (err, data){ 
-      if (err){ 
-        console.log ('​There was an error reading the file'​);​ 
-      } 
-      else{ 
-        console.log (data.toString());​ 
-      } 
-    }); 
-  } 
-}); 
-</​code>​ 
- 
-===child_process=== 
-[[https://​nodejs.org/​api/​child_process.html|child_process]] e modulul care permite crearea de procese copil și interacțiunea cu acestea. 
- 
-Modulul expune următoarele funcții importante: 
-  * [[https://​nodejs.org/​api/​child_process.html#​child_process_child_process_execfile_file_args_options_callback|execFile]] 
-  * [[https://​nodejs.org/​api/​child_process.html#​child_process_child_process_spawn_command_args_options|spawn]] 
- 
-Diferența dintre cele două funcții este că ''​execFile''​ primește un callback ca parametru care va fi apelat odată de procesul copil își finalizează execuția, în timp de ''​spawn''​ întoarce o structură care prerezintă procesul copil, care înregistrează evenimente. 
- 
-Următorul program lansează câte un proces folosind ambele funcții: 
-<code javascript>​ 
-const child_process = require ('​child_process'​);​ 
-child_process.execFile ('​ls',​ function (err, stdout, stderr){ 
-  if (err) console.log ('​Execution had an error'​);​ 
-  console.log ('​output messages'​+stdout);​ 
-  console.log ('​error messages'​+stderr) 
-}); 
- 
-const proc = child_process.spawn ('​ls'​);​ 
-proc.stdout.on ('​data',​ function (data){ 
-  console.log ('​Spawn process output: '​+data.toString());​ 
-}); 
- 
-proc.on ('​exit',​ function (){ 
-  console.log ('​Spawn process closed.'​);​ 
-}); 
-</​code>​ 
- 
-====== Exerciţii de laborator ====== 
- 
-<note warning> 
-În rezolvarea acestor exerciții veți folosi doar funcții asincrone. 
-</​note>​ 
- 
-===== Exercițiul 1 - Citire fișiere ===== 
-Creați un program care folosește modulul ''​fs''​ pentru a afișa conținutul a două fișiere text. Puteți alege oricare două fișiere text de pe sistem. 
- 
-Rulați programul de mai multe ori și observați oridinea în care acestea sunt afișate. 
- 
-===== Exercițiul 2 - Citire director ===== 
- 
-Creați un program care afișează conținutul directorului părinte. 
- 
-===== Exercițiul 3 - Creare fișiere ===== 
- 
-Creați un program care crează două fișiere, după care afișează conținutul acestora și conținutul directorului curent, unde trebuie să se observe fișierele generate. 
- 
-===== Exercițiul 4 - pwd ===== 
- 
-Creați un program care rulează comanda ''​pwd''​ și apoi comanda ''​ls ..''​. 
-Rezolvați cerința în două feluri. 
- 
-===== Exercițiul 5 - Input ===== 
- 
-Creați fișierul ''​script.sh''​ cu conținutul următor: 
-<code bash> 
-read text 
-echo $text 
-</​code>​ 
- 
-Creați un program care rulează scriptul de mai sus. Programul trebuie să îi transmită o linie de text scriptului. (Hint: subprocess.stdin). 
- 
-===== Exercițiul 6 - File input ===== 
-Creați pe sistem un fișier care conține o linie de text. Modificați programul de mai sus astfel încât linia de text să fie cea citită din fișier. ​ 
- 
-===== Exercițiul 7 - Read error ===== 
-Creați un program care încearcă citirea unui fișier inexistent. Afișați eroarea primită și extrageți codul acesteia. 
- 
-===== Exercițiul 8 - Execution error ===== 
-Anulați dreptul de execuție al scriptului creat la exercițiul 5, după care încercați rularea acestuia. Afișați eroarea primită și extrageți codul acesteia. 
sde/laboratoare/13_embedded.1589282830.txt.gz · Last modified: 2020/05/12 14:27 by ioana_maria.culic
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0