Port verwendung

Hallo liebe und vorallem coole Java Nutzer und java-forer,

ich möchte mal ein Programm schreiben um über einen Port (Parallel, Seriel, USB oder was auch immer) eine LED zu betreiben.

Ich kenne mich auf diesem Gebiet überhaupt nicht aus, habe mich aber mit google schon ein wenig umgeschaut. Alle Beispiele die ich fand waren einfach iwelcher Code den ich zwar so lesen(also lesen und wissen was passiert) konnte aber nicht wusste was das macht. Wenn ich versuche die Programme laufen zu lassen(ich arbeite unter eclipse) kamen immer iwelche fehler. aber okey das ist ja auch iwie verständlich da ich noch nicht einmal das Gerät dran habe (würde einfach zwei pins mit LED(3V, ca. 0,01A) verbinden, ggf. eine schaltung um die Spannung runter zu kurbeln und die Stromstärke zu setzen).

Ich hätte gerne einfach ein beispiel mit kleinen kommentaren was passieren soll und wie das Programm dann arbeitet.

An alle Antworter im voraus ein großes Danke:applaus:!

JI
 

theodosis

Mitglied
hmmm,

das ist nich so einfach.

Es gibt ein package von Sun (jetzt: Oracle) unter der Name javax.comm damit kannst du serielle und parallele Schnittstellen oeffnen und daten austauschen. Wenn du das benutzen willst, dann muss du paar dll's (oder .so wenn du auf Linux bist) installieren.

Nach meiner Meinung das Beste ist wenn du fuer diesen LED einen fertigen C-API hast und eine Schnittstelle zwischen diesen API und Java mit hilfe von JNI schreibst.
 
Über Java Comm(onication) API habe ich auch schon gelesen. Genau das was du sagst habe ich auch so ähnlich wo anders gelesen. Leider habe ich keinen Plan wie ich eine C-API einbinde und was ich da nehmen sollte. Damit habe ich keinerlei Erfahrung. Ich bräuchte einfach code beispiele.

die comm api und rxtx habe ich mitlerweile eingebunden und auch dran versucht klapt aber einfach nciht.
 

theodosis

Mitglied
dann es gibt nur eine einfache Loesung fuer dich:

Vergiss Java fuer 2 Stunden. Schreibe ein einfaches C-Programm, dass Operationen mit der seriellen Schnittstelle durchfuehrt, und erzeug ein ausfuhrbares programm davon ( z.B. .exe fuer Windows)

Das C programm soll ungefaehr so aussehen ( Linux )

Java:
(Das ist C-code)

int main ( )
{
    int fd;
    unsigned char[] befehl1 = { 0xFE, 0x02, ... } // angenohmen das  Befehl hat mehrere bytes als nur eins.

    fd = open("/dev/ttyS0"); // Fuer die 1ste serielle Schnittestell wenn du auf Linux bist. 
    write ( fd, befehl1 );     // siehe die Doku fuer die function 'write'
    close ( fd );
}


Wenn du auf Windows bist, dann google "c open serial port windows" und du kannst sehen wie du ein entsprechendes programm schreiben kannst.


und angenohmen das (C-)kompiliertes Programm heisst befehl1.exe dann kannst du diesen Programm innerhalb von Java aufrufen mit

Java:
Runtime.getRuntime.exec("befehl1.exe");

Lass uns wissen ob das hilf weiter, so dass wir dann die Einzelheiten sehen koennen.
 
Zuletzt bearbeitet:
G

Gastredner

Gast
und angenohmen das (C-)kompiliertes Programm heisst befehl1.exe dann kannst du diesen Programm innerhalb von Java aufrufen mit

Java:
Runtime.getRuntime.exec("befehl1.exe");
Oder du nutzt JNI, um das Programm anzusprechen. Aber was ist das Problem mit javax.comm? Soweit ich gehört habe, läuft das eigentlich ganz gut. Beim Start muss halt nur darauf geachtet werden, dass der JVM auch die Position der eventuell benötigten nativen Bibliotheken mitgeteilt wird.
 
java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path thrown while loading gnu.io.RXTXCommDriver
Exception in thread "main" java.lang.UnsatisfiedLinkError: no rxtxSerial in java.library.path
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.loadLibrary0(Unknown Source)
at java.lang.System.loadLibrary(Unknown Source)

habe ich gerade bekommen und habe ich glaube ich auch schoneinmal bekommen!

sorry hätte ich selbst drauf kommen können.
 
Zuletzt bearbeitet:
okey den habe ich grade selber gelöst ;)

beim adden der RXTXcomm.jar muss man die native libary auch hinzufügen (damit die dll's eingebunden werden) Using RXTX In Eclipse - Rxtx

wie kann ich jetzt einen pin auf 1 setzen? was passiert wenn ich was in den outputstream reinhauen?
 
Zuletzt bearbeitet:

HoaX

Top Contributor
LEDs gibt es auch mit fertig eingebautem Widerstand, die kannst du direkt an 5V hängen und glücklich sein. Lässt sich dann am seriellen Port betreiben.

Für USB brauchst du natürlich ein USB-Gerät welches die LED dann an- und ausschaltet. Ist auch ganz einfach, wenn man z.B. ein Arduino-Board verwendet.
 
das ist ja gut und schön aber das möchte ich nicht wissen.
das ist sekundär. ich will wiessen wie ich auf einzelne pins saft (1) lege. dann können wir über sowas reden. hat iwer sowas schonmal gemacht. Ich bin auch dafür offen C oder ähnliches zu verwenden nur habe ich damit noch nicht programmiert und habe eigentlich auch keinen bock darauf jetzt mich damit nur wegen einer portansteuerung auseinander zu setzen
 

HoaX

Top Contributor
Die einzelnen Pins wirst du ehr nicht direkt ansteuern können aus Java, höchstens Steuerleitungen, könntest aber evtl. Erfolg haben, wenn du einen T-Flipflipflop dazwischen hängst und eine Steuerleitung schaltest. Aus C geht das schon ehr, ich meine zumindest sowas schonmal gelesen zu haben. Aber auch das ist nicht wirklich die feine Englische.

PS: Direkt vorkauen wird dir hier niemand etwas. Wenn du am seriellen Port etwas betreiben willst, dann solltest du dich schon selbständig mal einlesen wie der funktioniert, welche Leitungen dort hängen usw, dann ergibt sich das meiste von selbst.
 
Zuletzt bearbeitet:
Das ist der Primäre fehler! Ich bekomme einfach keinen byte gesendet!

IOExceptionjava.io.IOException: Das Gerät ist nicht angeschlossen.
in writeByte

Java:
try {port = CommPortIdentifier.getPortIdentifier(PARALLEL_PORT);
			parallelPort = (ParallelPort) port.open("LPT1", 50);
			outputStream = new DataOutputStream(parallelPort.getOutputStream());
			System.out.println("super");
			outputStream.write(255);
			outputStream.flush();
			outputStream.close();
		} catch (PortInUseException piue) {
			System.out.println("PORTException");
		} catch (IOException e) {
			System.out.println("IOException" +e);
		} catch (Exception e) {
			System.out.println("Exception" +e);
		}
 
P

pmias

Gast
Hi,

gib bitte hier Bescheid, wenn Du das mit dem parallelen Port hinbekommst, weil das hat bei mir noch nie funktioniert. K. A. ob das überhaupt schon implementiert ist.

Am seriellen Port kannst Du nur mit den Steuerleitungen vernünftig arbeiten, wenn Du eine LED mit Dauerstrom erzeugen willst. Das geht mit diesen Leitungen:

Java:
RXTXPort port = (RXTXPort) CommPortIdentifier.getPortIdentifier(...).open(...);

port.setRTS(true);
port.setDTR(true);

RTS und DTR sind die einzigen beiden Steuerleitungen des COM-Ports die Du direkt ansteuern kannst. Wo die liegen, am Besten hier nachforschen: RS-232 ? Wikipedia

Für mehrere LEDs empfehle ich trotzdem den LPT-Port, aber mit dieser lib hier: Parallel Printer Port Access through Java
(Einfaches C-Programm. Kann man sehr gut nachvollziehen).

Grüße
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Master3000 Java Port reset (Socket) Allgemeine Java-Themen 6
G Datei senden via Xmodem an Serial-Port Allgemeine Java-Themen 35
J Serial Port Daten empfangen Allgemeine Java-Themen 5
M den richtigen COM-Port finden Allgemeine Java-Themen 1
O Serial Port Daten als Tastaturanschlag senden Allgemeine Java-Themen 0
B Problem mit Virtuellem COM Port Allgemeine Java-Themen 1
T Daten über port abfangen mit proxy server Allgemeine Java-Themen 12
A Serial Port abhören auf RX und TX Allgemeine Java-Themen 7
S RxTx - langsame Port suche Allgemeine Java-Themen 3
N Port festlegen für JXMapViewer Allgemeine Java-Themen 3
G java applet und com-port Allgemeine Java-Themen 7
J Receive eines Hex-Bytes über COM-Port Allgemeine Java-Themen 4
J String an Port senden Allgemeine Java-Themen 2
F Java <--> Serieller Port Allgemeine Java-Themen 3
N Serielle Schnittstelle / COM-Port auslesen und die empfangenen Daten verarbeiten Allgemeine Java-Themen 1
M Richtigen COM-Port bestimmen Allgemeine Java-Themen 14
M Port-Tunneln Allgemeine Java-Themen 23
H Server Threaded machen. Port-Problem Frage Allgemeine Java-Themen 2
ARadauer Welches Programm hört auf Port? Allgemeine Java-Themen 3
B welchen port muss ich angeben? Allgemeine Java-Themen 11
P Linux port Allgemeine Java-Themen 4
K Java einen Port überwachen lassen Allgemeine Java-Themen 5
G Bibliothek für Port? Allgemeine Java-Themen 2
S Usb Port ansprechen Allgemeine Java-Themen 7
B EventListener zu einem COM Port hinzufügen Allgemeine Java-Themen 10
J COM-Port unter Windows nutzen Allgemeine Java-Themen 2
K serial-port Allgemeine Java-Themen 5
Z Parallel Port, setzen der einzelnen Pins Allgemeine Java-Themen 4
E Konflikte bei lokaler Adresse/Port Allgemeine Java-Themen 2
S Com-Port auslesen.Probleme Allgemeine Java-Themen 2
A Serial Port Probleme Allgemeine Java-Themen 4
E Seriellen Port unter Windows ansprechen Allgemeine Java-Themen 16
C Kommunikation mit USB Port Allgemeine Java-Themen 1
MiMa Grundsätzliche Frage zur Verwendung von Java Versionen?? Allgemeine Java-Themen 3
Z JNA Cpp-DLL String Verwendung Allgemeine Java-Themen 2
M WSDL: Doppelte Typenames (Keine Verwendung möglich) Allgemeine Java-Themen 5
F Klassen Verwendung abstrakter Klassen Allgemeine Java-Themen 9
K Saubere Verwendung von Generic Types Allgemeine Java-Themen 7
D Verwendung von Selenium Allgemeine Java-Themen 2
P ClassCastException bei Verwendung eines Interfaces Allgemeine Java-Themen 7
M Fehler bei Verwendung von TexturePaint Allgemeine Java-Themen 16
S OOP Apache Commons Math - Verwendung von Genetics - Wie werden Daten in Chromosomen gespeichert? Allgemeine Java-Themen 4
M Verwendung der Cipher von gnu crypto (Serpent) Allgemeine Java-Themen 3
B Verwendung von Packages im Java Code Allgemeine Java-Themen 10
P Richtige Verwendung eines Timers Allgemeine Java-Themen 8
T Warnungsfreie Verwendung von Generics Allgemeine Java-Themen 11
M Problem bei der Verwendung von AES Allgemeine Java-Themen 2
M Verwendung von unchecked exceptions & bereits vorhandenen exceptions was priorisieren Allgemeine Java-Themen 3
X Wie 'teuer' ist die Verwendung des Stack Trace ? Allgemeine Java-Themen 8
Final_Striker Exceptionhandling: Richtige Verwendung des Try/Catch Blocks Allgemeine Java-Themen 14
W Verwendung von byte Allgemeine Java-Themen 9
L Verwendung? Allgemeine Java-Themen 2
D Fehlerhafte Thread Verwendung beim arbeiten mit Sockets Allgemeine Java-Themen 6
N allg. Frage zur Verwendung von this Allgemeine Java-Themen 3
G Verwendung von DataInputStream und URL Allgemeine Java-Themen 2
C Seltsame Konstanten (und Verwendung) Allgemeine Java-Themen 15
X Exception bei Verwendung von systray4j Allgemeine Java-Themen 5

Ähnliche Java Themen


Oben