2016-08-13 78 views
1

我正嘗試連接arduino與java通過使用串行通信。爲了這個目的,我使用了一個jssc庫。但是,當我運行Java程序併發送字符串「1」然後led不發光,它應該不斷髮光。但是當我發送字符串「1」arduino串行監視器它會不斷髮光,直到我發送任何其他字符串。 我該怎麼做才能在java中獲得與在Arduino串行繪圖儀中相同的結果。** 這裏是我在Java代碼NetbeansJSSC不閃爍Arduino中的led燈

package javajssctest; 

import jssc.SerialPort; 
import jssc.SerialPortException; 

/** 
* 
* @author Abdullah Sajid 
*/ 
public class JavaJSSCTest { 

    /** 
    * @param args the command line arguments 
    */ 
    public static void main(String[] args) { 
     SerialPort serialport = new SerialPort("COM4"); 
     try{ 
      serialport.openPort(); 
      serialport.setParams(9600, 8, 1, 0); 
      serialport.writeString("1"); 
      serialport.closePort(); 

     } 
     catch(SerialPortException ex){ 
      System.err.println(ex); 
     } 
    } 

} 

這是我的arduino代碼。這裏

String input; 
void setup() { 
pinMode(13,OUTPUT); 
Serial.begin(9600); 
} 

void loop() { 
if(Serial.available()>0){ 
    input = (char)Serial.read(); 
    if(input=="1"){ 
    digitalWrite(13,HIGH); 
    } 
    else{ 
    digitalWrite(13,LOW); 
    } 
} 
} 

回答

0

兩件事情:

  • 的領導絕不會「閃爍」,因爲你繼續讀,但一旦你設定的狀態,你永遠不會重置,這意味着LED將保持上。會發生什麼是您檢查是否有可用的數據,您發現一個「1」,並打開LED。下一次循環執行時,串口上將沒有數據可用,因此不會發生任何事情,並且LED將保持點亮。

  • 您應該確保Arduino正確接收數據,因此請檢查串口是否實際上是COM4。另外,也許你應該使用write而不是writestring。例如,檢查this page

+0

親愛的ChatterOne,我知道只有兩個說明led是高電平還是低電平。但是,這個過程通過arduino串行監視器正常工作,並且它的效果導致並給出了準確的結果,但是當我通過java發送字符串時,對於led沒有任何影響,即在任何情況下都保持關閉狀態。爲什麼?我需要一些幫助。 –

0

Arduino IDE menu to see the port being used.

添加到ChatterOne的答案咯,如果你使用普通的Arduino IDE,您可以通過工具,港口,並選擇一個檢查端口號。 (道歉,我沒有足夠的聲望,只是在他的答案(新的網站)上評論這一點,但似乎有用的信息,以避免跳過這一點。)