Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Incalzire in pardoseala etapizata

Suprataxa card energie?!

Cum era nivelul de trai cam din a...

probleme cu ochelarii
 Impozite pe proprietati de anul v...

teava rezistenta panou apa calda

Acces in Curte din Drum National

Sub mobila de bucatarie si sub fr...
 Rezultat RMN

Numar circuite IPAT si prindere t...

Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor
 Discuții despre TVR Sport HD.

Cost abonament clinica privata

Tremura toata, dar nu de la ro...

Renault Android
 

Am o mica problema de transmisie a datelor de pe server Python pe client Java

- - - - -
  • Please log in to reply
2 replies to this topic

#1
ursudepadure

ursudepadure

    Junior Member

  • Grup: Members
  • Posts: 232
  • Înscris: 28.04.2012
Am postat ceva pe "Programe facute noaptea acasa" intrucat am crezut ca e simplu si de amatori dar am fost trimis aici.  De atunci am mai studiat si am modifcat mult sursa.  Ce am eu nevoie nu cred ca necesita mare efort din partea cuiva cu mai multa experienta. O chestie de cateva minute, un sfat rapid.

Am o mica problema de transmisie a datelor de pe server Python pe client Java scris in Android. Vreau sa controlez pinii digitali a unui dispozitiv raspberry pi care are preinstalat Python. Am scris un server si un client minimal in python si m-am prins in linii mari cum functioneaza, am reusit sa fac un program de "chat". Totul ca sa ma conving ca serverul scris in Python stie sa comunice cu alti clienti. Am reusit sa controlez pinii din raspberry de pe un dispozitiv Android cu un program scris in Java dar numai unidirectional.

Nu  am reusit sa fac cumva sa primesc mesaje de la server. Cu alte cuvinte nu voi putea transmite nimic de la senzori catre dispozitivul Android (tableta/telefon).

Ar fi ok sa postez aici sursele (sunt mici, reduse cat am putut de mult la partea la care nu ma pricep)?

#2
potae

potae

    Sorosist frumos si liber

  • Grup: Senior Members
  • Posts: 3,429
  • Înscris: 20.08.2013
cu HTTP2 https://www.smashing...p2-server-push/

cu HTTP 1.1 faci pe client o functie de poll care verifica din cand in cand daca s-a schimbat ceva. https://davidwalsh.n...ascript-polling

#3
ursudepadure

ursudepadure

    Junior Member

  • Grup: Members
  • Posts: 232
  • Înscris: 28.04.2012
Sunt multe solutii si eu am una la cheie, cu sursa gata scrisa pe care o pot modifca usor cu un server Flask si interfata in Browser. Eu nu folosesc insa decat TCP pentru aceasta aplicatie cu codul pentru client scris in Java Android SDK. Asta pentru ca am nevoie de o reprezentare 3D pe care m-am chinuit din greu sa o scriu cu OpenGL ES. Dar am nevoie de valori trimise de senzori ca sa reprezint acel obiect in spatiu si alte grafice, numere, etc. Eu am reusit doar sa trimit date catre un mic server minimal in Python care le poate trimite la pinii sai digitali.

Ce am reusit pana acum este in parte aici, adica un cod minimal cu ce ma intereseaza, nu cu intreg proiectul:
Am doua clase de baza: MainActivity unde sa zicem ca am un buton button1 si un EditText  (un fel de textarea in alte limbaje sau texbox).
Ca sa transmit date folosesc aceasta clasa numita SendMessage.


//CA SA PROCESEZ DATELE RETURNATA DE CATRE CE SE INTAMPLA IN BACKGROUND FOLOSESC AsynkTask
public class SendMessage  extends AsyncTask<String, Void, Void> {
    private Exception exceptie;
    @Override
    protected Void doInBackground(String...params)
    {
    try { // ANDROID SDK TE "OBLIGA" SA FOLOSESTI "exception handling"
    try {
    Socket socket = new Socket("192.168.1.92", 7800); // MA CONECTEZ FARA NICI O PROBLEMA LA SERVERUL SCRIS IN PYTHON
    PrintWriter catreServer = new PrintWriter( new OutputStreamWriter(socket.getOutputStream())); //APELEZ O METODA A CLASEI Socket CA SA TRANSMIT
    catreServer.print(params[0]); // ASTA FACE POSIBILA FOLOSIREA CLASEI CU "execute"
    catreServer.flush(); // FAC CURAT IN PrintWriter
    } catch (IOException e) {
    e.printStackTrace();
    }
    }catch (Exception e) {
    this.exceptie=e;
    return null;
    }
    return  null;
    }
}
// CA SA TRIMIT CONTINUTUL (TEXTUL) DIN TextView CU EVENIMENTUL onclick, in clasa
// MainActivity am urmatorul cod:

    buttonr.setonclickListener(new View.onclickListener() {
    @Override
    public void onclick(View v) {
    new ReceiveMessage().execute(txtView.getText().toString()); // INSTANTIEZ CLASA DE MAI SUS
    editText.getText().clear(); // FAC CURAT IN editText CARE ESTE DE TIPUL TextView
    }
    });
  // EI BINE, SE TRIMIT MESAJE, POT CONTROLA LEDURI, ETC, CU BUTOANE FRUMOS COLORATE DIN ANDROID. DAR INVERS...?
  // AR FI DE AJUNS CHIAR PENTRU O AUTOMATIZARE SIMPLA. EU AM MARE NEVOIE DE CE IMI TRANSMIT SENZORII.

  
//Ei bine, am facut o clasa "ReceiveMessage" care cred ca nu mai returneaza null. Acolo ma incurc dar o sa mai studiez pana maine problema.
//In momentul cand un alt buton este apasat se face conectarea si imediat dupa conectare, pentru testare serverul trimite un mesaj de salut.
// In principiu am creat tot o clasa ca cea de mai sus numita ReceiveMessage care are o metoda "doInBackground
protected String doInBackground(String... params) {
    try {
    try {
    Socket s = new Socket("192.168.1.92", 7800);
    while (true)
    {
    //s = ss.accept();
    isr = new InputStreamReader(s.getInputStream());
    bufferedReader = new BufferedReader(isr);
    message = bufferedReader.readLine();
MENTIONEZ CA ACESTEA SUNT DOAR INCERCARI SEPARATE DE PROIECTUL PRINCIPAL SI MINIMALIZATE LA MAXIM PENTRU A PUTEA INTREBA EXACT CE NU STIU SAU NU IMI FUNCTIONEAZA.
VA MULTUMESC!


Anunturi

Second Opinion Second Opinion

Folosind serviciul second opinion ne puteți trimite RMN-uri, CT -uri, angiografii, fișiere .pdf, documente medicale.

Astfel vă vom putea da o opinie neurochirurgicală, fără ca aceasta să poată înlocui un consult de specialitate. Răspunsurile vor fi date prin e-mail în cel mai scurt timp posibil (de obicei în mai putin de 24 de ore, dar nu mai mult de 48 de ore). Second opinion – Neurohope este un serviciu gratuit.

www.neurohope.ro

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate