Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    J2ME comunicazione seriale

    Ciao a tutti dunque mi trovo difronte a un problema che nn riesco a sormontare..... dovrei utilizzare la porta seriale del cellulare (RS232) per leggere e trasmettere informazioni a un microcontrollore .... sto cercando di usare l CommConnection ma ho dei seri problemi nel senso che sul emulatore il programma funziona ma appena lo carico sul cellulare no..... di fatto è come se il cell nn mi aprisse la porta ma si mettesse in ascolto su di essa infatti se lanciata la mia applicazione collego il cell al pc la porta si apre e tutto funziona come dovrebbe.....

    codice:
    import javax.microedition.lcdui.*;
    import javax.microedition.midlet.*;
    import javax.microedition.io.*;
    import java.io.*;
    
    public class seriale extends MIDlet 
    {
      Display display;
      Form form;
      CommConnection cc;
      InputStream is  ;
      OutputStream os;
    
    public seriale()
      {
    	  display = Display.getDisplay(this);
    	  form = new Form("prova :)");
    	  form.append("porta=");
    	  display.setCurrent(form);
    	  
      }
    public void destroyApp(boolean unconditional) {notifyDestroyed();}
    public void pauseApp() {}
    
     public void startApp() 
     {
    	Run(); //vado al metodo per gestione seriale
     }
     public void Run()
     {
      try
    	  {
    	  	//----------------- guardo che porta ho a disposizione -----
    		String port=System.getProperty("microedition.commports");
    		form.append(port);
    	    display.setCurrent(form);
    	    //------------ apro porta ----------------------------------
    		cc = (CommConnection)Connector.open("comm:COM1"); //-ferma
    		//----------------------------------------------
    		String z=Integer.toString(cc.getBaudRate());
    		form.append(z);
    	    display.setCurrent(form);
    	    
    		InputStream is  = cc.openInputStream();
    		OutputStream os = cc.openOutputStream();
    		//---------- ciclo infinito che legge e scrive sulla seriale ----------
    		    int b=0;
    			while(true) 
    			{
    				os.write(10);
    				
    				b = is.read();
    				
    				String a=Integer.toString(b);
    				form.append(a);					//visualizzo cio che ricevo
    			    display.setCurrent(form);
    			}
    			
    	 }catch(IOException e)
    	  {
        	  e.printStackTrace();
        	  form.append("\n IOException "+e.toString());
    		  display.setCurrent(form);
    		  display.vibrate(1000);
    	  }catch( SecurityException e)
    	  {
    	  	  e.printStackTrace();
    	  	  form.append("\n SecurityException"+e.toString());
    		  display.setCurrent(form);
    		  display.vibrate(1000);
    	  }catch(IllegalArgumentException e)
    	  {
    	  	  e.printStackTrace();
    	  	  form.append("\n IllegalArgumentException"+e.toString());
    		  display.setCurrent(form);
    		  display.vibrate(1000);	 
    	  }
      
      }
    }
    il programma lo provo su un motorola v3.....bisogna che il cell riceva un particolare comando sulla seriale per fargli aprire la porta??nn si puo usare come quella del pc??

    ringrazio per l attenzione e spero che possiate aiutarmi....

  2. #2
    Hai provato ad installare il programma su un altro telefono?

  3. #3
    ciao ti ringrazio della risposta..... l ho provato su altri 3 motorola v3 ognuno con una versione diversa del firmware.... piu recente ma niente ...... si blocca sempre sul istruzione Connector.open(); .... di fatto è come se si mettesse in ascolto sulla porta in attessa di ricevere qualcosa.... ma nn so cosa....... infatti se in sta fase li collego il pc inizia a funzionare......

    io volevo usarla come se fosse la porta COM del pc...... nn si puo?

  4. #4
    Secondo me il problema stà nel telefono... prova ad utilizzarla magari su un nokia di recente fattura... Ps. Per poterla utilizzare ti anticipo che hai bisogno di un certificato...

  5. #5
    mmm.... cosa intendi per certificato??

  6. #6
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    3
    Originariamente inviato da erpino
    mmm.... cosa intendi per certificato??
    Il certificato x509 è quello che ti permette di firmare le tue applicazioni. in questo modo il cellulare (riconoscendo l'applicazione firmata e quindi sicura) abilita l'applicazione con determinati permessi che permettono all'applicazione di eseguire operazioni "potenzialmente dannose" tra le quali rientrano accesso al file-system, utilizzo di porte seriali, comunicazioni con la sim.... and so on...

    Io ho lo stesso problema, dovrei leggere un file che si trova sulla SD esterna, per farlo esistono tutte le API in java ma il Connector.open() mi restituisce un SecurityException perchè l'applicazione non è firmata.

    Per firmare l'applicazione (se non vuoi pagare una Certification Authority) devi generare un certificato facendo finta che tu sia una CA (praticamente un fake). Questo certificato va installato sul cellulare e le applicazioni, prima di installarle sul cel, vanno firmate da questa "fake-CA". Il cellulare in questo modo legge la firma dell'applicazione, la confronta con il fake-CA creato ed installato precedentemente e la riconosce come sicura.

    Procedura completa: fake-CA

    Il problema che ancora ho è: installare il certificato sul cel... qualcuno sa come aiutarmi?

  7. #7
    grazie delle informazioni.....cmq il mio programma non mi lancia alcuna eccezione semplicemente si mette in attesa di ricevere una richiesta di comunicazione.... di fatti se io in questa fase collego il cellulare al pc la porta seriale si apre e il programma funziona cmq su "Wireless Toolkit 2.5.2" sul setting del progetto cè un icona con scritto Permission dove si possono aggiungere i permessi per usare una certa funzione ad esempio io ho abilitato "javax.microedition.io.Connector.comm"
    poi si puo mettere anche la firma

    http://www.massimocarli.it/site/inde...=254&Itemid=32

    se riuscissi a risalire al codice sorgente che si occupa di aprire la porta penso nn ne sono sicuro (potrei dire una c....ta) ci sarà un metodo del interfaccia StreamConnectionNotifier del tipo ..acceptAndOpen() che mi blocca l apertura della porta fino a che nn riceve una richiesta di comunicazione.......

    sapete se si può usare la classe javax.comm anche sul cellulare ?

  8. #8
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    3
    Avevo già dato i permessi all'applicazione e l'eccezione viene lanciata cmq.

    Dalla descrizione del tuo problema non sono riuscito a capire su quale riga esattamente si blocca l'esecuzione, se sull'apertura dell InputStream o sulla read(). In entrambi i casi direi che se non c'è niente collegato dall'altro capo del filo o se il microcontrollore non risponde come dovrebbe (magari funziona benissimo ma usa solo un protocollo differente) è normale che il programma rimanga bloccato perchè in entrambi i casi aspetta una risposta, per sbloccarlo penso dovresti inserire tu un timer.

    Inoltre non ho capito una parte del tuo codice:
    codice:
    ...
    
    //----------------- guardo che porta ho a disposizione -----
    		String port=System.getProperty("microedition.commports");
    		form.append(port);
    	    display.setCurrent(form);
    	    //------------ apro porta ----------------------------------
    		cc = (CommConnection)Connector.open("comm:COM1"); //-ferma
    
    ...
    Prendi la porta a disposizione e poi... apri sempre la COM1? Perchè? :master:

  9. #9
    semplicemente guardo che porte che ho a disposizione poi la porta la lascio fissa perche per il momento nn mi interessa impostarla al inizio o usare il programma su altri cellulari ... nel programma che carico sul cellulare uso la com0 ma per l emulatore uso la com1 ..... il programma mi si ferma su l istruzione
    cc = (CommConnection)Connector.open("comm:COM0");

    a me servirebbe usare la porta come fosse la porta com del pc quindi che posso aprirla e usarla indipndentemente che vi sia connesso o meno un dispositivo..... solo che dubito che si possa ...hanno reso le cose facili difficili...... hai qualche idea che mi permette di baipassare quella fase di attesa ?????

    se sapessi il cellulare che cosa si aspetta di ricevere per aprirmi la connessione emulerei il tutto sul software del pic...o quantomeno che protocollo usa...... girovagando su internet non si trova molto materiale e quel che c è è molto generico ....

  10. #10
    Utente di HTML.it
    Registrato dal
    Mar 2008
    Messaggi
    3
    a me servirebbe usare la porta come fosse la porta com del pc quindi
    Se non sbaglio funziona già così un po' su tutte le seriali indipendentemente dal tuo caso dove usi un celllulare

    che posso aprirla e usarla indipndentemente che vi sia connesso o meno un dispositivo
    :master: come fai ad aprirla ed usarla senza che vi sia collegato un dispositivo? Chi ti risponde? Prendi il tuo pc, vedi quante COM ci sono... parlo per WinZoz... ti fa vedere solo le COM che sono "occupate" in quel momento, ma non ti fa vedere tutte le COM.

    Dunque penso che (parlo solo per quel che ne so io) emulare la porta sia l'unica soluzione. Il come farlo.... boh!!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.