【问题标题】:Reading from the serial port with Java (Arduino duemilanove)使用 Java 从串口读取(Arduino Duemilanove)
【发布时间】:2012-10-28 16:11:35
【问题描述】:

任务:在 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 设置 PATH=%PATH%;C:\Program Files (x86)\arduino-0017\ "C:\Program 文件 (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 停止 程序。

我该怎么办???

【问题讨论】:

    标签: java usb arduino


    【解决方案1】:

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

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

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

    【讨论】:

    • 谢谢。我已经相应地重新措辞了问题和代码。我已经看过 RXTX。我想我会再看一遍——更深入。在此期间,我们将不胜感激!
    • 我建议你分解你的问题。没有人会回答一个涉及这么多事情的问题。请记住,stackoverflow 不是论坛(如果没有,请阅读常见问题解答:stackoverflow.com/faq)。如果您遇到安装问题,您可以重新表述您的整个问题并将其放在 superuser.com 上。
    猜你喜欢
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 1970-01-01
    • 2017-03-13
    • 1970-01-01
    • 1970-01-01
    • 2013-10-08
    • 1970-01-01
    相关资源
    最近更新 更多