Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Community > Tech
 
Java o c++?
Clicca QUI per vedere il messaggio nel forum
JaM
Un mio amico mi ha chiesto di fargli un softwerino per poter ricevere dati da un aggeggio elettronico (un tester di qualche tipo) collegato alla porta seriale del pc e visualizzare dei grafici con i dati in ingresso.

Considerando che:
-devo comunicare con la seriale
-devo fare un'interfaccia grafica abbastanza easy per gestire la connessione e disegnare i grafici
-ho basi sia di java che di c++ (ma non ho mai approfondito le mie conoscenze di programmazione)
-per quanto riguarda il formato dei dati in arrivo mi dara' lui le specifiche dell'aggeggio (realizzato da un suo amico elettronico)

cosa mi consigliate di usare?

e soprattutto: mi sapreste consigliare qualche tutorial per creare una gui abbastanza in fretta? (non dev'essere nulla di troppo complicato: qualche pulsante per avviare ed eventualmente impostare l'acquisizione dei dati e uno spazio per visualizzare i grafici)

denghiu

fabpicca
Secondo me con Java, essendoci una VM di mezzo, non ci tiri fuori un granchè. Tra l'altro per l'aggeggio devi scrivere un driver, e questo non lo puoi fare in java. Secondo me C++ rimane la scelta migliore...

tra l'altro una volta fatto il driver e una volta che lo fai comunicare con l'esterno in qualche modo, puoi metterci un frontend (fatto magari con windows form in c#) che visualizzi tutto il resto...

Renaulto
Per Java potresti provare:

http://www.rxtx.org

yeah

-devo comunicare con la seriale

Su Windows, Linux o entrambi?

Per l'acquisizione dei dati io opterei per il C, almeno sotto Windows non sembra molto complesso lavorarci, ma non posso parlare per esperienza perchè non ho mai provato.

Per la GUI dai una occhiata qui, sembrano ben fatti

JaM
grazie dei conigli :D

@fab: si, infatti anche io pensavo principalmente di non usare java, per via della vm che ci sta in mezzo (magari pero' qualcuno aveva qualche buon motivo per consigliarmi java :asd: )

@yeah: dovrebbe lavorare sotto windows (quindi, in c, potrei usare la libreria window.h, che in teoria dovrebbe fare al caso mio, devo solo trovare qualche esempio o documentazione a riguardo...)
(se hai un link simile per il c sarebbe perfetto :P )

uhm... devo guardarmi qualcosa di c#, che per ora non conosco...

yeah
Io terrei java per l'interfaccia grafica, è l'occasione per provare JNI (Java Native Interface). In questo modo puoi scrivere l'interfaccia in Java e la funzione che legge i valori dal dispositivo in C.

Qui sembra relativamente semplice :) Hai il vantaggio che la funzione che legge i valori è completamente indipendente dalla parte java.

A te la scelta naturalmente :)

Per quanto riguarda l'uso della porta seriale, crei un handle con CreateFile(), poi trovi come impostare i vari parametri qui. Sotto "Using Comm..." -> "Configuring ..." c'è un esempio di apertura e configurazione della COM2.

fabpicca
Originally posted by yeah
Io terrei java per l'interfaccia grafica, è l'occasione per provare JNI (Java Native Interface). In questo modo puoi scrivere l'interfaccia in Java e la funzione che legge i valori dal dispositivo in C.

Qui sembra relativamente semplice :) Hai il vantaggio che la funzione che legge i valori è completamente indipendente dalla parte java.

A te la scelta naturalmente :)

Per quanto riguarda l'uso della porta seriale, crei un handle con CreateFile(), poi trovi come impostare i vari parametri qui. Sotto "Using Comm..." -> "Configuring ..." c'è un esempio di apertura e configurazione della COM2.



Io sinceramente JNI lo eviterei...drawback sulle performance abbastanza pesanti, no?

yeah

Io sinceramente JNI lo eviterei...drawback sulle performance abbastanza pesanti, no?

Non ne ho idea perchè non l'ho mai provato. Dopo una rapida lettura dei link mi sembrava interessante.

Parlando di performance, tuttavia, non credo l'applicazione abbia particolari necessità (penso si tratterà di leggere i valori del dispositivo ad intervalli regolari), inoltre perchè dovrebbero peggiorare? JNI permette di usare un linguaggio più diretto per l'esecuzione delle funzioni, una volta che la libreria è allocata non credo possano esserci grossi problemi.

Le mie sono solo supposizioni :) Hai avuto occasione di provare queste caratteristiche?

fabpicca
Originally posted by yeah
Non ne ho idea perchè non l'ho mai provato. Dopo una rapida lettura dei link mi sembrava interessante.

Parlando di performance, tuttavia, non credo l'applicazione abbia particolari necessità (penso si tratterà di leggere i valori del dispositivo ad intervalli regolari), inoltre perchè dovrebbero peggiorare? JNI permette di usare un linguaggio più diretto per l'esecuzione delle funzioni, una volta che la libreria è allocata non credo possano esserci grossi problemi.

Le mie sono solo supposizioni :) Hai avuto occasione di provare queste caratteristiche?


...no...:oops:

però ho studiato un po' di documentazione per un progetto che sto sviluppando e alla fine ho deciso di abbandonare proprio per quel motivo...Anche quando lavoravo alla tesi avevamo un modulo sviluppato in C++ e interfacciato con JNI all'intelaiatura J2EE che stavamo sviluppando e tra i vari aspetti che si stavano studiando c'erano proprio i problemi di perfomance legati a quello...

yeah

Anche quando lavoravo alla tesi avevamo un modulo sviluppato in C++ e interfacciato con JNI all'intelaiatura J2EE che stavamo sviluppando e tra i vari aspetti che si stavano studiando c'erano proprio i problemi di perfomance legati a quello...

Alla fine per cosa si è deciso?

Qui ci sono alcuni test sulle prestazioni di JNI (e un metodo per velocizzare le chiamate).

E' chiaro che JNI è più lento di un programma completamente nativo, però è anche vero che quel test si preoccupa di passare una grande quantità di dati da Java a C++, mentre nel nostro caso si tratterebbe solo di ricevere dati dalla funzione C.

Ci vorrebbe un bel test :)

A questo punto, secondo me, la scelta dipende da come il programma dovrà leggere i dati dal dispositivo: la loro quantità e frequenza.

JaM
la quantita' dovrebbe (credo) essere ridotta... e la frequenza, boh? :asd:

comunque per ora ho scaricato il .net framework e il #develop (naturalmente a 56k... :asd: ), comincero' a smanettarci un po'...

yeah

.net framework

1.1 o 2.0 (dovrebbe essere ancora in beta)?


(naturalmente a 56k... :asd: )

:rotfl:

JaM
la 1.1

yeah
Ok :)

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate