上一篇文章中寫了兩台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);
}
}
真是太謝謝老師了!
回覆刪除幫我解決了一個疑惑!
[版主回覆10/14/2009 15:45:13]不用客氣!我也學到很多!
邱老師
回覆刪除這部分我也曾搞好久,只不過把經驗留下來,也留意到太太的留言,本想寫篇文章解答,不過太忙了,讓您搶先一步。
[版主回覆10/19/2009 22:49:44]Bridan大:
您客氣了!
有您的解答就不用搞得我滿頭大汗.....
其實John Hansen先生也承認說明檔及書本中並沒有詳細說明相關預設常數
看來需要先對預設常數了解一番.
老師好!!
回覆刪除我想請教你一切有關 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的機器人新視界第二版也會有詳盡的說明。
祝你成功!