使用Java从串口读取(Arduino duemilanove)

时间:2012-10-28 16:11:36

标签: java usb arduino

任务:在PC上的程序中显示数据。

扩展任务:(解决此问题后)我最终将数据保存到文件并将程序扩展到GUI。

微控制器:Arduino duemilanove

操作系统:Windows 7

语言:Java

编译器:Eclipse

Io方法:USB类型'B'(arduino侧),USB A型(PC侧)

我在这里和其他网站上阅读过至少30个不同的教程/问题。我从网站上抓取了一些示例并下载了一些库,并且不断出现红线和错误。我现在已经全部废弃了,决定谦卑地来到这里看看是否有人愿意帮助我。

我怀疑自己已经过了头,但这很好,我很高兴学习,被称为愚蠢!

我理解其他软件,例如“处理”已经可以为我做这件事了。我想自己制作这个软件。

我看过RXTX和COMM API。老实说,到目前为止我所有的一切都是因为我知道它存在,有些东西显然已经过时了,似乎大多数教程都假设各种科目都有大量的知识。

在我写这个问题的时候,我也看了很多问题,其中大部分都是我以前见过的。我挥舞着白旗!有人帮我了解我在做什么!

我想要做的代码示例。

// How would I make this class read from the arduino?

class arduinoData {

    static int t = (int) 72.91; //pull from arduino instead of making it up

    static int temperature(){

        return t;
    }


}


public class example
{
    public static void main(String[] args) 
    {
        System.out.println("temp from the sensor is: "+   arduinoData.temperature()+"F");
    //output:
    //temp from the sensor is: 71F
    }
}

编辑:Arduino串口监视器正常工作。我将添加arduino代码来清除它。

#include <OneWire.h>
#include <DallasTemperature.h>

#define ONE_WIRE_BUS 3
OneWire oneWire(ONE_WIRE_BUS);
DallasTemperature sensors(&oneWire);


DeviceAddress Thermometer = { 0x28, 0x56, 0xA0, 0xA5, 0x03, 0x00, 0x00, 0x7D };

void setup(void)
{
  Serial.begin(9600);
  sensors.begin();
  sensors.setResolution(Thermometer, 10);

  pinMode(13, OUTPUT);  

}


    void printTemperature(DeviceAddress deviceAddress)
    {
      float tempC = sensors.getTempC(deviceAddress);
      if (tempC == -127.00) { Serial.print("Error."); }
      else {Serial.print(DallasTemperature::toFahrenheit(tempC));Serial.print("F");}
    }


void loop(void)
{ 
   digitalWrite(13, HIGH);
   delay(1000);
   digitalWrite(13,  LOW);
   sensors.requestTemperatures();
   Serial.print("temp from sensor: ");printTemperature(Thermometer);
   Serial.print("\n\r");
}

Arduino输出:

来自传感器的温度:70.25F

来自传感器的温度:70.70F

来自传感器的温度:70.70F

来自传感器的温度:70.70F

更新

好的我认为我通过下面提到的教程正确安装了rxtx。但是,我现在迷路了:

  

对于Windows,您可以在其中创建名为run.bat的批处理文件   目录作为上面提到的示例代码。这个批处理文件可以   在您的系统上使用,但您可能需要修改路径以匹配   在您的系统上安装Java和Arduino IDE的位置。

     

setlocal set PATH =%PATH%; C:\ Program Files(x86)\ arduino-0017 \   “C:\ Program Files(x86)\ Java \ jdk1.6.0_12 \ bin \ javac”-cp“C:\ Program   文件(x86)\ arduino-0017 \ lib \ RXTXcomm.jar“SerialTest.java”C:\ Program   文件(x86)\ Java \ jdk1.6.0_12 \ bin \ java“-cp”C:\ Program Files   (x86)\ arduino-0017 \ lib \ RXTXcomm.jar;“SerialTest

     

基本上,您需要将RXTXcomm.jar添加到类路径中,   并且您将需要添加关联的JNI接口DLL   (rxtxSerial.dll)到您的PATH。对于其他平台,您需要   将相同的JNI共享库添加到运行时路径中。

     

运行run.bat文件时,您应该看到与结果相同的结果   Arduino IDE串行监视器。您可以使用Ctrl + Break来停止   程序

我应该做什么?

1 个答案:

答案 0 :(得分:0)

检查您的固件是否实际上将Arduino打印到usb,虚拟化为串行端口:加载固件并通过“串行监视器”(右侧的镜头按钮)测试串行通信。

完成后,您知道您的问题与尝试从COM接口读取的Java代码有关。如果您仍然遇到问题,那么您的问题已经转移到“使用Java从串口读取”。

关于将Arduino与Java连接的一般参考,我建议您阅读本教程的解释和代码示例:http://www.arduino.cc/playground/Interfacing/Java