作者adrianshum (Alien)
看板java
标题Re: [问题] 蓝芽如何操控多台机器人? (奖励微薄p币)
时间Fri Dec 9 22:08:51 2011
※ 引述《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