我正在使用 Lejos 0.9.1-beta 在 Ev3 上使用 Wii Remote 控制的简单示例。我正在使用 WiiRemoteJ 和 Bluecove 2.1.1-SNAPSHOT,该示例在我的 Mac 上运行,但在我的 EV3 上出现下一个错误:
本机库 bluecove_arm 不可用 WR
我在下一个链接上找到了解决方案,但我不知道如何在 EV3 中编译和创建一个新 jar。
你能帮我吗?
这是我的代码
package test;
import wiiremotej.*;
import wiiremotej.event.*;
import com.intel.bluetooth.BlueCoveConfigProperties;
import lejos.hardware.lcd.LCD;
public class Wii extends WiiRemoteAdapter {
private WiiRemote remote;
private static boolean accelerometerSource = true;
private static int y = 0;
private static int lastY = 0;
public static void main(String args[]) {
System.setProperty(BlueCoveConfigProperties.PROPERTY_JSR_82_PSM_MINIMUM_OFF, "true");
WiiRemoteJ.setConsoleLoggingOff();
try {
LCD.drawString("Buscando WR", 0, 2);
WiiRemote remote = null;
while (remote == null) {
try {
remote = WiiRemoteJ.findRemote();
LCD.drawString("WR encontrado", 0, 2);
}
catch (Exception e) {
remote = null;
LCD.drawString("ERROR", 0, 2);
}
}
remote.addWiiRemoteListener(new Wii(remote));
remote.setAccelerometerEnabled(true);
remote.setSpeakerEnabled(false);
remote.setIRSensorEnabled(false, WRIREvent.BASIC);
remote.setLEDIlluminated(0, false);
remote.getButtonMaps().add(new ButtonMap(WRButtonEvent.HOME, ButtonMap.NUNCHUK, WRNunchukExtensionEvent.C,
new int[] { java.awt.event.KeyEvent.VK_CONTROL }, java.awt.event.InputEvent.BUTTON1_MASK, 0, -1));
final WiiRemote remoteF = remote;
Runtime.getRuntime().addShutdownHook(new Thread(new Runnable() {
public void run() {
remoteF.disconnect();
}
}));
} catch (Exception e) {
e.printStackTrace();
}
}
public Wii(WiiRemote remote) {
this.remote = remote;
}
public void accelerationInputReceived(WRAccelerationEvent evt) {
//Doblar derecha y izquierda
if(accelerometerSource){
lastY = y;
//300 es el centro
y = (int)(evt.getYAcceleration()/5*300)+300;
if( y < lastY - 2){
LCD.drawString("Izquierda", 3, 2);
}
else if( y > lastY + 2){
LCD.drawString("Derecha", 3, 2);
}
}
}
public void buttonInputReceived(WRButtonEvent evt) {
if (evt.isPressed(WRButtonEvent.ONE)){
LCD.drawString("Avanzar", 5, 2);
}
if (evt.isPressed(WRButtonEvent.TWO)){
LCD.drawString("Retroceder", 5, 2);
}
}
public void disconnected() {
System.out.println("Remote disconnected... Please Wii again.");
System.exit(0);
}
public void statusReported(WRStatusEvent evt) {
}
public void IRInputReceived(WRIREvent evt) {
}
public void extensionConnected(WiiRemoteExtension extension) {
System.out.println("Extension connected!");
try {
remote.setExtensionEnabled(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public void extensionPartiallyInserted() {
System.out.println("Extension partially inserted. Push it in more next time!");
}
public void extensionUnknown() {
System.out.println("Extension unknown. Did you try to plug in a toaster or something?");
}
public void extensionDisconnected(WiiRemoteExtension extension) {
System.out.println("Extension disconnected. Why'd you unplug it, eh?");
}
}