1

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

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

微控制器:Arduino Duemilanove

操作系统:Windows 7

语言:Java

编译器:Eclipse

Io 方法:USB type 'B'(arduino 端),USB type 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 Files (x86)\arduino-0017\lib\RXTXcomm.jar" SerialTest.java "C:\Program Files (x86)\Java\jdk1.6.0_12\bin\java" -cp "C:\Program Files (x86)\ arduino-0017\lib\RXTXcomm.jar;。” 串行测试

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

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

我该怎么办???

4

1 回答 1

0

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

完成后,您就知道您的问题与尝试从 COM 接口读取的 java 代码有关。如果您在这里仍有问题,您的问题已转移到“使用 Java 从串行端口读取”。

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

于 2012-10-28T16:46:09.330 回答