• ページの履歴を表示しています #21117

lll's Project Wiki

Well come to the library project of Classiclll

These libraries are the external libs of Processing/Proce55ing

Entry Pages

Proce55ing Gallery

WiiRemoteJ by Cha0s

Tips for WiiRemoteJ, by Cha0s

  1. Windows users should user either the BlueCove JSR82 library (with BlueSoleil or WIDCOMM stack) or the Avetana library (with WIDCOMM stack). Linux users should use Avetana (with BlueZ stack). Mac users should use Avetana or BlueCove(with the built-in stack).
  2. Make sure to put the library in the extensions folder (as described in the readme). On Windows, you may also need to add the path of the library to the Windows system PATH variable.
  3. To connect to the remote, use WiiRemoteJ's findRemote methods. DO NOT connect to the remote beforehand with the stack utilities. WiiRemoteJ handles the entire connection process and will not be able to connect if the remote is already connected.
  4. If you're still having trouble, check the FAQ. If that fails, post a stack trace, your OS, Java version, bluetooth stack, and JSR82 implementation. We'll see what we can do to help.
LINUX NOTE
If you get errors that look like this:
  1. Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError:
  2. de.avetana.bluetooth.stack.BlueZ.cancelInquiry()V
  3. at de.avetana.bluetooth.stack.BlueZ.cancelInquiry(Native Method)
  4. at javax.bluetooth.DiscoveryAgent.cancelInquiry(DiscoveryAgent.java:265)
  5. at wiiremotej.WiiRemoteDiscoverer.deviceDiscovered(WiiRemoteDiscoverer.java:68)
  6. at javax.bluetooth.DiscoveryAgent.deviceDiscovered(DiscoveryAgent.java:284)
  7. at de.avetana.bluetooth.stack.BlueZ.hciInquiry(Native Method)
  8. at javax.bluetooth.DiscoveryAgent$1.run(DiscoveryAgent.java:208)
  9. at edu.oswego.cs.dl.util.concurrent.PooledExecutor$Worker.run
  10. (PooledExecutor.java:743)
  11. at java.lang.Thread.run(Thread.java:619)
Then try this (tip provided by realjab): Open Bluez.cpp. Add the following code:
  1. JNIEXPORT void JNICALL Java_de_avetana_bluetooth_stack_BlueZ_cancelInquiry
  2. (JNIEnv *env, jclass obj) {
  3. /* Close the specified HCI device */
  4. //printf("Function called: %s, %i\n"__FILE__, __LINE__);
  5. //hci_close_dev(dd);
  6. return;
  7. }
After completing the change don't forget to ./configure and ./install avetana to get the new .jar and the new .so file.


UBUNTU (GUTSY) NOTE -- fix courtesy of Nemno
If you're using the Avetana stack and your programs are hanging on the following message: "FINER: Calibrating accelerometer..." Do the following:
      1. Download the latest Avetana source.
      2. Go to your avetana source directory and open de/avetana/bluetooth/stack/BlueZ.java
      3. Somewhere around line 317, change line
          int receiveMTU=672, transmitMTU=672; 
        
        to
          int receiveMTU=-1, transmitMTU=-1; 
        
      4. Do a "make clean"
      5. Make sure your envvariables are correct. Then do a "./install"


Copy the compiled files to your WiiRemotej directory. And you're set! Explanation of the problem (for those who are curious; not necessary to get it to work): Verbatim from Nemno.
The problem with the avetana was that when you open a connection the LCAP protocol does some handshake things.
 avetana : I request a config 
 wiimote : Ok set your MTU size on 185 
 avetana : I am ignorant so i'll use MTU size of 672 
 wiimote : See Yaa 
after fix
 avetana : I request a config 
 wiimote : Ok set your MTU size on 185 
 avetana : Ok setting MTU size on 185 
 wiimote : nice doing business 
 avetana : blabla 
 wiimote : blala 
 etc..etc...

_

Tips for P5 sketch, by blindfish

A couple of useful tips for others trying this out:

  1. When I first connect the Wiimote up to Bluetooth it remains in discovery mode. When I then try and connect to the Processing application with 1 & 2 nothing happens. I've found that first pressing the Wiimote power button to 'switch it off' and then hitting 1 & 2 to enter discovery mode gets around this problem. Subsequent attempts to connect should work fine with just 1 & 2 as long as you do the following:
  2. Make sure you 'switch off' your Wiimote before closing your Processing application so that you see the "Remote disconnected" message in the output window. In my case if I fail to do this it buggers something up with the Bluetooth stack which seems to require a system restart to fix

By following these two steps I'm finding this fairly reliable and can now definitely get on with some experimenting

SandField