2009-09-21

NXT與NXT之間的藍牙接收發送程式



一般人不會有兩台NXT主機,不過擁有兩台以上的NXT主機也是一件非常有趣的事。

許多玩家在學校或是樂高教室可以使用兩台NXT主機互相『通訊』。

但是傳送的訊息,不一定能夠順利接收。

建立NXT藍牙連線後,除了確認NXT主機螢幕上所顯示的<>符號,

也可以一開始使用Master NXT傳送檔案給Slave NXT,確認NXT與NXT的藍牙連線正常,

再來就是NXT-G程式,先看看發送程式:

只要確保發送對象的NXT代號(1, 2, 3)以及信箱號碼(1-10),應該可以傳遞成功。



接收程式就比較麻煩,因為不知道Master何時會傳送訊息,我們最好使用『守株待兔』的癡癡等待方法,如下圖:



程式一開始先進入一個迴圈,不斷確認信箱是否收到新的訊息,如果確認收到訊息,則跳出迴圈,處理接收到的新訊息。

有需要的同好可以試試看這個方法,善用你的NXT藍牙通訊喔!

歡迎大家一起實作討論!



5 則留言:

  1. 我想請問一下

    你有試過 利用此種方式去啟動另一台NXT的程式嘛?

    不曉得這樣可不可行~

    我目前只試到 可以互傳程式 但是我上述的問題就...還在頭痛中
    [版主回覆09/29/2009 23:03:43]你好:

    不是很瞭解你的狀況。

    所謂『啟動另一台NXT的程式』是指什麼情形呢?

    執行後續的程式?

    結束目前程式,執行某一個特定的程式?(這點NXT-G做不到)

    『可以互傳程式』是指由MASTER傳送檔案給SLAVE?(NXT機上按鍵傳送?)

    歡迎詳述情況討論!

    回覆刪除
  2. 你好

    我換個方式講好了~就是說有辦法等同於遙控器~利用Master NXT去啟動Slave NXT的程式嗎?

    『可以互傳程式』 就是機上按鍵傳送經由藍芽將程式傳給另一台NXT
    應該跟你說的傳送檔案是一樣的意思

    然後你用超音波是否就是不用觸碰NXT主機就可以直接傳送訊息了?
    可是為什麼最後還有個NXT BUTTONS?怎麼不都用超音波就好了呢?

    對你這篇文章還蠻有興趣的~請多指教囉!
    [版主回覆10/01/2009 19:35:21]你好:

    瞭解你的意思了。你需要的是啟動Slave的一個程式。

    在NXT-G是做不到的。我記得NXJ好像可以(其他語言需要再查證)。

    至於為什麼要加上Wait for NXT Buttons,原因很單純。

    這是一個簡單的測試程式,為了驗證傳輸的內容是否正確,我將藍牙資訊顯示出來,如果程式最後沒有延遲時間或等待命令,程式結束後,就無法在NXT主機螢幕看到顯示內容了!

    也歡迎繼續討論相關問題。

    回覆刪除
  3. 邱老師您好:
    我在做兩個nxt之間傳訊的時候,曾想過
    可不可以用NXT-G寫的程式發訊
    用NXC寫的程式接收
    初學者請老師多多指教
    謝謝!!
     
    [版主回覆10/11/2009 18:35:30]你好:

    這是很有趣的作法,理論上是可行的,因為兩者的藍牙通訊都是應用NXT韌體的mailbox system完成。

    但是我剛才試了一下,卻無法成功,不論是NXT-G聯繫NXC,或是NXC聯繫NXT-G。(也就是Master及Slave角色互換)

    推測也許是NXT-G(或NXC API)做了一些未知的動作,需要使用比較低階藍牙傳輸指令才能溝通。

    我會去請教其他老師或是到nxtasy尋求答案。....

    如果有人成功也請指導一下,謝謝!

    回覆刪除
  4. 你好 我想請問一下 為什麼我用你們的來試試看
    卻什麼也反應 ???
    [版主回覆10/17/2012 09:06:20]你好:

    『用你們的來試試看』,是指NXT-G程式嗎?

    『卻什麼也反應』,是指?

    你必須更加詳細說明你的情形,例如你的機器設定,藍牙連線狀況,程式執行後的結果,

    這樣會更容易協助你解決問題喔!

    歡迎討論。

    回覆刪除
  5. 你好不好意思 方便用 對談之類的 模式 來交談 嗎
    這樣比較可以跟你說清楚我的問題
    或者就是~~

    想請問一下..是說...我有兩台nxt 主機
    想要以 藍芽做連線 遙控
    我要做的機器人是TriBot 這台
    所以我想要用 另一台nxt 主機來控制她..
    只是 一直寫不好.....

    想請問一下... 為什麼我兩台都有用你上面的程式
    可是 還是沒有反應這樣....
    也不知道到底有沒有連線到...疑惑..
    不好意思 打擾了..方便的話再麻煩您 謝謝
    [版主回覆10/18/2012 15:32:01]你好:

    使用NXT藍牙,需要經歷下面三個步驟,

    1. 選定NXT主機與從機。

    2. 從主機建立藍牙連線。

    3. 以程式控制NXT。

    如果你不知道到底有沒有連線,請依照探奇文章建立藍牙連線

    (探奇文章連結:NXT與NXT的藍牙連線方式

    再分別執行主機與從機的程式。

    同時也請你再次檢查程式參數是否設定正確。

    祝你成功!

    回覆刪除

探奇歡迎大家留言討論!謝謝分享你的意見。