2016-12-01 62 views
0

我的Java代碼如下:無法將數據寫入使用JSSC 2.8.0到Arduino的

import jssc.SerialPort; 
import jssc.SerialPortException; 
import jssc.SerialPortList; 
public class SerialPort1{ 
public static boolean sentBytes; 
    //public SerialPort serialPort; 

    public static void main(String[] args) { 
     // get computer serial ports names 
     String[] portNames = SerialPortList.getPortNames(); 
     for (String port : portNames) { 
     System.out.println(port); 
     } 


     // inicialization with selecting port for communication 
     SerialPort serialPort = new SerialPort("/dev/ttyACM0"); 

     try { 
     // open port for communication 
     serialPort.openPort(); 
     serialPort.setParams(SerialPort.BAUDRATE_9600, 
       SerialPort.DATABITS_8, 
       SerialPort.STOPBITS_1, 
       SerialPort.PARITY_NONE,false,true); 
     serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); 
     // byte data transfer 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     serialPort.writeInt(1); 
     try { 
      Thread.sleep(1000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     System.out.println(serialPort.readString()); 

     // close port 
     serialPort.closePort(); 
     } catch (SerialPortException ex) { 
     System.out.println(ex); 
     } 
    } 
} 

我能夠從Arduino的閱讀。但是,我無法寫任何東西給Arduino。如果有人幫我解決這個問題,那真是太好了。

我的Arduino代碼:

void setup() { 
    Serial.begin(9600); 
    } 

    void loop() { 
    Serial.println("Android"); 
    delay(2000); 
    } 

我下載了JSSC庫從here

回答

0
import jssc.SerialPort; 
import jssc.SerialPortException; 
import jssc.SerialPortList; 
public class SerialPort1{ 
public static boolean sentBytes; 
    //public SerialPort serialPort; 

    public static void main(String[] args) { 
     // get computer serial ports names 
     String[] portNames = SerialPortList.getPortNames(); 
     for (String port : portNames) { 
     System.out.println(port); 
     } 


     // initialization with selecting port for communication 
     SerialPort serialPort = new SerialPort("/dev/ttyACM0"); 

     try { 
     // open port for communication 
     serialPort.openPort(); 
     serialPort.setParams(SerialPort.BAUDRATE_9600, 
       SerialPort.DATABITS_8, 
       SerialPort.STOPBITS_1, 
       SerialPort.PARITY_NONE,false,true); 
     serialPort.setFlowControlMode(SerialPort.FLOWCONTROL_NONE); 
     // byte data transfer 
     try { 
      Thread.sleep(2000); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 
     serialPort.writeInt(1); 
     try { 
      Thread.sleep(200); 
     } catch (InterruptedException e) { 
      e.printStackTrace(); 
     } 

     System.out.println(serialPort.readString()); 

     // close port 
     serialPort.closePort(); 
     } catch (SerialPortException ex) { 
     System.out.println(ex); 
     } 
    } 
} 

所有我需要做的就是打開串口後加入2000毫秒的睡眠,然後添加寫入Arduino後200ms睡眠。 此外,Arduino代碼中的延遲時間縮短爲200ms。

void setup() { 
    Serial.begin(9600); 
} 

void loop() { 
    Serial.println("Android"); 
    delay(200); 
}