This is my java code to send value to Arduino and receiving value from Arduino, can any one tell where I made a mistake, I am able to send the value but can't receive value from Arduino?
package hell;
import com.panamahitek.ArduinoException;
import com.panamahitek.PanamaHitek_Arduino;
import gnu.io.CommPortIdentifier;
import gnu.io.SerialPort;
import gnu.io.SerialPortEvent;
import gnu.io.SerialPortEventListener;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.Scanner;
import java.util.logging.Level;
import java.util.logging.Logger;
public class led extends javax.swing.JFrame
{
PanamaHitek_Arduino Arduino = new PanamaHitek_Arduino();
private BufferedReader input;
SerialPort serialPort;
public led(){
initComponents();
try {
Arduino.arduinoTX("com3", 115200);
}
catch (ArduinoException ex) {
Logger.getLogger(led.class.getName()).log(Level.SEVERE, null, ex);
}
}
public synchronized void close() {
if (serialPort != null) {
serialPort.removeEventListener();
serialPort.close();
}
}
public synchronized void serialEvent(SerialPortEvent oEvent)
{
System.out.println("lol 31");
if (oEvent.getEventType() == SerialPortEvent.DATA_AVAILABLE) {
try {
System.out.println("lol 1.1");
Scanner s = new Scanner(serialPort.getInputStream());
int mes =Integer.parseInt( s.nextLine());
System.out.println(mes);
System.out.println("lol 1");
} catch (Exception e) {
System.err.println(e.toString());
System.out.println("Syncronice ");
}
}
// Ignore all the other eventTypes, but you should consider the other ones.
}
private void jButton2ActionPerformed(java.awt.event.ActionEvent evt) {
try{
Arduino.sendByte(0);
}
catch(Exception ex){
Logger.getLogger(led.class.getName()).log(Level.SEVERE,null, ex);
}
System.out.println("led is off");
}
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
try{
Arduino.sendByte(1);
}
catch(Exception ex){
Logger.getLogger(led.class.getName()).log(Level.SEVERE,null, ex);
}
System.out.println("led is on");
}
public static void main(String args[]) {
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new led().setVisible(true);
}
});
}
private javax.swing.JButton jButton1;
try{
Arduino.sendByte(1);
}
catch(Exception ex){
Logger.getLogger(led.class.getName()).log(Level.SEVERE,null, ex);
}
System.out.println("led is on");
private javax.swing.JButton jButton2;
}
Here is my arduino code which received value from java and print value accordingly:
int val = 0;
int led = 8;
void setup()
{
Serial.begin(112500);
pinMode(led, OUTPUT);
}
void loop()
{
//delay(100);
if (Serial.available()>0)
{
val = Serial.parseInt();
if(val == 1) //Switch on the LED, if the received value is 1.
{
digitalWrite(led, HIGH);
Serial.println("Succesfully received.");
}
else if(val == 0) //Switch off the LED, if the received value is 1.
{
digitalWrite(led, LOW);
}
}
}
Thank you for your time from tenzin.
serialPort
orserialEvent
being called anywhere. And I doubt you will be able to open the port again, if it's already opened byArduino
object. Also you are reading a line from the Arduino and parse it as an integer, but the only thing you are sending from the Arduino is the string"Succesfully received."
. – gre_gor Feb 9 at 23:18