zondag 29 april 2012

Seriele communicatie vanuit javaVM werkt!

Voordat ik de Dreamplug server heb besteld heb ik getest of ik met een nullmodem kabel vanuit linux commnadline kon lezen en schrijven naar en van de USB -> RS232 converter. Dit was gelukt met 2 USB->RS232 converters en een null-modem kabel.

Door eerst een dmesg te doen zie je welk ttyXXX zijn aangemaakt voor je USB -> RS232 converter.

[23456.965703] usbcore: registered new interface driver usbserial_generic
[23456.965718] usbserial: USB Serial Driver core
[23457.039061] USB Serial support registered for pl2303
[23457.039174] pl2303 1-1.2.1:1.0: pl2303 converter detected
[23457.044429] usb 1-1.2.1: pl2303 converter now attached to ttyUSB0
[23457.044477] pl2303 1-1.2.2:1.0: pl2303 converter detected
[23457.046868] usb 1-1.2.2: pl2303 converter now attached to ttyUSB1
[23457.046915] pl2303 1-1.2.3:1.0: pl2303 converter detected
[23457.053631] usb 1-1.2.3: pl2303 converter now attached to ttyUSB2
[23457.053691] pl2303 1-1.2.4:1.0: pl2303 converter detected
[23457.071176] usb 1-1.2.4: pl2303 converter now attached to ttyUSB3

vervolgens kun je de settings van de tty poort instellen met 'stty -F /dev/ttyUSBx 9600'.
Als de poorten ingesteld zijn kun je m.b.v. cat en echo schrijven en lezen naar en van de communicatie poort.



Nu heb de communicatie gestest om vanuit Java te communiceren over de USB->RS232 converter.
Hiervoor heb ik eerst librxtx-java geinstalleerd met 'apt-get install librxtx-java'. Dit installeerd te benodigde c libraries, jni interfaces en de java library RXTXcomm-2.2-pre2.jar.

Dit heb je nodig om vanuit de VM de communicatie poort te kunnen berijken.

Vervolgens heb ik 2 java voorbeelden gebruikt om te testen of de communicatie werkt. Hiervoor heb SimpleWrite.java en SimpleRead.java met SimpleSnuV1.java gebruikt.

Eerst de SimpleWrite.java bouwen:
javac -verbose -classpath /usr/share/java/RXTXcomm.jar SimpleWrite.java

Daarna runnen:
java -classpath /usr/share/java/RXTXcomm.jar:/root/rxtxTestApplication/ SimpleWrite

Nu zie je aan de andere kant een teller opgehoogd worden dat geschreven wordt vanuit SimpleWrite.
Dit werkt dus! :-D



Als laatste heb ik ook het lezen van de poort gestest met SimpleRead.java met SimpleSnuV1.java.

Eerst bouwen:
javac -verbose -classpath /usr/share/java/RXTXcomm.jar SimpleRead.java
javac -verbose -classpath /usr/share/java/RXTXcomm.jar SimpleSnuV1.java

Dan de SimpleSnuV1 starten:
java -classpath /usr/share/java/RXTXcomm.jar:/root/rxtxTestApplication/ SimpleSnuV1 /dev/ttyUSB1&
java -classpath /usr/share/java/RXTXcomm.jar:/root/rxtxTestApplication/ SimpleRead /dev/ttyUSB0&

Als alles werkt krijg je deze output:
Data Available
--> atz
Data Available
Data Available
Data Available
atz
OK Sent
<-- OK
Data Available
--> atdxxxxx
Data Available
Data Available
Data Available
atd021891383
<-- CONNECT 9600
Yahoooo OK...
Normal Exit...

Geen opmerkingen:

Een reactie posten