How to communicate with arduino and java in serial port? - java

I was trying to send a message to Arduino (to test if the Arduino received any message the motor will turn on), the following code works if I run on Terminal
echo 1 > /dev/ttyACM0
But I tried this in Java
Runtime.getRuntime().exec("echo 1 > /dev/ttyACM0");
Anyone knows how to execute in Arduino Serial port?

I used the RXTX lib for Java serial connections.
Very similar code to what worked for me is shown here:
https://embeddedfreak.wordpress.com/2008/08/08/how-to-open-serial-port-using-rxtx/

Try RXTX library, this is Java wrapper for the serial port. Project website.
Example: source

Java doesn't provide support for serial communications out of the box. You need to use a 3rd party library or extension.
Oracle do provide one - Java Communications API
http://www.oracle.com/technetwork/java/index-jsp-141752.html
I have used this in the past with AVR Micro-controllers. There are several tutorials on the net to get it up and running.

Related

ASTM 1381-02 Serial Interfacing with Medical Lab equipment

Has anybody successfully interfaced Medical Lab devices like Cell Counters /ABG instruments to mirth connect using ASTM 1381-02 or similar protocols over serial port. I am working on a small project. I need the data transmitted by the machine in ASTM format to a text file/ to a database and I cannot afford to pay $30000 for mirth commercial support. I need a low cost or open source solution.
I was expecting MLLP listener to be off use but it seems to work with TCP and I have to make it work purely on serial communication.
Secondly
I tried writing ASTM serial data receiver in Java. But control characters such as ACK, STX, ETX, ETB, and other delimiters are not visible in terminals be it in Win 7 cmd or Netbeans/Eclipse console. Making me helpless in parsing the data.
Any help will in right direction be deeply appreciated.
If you are under Linux environment you may use COM port redirector to a given TCP port and use Mirth's TCP Listener to intercept that flow.
E.g., to pipe the serial port through netcat:
netcat ipaddress port < /dev/ttyS0
Or using socat:
socat pty,link=/dev/virtualcom0,raw tcp:ipaddress:port&
(check for correct parameters)
I recognize 2 problems:
First, is it possible to raise an ftp service on the windows PC? if so, you only need to create a file reader addressed to ftp to capture the txt with the ASTM.
Second, to determine the characters of start and end of message I recommend you read the information of the provider, if you do not have it available, I suggest you use notepad ++ to see the hidden features. I hope you help.
Just FYI there is a commercial extension available that provides ASTM E1381 support: https://www.nextgen.com/products-and-services/integration-engine?extension=astm-transmission

how to read virtual serial port of MIB520

i need to read from my Pc the serial port that connected with MIB520 usb board ?
if i know the sequence of the data received byte by byte then can i use C# or any tool to read this port ??
i have iris and MicAz motes that read gps packet then they send them to the mote which attached to the MIB520 usb board.
note: that MIB 520 use two virtual ports,it use FTDI FT2232C
This is a pretty general question about connecting to serial ports via USB, so I'll point you to some sources of general information.
First of all, your machine will need to have the FTDI drivers installed.
If you want to manually interact with the serial device by typing commands and reading responses, you can use a terminal emulator like minicom or gtkterm. This question has some related information in the answers.
If you are looking for a java serial library, there are several you could try:
RXTX
serterm: An example project built with RXTX
javax.comm
jSSC

Get Arduino binary from a COM port using Java

I want to get Arduino code onto a virtual serial port instead of the actual Arduino. The IDE sends binary code to the Arduino through the COM port which in this case will be a virtual COM port and no Arduino.
I want to read and store the code that is being uploaded into the COM port. I have tried several Java libraries (RXTX, jSSC and the gnu.io), but I can't read what's on the COM port as it will always give the exception that it is being used by another application (which is the Arduino IDE). So I want to upload Arduino code on a virtual port and on the other end of this port there is a Java application which can read what is being sent to this port.
Related question: Upload Arduino code on virtual serial port through Arduino IDE.
If a solution is available or easier in any other language I'm open.
At the moment it sounds like you're trying to read and write to the same port with two applications, and expect to get the output of one on the input of the other - it doesn't quite work like that. Think of the COM port as one end of the stream you can read and write to, rather than the stream itself - hence when you tell more than one process (in your case the Arduino and your Java program) to read / write both from the same end, it will fail.
I believe what you're after is a null-modem emulator. Use something like com0com to create a pair of virtual COM ports, where the input on one will appear as the output on another (and vice versa.) You can then go about things relatively normally, writing to one COM port in the pair with the Arduino IDE and listening on the other COM port with your Java program, using jssc, RXTX or any other serial library you choose.

Java SSH Tunneling for an IRC chat

My program connects to an IRC room on freenode.net, it uses port 6667, apparently that port is blocked in my college so the project doesn't work there (I wish I had known that before I proposed that one, but it's due the next week so I can't make a new project now). I read that it was possible to tunnel that connection, but I'm not sure how to do it.
I read I had to use an SSH library but I can't find one that helps me tunneling the connection using a socket.
I found a package called ssh in MindTerm but a really old one, that basically does the process (I think) using these lines:
SSHSocketFactory fact = new SSHSocketFactory("ssh.freessh.biz", 22, new SSHPasswordAuthenticator("freessh", "7QO5dkmg<"));
ventanachat.socket = fact.createSocket(servidorirc, puerto);
It gives me: java.io.IOException: MindTerm do not support SSHv2 yet, enable SSHv1 compatibility in server
So I tried a new version that has ssh2 support, but I just can't get the same process since classes are different here and there's no documentation.
The socket is basically Socket socket = new Socket ("irc.freenode.net", 6667);
I am wondering what library could I use, and how?
You are liable to get into trouble for circumventing blocks of the IRC port.
I've got another idea. Download and install IRC server software on the machine you are doing development on. Then you should be able to connect to it from your client without anything blocking the port. (And if you still run into port problems, just configure the client and server use a different one.)
Alternatively, look at the answers to this SO question: Simple SSH Tunnel in Java
There's a couple of SSH libraries for Java present on the market and most of them support SSH tunneling. We offer SecureBlackbox product (Java edition) which has samples (including tunneling), documentation and support.
Ganymed and Jsch both support SSH tunnelling, and both are free.

Reading remote control signals from java application

Can I write a java application that uses RxTxComm
to get signals from a remote control send to my serial receiver?
I have a RS-232 receiver I am listening on that com port for incoming bytes.
When I press any button on my remote control I don't see any data arriving to my serial port.
What am I missing here?
Should I see any data?
How does lirc do it ?
It is sovled here: http://commjava.blogspot.com/ have a look at it. (Be aware that they use proprietary third party code)
Lirc is not in java, their solution won't help you.

Categories