しかし、その後demo.swfを開いて動作確認を…と思ったのですが、LEDもボタンも反応しませんでした。ここで少し悩みましたが、Flash Playerのセキュリティ設定だということがわかりました。Flash 8でパブリッシュしたものだと、ダイアログが表示されるのですが、Flex 2でビルドしたものだとこのダイアログが表示されないようなのです(Flash CS3は未確認ですのでこの後で試してみます)。
※以前も、別件でこれにはまったことがありましたのですぐに気がつきましたが、AS3系になって仕様変更があったのでしょうか。それとも私のところだけの問題でしょうか…。
グローバルセキュリティ設定を変更した後は、無事にgsp経由で通信できるようになりました。
実はセキュリティサンドボックスの設定は対応する必要があるかもなぁと思ってたんですが、ひっかかって動かないだろうと思っていたら、すんなり動いちゃったのでこれはセーフなのかなぁと思ってました。
やっぱり設定変更必要なんですね。
ActionScript3のマニュアルちょっと漁ってみます。
Analog Inputに関して、左下にReflesh input statusが1秒間ごとに表示されるのですが、値が更新されないように見えます。AS2版のain.swfでは値が変化しますので、たまたま手元にあるI/Oモジュールが壊れているということではないようなのですが…。
gainer側の話ではなく、demo.swf側のコードがおばかでした。
修正しました。
Quote
初めてアナログインプットを試したんですが、使ってないアナログ入力ポートの取得値ってランダムに変動するものですか?
一応、aIn.swf(配布物に含まれていたもの)を動かしてみましたが、同じような感じでした。
おいらのgainerモジュールがおかしいのかな?
(そういえば半田ごてなんて十数年触ってなかったし…)
これは正常です。
何も接続していないポートはアンテナと同じ状態になりますので、値が不定になります。もしどうしても気になるようであれば、10k〜1MΩ程度の抵抗器を経由してGNDに接続すると安定すると思います。
了解です。
でも、demo.swfを直してもうまく値を拾えないので、ちょっとロジックを追ってみました。
beginDigitalInputを叩くと、連続的に「r0000*」みたいな文字列を受信し、
beginAnalogInputを叩くと、連続的に「i000A0702*」のような文字列を受信しているんですね。
チュートリアルどおりの配線を行ったつもり(=あくまでつもり)なんですが、抵抗値を変化させたり回路を開閉してみても
受信しているポートの値に変化がありませんでした。
aIn0またはdIn0に接続していたんですが、ずっと
i000A0702*
または
r0000*
みたいな文字を受信しています。(受信文字列をキャプチャしました)
これって配線ミスでしょうか?