Avatar billede quaid Nybegynder
03. april 2002 - 14:21 Der er 11 kommentarer og
1 løsning

Hvad er der galt her ?? j2me fortsat

Hvorfor vil dette ikke køre ??


import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;

public class HelloMIDlet extends MIDlet implements CommandListener
{
  private Display display;       
  private TextBox tbViewer; 
  private Command cmView;   
  private Command cmExit;   
 
  public HelloMIDlet()
  {
    display = Display.getDisplay(this);
   
   
    cmView = new Command("View", Command.SCREEN, 2);
    cmExit = new Command("Exit", Command.EXIT, 1);

    tbViewer = new TextBox("Viewer", "", 250, TextField.ANY);
    tbViewer.addCommand(cmView);
    tbViewer.addCommand(cmExit);
    tbViewer.setCommandListener(this);   
  }

  public void startApp()
  {
    display.setCurrent(tbViewer);
  }   

  private void viewFile() throws IOException
  {
    Connection cp = null;
    InputStream iStrm = null;
   
    try
    {
     
      cp = (Connection) Connector.open("comm:0;baudrate=9600",Connector.READ_WRITE);


   
        iStrm = cp.openInputStream();
        int length = (int) cp.getLength();
        if (length > 0)
        {
          byte information[] = new byte[length];
          iStrm.read(information);
          tbViewer.setString(new String(information));
        }
     
    }
    finally
    {
     
      if (iStrm != null)
        iStrm.close();
      if (cp != null)
        cp.close();
    }
  }

  public void pauseApp()
  { }

  public void destroyApp(boolean unconditional)
  { }

  public void commandAction(Command c, Displayable s)
  {
    if (c == cmView)
    {
      try
      {
        viewFile();
      }
      catch (Exception e)
      {
        System.out.println(e.toString());
      }
    }
    else if (c == cmExit)
    {
      destroyApp(false);
      notifyDestroyed();
    }   
  }
}

Meningen er lige nu at jeg bare vil kunne skrive til PALMEN via comporten med Hyperterminal.
QD::
Avatar billede disky Nybegynder
03. april 2002 - 14:53 #1
hvad sker der ?
Avatar billede quaid Nybegynder
03. april 2002 - 14:57 #2
Eksemplet var oprindeligt en http connection, men efter bedste overbevisning burde det vel kunne læse på rs232 nu ??
QD::
Avatar billede quaid Nybegynder
03. april 2002 - 14:58 #3
ps hvad med den dokumentation ??
QD::
Avatar billede quaid Nybegynder
03. april 2002 - 16:57 #4
Ok jeg tog nok munden for fuld.
Så denne lille main er nok lettere at overskue.


import java.io.*;
import javax.microedition.io.*;

public class HelloMIDlet
{

  public static void main( String[] args )
    {
      try {
           
          InputConnection conn = (InputConnection)
          Connector.open("comm:1;baudrate=9600",Connector.READ);
          InputStream in = conn.openInputStream();           
           
          System.out.println(in.read()); 
        }
        catch( ConnectionNotFoundException e )
        {
            System.out.println( "Det gik ad helvede til makker!" );
        }
        catch( IOException e )
        {
            System.out.println( e.toString() );
        }

        //System.exit( 0 );
    }
}

Når jeg loader dette lille program over på PALMEN, så ville jeg umiddelbart mene at jeg skulle kunne starte programmet og skrive til den med Hyperterminalen, men det kan jeg ikke engang. Programmet terminere straks efter start!!!?? Envidere har jeg ikke kunnet finde ud af hvad portnr man skal angive som parameter på PALMEN!??
QD::
Avatar billede disky Nybegynder
03. april 2002 - 17:05 #5
Det er klart programmet stopper med det samme, der er intet i din main() så får det til at køre i en løkke :)

prøv med:

import java.io.*;
import javax.microedition.io.*;

public class HelloMIDlet
{

  public static void main( String[] args )
    {
      try {
           
          InputConnection conn = (InputConnection)
          Connector.open("comm:1;baudrate=9600",Connector.READ);
          InputStream in = conn.openInputStream();           
while(true)
{           
          System.out.println(in.read()); 
}
        }
        catch( ConnectionNotFoundException e )
        {
            System.out.println( "Det gik ad helvede til makker!" );
        }
        catch( IOException e )
        {
            System.out.println( e.toString() );
        }

        //System.exit( 0 );
    }
}
Avatar billede quaid Nybegynder
03. april 2002 - 19:52 #6
Jeg vil da mene at programmet alligevel skulle stoppe ved S.O.P'en, da
read metoden vil afvente en char fra porten, og fortsætte når den havde fået en char!!??
Dit forslag virkede desværre ikke.
QD::
Avatar billede disky Nybegynder
03. april 2002 - 20:07 #7
gruble gruble.

kan du ikke lige sende den zip fil jeg sendte til dig til mig ?

Jeg skrev min hjemmeemail i dokumentationen
Avatar billede disky Nybegynder
04. april 2002 - 10:53 #8
Mange tak for filen, jeg graver lidt i det i aften.
Avatar billede quaid Nybegynder
04. april 2002 - 11:11 #9
Lyder godt Disky.
Jeg har selv taget udgangspunkt i denne kode som udgangspunkt.
Ved ikke om du kan bruge det til noget, men her er http://www.corej2me.com/SourceCode/networking/fileViewer/index.htm
QD::
Avatar billede quaid Nybegynder
07. april 2002 - 14:49 #10
Nå men jeg poster lige et nyt udkast og håber at en her kan sige mig hvorfor jeg ikke kan få kontakt med Palmen fra Hyperterminalen!

read() metoden fra inputStream standser programmet indtil den får en char fra porten!
Ifølge documentationen!!.
Der er godtnok et par exceptions, som måske kunne få det til at køre videre, men jeg kan jo ikke se hvad der sker når jeg kører programmet!!?? Hvor kan jeg se det ? Sammenlignet med kørsel i en DOS prompt ville jeg straks se om porten blev åbnet og forbindelse etableret!! Bare ikke her i J2ME.
Den fysiske forbindelse mellem Palmen og PC'eren er bare det standardkabel og fod der fulgte med.

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
import java.io.*;

public class HelloMIDlet extends MIDlet implements CommandListener
{
  private Display display;        // Reference to Display object
  private TextBox tbViewer;  // View file contents in a textbox
  private Command cmView;    // Command to view file
  private Command cmExit;    // Command to exit
  String udskriv = "";

  public HelloMIDlet()
  {
    display = Display.getDisplay(this);
   
    // Define commands
    cmView = new Command("Vis", Command.SCREEN, 2);
    cmExit = new Command("Afslut", Command.EXIT, 1);

    tbViewer = new TextBox("Viewer", "", 250, TextField.ANY);
    tbViewer.addCommand(cmView);
    tbViewer.addCommand(cmExit);
    tbViewer.setCommandListener(this);   
  }

  public void startApp()
  {
    display.setCurrent(tbViewer);
  }   
 
  private void viewFile() throws IOException
  { 
           
    try
        { 
          // nøddeknækkeren             
          InputConnection conn = (InputConnection)Connector.open("comm:0;baudrate=9600",Connector.READ);
         
          InputStream in = conn.openInputStream();         
          udskriv = Integer.toString(in.read());
     
            conn.close();
            in.close();
         
        }
        catch( ConnectionNotFoundException e )
        {
            System.out.println( "Det gik ad helvede til makker!" );
        }
        catch( IOException e )
        {
            System.out.println( e.toString() );
        }     
   
     
      tbViewer.setString(udskriv);
    }
     
 
 
 

  public void pauseApp()
  { }

  public void destroyApp(boolean unconditional)
  { }

  public void commandAction(Command c, Displayable s)
  {
    if (c == cmView)
    {
      try
      {
        viewFile();
      }
      catch (Exception e)
      {
        System.out.println(e.toString());
      }
    }
    else if (c == cmExit)
    {
      destroyApp(false);
      notifyDestroyed();
    }   
  }
}
Avatar billede quaid Nybegynder
08. april 2002 - 10:43 #11
Det ser ud som om at problemet ligger i kablet. Det kræver åbenbart et andet
kabel end standard kablet der følger med.
Jeg er sikker på at det sidst postede kode virker...(næsten) :) Der er heller ikke nogle compilerfejl. Konklusionen bliver at jeg skaffer at andet kabel, og prøver igen.
QD::
Avatar billede disky Nybegynder
08. april 2002 - 11:18 #12
ha du siger noget.

Normalt ville man jo forbinde 2 pc'ere med et krydset seriel kabel, men jeg mener faktisk du skal bruge et straight seriel kabel til palm'en.

:-)

Held og lykke
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester