Go Down

Topic: Serial Kommunikation mit Java unter Windows (Read 573 times) previous topic - next topic

cr0n0s1

Hallöchen,

kennt jemand eine Möglichkeit seriell Daten zwischen Arduino und Windows mit Java auszutauschen?

MFG cr0n0s1

michael_x

Ja, die Arduino IDE verwendet    RXTXcomm.jar 
( braucht eine 32 bit jre )

cr0n0s1

Kann doch aber auch nicht sein.ich benutz doch die IDE auch unter 64 bit windows 7 mit 64 bit java

michael_x

#3
Jan 04, 2013, 01:06 am Last Edit: Jan 04, 2013, 01:27 am by michael_x Reason: 1
Quote
ich benutz doch die IDE auch unter 64 bit windows 7 mit 64 bit java

;) sicher ?
64 bit windows 7 und 64 bit java hab ich auch.

Code: [Select]
C:\>java -version
java version "1.6.0_25"
Java(TM) SE Runtime Environment (build 1.6.0_25-b06)
Java HotSpot(TM) 64-Bit Server VM (build 20.0-b11, mixed mode)


Aber ich habe auch einen Ordner
 C:\arduino-1.0.1\java\bin

Code: [Select]
C:\arduino-1.0.1\java\bin>.\java -version
java version "1.6.0_16"
Java(TM) SE Runtime Environment (build 1.6.0_16-b01)
Java HotSpot(TM) Client VM (build 14.2-b01, mixed mode)


Und wenn ich die IDE oder den SerialMonitor starte, sehe ich einen javaw.exe * 32

Sollte sich das in Arduino 1.0.3 geändert haben ?

[Edit: nein, hat sich nicht, ist noch die gleiche java version und das gute bewährte RXTXComm.jar von 2006 drin
Aber: ausser dass du nicht dein default java verwenden kannst, hast du sonst keine Probleme damit.
Um mit einem 8-bit Prozessor über eine 8-bit serielle Leitung zu reden, reicht auch ein 32-bit Programm.

Viel Spass
  -- michael x


cr0n0s1

Alles klar, danke eine schöne Erklärung ;)

Hab immer Internet folgendes gefunden, http://www.cloudhopper.com/opensource/rxtx/, falls man doch mal das ganze unter Windows 64 Bit starten will, aber das nur am Rande.

Kennst du dich mit der RXTXcomm Lib aus? Das senden von Java an Arduino habe ich schon zum laufen bekommen. Jetzt versuch ich allerdings das der Arduino sagen wir mal eine "0" sendet und das Java Programm darauf reagiert. Allerdings scheitere ich momentan daran.

Um ersma einen groben Überblick zu finden arbeite ich nach diesem Code: http://www.mikrocontroller.net/articles/Serielle_Schnittstelle_unter_Java#Einfaches_Beispiel_f.C3.BCr_Daten_empfangen

Mein Fehler den mir Eclipse rauswirft ist:

#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f77f1e9024d, pid=22530, tid=140153136383744
#
# JRE version: 7.0_09-b30
# Java VM: OpenJDK 64-Bit Server VM (23.2-b09 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [librxtxSerial.so+0x724d]  read_byte_array+0x3d
#
# Failed to write core dump. Core dumps have been disabled. To enable core dumping, try "ulimit -c unlimited" before starting Java again
#
# An error report file with more information is saved as:
# /home/lukas/Eigene Datein/Java/Serial/hs_err_pid22530.log
#
# If you would like to submit a bug report, please include
# instructions on how to reproduce the bug and visit:
#   https://bugs.launchpad.net/ubuntu/+source/openjdk-7/
# The crash happened outside the Java Virtual Machine in native code.
# See problematic frame for where to report the bug.
#

michael_x

Quote
#
# A fatal error has been detected by the Java Runtime Environment:
#
#  SIGSEGV (0xb) at pc=0x00007f77f1e9024d, pid=22530, tid=140153136383744
#
# JRE version: 7.0_09-b30
# Java VM: OpenJDK 64-Bit Server VM (23.2-b09 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [librxtxSerial.so+0x724d]  read_byte_array+0x3d


Tja, Native Code in Java ist gerne ein Problem

Quote
Um ersma einen groben Überblick zu finden arbeite ich nach diesem Code: http://www.mikrocontroller.net/articles/Serielle_Schnittstelle_unter_Java#Einfaches_Beispiel_f.C3.BCr_Daten_empfangen

Ich habe 64 bit Java aufgegeben und bin sicher, diesen Beispiel-Link kriegst du auch eher mit einer 32 bit JDK ans Laufen, durch Anpassung an Windows Device Namen wie "COM3:".



cr0n0s1

#6
Jan 04, 2013, 03:41 pm Last Edit: Jan 04, 2013, 03:46 pm by cr0n0s1 Reason: 1
Okay muss wohl erwähnen das ich auf Linux 64 bit umgestiegen bin. Also weisst du auch auf anhieb keine Lösung?

Bzw. kann ich jetzt einfach ein 32 bit java benutzen? Betonung auf einfach :D

michael_x


Okay muss wohl erwähnen das ich auf Linux 64 bit umgestiegen bin. Also weisst du auch auf anhieb keine Lösung?

Bzw. kann ich jetzt einfach ein 32 bit java benutzen? Betonung auf einfach :D

Oops, hätte ich auch selbst sehen können an
Java VM: OpenJDK 64-Bit Server VM (23.2-b09 mixed mode linux-amd64 compressed oops)
# Problematic frame:
# C  [librxtxSerial.so+0x724d]  read_byte_array+0x3d


Linux - Fans sind bekannt dafür, dass sie sich mal eben den c Quellcode von rxtxSerial besorgen, wenn nötig den Fehler ausbauen und sich die passende 64 bit Version der shared library neu kompilieren.

Danach ist das bisschen Java Code allerdings nicht der Rede wert ;)

Unter 64 bit windows läuft auch 32 bit Code, bei Linux weiss ich nicht, sollte aber eigentlich auch gehen (weil eben doch nicht alle sich mal eben die libraries neu kompilieren)

Go Up