2016-11-27 11 views
0

Мне нужно отправить переменную в Arduino UNO через COM-порт на Linux Ubuntu с использованием языка программирования Java. С библиотеками JSSC или RXTX. Как:Отправка переменной на COM-порт Arduino на ubuntu с использованием Java

String text = "turn_on"; 
write(text); 

и как:

int num = 1; 
write(num); 

Мой Arduino код выглядит так:

include <SoftwareSerial.h> 

void setup() { 
    pinMode(9, OUTPUT); 
    Serial.begin(57600); 
} 
int st; 
void loop() { 
    st = Serial.read(); 
    if(st == 1){ 
    digitalWrite(9, 1); 
    } 

} 

Я попробовал этот код:

import jssc.SerialPort; 
import jssc.SerialPortEvent; 
import jssc.SerialPortEventListener; 
import jssc.SerialPortException; 

public class Test { 

    private static SerialPort serialPort; 

    public static void main(String[] args) { 

     serialPort = new SerialPort("/dev/ttyUSB2"); 
     try { 

      serialPort.openPort(); 

      serialPort.setParams(SerialPort.BAUDRATE_57600, 
           SerialPort.DATABITS_8, 
           SerialPort.STOPBITS_1, 
           SerialPort.PARITY_NONE); 

      serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_RTSCTS_IN | 
              SerialPort.FLOWCONTROL_RTSCTS_OUT); 

      serialPort.addEventListener(new PortReader(), SerialPort.MASK_RXCHAR); 

      serialPort.writeInt(1); 
     } 
     catch (SerialPortException ex) { 
      System.out.println(ex); 
     } 
    } 

    private static class PortReader implements SerialPortEventListener { 

     public void serialEvent(SerialPortEvent event) { 
      if(event.isRXCHAR() && event.getEventValue() > 0){ 
       try { 

        String data = serialPort.readString(event.getEventValue()); 

        serialPort.write(1); 
       } 
       catch (SerialPortException ex) { 
        System.out.println(ex); 
       } 
      } 
     } 
    } 
} 

Как это сделать?

+2

Опишите, что вы уже пробовали, и результаты любых исследований. (Вы искали решение своей проблемы, прежде чем задавать вопрос, не так ли? Переполнение стека не предназначено для замены базовых навыков поиска.) – MikeJRamsey56

+0

О ... извините, я забыл. Я переписываю свой вопрос. Теперь вы можете видеть –

ответ

0

Попробуйте спать после записи в последовательный порт. Настройте Arduino для управления потоком. Сначала посмотрите, работают ли обычные чтения и записи, а затем перейдите к подходу eventListener, если java пишет в arduino, arduino может читать, а затем отправлять данные из arduino и java-стороны должны быть в состоянии читать. Это устранит многие возможности. Попробуйте еще несколько других параллельных библиотек, например, SerialPundit или fazecast на github.