这个问题是指在乐高头脑风暴机器人上编写与NXT模块通信的应用程序。
我想做的事NXC(不完全是C,一种用于为NXT编写程序的语言)提供的功能until(condition)要等到条件评估为true 为止。我想使用蓝牙消息传递协议来实现此目的,并通过android应用程序中的蓝牙与NXT进行通信。
到目前为止,我能做什么:
我能发送输入查询消息(getInputValue(int in)),它发送消息到NXT要求输入的当前状态在。然后NXT发回带有此信息的消息,然后将其写入包含最近请求的输入值的全局变量(我们称之为myValue)。
问题是什么:
我使用的是乐高MINDroid应用程序中的零碎内容-在此类中,我有一个单独的通信线程,该线程处理与NXT的直接通信。收到消息后,它将通过将该消息转发到主线程Handler。当我尝试忙于等待答复时,会发生问题-做:
while(myValue != valueIWant) { sleep(100); getInputValue(in); }
最终导致主线程繁忙,因此处理程序实际上从未收到任何消息。通信线程从NXT接收消息,将消息转发到主线程,但是处理程序永远不会被调用,因为它在做其他事情。
解决此问题的最佳方法是什么?我不能让线程以任何方式等待,因为那样会阻止它也接收消息:(
任何建议,将不胜感激!我还将愉快地详细介绍任何代码。
可能有用的链接```http://bricxcc.sourceforge.net/nbc/nxcdoc/nxcapi/main.html
http://github.com/NXT/LEGO-MINDSTORMS-MINDdroid
http://mindstorms.lego.com/en-us/support/files/default.aspx(适用于蓝牙文档)