気圧センサーSCP1000について

Sun SPOT についてのご質問はこちら。情報交換などにもご利用ください。

気圧センサーSCP1000について

投稿記事by fujiki » 2012年7月03日(火) 18:37

藤木です。
お世話になります。

気圧センサーSCP1000にチャレンジしています。
SunSpotSimpleApplicationを用いて新しいプロジェクトを作成し、缶サット用で頂いたSPC1000クラスと
SpiShiftRegisterクラスを追加し、実行させてみました。

エラーは出ないのですが、以下のようなメッセージが表示し、0の値しか、かえってきません。

init:
Please wait while connected Sun SPOTs are examined...

Using Sun SPOT device on port COM29
Deleting: C:\Program Files\Sun\SunSPOT\sdk\temp\spotselector-1610964563
init:
No to.jar.file specified.
Using "suite\SCP1000_7_3_1.0.0.jar"
Deleting directory C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\build
Deleting directory C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\suite
Deleting directory C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\j2meclasses
clean:
Created dir: C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\build
Compiling 4 source files to C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\build
注:C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\src\org\sunspotworld\SCP1000_7_3.java は推奨されない API を使用またはオーバーライドしています。
注:詳細については、-Xlint:deprecation オプションを指定して再コンパイルしてください。
compile:
Created dir: C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\j2meclasses
preverify:
Created dir: C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\suite
Building jar: C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\suite\SCP1000_7_3_1.0.0.jar
jar-app:
Using "suite\SCP1000_7_3_1.0.0.jar"
CompilerOracle: exclude com/sun/squawk/Method.getParameterTypes
CompilerOracle: exclude com/sun/squawk/SymbolParser.getSignatureTypeAt
CompilerOracle: exclude com/sun/squawk/SymbolParser.stripMethods
[translating suite image [closed: false, parent: transducerlib] ...]
### Excluding compile: com.sun.squawk.SymbolParser::getSignatureTypeAt
### Excluding compile: com.sun.squawk.Method::getParameterTypes
[Including resource: META-INF/MANIFEST.MF]
Romizer processed 7 classes and generated these files:
C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\image.sym
C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\image.suite
C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\image.suite.metadata
C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\image.suite.api
Expanding: C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\suite\SCP1000_7_3_1.0.0.jar into C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\suite
Moving 1 file to C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\suite
Moving 1 file to C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\suite
Moving 1 file to C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\suite
Deleting: C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3\image.suite.api
SPOT Client starting...

Local Monitor (yellow-101117-1)
SPOT serial number = 0014.4F01.0000.77EE
Writing SPOT properties (350 bytes) to local SPOT on port COM29
|============================================================| 100%


Using target file name: spotsuite://Sun_Microsystems_Inc/SCP1000_7_3
Relocating application suite to 0x10900000
About to flash from C:\Users\wp363928\Documents\NetBeansProjects\SCP1000_7_3/suite/image
Writing imageapp6041139312246371366.bintemp (7116 bytes) to local SPOT on port COM29
|=== | 7%
|====== | 14%
|============ | 21%
|=============== | 28%
|===================== | 35%
|======================== | 42%
|=========================== | 49%
|================================= | 56%
|==================================== | 64%
|========================================== | 71%
|============================================= | 78%
|=================================================== | 85%
|====================================================== | 92%
|============================================================| 100%


Using suite name: spotsuite://Sun_Microsystems_Inc/SCP1000_7_3 and Midlet number 1

Exiting
flashapp:
deploy:
init:
SPOT Client starting...

Local Monitor (yellow-101117-1)
SPOT serial number = 0014.4F01.0000.77EE


** VM stopped: exit code = 0 **

Starting midlet 1 in spotsuite://Sun_Microsystems_Inc/SCP1000_7_3
REVID = 0

Time : Tue Jul 03 02:04:30 PST 2012
Pressure : 0.0
Temperature: 0.0

Time : Tue Jul 03 02:04:31 PST 2012
Pressure : 0.0
Temperature: 0.0

Time : Tue Jul 03 02:04:32 PST 2012
Pressure : 0.0
Temperature: 0.0


どのようにすればよろしいでしょうか?

接続は
SPC1000 SunSPOT
1 → GND
3 → D3
4 → GND
5 → D1
6 → D2
7 → D0
8 → +3V
にしています。

藤木 郁久
fujiki
 
記事: 68
登録日時: 2010年7月06日(火) 19:54

Re: 気圧センサーSCP1000について

投稿記事by yamaguch » 2012年7月03日(火) 19:37

藤木先生、こんにちは、

まず、推奨されない API を使用またはオーバーライドしていますというメッセージが出ています。これが出ているときは、大抵、NetBeans の編集画面に(!)が表示されていると思いますから、それを確認してください。

また、詳細については -Xlint:deprecation オプションを指定して再コンパイルとあるので、これを実行してみてください。
プロジェクトを右クリックして Properties を選び、Build -> Compiling のウィンドウを開くと、コンパイラオプションを指定するフィールドがあります。そこに -Xlint:deprecation を入れて、再度ビルドしてみてください。詳しい警告メッセージが表示されるはずです。

SCP1000 は SPI で接続します。SunSPOT には SPI デバイスに直接アクセスする API がなかったので、簡単な SPI ライブラリを作って処理をしていたと思いますが、そこで使用しているピンが合っていないのかもしれません。昔のことなので覚えていません :(

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

Re: 気圧センサーSCP1000について

投稿記事by fujiki » 2012年7月03日(火) 20:25

山口さん

藤木です。
早速の返信、ありがとうございます。
編集画面には!は表示されていません。

プロジェクトのプロパティーを開くと、カテゴリ
一般、Javaソース、Javaソースのクラスパス、出力、構築と実行、整形と出ています。
「Build -> Compiling のウィンドウを開く」とはどのようにしたらいいのですか?

spc1000 = new SPC1000(d1, d2, d3, d0); //mosi, miso, sck, ss

ピンはこのように指定されていて、間違いないと思いますが。

よろしくお願いします。

藤木 郁久
fujiki
 
記事: 68
登録日時: 2010年7月06日(火) 19:54

Re: 気圧センサーSCP1000について

投稿記事by yamaguch » 2012年7月03日(火) 22:24

Build = 構築だと思います。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

Re: 気圧センサーSCP1000について

投稿記事by fujiki » 2012年7月03日(火) 22:41

山口さん

藤木です。
構築、了解しました。

明日、チャレンジしてみます。

藤木 郁久
fujiki
 
記事: 68
登録日時: 2010年7月06日(火) 19:54

Re: 気圧センサーSCP1000について

投稿記事by yamaguch » 2012年7月03日(火) 23:11

fujiki さんが書きました:編集画面には!は表示されていません。

警告の場合は!は出ないかもしれません。代わりにクラスやメソッドがクロスアウト(字消し線で消されている)箇所があるんじゃないかと思います。

fujiki さんが書きました: spc1000 = new SPC1000(d1, d2, d3, d0); //mosi, miso, sck, ss

SPC1000 は、Yellow より前の API を使って書いています。API は Yellow で大幅な変更があったので、使っている API の中には推奨されないものが混じっていると思います。このようなときは「推奨されない」警告が出るだけでとりあえず問題なく動く場合と、書きなおさないと動かない場合とがあります。正しい値が得られないということは後者の可能性大です。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

うまくいきました。

投稿記事by fujiki » 2012年7月05日(木) 18:01

山口さん

藤木です。
うまく動きました。お世話になりありがとうございます。
正しい値が表示された時の感動は最高ですね。

SunSPOTの1番上のボードに10×2のピンソケットを裏側から半田付けし、そのピンソケットに
ケーブルをきちんと差し込むと正しい値が表示されました。

アドバイスを頂いたところも調べてみました。

クロスアウト(字消し線で消されている)箇所はSCP1000Demo.javaの中の
LEDColor だけです。
インポートの修正を行っても、新たなインポート文は追加されませんでした。

詳細については -Xlint:deprecation オプションを指定して再コンパイルとあるので、これを実行してみてください。
プロジェクトを右クリックして Properties を選び、Build -> Compiling のウィンドウを開くと、コンパイラオプションを指定するフィールドがあります。そこに -Xlint:deprecation を入れて、再度ビルドしてみてください。詳しい警告メッセージが表示されるはずです。


このアドバイスも完璧にしておきたいので、再度教えてください。

プロジェクトを右クリック→構築と実行とすると
カスタム構築スクリプトでの一般的なプロジェクトアクションのターゲットへのマッピングや
カスタムコンテキストメニュー項目のマッピングという項目があります。
「-Xlint:deprecation」 はどこに入力すればよろしいのでしょうか?

よろしくお願いします。

藤木 郁久
fujiki
 
記事: 68
登録日時: 2010年7月06日(火) 19:54

Re: うまくいきました。

投稿記事by yamaguch » 2012年7月05日(木) 19:20

うまく動きました。お世話になりありがとうございます。
正しい値が表示された時の感動は最高ですね。

よかったですね。

クロスアウト(字消し線で消されている)箇所はSCP1000Demo.javaの中の
LEDColor だけです。
インポートの修正を行っても、新たなインポート文は追加されませんでした。


注意深く見るとインポートされているパッケージの名称が変わっていることに気がつくと思います。
クロスアウトされている import 文は
import com.sun.spot.sensorboard.peripheral.LEDColor;
だったはずです。

この行を消して、「インポートの修正」を行うと
NetBeansScreenSnapz001.png
NetBeansScreenSnapz001.png (22.08 KiB) 表示数: 12141 回

のようなウィンドウが表示されて、パッケージ名付きの長いクラス名を選べるようになるはずです。
ここで正しいものを選ぶ(表示されているものが正しい名前です)と字消し線が消えます。

com.sun.spot.sensorboard. で始まるパッケージ名を持つクラスは com.sun.spot.resources. で始まるパッケージに引っ越ししているようです。これは、リソースを使うような API に対応するためです。SCP1000 関連では SCP1000Demo だけでなくSCP1000 や SpiShiftRegister にもクロスアウトされているクラスがあります。これらも同じように直すとビルド時の deprecation の警告メッセージは出なくなると思います。

詳細については -Xlint:deprecation オプションを指定して再コンパイルとあるので、これを実行してみてください。
プロジェクトを右クリックして Properties を選び、Build -> Compiling のウィンドウを開くと、コンパイラオプションを指定するフィールドがあります。そこに -Xlint:deprecation を入れて、再度ビルドしてみてください。詳しい警告メッセージが表示されるはずです。


このアドバイスも完璧にしておきたいので、再度教えてください。


済みません、勘違いです。
SunSPOT は、自前のスクリプトを使っているので、残念ながらコンパイルオプションを指定する画面はありませんでした。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

エラーがなくなりました。

投稿記事by fujiki » 2012年7月05日(木) 19:50

山口さん

藤木です。
SCP1000Demo.javaの中にLEDに関するインポート文は存在せず、
以下のようなプログラムでした。

アドバイスを応用して
setLeds(Math.abs((int) ((p - zero) / 0.45)), p > zero ? com.sun.spot.sensorboard.peripheral.LEDColor.BLUE : com.sun.spot.sensorboard.peripheral.LEDColor.RED);



setLeds(Math.abs((int) ((p - zero) / 0.45)), p > zero ? com.sun.spot.resources.transducers.LEDColor.BLUE : com.sun.spot.resources.transducers.LEDColor.RED);

に訂正してみました。
.を入力することで、.resourcesや.transducersを選択できたので、これは完璧と納得させていただきながら
修正できました。

SCP1000 や SpiShiftRegister については既にインポートを修正済みです。
アドバイスをありがとうございます。

これでエラーなしのすっきりしたプログラムになりました。
また一歩前進と実感でき、幸せです。

藤木 郁久
fujiki
 
記事: 68
登録日時: 2010年7月06日(火) 19:54

Re: 気圧センサーSCP1000について

投稿記事by yamaguch » 2012年7月05日(木) 20:14

コード: 全て選択
setLeds(Math.abs((int) ((p - zero) / 0.45)), p > zero ? com.sun.spot.resources.transducers.LEDColor.BLUE : com.sun.spot.resources.transducers.LEDColor.RED);

なるほど。
気圧を棒グラフにするわけですね。

暑苦しいのでパッケージ名は直接には書きません。

コード: 全て選択
int n = Math.abs((int) ((p - zero) / 0.45));
LEDColor color = p > zero ? LEDColor.BLUE : LEDColor.RED;
setLeds(n, color);


という風なコードで、その後に「インポートを修正」機能を使って、import 文を自動挿入させます。

山口
yamaguch
 
記事: 482
登録日時: 2010年7月06日(火) 17:37

次へ

Return to Sun SPOT 質問箱

cron