Differences

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

Link to this comparison view

pm:prj2023:apredescu:barbuta.cristian [2023/05/29 02:45]
cristian.barbuta [Organizarea Codului]
pm:prj2023:apredescu:barbuta.cristian [2023/05/29 07:32] (current)
paul.nicolae [Rezultate Obţinute]
Line 114: Line 114:
 } }
 </​code>​ </​code>​
-  * In cadrul acestui cod, functia "​initializeScreenAndCamera()"​ a fost lasata intacta, in schimb ceea ce am modificat din cadrul ​"bibliotecii" ​pe care am gasit-o, a fost functia "​processFrame()"​+  ​* Se asteapta pana cand sensorul infra-rosu detecteaza ceva la 20cm distanta, camera incepe sa inregistreze,​ iar in cazul in care un frame contine fata unei persoane autorizate serverResponse va deveni 1 iar incuietoarea se va deschide pentru cateva secunde. 
 +  ​* In cadrul acestui cod, functia "​initializeScreenAndCamera()"​ a fost lasata intacta, in schimb ceea ce am modificat din aceasta  ​"biblioteca", a fost functia "​processFrame()" ​unde am impus asteptarea unui raspuns pe portul serial
  
 <code cpp> <code cpp>
Line 134: Line 135:
 </​code>​ </​code>​
  
-===== Rezultate Obţinute =====+  * Aici, fiecare frame este trimis pe portul serial unde ajunge sa fie procesat de o aplicatie in Java si ulterior trimis catre backend 
 +=== Java === 
 +  Functia adaugata de mine este urmatoarea:​ 
 +<code java> 
 +  private void sendImageToServer(BufferedImage image, File toFolder) { 
 +    try { 
 +      // Save image to PNG file 
 +      File newFile ​new File(toFolder.getAbsolutePath(),​ getNextFileName());​ 
 +      ImageIO.write(image,​ "​png",​ newFile);
  
-<note tip> +      // Read the image file as bytes 
-Care au fost rezultatele obţinute în urma realizării proiectului vostru. +      ​byte[] imageData = Files.readAllBytes(newFile.toPath());​
-</​note>​+
  
-===== Concluzii =====+      // Encode the image bytes as Base64 
 +      String base64Image ​Base64.getEncoder().encodeToString(imageData);​
  
-===== Download =====+      // Set up the URL and connection 
 +      URL url new URL("​http://​localhost:​5000/​upload"​);​ 
 +      HttpURLConnection connection ​(HttpURLConnection) url.openConnection();​ 
 +      connection.setRequestMethod("​POST"​);​ 
 +      connection.setRequestProperty("​Content-Type",​ "​application/​json"​);​ 
 +      connection.setDoOutput(true);​
  
-<note warning> +      // Create the JSON payload 
-O arhivă ​(sau mai multe dacă este cazulcu fişierele obţinute în urma realizării proiectului:​ surse, scheme, etcUn fişier READMEun ChangeLog, un script de compilare şi copiere automată pe uC crează întotdeauna o impresie bună ;-).+      ​JSONObject jsonPayload = new JSONObject()
 +      jsonPayload.put("​image"​base64Image);
  
-Fişierele se încarcă pe wiki folosind facilitatea *Add Images or other filesNamespace-ul în care se încarcă fişierele este de tipul *:​pm:​prj20??:​c?​* sau *:​pm:​prj20??:​c?:​nume_student** ​(dacă este cazul). *Exemplu:* Dumitru Alin, 331CC -> *:​pm:​prj2009:​cc:​dumitru_alin*+      // Write the JSON payload to the request body 
-</​note>​+      OutputStream outputStream = connection.getOutputStream()
 +      outputStream.write(jsonPayload.toString().getBytes());​ 
 +      ​outputStream.flush();​
  
-===== Jurnal ​=====+      // Read the response from the server 
 +      int responseCode ​connection.getResponseCode();​ 
 +      if (responseCode ​== HttpURLConnection.HTTP_OK) { 
 +        System.out.println("​Server response: OK"​);​ 
 +        serialReader.sendResponse(1);​ 
 +      } else { 
 +        System.out.println("​Unexpected server response code: " + responseCode);​ 
 +        serialReader.sendResponse(0);​ 
 +      } 
 + 
 +      // Close the connection 
 +      connection.disconnect();​ 
 + 
 +      saveCountLabel.setText("​ (" + (++saveCounter) + "​)"​);​ 
 +    } catch (IOException e) { 
 +      System.out.println("​Sending file failed: " + e.getMessage());​ 
 +    } 
 +  } 
 +</​code>​ 
 +  
 +  * Aici are log un request http in urma caruia se transmite inapoi la placuta raspunsul serverului  
 + 
 +=== Flask - Flutter ​=== 
 +    
 +Am facut o aplicatie full-stack minimalista care are urmatoarele functionalitati in cadrul proiectului 
 +  * listarea persoanelor autorizate  
 +  * adaugarea de persoane autorizate: Nume - Selfie 
 +  * stergerea de persoane autorizate 
 +  * recunoasterea persoanelor autorizate ​  
 + 
 + 
 + 
 +===== Rezultate Obţinute ===== 
 + 
 +In urma proiectului,​ am obtinut o usa inteligenta care permite intrarea persoanelor autorizate si o aplicatie mobila pentru gestionarea usii. 
 + 
 +{{ pm:​prj2023:​apredescu:​app_3.jpeg?​700 |}} 
 +{{ pm:​prj2023:​apredescu:​app_2.jpeg?​300 |}} 
 +{{ pm:​prj2023:​apredescu:​app_1.jpeg?​300 |}} 
 +{{ pm:​prj2023:​apredescu:​app_4.jpeg?​300 |}} 
 +  * videoclip cu functionalitatea  
 +  * <​a>​https://​drive.google.com/​file/​d/​1ctDuG0gpRxGoAZwBggntORs-Z0veVhDa/​view?​usp=sharing</​a>​ 
 + 
 +===== Concluzii ===== 
 +A fost un proiect interesant in care am intampinat foarte multe probleme din care am putut invata. Totodata, pe langa cunostintele practice obtinute, am dobandit si o intelegere teoretica asupra diferitelor concepte utilizate. 
 +===== Download ===== 
 +{{ pm:​prj2023:​apredescu:​barbuta_app_final.zip |}} 
 +{{ pm:​prj2023:​apredescu:​barbuta_arduino.zip |}} 
 +{{ pm:​prj2023:​apredescu:​barbuta_java_final.zip |}}
  
-<note tip> 
-Puteți avea și o secțiune de jurnal în care să poată urmări asistentul de proiect progresul proiectului. 
-</​note>​ 
  
 ===== Bibliografie/​Resurse ===== ===== Bibliografie/​Resurse =====
pm/prj2023/apredescu/barbuta.cristian.1685317520.txt.gz · Last modified: 2023/05/29 02:45 by cristian.barbuta
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