JSSC不闪烁Arduino中的led灯
问题描述:
我正尝试连接arduino与java通过使用串行通信。为了这个目的,我使用了一个jssc库。但是,当我运行Java程序并发送字符串“1”然后led不发光,它应该不断发光。但是当我发送字符串“1”从arduino串行监视器它会不断发光,直到我发送任何其他字符串。 我该怎么做才能在java中获得与在Arduino串行绘图仪中相同的结果。** 这里是我在Java代码Netbeans。JSSC不闪烁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);
}
}
}
答
两件事情:
的领导绝不会“闪烁”,因为你继续读,但一旦你设定的状态,你永远不会重置,这意味着LED将保持上。会发生什么是您检查是否有可用的数据,您发现一个“1”,并打开LED。下一次循环执行时,串口上将没有数据可用,因此不会发生任何事情,并且LED将保持点亮。
您应该确保Arduino正确接收数据,因此请检查串口是否实际上是
COM4
。另外,也许你应该使用write
而不是writestring
。例如,检查this page。
亲爱的ChatterOne,我知道只有两个说明led是高电平还是低电平。但是,这个过程通过arduino串行监视器正常工作,并且它的效果导致并给出了准确的结果,但是当我通过java发送字符串时,对于led没有任何影响,即在任何情况下都保持关闭状态。为什么?我需要一些帮助。 –