Java NetBeans отправляет значение и получает значение от Arduino
Это мой Java-код для отправки значения в Arduino и получения значения от Arduino. Кто-нибудь может сказать, где я ошибся? Я могу отправить значение, но не могу получить значение от 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;
}
Вот мой код Arduino, который получает значение из Java и печатает его соответствующим образом:
int val = 0;
int led = 8;
void setup() {
Serial.begin(112500);
pinMode(led, OUTPUT);
}
void loop() {
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);
}
}
}
ПРАВКА: Нет проблем с управлением arduino с помощью кода Java, проблема в том, что я не могу получить сообщение от Arduino для отображения на Java.
@Stenzin lobsang, 👍0
Обсуждение1 ответ
Вы записываете число в виде одного байта и ожидаете, что оно будет в виде строки на другом конце.
Заменить
val = Serial.parseInt();
с
val = Serial.read();
извините, я забыл упомянуть, что нет никаких проблем с управлением arduino с помощью java-кода, проблема в том, что я не могу получить сообщение от arduino для отображения в java.., @Stenzin lobsang
я добавил код java jbutton для управления arduino, @Stenzin lobsang
- Команда strtok() с Serial связью
- Как изменить переменную при нажатии кнопки, подключенной к контакту 2
- Как программно обнаружить последовательный порт Arduino на разных платформах?
- Почему нужно использовать latin-1 вместо utf-8 при использовании python с arduino?
- Акцептант векселей ИКТ
- Использование последовательной связи в .c-файлах
- Соединение I2C с модулем камеры MT9D111, странные результаты после записи регистров через i2C
- ПК не может получить доступ к порту HC-06 Bluetooth COM
Я не вижу никакой инициализации
SerialPort
илиserialEvent
, вызываемых где-либо. И я сомневаюсь, что вы сможете снова открыть порт, если он уже открыт объектом "Arduino". Кроме того, вы читаете строку из Arduino и анализируете ее как целое число, но единственное, что вы посылаете из Arduino, - это строка"Успешно получено"., @gre_gor