1

ミッション:PC上のプログラムにデータを表示します。

拡張ミッション:(この問題を解決した後)最終的にデータをファイルに保存し、プログラムをGUIに拡張します。

マイクロコントローラー:Arduino duemilanove

OS:Windows 7

言語:Java

コンパイラ:Eclipse

Io方式:USBタイプ「B」(arduino側)、USBタイプA(PC側)

私はここと他のウェブサイトで少なくとも30の異なるチュートリアル/質問を読みました。私はサイトから例を取得し、いくつかのライブラリをダウンロードしましたが、赤い線とエラーが発生し続けています。私は今それをすべて廃棄し、謙虚にここに来て、誰かが私を助けてくれるかどうかを確認することにしました。

私は頭を抱えているのではないかと思いますが、それは問題ありません。喜んで学び、バカと呼ばれます。

「処理」など、これを実行できる他のソフトウェアがすでに利用可能であることを理解しています。このソフトウェアを自分で作りたいです。

RXTXとCOMMAPIを見てきました。正直なところ、これまでに得たのは、それが存在することを知っていること、明らかに時代遅れのものがあること、そしてほとんどのチュートリアルはさまざまな主題に関する大量の知識を前提としているようです。

私はまた、この質問を書いているときにここで尋ねられたより多くの質問を見ました、そしてそれらのほとんどは私が以前に見たことがあります。白旗を振っています!誰かが私がしていることを学ぶのを手伝ってくれます!

私がやりたいことのコード例。

// 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およびArduinoIDEのインストール場所に一致するようにパスを変更する必要がある場合があります。

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;。」SerialTest

基本的に、RXTXcomm.jarをクラスパスに追加する必要があり、関連するJNIインターフェイスDLL(rxtxSerial.dll)をPATHに追加する必要があります。他のプラットフォームの場合、同じJNI共有ライブラリをランタイムパスに追加する必要があります。

run.batファイルを実行すると、ArduinoIDEシリアルモニターと同じ結果が表示されます。Ctrl+Breakを使用してプログラムを停止できます。

私は何をしているのですか?

4

1 に答える 1

0

ファームウェアが実際にArduinoをUSBに印刷しているかどうかを確認します。これは、シリアルポートとして仮想化されています。ファームウェアをロードし、「シリアルモニター」(右側のレンズボタン)を介してシリアル通信をテストします。

完了すると、問題がCOMインターフェイスから読み取ろうとするJavaコードに関連していることがわかります。ここでまだ問題が発生する場合は、問題は「Javaを使用したシリアルポートからの読み取り」に移っています。

ArduinoとJavaのインターフェースに関する一般的なリファレンスについては、説明とコードサンプルを含むこのチュートリアルを読むことをお勧めします:http ://www.arduino.cc/playground/Interface/Java

于 2012-10-28T16:46:09.330 に答える