4月 10
Flash + serproxy.exeを使って、シリアル制御するアプリケーションを作成してるのだが、大大大苦戦。
文章にまとめる元気がないので、箇条書き。
- ArduinoのActionScript 2.0のクラスは、コンストラクタでconnectしてるので、インスタンスを生成したあとに、再度、connectしてしまうと、“failed to open comm port-connection refused”が発生して、接続できなくなる。これでほぼ1日つぶれた・・馬鹿すぎる自分。というか、コンストラクタでconnectすんなよぉ~!
- ↑この原因にたどり着くまで、かなり遠回りした。Flash→serproxy→モデムと接続して、FlashからATコマンドを送信して、ちゃんと送ることができるかなど。ATモデムなら投入したコマンドのエコーバックがあるからね。
- シリアルのデバッグというか、接続テストには、Acknowrichが便利。
- ソケットのデバッグには、Socket Debuggerが便利。
- ActionScript 2.0は、シリアル制御には向いていないといことがわかった。どういうことかというと、ActionScript 2.0のXMLSocketは、ソケット通信ができるが、送信データの最後に、強制的に”0×00″を付与してしまう。当然、制御先の機器にも送られるので、こちらは”3030″と送ってるつもりでも、相手には、”303000″というデータが送られ、コマンドを理解してくれない。
- “0×00″(ヌルバイト)を付与しないようなオプションがないため、スクリプトレベルではどうにもできない。
- ActionScript 3.0は、XMLSocketクラスとは別に、Socketクラスがあり、バイナリデータを送受信できる
- さて、インターフェースその他スクリプトはAS2.0で作っているし、AS3.0はまだ慣れてない。しかし、AS2.0では通信できない(純粋なコマンドデータを送信できない)。解決策は、AS2.0で画面を含むメイン部分を作成。データ送信部分のみ、AS3.0で作成し、その二つのswfがLocalConnectionで通信し、その結果をserproxyに送信する・・という、プロクシ2段構えでやるしか・・・ないのか!!orz…
- これはやっぱり早くAS3.0に移行せよ!というAdobeの意志なのだろうか。
- もう泣きたい・・・
うまくいかないのは、ずーっと、serproxyのバグじゃないかなーと、疑っていたのだが、serproxy.exe自体は、まったく問題なかった。私は人を疑う卑しい心の持ち主です(卑屈モード)
Popularity: 11% [?]




