2009-10-12

NXT與NXT的藍牙溝通



上一篇文章中寫了兩台NXT互相通訊的NXT-G程式。

請參考(NXT與NXT之間的藍牙接收發送程式)


有玩家留言提到可不可以使用NXT-G寫程式送信給另一台NXT(NXC程式),

我想一定可以做得到的,因為兩者都是使用NXT標準韌體的mailbox system。

結果10/11試了一整天,可以使用NXC to NXC,也可以使用NXT-G to NXT-G。

唯獨NXC to NXT-G 或是NXT-G to NXC就不成功,最後還跑到nxtasy.org論壇留言(太過傷心焦急以致英文亂七八糟!

終於在今天恍然大悟!

原來NXT-G的信箱編號是1到10,NXC對應的是0到9.....(感謝Bridan大大的文章)

再貼一次成功的程式給大家參考......不要像我這樣糊塗.....

NXT-G



NXC

(2009.10.13 John Hansen先生建議改用API預定義的常數MAILBOX1~MAILBOX10)


//SLAVE

//#define INBOX 5
//#define OUTBOX 1

sub BTCheck(int conn){
          if (!BluetoothStatus(conn)==NO_ERR){
               TextOut(5,LCD_LINE2,"Error");
               Wait(1000);
               Stop(true);
             }
}

task main(){
          string in, out, iStr;
          BTCheck(0); //check master connection
          while(true){

                TextOut(10,LCD_LINE1,"Slave Test");
                TextOut(0,LCD_LINE2,"IN:");

          while (BluetoothStatus(0)==NO_ERR){
                 ReceiveRemoteString(MAILBOX6, true, in); // 2009.10.13更新
                 TextOut(10,LCD_LINE3,in);
                 }

         Wait(100);

          }
}


3 則留言:

  1. 真是太謝謝老師了!
    幫我解決了一個疑惑!
    [版主回覆10/14/2009 15:45:13]不用客氣!我也學到很多!

    回覆刪除
  2. 邱老師
      這部分我也曾搞好久,只不過把經驗留下來,也留意到太太的留言,本想寫篇文章解答,不過太忙了,讓您搶先一步。
    [版主回覆10/19/2009 22:49:44]Bridan大:
    您客氣了!
    有您的解答就不用搞得我滿頭大汗.....
    其實John Hansen先生也承認說明檔及書本中並沒有詳細說明相關預設常數
    看來需要先對預設常數了解一番.
     

    回覆刪除
  3. 老師好!!
           我想請教你一切有關 NXT 與 NXT 的藍牙功能
           我手上有2台NXT
          我想用NXT(1)  發出訊號給 NXT(2)  
          NXT(2)就會前進
         這樣子的C語言 會很難寫嗎?
         可以教教我嗎?
     
    [版主回覆04/08/2010 19:16:24]你好:

    NXT與NXT之間的藍牙通訊基本上就是透過信箱(mailbox)傳遞訊息。

    NXT_Master送出訊息後,NXT_Slave接收訊息,根據特定訊息,NXT_Slave執行動作(例如:前進)

    你可以先參考NXC的說明文件

    Programming Lego Robots using NXC, by Danny Benedettelli. 還有範例程式:Tutorial sample code, by Danny Benedettelli.
    在上面的PDF檔第42頁開始就有詳細的介紹喔!

    你可以先使用這些範例程式,歡迎繼續討論。

    如果需要中文解說,我想CAVE的機器人新視界第二版也會有詳盡的說明。

    祝你成功!

    回覆刪除

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