API javacomm porque não escreve?

11 respostas
D
caros colegas, baixei direto do site da sun o API javacomm de pois de ler alguns tutoriais coloquei todos os arquivos necessários em seus devidos lugares. (Copiar o arquivo win32com.dll para o diretório C:\JavaSDK\BIN (isto é, o diretório onde o J2SDK foi instalado no seu PC). o Copiar o arquivo comm.jar para o diretório C:\JavaSDK\BIN\LIB. o Copiar o arquivo javax.comm.properties para o diretório C:\JavaSDK\BIN\LIB. o Em seguida configure o CLASSPATH para que ele reconheça o arquivo comm.jar.). feito isso tenho um código fonte que deveria escrever alguma coisa num a impressora fiscal q está conectada na porta COM1, mas simplesmente não acontece nada, não dá erro de compilação, nem nada parecido. seque o código.
import java.io.*;
import java.util.*;
import javax.comm.*;

public class SimpleWrite {
    static Enumeration portList;
    static CommPortIdentifier portId;
    static private String messageString = ""; // "??"+char(0)+"??§"+char(0);
    static SerialPort serialPort;
    static OutputStream outputStream;
    
    

    public static void main(String[] args) {
        messageString = String.valueOf((char)2)+
                        String.valueOf((char)4)+
                        String.valueOf((char)0)+
                        String.valueOf((char)27)+
                        String.valueOf((char)5)+
                        String.valueOf((char)32)+
                        String.valueOf((char)0);
        
               
        portList = CommPortIdentifier.getPortIdentifiers();
        
        
        
           
        while (portList.hasMoreElements()) {
            portId = (CommPortIdentifier) portList.nextElement();
            if (portId.getPortType() == CommPortIdentifier.PORT_SERIAL) {
               // if (portId.getName().equals("COM1")) {
                if (portId.getName().equals("/dev/term/a")) {
                    try {
                        serialPort = (SerialPort)
                            portId.open("SimpleWriteApp", 2000);
                    } catch (PortInUseException e) {}
                    try {
                        outputStream = serialPort.getOutputStream();
                    } catch (IOException e) {}
                    try {
                        serialPort.setSerialPortParams(9600,
                            SerialPort.DATABITS_8,
                            SerialPort.STOPBITS_1,
                            SerialPort.PARITY_NONE);
                    } catch (UnsupportedCommOperationException e) {}
                    try {
                        outputStream.write(messageString.getBytes());
                    } catch (IOException e) {}
                }
            }
        }
    }
}
compilando passo a passo percebe-se q não entra no while pois a portList vem com null, ou seja não está capturando nenhuma porta, o que eu faço? ja não sei mais o q tentar! se alguém tiver alguma dica por favor poste o mais rápido possível, preciso resolver este problema o mais rápido possível. obrigado.

11 Respostas

C

O q essa API faz :?:

D

kara simplesmente ela permite q vc escreva ou leia de qualquer coisa q esteja conectada nas portas.
pelo q eu entendi eh isso!
mas já informando q ja resolvi o problema!
era simplesmente erro de dll.
valeu!

M

Dougnard,
Kra, qual foi realmente o problema da dll…estou fazendo uma aplicação q usa tb a comm.jar…e tb não faz nada…o que pode ter acontecido???

Valeu antecipadamente.

D

na pasta do jdk instalado no seu computador, dentro da pasta jre/lib tem q jogar a dll q vem junto e a javax.comm.properties. além das outras configurações na qual acima ja falei!

M

O problema eh que isso jah foi feito…eu fiz uma aplicação teste no console e ela funcionou perfeitamente…como eu presciso que funcione via web…ele não faz nada…jah coloquei o arquivo comm.jar dentro da pasta lib da minha aplicação…e nada…se você tiver alguma idéia do que mais está faltando eu fico imensamente grato…

Valeu.

F

kara eu estou com o mesmo problema, coloquei a Comm.jar e javax.comm.properties dentro de %JAVA_HOME%\lib e a .dll dentro de JAVA_HOME%\bin, depois as coloquei tb em jre\bin e continua sem detectar as portas, o Enumerator sempre obtem null, já teste no win98 e XP e nada, nem sinal das malditas portas COM :oops:

o q eu faço, como vcs conseguiram 8O

valewwwwww :lol:

C

estou com o mesmo problema acima

F

bom pessoal, eu tenho uma aplicação que funciona direitinho.
Eu faço o seguinte, coloco os três arquivos: comm.jar, win32com.dll e javax.comm.properties na mesma pasta onde estão as minhas classes.

Aí é soh chamar a aplicação.

fica assim

java -cp "Comm.jar" MainDaApp

eu uso o eclipse, e antes de usar a api no meu codigo, eu coloco estes arquivos na pasta do projeto e adiciono este comm.jar, como external jar.

Pra mim funcionou direitinho, e eu envio para os clientes desta forma, com estes arquivos todos juntos. Assim não precisa colocar nas pastas do Java.

espero q ajude
ate mais

FeOkuma

V

Pessoal, o pacote que eu estou baixando não vem os dll nem o arquivo properties. Se eu baixo a API pra outras estruturas (sparc ou linux) ele vem com o properties.
Qual o link exato pra baixar a biblioteca pra windows?

V

No site da sun ele usa a seguinte frase:


Implementations of the API are currently available for Solaris SPARC, Solaris x86, and Linux x86.

Isso quer dizer que não funciona no meu windows?

V

Pessoal,
consegui baixar o pacote certo aqui, só coloquei a comm.jar, o dll e o properties na raiz da aplicação e funcionou (pelo menos não deu erro nenhum).

Criado 29 de janeiro de 2005
Ultima resposta 11 de jul. de 2006
Respostas 11
Participantes 7