ログインしてさらにmixiを楽しもう

コメントを投稿して情報交換!
更新通知を受け取って、最新情報をゲット!

mathraxコミュのserialXtra + PIC16F873

  • mixiチェック
  • このエントリーをはてなブックマークに追加
blogの方に久世さんから書き込みいただいたのですが、こちらのコミュで有難く訊かせていただきます。

 DirectormMXでserialXtraを使おうと試行錯誤しています(Windows2000上)。
接続するデバイスはPIC16f873です。PIC側は単に「test」の文字列が1秒おきに吐き出されるように組んであります。シリアルでそれを受けてフィールドに表示させようとしているだけなんですが...。

 ハイパーターミナルで試すと、全く問題なく、期待した表示がされます。VBで組んだプログラムでも同じ結果を得ることが出来ています。ので、PIC側に落ち度は無いと思われます。

-
property pSerialObj

on beginSprite me
pSerialObj=xtra("SerialXtra").new("a_hasimo@yahoo.co.jp","*******password*******")
if not objectP(pSerialObj) then
alert "インスタンスが作成できません"
halt
end if
err = pSerialObj.OpenPort("COM1")
if err <> "ok" then
alert "接続できません"
else
err = pSerialObj.SetProtocol(9600, "n", 8, 1)
err = pSerialObj.SetHandshakeMode(#NO_HANDSHAKE)
if err <> "ok" then alert "通信プロトコルを設定できません"
end if

data=pSerialObj.ReadString()
put data after field "receive"

put pSerialObj.ReadNumber()
put pSerialObj.ReadChar()
put pSerialObj.ReadString()
put pSerialObj.ReadHex()
put pSerialObj.getLicenseType()
put pSerialObj.ReadBuffer()
put pSerialObj.GetProtocol()
put pSerialObj.getLicenseType()
end


on endSprite me
if pSerialObj.IsPortOpen() then
err = pSerialObj.ClosePort()
if err <> "ok" then alert "接続解除できません"
end if
pSerialObj = void
end

-

このビヘイビアをフィールド「receive」に貼り付けて、スコアをループさせています。一応、メッセージにも表示されるようにputを入れてあるんですが、そこにも何も読み込まれている様子が見えません。パブリッシュしてみても駄目です。
ただ、デバックで全行にブレークポイントを設けて順に追っていくとなぜかきちっと動作します。つまり変数にstring「test」が読み込まれてそれがフィールドに表示されるという期待通りの動作を見せています。

唯一、気にかかる点はxtraのweb(http://24.5.15.215/~physicalbits/Xtras/Detailed/SerialXtra/SerialXtraInfo.php)を見ると最新のserialXtra:ver1.0.11はwindows2000ではuntestedになっている点です。

以上、何かお気づきの点があれば教えていただきたいのですが。よろしくお願いいたします。

コメント(2)

あけましておめでとうございます。お返事遅くなりました。

こちらで同じ環境がすぐにそろわないのですが、ブレークポイント置いたらきちんと動くということなので、この時点で考えられることは、

・シリアルポートの初期化が終わらないうちにPUTさせようとしている
・「スコアをループ」というとこで引っかかってるんですが、ループするたびにシリアルポートがリセットされている(1フレーム目に「receive」を置いてから、ループさせてるかどうかわからないので)

ということが考えられます。


他にも、PICが一方的に送信しているとしたら、Director側で受信がうまくいかないとかあり得ますが、その辺りはどうでしょう?毎回PIC側をリセットしてるとか、もう少し仕様を含めて教えてもらえればと思います。

Windows2000がテストしてないってのは気になりますが、あんまり関係ないんじゃないかなぁ。ウチにWindows2000があるのでテストしてみますね。
 今仕事から戻ってきて少し気になってた部分を修正したら無事受信成功しました。どうも単に僕のDirector経験が浅いだけのようです・・・。serialXtraはwindows2000上でも動作しています。(まだ全コマンドを見たりしたわけではないですが。)

取りこぼしについて少し考えてみたら、picからのputは1秒おきにアルファベット15文字だけなので、いくらLINGOでも処理が追いつかないということはないなと思い、他の理由を考えていました。

今は、「確信は無いものいじってみたら動いちゃった」という状況です。

問題点の検証はこれから行い、後で追記させていただきます。

ログインすると、みんなのコメントがもっと見れるよ

mixiユーザー
ログインしてコメントしよう!

mathrax 更新情報

mathraxのメンバーはこんなコミュニティにも参加しています

星印の数は、共通して参加しているメンバーが多いほど増えます。

人気コミュニティランキング