2010-04-30 65 views
1

所以我发现如何将Arduino连接到我的java程序。但是,使用串行连接不会提供任何有用的数据,无论是以错误的格式还是将其作为一个盒子发送。我已经看过在这里发布的相关问题,但没有一个提示似乎有帮助。那么有谁知道如何使用串口在Arduino和计算机之间发送数据?Arduino无法发回串行数据

这是我正在使用的代码,由此人提供: http://silveiraneto.net/2009/03/01/arduino-and-java/

package serialtalk; 

import gnu.io.CommPortIdentifier; 
import gnu.io.SerialPort; 
import java.io.InputStream; 
import java.io.OutputStream; 
import processing.app.Preferences; 

public class Main { 
    static InputStream input; 
    static OutputStream output; 

    public static void main(String[] args) throws Exception{ 
     Preferences.init(); 
     System.out.println("Using port: " + Preferences.get("serial.port")); 
     CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier(
       Preferences.get("serial.port")); 

     SerialPort port = (SerialPort)portId.open("serial talk", 4000); 
     input = port.getInputStream(); 
     output = port.getOutputStream(); 
     port.setSerialPortParams(Preferences.getInteger("serial.debug_rate"), 
       SerialPort.DATABITS_8, 
       SerialPort.STOPBITS_1, 
       SerialPort.PARITY_NONE); 
     while(true){ 
      while(input.available()>0) { 
       System.out.print((char)(input.read())); 
      } 
     } 
    } 
} 

的Arduino是这样的: http://www.arduino.cc/en/Main/ArduinoBoardDuemilanove

的代码简单地接收的数,并且确定哪个读取模拟它应该从我的Arduino发回来。

+0

它是你的Java应用程序或其他东西的问题?你能用串口监视器发送文本到板子吗? – 2010-04-30 14:40:00

+0

当我写“Hello World!”时,我可以从arduino发送数据到Netbeans IDE。当我运行我的java程序时,arduino IDE中的串行监视器似乎没有收到任何东西 – 2010-05-01 09:28:58

回答

1

当串行连接处理确保以下关键点:

  • 波特率匹配
  • DATABITS应符合
  • STOPBITS应符合
  • 奇偶应符合
  • 确保你正在使用正确的电缆(如果需要,为空调制解调器)
  • 确保电缆不会太长

以上所有情况都可能导致奇怪的东西从Java端口出来。一旦你掌握了这一点,它变得更容易。

我个人最喜欢的图书馆here

+0

它最有可能是一个虚拟COM端口,并且电缆是USB电缆,除非arduino板很老。如果它是一个真正的RS232C连接,那么也可以考虑握手的类型:) – 2010-04-30 14:56:06

+0

这是我使用的duemilanove,我已经使用导入到我使用的Netbeans IDE中的RXTX库。我能够将数据发送到NetBeans中的串行监视器,并接收从Arduino发送的数据,但我无法接收数据并干扰ardiuno,如使用If语句,也许我的数据发送错误? – 2010-04-30 17:55:10

+0

@Maciej H我已经用java和其他组件一起使用了arduino,我只是知道我必须调整这些参数才能让所有的东西都玩得很好。 – 2010-04-30 18:31:16