2016-11-27 39 views
0

我需要通过Linux Ubuntu上的COM端口使用Java编程语言将变量发送给Arduino UNO。使用库JSSC或RXTX。像:使用Java在ubuntu上发送变量到Arduino COM端口

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

描述你已经尝试了什么和任何研究的结果。 (你在问之前已经找到了解决问题的办法,是不是?Stack Overflow并不意味着取代基本的搜索技巧。) – MikeJRamsey56

+0

哦......对不起,我忘了。我重写我的问题。现在你可以看到 –

回答

0

尝试写入串行端口后休眠。配置Arduino进行流量控制,首先看看正常的读写是否正常工作,然后移动到eventListener方法意味着如果java写入arduino,arduino能够读取,然后从arduino发送数据并且java端应该能够读取。这将消除许多可能性。进一步尝试一些其他类似的库也像SerialPundit或github上的fazecast。