Avatar billede musiigedeo Nybegynder
16. juli 2007 - 11:20 Der er 17 kommentarer og
1 løsning

Serial port forbindelse

Hey eksperter
Det har endligt lykkes mig at lave en jar file af min application men jeg kan ik får adgang til serial porten. Er der nogen der ved hvorfor?

Ps. I min manifest fil har jeg blandt andet "Class-Path : comm.jar"
Avatar billede mikkelbm Nybegynder
16. juli 2007 - 11:52 #1
Du mangler højst sandsynligt nogle dll'er. Se om ikke du kan få noget inspiration her:

http://www.eksperten.dk/spm/786394
Avatar billede musiigedeo Nybegynder
16. juli 2007 - 14:54 #2
Jeg kan godt åbne applicationen men jeg kan bare ik læse og skrive til porten
Avatar billede mikkelbm Nybegynder
16. juli 2007 - 15:32 #3
Så skal vi nok bruge en anelse mere information for at hjælpe dig! Får du ikke nogle fejlmeddelelser?
Avatar billede musiigedeo Nybegynder
16. juli 2007 - 16:10 #4
Application burde at læse og vise dataet der kommer på serial porten hver halve minut men det gør den ik. Når jeg prøver på at læse får jeg den exception
Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException
        at SimpleRead.writeToport(SimpleRead.java:123)
        at ttteer$1.actionPerformed(ttteer.java:112)

SimpleRead.java:123
outputStream.write(sent_byte);// sent_byte er den byte der skal sendes

ttteer.java:112
Den linje kalder metoden der indeholder "outputStream.write(sent_byte);"

Jeg skal lige nævne at applicationen kører fint når jeg kører den fra JBuilder
Avatar billede mikkelbm Nybegynder
16. juli 2007 - 16:58 #5
Det lyder underligt. Men noget kunne tyde på at du ikke får oprettet din output-stream korrekt. Hvordan instansierer du den?
Avatar billede musiigedeo Nybegynder
16. juli 2007 - 17:04 #6
Ja det er meget underligt. Jeg instansierer den sådan
public static OutputStream outputStream;
outputStream = serialPort.getOutputStream();
Avatar billede mikkelbm Nybegynder
16. juli 2007 - 17:17 #7
Det er meget begrænsede oplysninger du kommer med. Ud fra ovenstående kan jeg ikke sige mere om fejlen.

Men:

Hvorfor er den static?
Og hvad er serialPort?
Avatar billede musiigedeo Nybegynder
16. juli 2007 - 20:21 #8
Den behøver ik at static. Det er bare en vane at jeg bruger static meget.
serialPort er defineret således "SerialPort serialPort;"
Avatar billede mikkelbm Nybegynder
16. juli 2007 - 20:24 #9
Kan du ikke bare poste hele klassen:) ? Det andet her tager vist for lang tid.

Det jeg eftersøger er jo selvfølgelig, hvad SerialPort er for en ting - og hvordan du instansierer den.
Avatar billede musiigedeo Nybegynder
16. juli 2007 - 20:32 #10
Yes, her er den

import java.io.*;
import java.util.*;
import javax.comm.*;
public class SimpleRead implements SerialPortEventListener {
     
      private static final String SERIALPORT = "COM1";
     
      private CommPortIdentifier portId;
      private Enumeration portList;
      public InputStream inputStream;
      private SerialPort serialPort;
      public static String data = "";
      //public Thread readThread;
      private ttteer parent;
      public static OutputStream outputStream ;
      public static contents_of_afile content = new contents_of_afile();
      public static browse11 browse = new browse11();
      static byte[] dataVector = new byte[10000];

      public SimpleRead(ttteer parent){
         
          this.parent = parent;
          portList = CommPortIdentifier.getPortIdentifiers();
          while (portList.hasMoreElements()) {
                portId = (CommPortIdentifier) portList.nextElement(); 
                if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
                    if (portId.getName().equals(SERIALPORT)) {
                  try {
                        serialPort = (SerialPort) portId.open("SimpleReadApp", 2000);
                        inputStream = serialPort.getInputStream();
                        outputStream = serialPort.getOutputStream();
                        serialPort.addEventListener(this);
                        serialPort.notifyOnDataAvailable(true);
                        //set config.
                        serialPort.setSerialPortParams(9600,
                            SerialPort.DATABITS_8,
                            SerialPort.STOPBITS_1,
                            SerialPort.PARITY_NONE);
                    } catch (Exception e) {
                      // TODO Auto-generated catch block
                      e.printStackTrace();
                    }
                   
                   
                    }
                }
            }
    }
       
    public void serialEvent(SerialPortEvent event) {
       
            switch(event.getEventType()) {
            case SerialPortEvent.BI:
            case SerialPortEvent.OE:
            case SerialPortEvent.FE:
            case SerialPortEvent.PE:
            case SerialPortEvent.CD:
            case SerialPortEvent.CTS:
            case SerialPortEvent.DSR:
            case SerialPortEvent.RI:
            case SerialPortEvent.OUTPUT_BUFFER_EMPTY:
                break;
            case SerialPortEvent.DATA_AVAILABLE:   
            //data is available - read it!
            byte[] readBuffer = new byte[1];
                       
                try {
                    inputStream.close(); 
                    while (inputStream.available() > 0) {
                        int numBytes = inputStream.read(readBuffer);
                        data = new String(readBuffer);
                        parent.setData(data);
                        System.out.print(data);
                        System.out.print(numBytes);
                    }       
                } catch (IOException e) {
                //TODO Auto-generated catch block
                e.printStackTrace();
                }
                break;
            }
            try{
                inputStream.close();
            }catch (IOException e){
           
            }
            //System.out.print("tst");
        }
    public void writeToport(){
       
        //content = new contents_of_afile(); //makes an object of the contents_of_afile class
        //browse = new browse11();
        String sfile = browse.onBrowseSwing();//gets the method that returns the file name
        File file = new File(sfile);//get the file to be sent... this is actually supposed to be from browse
        try{
            dataVector = contents_of_afile.getBytesFromFile(file);//the file is loaded in the dataVector
        } catch(IOException e){
           
        }
        try{
            int len = dataVector.length;

            for(int i = 0; i < len; i++ ) {
                byte sent_byte = dataVector[i];
                //System.out.print(sent_byte + "test" + "\n");
                  if(dataVector[i] == 0x0D && dataVector[i+1] == 0x0A){
                      try{
                        Thread.sleep(190);
                        }
                        catch(InterruptedException e){
                        }
                  }else{
                        outputStream.write(sent_byte);
                        }
                           
        }
     
        }catch(IOException e){
           
        }
    }
    }
Avatar billede snoop_one Nybegynder
23. juli 2007 - 14:53 #11
prøv at checke om din outputstream er null
Avatar billede musiigedeo Nybegynder
24. juli 2007 - 13:29 #12
Jeg er sikker på at den ik er null da den kører som den skal når jeg starter den i JBuilder. jeg fatter bare ik hvorfor min jar fil har det problem
Avatar billede mikkelbm Nybegynder
24. juli 2007 - 14:19 #13
Din outputstream kan sagtens være null selvom det virker, når du kører den fra JBuilder!

outputStream = serialPort.getOutputStream();

serialPort kan jo godt returnere null, hvis der går noget galt derinde.


Prøv eventuelt:

else{
  javax.swing.JOptionPane.showMessageDialog(null, "outputStream null: " + (outputStream == null));
  outputStream.write(sent_byte);
}
Avatar billede musiigedeo Nybegynder
24. juli 2007 - 15:14 #14
den er false hele tiden når jeg sender
Avatar billede snoop_one Nybegynder
24. juli 2007 - 16:21 #15
det er din jar fil der ikke bliver sat rigtigt op så... Og der tror jeg at vi i en anden tråd er ved at tråde den ud :)
Avatar billede musiigedeo Nybegynder
24. juli 2007 - 16:45 #16
kan du sende mig linket til tråden
Avatar billede snoop_one Nybegynder
24. juli 2007 - 19:28 #17
hmm er det ikke din tråd? http://www.eksperten.dk/spm/788569
Avatar billede musiigedeo Nybegynder
25. juli 2007 - 15:11 #18
Problemet er løst. se  http://www.eksperten.dk/spm/788569
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