Ansteuerung RS232 Schnittstelle

ck84vi

Mitglied
Hallo Leute,

ich bin neu hier, wie auch in der Java Welt generell, und möchte euch erstmal alle begrüßen.

Natürlich habe ich auch einen Grund warum ich gleich mal poste.

Vorab: Ich habe schon einige Stunden gegoogelt aber noch nichts gefunden was mir wirklich hilft, kann aber daran liegen dass ich mich mit Java und Eclipse noch zu wenig auskenne.

Problem:

Ich möchte gerne ein Programm entwickeln mit dem ich auf die serielle Schnittstelle lesend und schreibend zugreife. Das ganze soll natürlich in JAva geschehen. Wenns fertig ist soll es es auf einem Rechner mit Win XP prof 32 bit laufen.
Entwickeln will ich das alles auf meinem Windwos 7 Rechner 64 Bit.

Und somit kommt es zu meiner ersten Frage:
Welche API soll ich verwenden?
Javax.comm oder RXTX?

Ist es egal ob ich das ganze auf einem Windows 7 rechner entwickle, oder kann es sein dass die API das nicht unterstützen?

Danke im Voraus!
 

Ralph-Uwe

Bekanntes Mitglied
Guten Morgen,

ich habe RXTX verwendet, da es die Funktion
writeBytes zur verfügung stellt.
Ich habe eine Kommunikation mit einem Drucker aufgebaut und dafür
ist diese Funktion bestens geeignet.
 

ck84vi

Mitglied
guten Morgen,

Danke.
Aber kann es da irgendwelche komplikationen mit Win7 64 Bit geben ode rist das komplett egal?

Danke im Voraus
 
S

Spacerat

Gast
Also wenn du die richtige Version findest ist's relativ egal. Cloudhopper : RXTX
Was man alles bei Java in 64-Bit beachten muss, sollte klar sein (64-Bit-JVM -> 64-Bit Binarys, 32-Bit-JVM -> 32-Bit Binarys), mischen ist "tödlich"... zumindest für die Anwendung.
 
S

Spacerat

Gast
Eine wirklich sichere Erkennung gibt es dafür nicht. In der Standard-Oracle-VM (ehemals Sun) lässt sich dieses z.B. über die Systemeigenschaft [c]System.getProperty("os.arch")[/c] feststellen. Eine 64-Bit-JVM wird in XP64, Vista64 oder Win7-64 standardmässig im Ordner "Programme" (statt in "Programme (x86)") abgelegt.
 
Zuletzt bearbeitet von einem Moderator:

ck84vi

Mitglied
Danke,

ich hab zur sicherheit nochmal alles deinstalliert bzw gelöscht.
Und dann alles nochmal neu genau nach den anleitung installiert.
jetzt werd ich dann mein glück mal mit der inbindung von rxtx und den beispielprogrammen versuchen.
da kommen sicher noch fragen.

Aber danke erstmal!
 

egos

Mitglied
Hallo zusammen
auch ich versuche, eine RS232 Schnittstelle für eine Modellbahnsteuerung anzusprechen. Mein eigentliches Problem ist, die richtigen Dateien RXTXcomm.jar und Serial.dll für mein Betriebssystem zu finden. Mein Rechner arbeitet mit Windows XP64. Installiert ist Java jdk-7u45-windows-x64.exe, das würde eigentlich passen. Der meist angegebene Link auf die Seite von Cloudhopper ist leider seit längerem deaktiviert. Gibt es einen guten Ersatz für den Download?
(Wo die Dateien hin kopiert werden müssen, habe ich in diesem Forum gefunden.)
Vielen Dank für die Hilfe.
Gruss Oski
 

egos

Mitglied
Danke Ralph-Uwe
Habe die Dateien heruntergeladen und platziert. Der Fehler ist leider nicht verschwunden. Der 'CommonPortIdentifier' kann immer noch nicht zugeordnet werden. Ich suche mal weiter.
Gruss Oski
 
Zuletzt bearbeitet:

Ralph-Uwe

Bekanntes Mitglied
Wie sieht den Dein Quellcode aus?

Java:
public class Metronic extends javax.swing.JFrame implements ActionListener 
{
    private static CommPortIdentifier comPort = null;
    private static SerialPort com1;
    private static String port = "COM1";
    private static CommPortIdentifier comPort = null;
    private static DataInputStream in;
    private static DataOutputStream out;
    private static boolean nak = false;
    ...


       /**
        *  Comport initialisieren 
        */
        try {
               comPort = CommPortIdentifier.getPortIdentifier(port); 
               com1 = (SerialPort) comPort.open("Metronic", 5000);
               com1.setSerialPortParams(38400, SerialPort.DATABITS_8,SerialPort.STOPBITS_1,SerialPort.PARITY_EVEN);
               com1.notifyOnDataAvailable(true);
               com1.addEventListener( new CommListener());
               in = new DataInputStream(com1.getInputStream());
               out = new DataOutputStream(com1.getOutputStream());
           } catch (UnsupportedCommOperationException e) {
               e.printStackTrace();
             
           } catch (TooManyListenersException e) {
               e.printStackTrace();
           } catch (NoSuchPortException e) {
               e.printStackTrace();
               infoAusgeben("ComPort ungültig\r\n\r\nProgramm beenden\r\nin den Datei:\r\nc:/ProduktListe/produktListe.xls unter Parameter\r\nden Port einstellen\r\ndanach neu starten");
           } catch (IOException e) {
               infoAusgeben("Programm mehrfach geöffnet");
        	   e.printStackTrace();
           } catch (PortInUseException e) {
        	   e.printStackTrace();
        	   infoAusgeben("Programm mehrfach geöffnet\r\noder ComPort wird von einer anderen Anwendung benutzt!");
           }

das ist ein Auszug von mein Code. Wahrscheinlich wirst Du davon nicht alles gebrauchen können.
Betrachte es als Pseudocode.

Ralph-Uwe
 

egos

Mitglied
Guten Abend Ralph-Uwe
Meine Quellecode sieht so aus:
[Java]
//==================================================================================================================================
// class SerialCommSelectrix
//==================================================================================================================================
public class SerialCommSelectrix {

private MainFrame m_frmMain = null;
private MessageLog m_MessageLog = null;

private CommPortIdentifier m_CommPortIdentifier = null; //<- Fehler 1
private CommPort m_CommPort = null; //<- Fehler 2
private InputStream m_InputStream = null;
private OutputStream m_OutputStream = null;

private String m_sPortName = null;
private int m_iBaudRate = 0;
private int m_iDatabits = 0;
private int m_iStopbits = 0;
private int m_iParity = 0;

[/Java]

Der Fehler 1 wird mit der Antwort beschrieben: "CommPortIdentifier cannot be resolved to a Type"
Der Fehler 2 wird mit der gleichen Antwort beschrieben: "CommPort cannot be resolved to a Type"

Bevor du jetzt zu weit suchst, möchte ich klar stellen, ich bin eine absolute "Anfänger-Pfeife" in Java, wenn du verstehst, was ich meine. Ich habe den Quellcode von einem Kollegen (er ist Profi-Programmierer in Java) erhalten, der auch noch nicht weiss, warum es nicht läuft.

Immerhin habe ich aus den verschiedenen Posts gelernt, dass rxtxSerial.dll und rxtxParallel.dll gleichzeitig gespeichert sein müssen. Der Fehler verschwand allerdings nicht.
Aus deiner Antwort habe ich gelernt, dass der Port am PC initialisiert werden muss. Ist eigentlich logisch, wenn das angeschlossene Gerät keine eigene Intelligenz aufweist.
Nur, an meinem PC ist gar kein serieller Port vorhanden. Ich habe nur 5 USB-Ports. Der Händler (Peter Stärz, 02977 Hoyerswerda) lieferte eine DVD, mit der ein Converterprogramm USB-RS232 installiert werden konnte. Das schien erfolgreich gelungen zu sein.

Ich denke, es sind eine Gruppe von Fehlern gleichzeitig vorhanden. Einzelne Korrekturen, auch wenn sie richtig sind, helfen noch nicht wirklich. Das macht sie Sache ein wenig schwierig.

Ich sammle Ideen, und versuche mein Bestes. Falls ich auf die Lösung (egal mit welcher Hilfe) stosse, werde ich hier den Code publizieren.

Auf jeden Fall danke ich dir, dass du dich meinem Stümper-Problem überhaupt annimmst.
Herzliche Grüsse
Oski
 

Ralph-Uwe

Bekanntes Mitglied
Ich verstehe gerade nicht wann Du diesen Fehler bekommst.
Gibt die IDE diese Meldung aus, oder bekommt Du sie erst beim Compilieren?

Was Du in Deinem Code machst, ist eine Globale Variable zu erstellen. Diese Variable muß
aber noch richtig zugeordnet werden:

Code:
  comPort = CommPortIdentifier.getPortIdentifier(port);

"CommPort" habe ich in meinem Code gar nicht verwendet.

Ralph-Uwe
 

egos

Mitglied
Guten Abend Ralph-Uwe
Der Fehler wird bereits im Code angezeigt, also bevor das Programm startet. In den Zeilenanfängen ist dann ein rotes Kreuz markiert. Mein Programm erzeuge ich mit Eclipse.
Ich muss noch ein wenig detaillierter suchen und verstehen. ComPort oder CommPort ist meiner Meinung nach nicht wichtig, wenn es immer "falsch" geschrieben wird. Ich pinkle mir vielleicht aber ans eigene Bein, wenn in der dll so ein Name vorgegeben sein sollte, und ich das nicht weiss. Ich teste auch diesen Ratschlag und melde mich wieder.
Freundliche Grüsse
Oski
 
Zuletzt bearbeitet:

egos

Mitglied
Hallo Ralph-Uwe
Nun ist das Problem gelöst. Ich habe nochmals alles gelöscht inkl. Eclipse und dann neu installiert. Alle Dateien sind an den verlangten Orten abgespeichert. Der Fehler lag bei der Referenzierung der Datei RXTXcomm.jar. Da stand im Rootverzeichnis hinter dem Dateieintrag "None". In der Maske "Java Build Path" hatte ich "die Schaltfläche "Add External JARs..." nicht verwendet, darum fehlte die Zuordnung.
Nach dieser Zuordnung sind die Fehler verschwunden. Mittlerweile kann ich auf die Zentraleinheit zugreifen.
Besten Dank für die Tipps!
Herzliche Grüsse
Oski
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
WPS1000 Input/Output Wie aktiviere ich den Daten Transfer von der RS232 in meine Java Applikation Java Basics - Anfänger-Themen 2
B RS232 - UnsatisfiedLinkError: no rxtxSerial Java Basics - Anfänger-Themen 17
T RS232/USB-Signale in Java weiterverarbeiten Java Basics - Anfänger-Themen 2
N Rs232 an Laptop anschliessen und ansteuern Java Basics - Anfänger-Themen 11
J RxTx/RS232 Kommunikation (TwoWay) Java Basics - Anfänger-Themen 10
R Rxtx Rs232: I Can t send to the port Java Basics - Anfänger-Themen 5
R rxtx und RS232 Java Basics - Anfänger-Themen 2
J Rs232 (ComPORT) unter Java Java Basics - Anfänger-Themen 15
A RS232 und Microcontroller - einige Fragen Java Basics - Anfänger-Themen 7
G RS232 Java Basics - Anfänger-Themen 2
W RS232: Daten empfangen,bearbeiten,ausgeben Java Basics - Anfänger-Themen 2
M Bitmuster eines Strings über RS232 senden Java Basics - Anfänger-Themen 5
G String zur RS232 senden und mit cr abschließen! Java Basics - Anfänger-Themen 4
C Datenselektion mit der »Predicate«-Schnittstelle Java Basics - Anfänger-Themen 5
G Schnittstelle via WSDL Java Basics - Anfänger-Themen 7
Queiser Datentypen 2 generische Datentypen für eine Schnittstelle Java Basics - Anfänger-Themen 1
V Schnittstelle einer Klasse? Java Basics - Anfänger-Themen 3
D Schnittstelle-Code vom Programm Trennen Java Basics - Anfänger-Themen 5
K [Schnittstelle] JavaProject mit Arduino verbinden Java Basics - Anfänger-Themen 5
B Schnittstelle Java Basics - Anfänger-Themen 7
H Serielle Schnittstelle Java Basics - Anfänger-Themen 1
S Nutzung einer implementierten Schnittstelle Java Basics - Anfänger-Themen 3
R Interface Datentyp bei Erzeugung eines Objekts, dessen Klasse eine Schnittstelle implementiert Java Basics - Anfänger-Themen 18
HoloYoitsu args-Parameter durchschleifen (Schnittstelle erweitern?) Java Basics - Anfänger-Themen 27
Luk10 OOP Sehr allgemeine Schnittstelle Java Basics - Anfänger-Themen 19
K Schnittstelle - Interface unklar Java Basics - Anfänger-Themen 4
W Übergabe Stringzeilen von serieller Schnittstelle in andere Klasse Java Basics - Anfänger-Themen 3
R Gibt es eine (Schnittstelle) für .ini Datei Formatierungen? Java Basics - Anfänger-Themen 8
S Objekt durch Schnittstelle ersetzen Java Basics - Anfänger-Themen 2
S Schnittstelle für Datenbank bzw. Dateiformat Java Basics - Anfänger-Themen 2
M Problem mit Schnittstelle Java Basics - Anfänger-Themen 6
I externe JAVA-Schnittstelle einbinden Java Basics - Anfänger-Themen 2
D Frage zur Verwendung einer Schnittstelle Java Basics - Anfänger-Themen 4
D In eclipse Methode von Schnittstelle zum Laufen bringen? Java Basics - Anfänger-Themen 14
C Zugriff auf serielle Schnittstelle Com Port Java Basics - Anfänger-Themen 13
G Allgemeine Schnittstelle für Ausgabe? Java Basics - Anfänger-Themen 5
G Kartenleser über Serielle-Schnittstelle auslesen Java Basics - Anfänger-Themen 2
M Braucht jede Klasse eine Schnittstelle ? Java Basics - Anfänger-Themen 4
K ASCII Schnittstelle. Java Basics - Anfänger-Themen 3
M serielle Schnittstelle zu Kartenleser Java Basics - Anfänger-Themen 2

Ähnliche Java Themen

Neue Themen


Oben