Gå til innhold

Noen som har prøvd javax.comm?


Anbefalte innlegg

Hei!

 

Har enkle kunnskaper i java, og leker litt med javax.comm klassen, men kommer ikke helt i gang.

kunne tenkt meg å bruke en serial port eller usb til å kommunisere med eventuelle I/O utsyr.

 

 

Noen som har prøvd seg på dette før, og kan vise noen enkle eksempler på å finne en port og lese data fra porten(eks RS-232)?

 

Takker for evt svar! :)

Lenke til kommentar
Videoannonse
Annonse

Kjapt eksempel:

 

import java.io.IOException;

import javax.comm.CommPortIdentifier;
import javax.comm.NoSuchPortException;
import javax.comm.PortInUseException;
import javax.comm.SerialPort;
import javax.comm.UnsupportedCommOperationException;

public class Test {
  public static void main(String[] args) throws UnsupportedCommOperationException,
	 NoSuchPortException, PortInUseException, IOException {
   CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM1");
   SerialPort serialPort = (SerialPort) portId.open("my_name", 10000);

   int baudrate = 115200;
   int dataBits = 8;
   int stopBits = 0;
   int parity = 1;
   int flowCtrl = 0;

   serialPort.setSerialPortParams(baudrate, dataBits, stopBits, parity);
   serialPort.setFlowControlMode(flowCtrl);

   // Skriver til port
   serialPort.getOutputStream().write("Hello World".getBytes());

   // Leser fra port
   byte[] byteBuffer = new byte[1000];
   int length = serialPort.getInputStream().read(byteBuffer);
   System.out.println(new String(byteBuffer,0,length));
  }

}

Lenke til kommentar

se her ja, interessant:)

 

Har en annen kode som søker etter portene på pcen. Og ser ut til at jeg finner bare LTP1 og LTP2 får en error melding:

 

Error 2 opening registry key HARDWARE\DEVICEMAP\SERIALCOMM

 

Den samme feil meldingen får jeg når jeg kjører koden din:

 

Exception in thread "main" javax.comm.NoSuchPortException

at javax.comm.CommPortIdentifier.getPortIdentifier

at Test.main(Test.java:14)

Error 2 opening registry key HARDWARE\DEVICEMAP\SERIALCOMM

 

Tror ikke java finner Com(1,2,3,4) portene, ...får prøve å finne ut av det først. takk for svaret :)

Lenke til kommentar

Har fra før lagt filene i riktig mappe ja. Har to jre mapper og en jdk mappe av en eller annen grunn. prøvde å legge filene i riktig mapper i alle mappene for sikkerhets skyld, samt restarte pcen. Men finner fremdeles ikke Com portene i programmet.

 

 

For noen dager siden fant java programmet som jeg prøvde alle portene(COM(1,2,3) samt LPT(1,2). Da var det var en blåtann enhet i en av usb portene. vet ikke om det har noe betydning. Men finner uansett ikke de portene nå lenger, har ikke endret eller slettet noen filer.

 

 

Bruker Textpad btw, men har også testet det i netbeans.

har plagdes litt med laptopen i det siste, så kan prøve det på en annen pc.

 

 

Men er det nødvendig å legge til noen form for miljøvariabler?

 

 

her er programmet som leter etter portene:

 

import java.util.Enumeration;

import javax.comm.CommPortIdentifier;

import javax.comm.CommPort;

import static javax.swing.JOptionPane.*;

 

 

class FinnPort {

public static void main(String[] args) {

 

Enumeration ports = CommPortIdentifier.getPortIdentifiers();

while (ports.hasMoreElements()) {

System.out.println(((CommPortIdentifier)(ports.nextElement())).

getName());

 

}

}

}

Lenke til kommentar

Finner portene nå, når jeg har en blåtann usb enhet i. Prøvde koden din. ikke helt sikker hva og hvilken port den bruker, og om den må være tilkoblet med noe, men fikk uansett:

 

Exception in thread "main" javax.comm.PortInUseException: Port currently owned by Unknown Windows Application

 

får vel bare google litt...:)

Lenke til kommentar
Finner portene nå, når jeg har en blåtann usb enhet i. Prøvde koden din. ikke helt sikker hva og hvilken port den bruker, og om den må være tilkoblet med noe, men fikk uansett:

 

Exception in thread "main" javax.comm.PortInUseException: Port currently owned by Unknown Windows Application

 

får vel bare google litt...:)

 

Koden bruker COM1:

CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM1");

Du kan ja bytte ut med hvilken som helst annen port.

 

Edit:

"Port currently owned by unknown windows application" kan bety at porten faktisk er opptatt. For aa sjekke dette, kan du aapne hyper-terminal (Start->Programmer->Tilbehoer(?)->Kommunikasjon->Hyper terminal(?)). Tast inn et vilkaarlig navn, velg COM1 som forbindelse, og bruk default instillinger paa baud osv. Naa skal programmet gaa til hyperterminal hovedvindu uten feilmelding. Faar du her en feilmelding saa er COM1 enkelt og greit ikke tilgjengelig. Hvis du ikke faar noen feilmelding, saa fungerer ikke javax.comm riktig med Windows. Hvilken Windows versjon bruker du?

Endret av Patton
Lenke til kommentar

Ok, ja virker som alle portene er "opptatte". Programmet kjørte EN velykket gang med "LPT1", da kom det opp en rute, og programmet kjørte(tror jeg). men fungerte bare en gang.

 

Har Win xp pro, oppgraderte fra vista for noen måneder siden, så har hatt litt driverporblemer, hehe.

 

prøvde hyper Terminal, men etter å ha skrevet inn navnet på ny tilkobling kommer et vindu opp, men uten valg av port. Bare vertsadresse og portnummer.

 

Får prøve mer etter matte eksamen på mandag, hehe..

 

LPT og COM, hvilke er av type USB, og hvilke er eks. RS 232?Er det faste navn på faste porter?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...