Forum: PC-Programmierung Serial mit Eclipse


von Steve (Gast)


Lesenswert?

Hallo zusammen
ich versuche zwischen uC und PC eine verbindung über RS232 aufzubauen. 
Das Programm auf dem uC müsste laufen da alle Tests mit einem 
Terminalprogramm erfolgreich waren. Jetzt möchte ich aber nicht immer 
nur einzelne werte die durch das terminalprogramm erzeugt werden vom uC 
verarbeiten lassen. Ich möchte dass da ein Kompletter Datenstrom 
ankommt.
Ich denke dass ich am besten mit java auf den COM Port zugreifen könnte 
und da dann ein eigens Protokoll schreiben müsste.
In der java Class Documentation habe ich auch schon nach Hinweisen 
gesucht wie ich das realisieren könnte. So wie ich das sehe müsste alles 
notwendige zur uart kommunikation unter java.io.* liegen. Jedoch finde 
ich nicht Operationen in denen man zum Beispiel die Baudrate setzt.
Meine Frage ist also: wie realisiert man eine einfachst Datenausgabe in 
java?
LG
Steve

: Verschoben durch User
von c-hater (Gast)


Lesenswert?

Steve schrieb:

> Meine Frage ist also: wie realisiert man eine einfachst Datenausgabe in
> java?

http://www.oracle.com/technetwork/java/index-jsp-141752.html

Das konntest du nicht alleine ergoogeln? Schwache Leistung...

von Steve (Gast)


Lesenswert?

schön dass du dir erlaubst meine leitung zu beurteilen.
ich kann alleine googlen und bin auch des lesens mächtig. dennoch bin 
ich nicht auf der suche nach irgendwelchen links mit denen andere user 
wahllos rumwerfen.
ich habe mit bedacht dieses forum ausgewählt , da ich der annahme war 
dass hier hilfsbereite und erfahrene user ihr wissen teilen und mir als 
anfänger unter die arme greifen würden und persönliches wissen 
weitergeben würden.
c-hater, was ist der ansporn deines posts ? mir hilft dein link 
überhaupt nicht... postes du dass nur damit du weisst dass du jemanden 
erniedrigt hast ?

von chris_ (Gast)


Lesenswert?

Hallo Steve,

vor einiger Zeit habe ich auch schon mit Java die serielle Schnittstelle 
benutzt. Dort war rxtx die beste Wahl:
http://rxtx.qbang.org/wiki/index.php/Main_Page

von chris_ (Gast)


Lesenswert?

Vielleicht funktioniert das hier noch:
http://www.hobby-roboter.de/forum/viewtopic.php?f=4&t=10

von Johannes E. (cpt_nemo)


Lesenswert?

Steve schrieb:
> mir hilft dein link überhaupt nicht...

Dann hast du dir den Link nicht wirklich angeschaut. Mit zwei Klicks 
weiter ("Java Communications 3.0 API", "SerialPort") landest du auf 
dieser Seite:

http://docs.oracle.com/cd/E17802_01/products/products/javacomm/reference/api/javax/comm/SerialPort.html

Dort sind alle Funktionen der Class SerialPort beschrieben, unter 
anderem auch "setSerialPortParams", mit der man genau das machen kann 
was du suchst:

> Jedoch finde
> ich nicht Operationen in denen man zum Beispiel die Baudrate setzt.

Also was genau ist dein Problem?

von chris_ (Gast)


Lesenswert?

>Dort sind alle Funktionen der Class SerialPort beschrieben, unter
>anderem auch "setSerialPortParams", mit der man genau das machen kann
>was du suchst:

Am hilfreichsten wäre es natürlich, wenn Du einen Link auf eine 
Demo-Implemntierung posten könntest, so wie ich es für rxtx gemacht 
habe.

von Johannes E. (cpt_nemo)


Lesenswert?

chris_ schrieb:
> Am hilfreichsten wäre es natürlich, wenn Du einen Link auf eine
> Demo-Implemntierung posten könntest

Was ist daran so schwer, einfach in Google "java SerialPort example" 
einzutippen? Da ist der erste Treffer (mit Beispiel):
http://www.mikrocontroller.net/articles/Serielle_Schnittstelle_unter_Java

Das dauert deutlich weniger als die Zeit, die man braucht, um hier im 
Forum eine Frage zustellen.

Das Forum ist vor allem dazu gut geeignet, um bei speziellen Problemen 
Fragen zu stellen, die einem Google nicht beantworten kann. Dann sollte 
man dieses spezielle Problem aber auch möglichst gut beschreiben, damit 
auch eine passende Antwort kommt.

Auf allgemeine Fragen wie in diesem Thread hier kommt selten eine gute 
Antwort.

: Bearbeitet durch User
von chris_ (Gast)


Lesenswert?

Tja, da bleibt für mich noch die Frage offen:
Was ist besser rxtx oder die Sun-API.
Vor 5 Jahren war die SUN API noch unbrauchbar, wie ist das heutzutage?

von Steve (Gast)


Lesenswert?

@johannes e.
danke dass du meine frage schonmal etwas ausfürlicher beantwortest hast. 
das hat mir schonmal geholfen. jetzt zu den detaillierten fragen :
wo gibt man an auf welchen port der der computer das signal senden soll 
(COM1,COM3,...)
und wie sendet man nachher schlicht und einfach ein byte. in anderen 
klassendokumentationen habe ich schon operationen gefunden wie z.B. 
writeData(int byte) oder ähnliches. wie realisiert man das in der klasse 
auf die dein link verweist ?

von Johannes E. (cpt_nemo)


Lesenswert?

Steve schrieb:
> wo gibt man an auf welchen port der der computer das signal senden soll
> (COM1,COM3,...)

Da du nach "COM1,COM3,..." fragst, vermute ich, dass du unter Windows 
arbeitest? Die Bibliothek von Sun unterstützt nur Linux und Unix, unter 
Windows musst du "RXTX" verwenden.

Der Zugriff auf serielle Schnittstellen und andere Hardware 
unterscheidet sich zwischen Windows und Linux zum Teil beträchtlich, du 
solltest also bei solchen Fragen immer angeben, was für ein 
Betriebssystem du verwendest.

Die Klasse "SerialPort" ist abgeleitet von "CommPort".
http://docs.oracle.com/cd/E17802_01/products/products/javacomm/reference/api/javax/comm/CommPort.html

Dort steht:

... an application should use the static method 
CommPortIdentifier.getPortIdentifiers to generate a list of available 
ports. It then chooses a port from this list and calls 
CommPortIdentifier.open to create a CommPort object.

Hier im Beispiel kannst du dir das im Quelltext anschauen:
http://www.mikrocontroller.net/articles/Serielle_Schnittstelle_unter_Java#Quelltext

In diesem Beispiel wird auch etwas über die Schnittstelle gesendet.

von Steve (Gast)


Lesenswert?

ich arbeite mit win8 und als programmieroberfläche benutze ich eclipse.
die seite mit den beispielquellcodes habe ich mir auch schon angesehen. 
bei mir scheitert es schon am ersten kleinen programm "ErsteSchritte" . 
Es treten probleme mit import gnu.io.* auf. "the import gnu cannot be 
resolved" wird angezeigt. woran kann das liegen?

von Johannes E. (cpt_nemo)


Lesenswert?

Steve schrieb:
> Es treten probleme mit import gnu.io.* auf. "the import gnu cannot be
> resolved" wird angezeigt. woran kann das liegen?

Hast du die Bibliothek installiert?


So wie du deine Fragen stellst, vermute ich, dass du noch nicht sehr 
viel Erfahrung mit Programmierung in Java hast.

Ich will dich auch nicht davon abhalten, Java dafür zu verwenden; für 
solche Projekte wie z.B. zur Kommunikation mit Mikrocontrollern sind 
Skript-Sprachen wie z.B. Python aber auch sehr gut geeignet.

Da würde das z.B. so aussehen:
1
import serial
2
Port = serial.Serial(0)
3
Port.write("Hallo")

Ausfühliche Doku:
http://pyserial.sourceforge.net/shortintro.html#opening-serial-ports

Vielleicht wäre das eine Alternative für dich.

von Steve (Gast)


Lesenswert?

wie installiere ich die bibliothek denn ?
java.util.Enumeration habe ich dann anscheinend korrekt installiert,weil 
da keine meldung kommt.beim dialog der kommt wenn man eine neue klasse 
erzeugt habe ich enumeration unter "Interfaces" hinzugefügt . "gnu" habe 
ich da nicht gefunden. oder wie geht das mit dem installieren der 
bibliothek ?

von Johannes E. (cpt_nemo)


Lesenswert?

Steve schrieb:
> oder wie geht das mit dem installieren der bibliothek ?

Du solltest dich wirklich mal mit Google vertraut machen:
http://rxtx.qbang.org/wiki/index.php/Installation
http://rxtx.qbang.org/wiki/index.php/Installation_for_Windows

von Steve (Gast)


Lesenswert?

finde ich ja ganz toll dass du das jetzt für mich gegooglst hast,aber 
auf so einen kommentar kann ich auch verzeichten. denkst du ich bin 
komplett dumm ?
ich versuche hier was neues zu lernen wovon ich noch nicht viel weiss. 
ich weiss wie man google benutzt. ich bin nicht auf der suche nach 
irgendwelchen links wo auf englisch erklärt wird wie man das macht. dann 
könnte ich das mit dem forum auch lassen. ich suche nach meinungen und 
tipps von erfahrenen die mir in eigenen worten einen lösungsansatz 
präsentieren können und nicht nach leuten die mich beleidigen.

von domian (Gast)


Lesenswert?

Die Qualifikation eines fragenden erkennt man primär an seinen 
Fragestellungen.

1. Es gibt tausende Beispielcodes für RXTX
2. Du willst vorgekaute Brühe haben ohne ein Stück Eigeninitiative zu 
zeigen

Wir sind hier keine bezahlten Beamten die dir das Denken abnehmen 
werden.

Ich habe das Problem fuer mich in 10 Sekunden gelöst.

1. Google: rxtx java example code
2. Erster Hit auf Google: http://rxtx.qbang.org/wiki/index.php/Examples

von Steve (Gast)


Lesenswert?

wie schon gesagt: ich suche nach persönlichen erfahrungen.
ich habe rxtx installiert so wie es auf der seite bechriben war. jedoch 
habe ich keine datei mit dem namen RXTXcomm.jar gefunden.war das bei 
euch ähnlich ? und wenn ja was habt ihr dann gemacht ? natürlich findet 
mein eclipse gnu.io.* auch jetzt nicht.
Oder habe ich das von anfang an falsch aufgezogen?
ich ertstelle ein project in eclipse und dann im project eine klasse die 
z.B. ErsteSchritte heisst. muss ich im dialog "new java class" jetzt 
noch irgendwas außer den namen verändern ?

von Johannes E. (cpt_nemo)


Lesenswert?

Wenn du die DLLs gefunden hast, solltest du auch die jar-Datei finden. 
Ansonsten einfach gooogeln!

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Steve schrieb:
> ich suche nach persönlichen erfahrungen.

Meine persönliche Erfahrung: Wenn man die Grundlagen von Java beherrscht 
ist RXTX zumindest erst mal recht einfach einzubinden.

Wenn man dann noch Eventbasierte Programmierung verstanden hat ist die 
Nutzung Problemlos.

Wenn es bei dir aber schon am einbinden einer Lib in Eclipse scheitert, 
solltest du dich erst mal diesem "Problem" zuwenden, da helfen dir auch 
nicht 100 Beispielcodes.

von domian (Gast)


Lesenswert?

Steve schrieb:
> ich ertstelle ein project in eclipse und dann im project eine klasse die
> z.B. ErsteSchritte heisst. muss ich im dialog "new java class" jetzt
> noch irgendwas außer den namen verändern ?

Tut mir leid wenn ich dich jetzt hart mit der Realität konfrontiere:

Die fehlen die fundamentalsten Kenntnisse in Java. Vielleicht solltest 
du mit einem Buch und Hello World beginnen.

Du kannst kein Dach auf ein Haus setzen ohne ein stabiles Fundament zu 
haben.

von Steve (Gast)


Lesenswert?

jo das is mal ne aussage . danke dafür !
welches buch könntest ihr mir denn empfehlen ?

von Kaj (Gast)


Lesenswert?

Steve schrieb:
> welches buch könntest ihr mir denn empfehlen ?

Dein ernst...?
Google hilft dir da sehr gerne weiter...
http://openbook.galileocomputing.de/javainsel/
musst nicht mal was fuer bezahlen

von chris_ (Gast)


Lesenswert?

Für den Anfang ist dieses Buch sehr zu empfehlen:
http://www.oreilly.de/headfirst/

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.