Re: [問題] 藍芽如何操控多台機器人? (獎勵微薄p幣)

看板java作者 (Alien)時間14年前 (2011/12/09 22:08), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《atuaz (開個六給他)》之銘言: : 各位前輩們好 : 小弟有個疑問想問大家 : 上篇被版主收爭議文是版規沒注意到 : 相同的疑問 但是小弟縮減了程式碼並更正確的發問真正的問題 : 小弟現在是能用筆電透過藍芽連結到LEGO機器人讓他前後左右 : 但是想請問一下 : 因為目前能做到的是一(NB)對一(LEGO) : 有沒有辦法是一(NB)對多(2台LEGO) : 就是說我從筆電按一個視窗的前後左右 : 兩台LEGO能同時前進 : 下面的程式碼雖然看不太出來真正讓機器人動的指令是哪個地方 : (看起來有點像是 new MouseAction(dataOut, xxxx)?) : 不過跟機器人連線的應該是這一段程式碼吧 : ------- : conn = new NXTConnector(); : if(!conn.connectTo("", "", NXTCommFactory.BLUETOOTH)) //連線到NXT : { :   JOptionPane.showMessageDialog(null, "Cannot connect to NXT", "Error", : JOptionPane.ERROR_MESSAGE); //連線失敗訊息 :   System.exit(1); : }//if : dataOut = conn.getDataOut(); //取得輸出串流 : ------- : 那麼應該只要同時建立兩個連線,分別對應兩個機器人 : 就會有兩個 dataOut 的物件 : 在要下指令的時候就同時對兩個 dataOut 物件去下指令 首先,你有沒有相關的 API 文件? 單靠這樣其實大家可以幫到的實在有限。 假設 NXTConnector 就是用以代表連往每個機器人連線, 那麼你要去看的是,API 怎樣代表不同的機器人。 (看來應該是 connectTo method 裡控制。) 你要連兩個機器人,就 connectTo 不同的機器人, 再從各自的 connector 得到各自的 output stream. 然後你想要控制哪部機器人就寫命令往它的 output stream。 當然這一切都只是從你的程式碼瞎猜的。你還是最 好去看機器人的 API document 或相關的教學文件。 : 例如: : ------- : //右轉按鈕 : btRight = new JButton("→"); : btRight.setBounds(200, 100, 100, 100); : btRight.addMouseListener(new MouseAction(dataOut_1, RIGHT)); : btRight.addMouseListener(new MouseAction(dataOut_2, RIGHT)); : this.getContentPane().add(btRight); : ------- 這部份和控制沒任何關係。只是 swing 的 code 而已。 如果你不明白這部份在做什麼建議你去看看 swing 的 相關書籍,打一打根基。 : 類似這樣的寫法應該就能達到目的了吧!? : 為了解惑小弟會給文章內有推文的前輩們一些酬謝金(P幣) : 就依照受益的程度不分多少吧!!:) : 希望各位資深前輩能不吝嗇指教! alien -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 183.179.61.91
文章代碼(AID): #1EuXPrcX (java)
文章代碼(AID): #1EuXPrcX (java)