Sponsors of Wiimoteproject.com
IR Pens for Wiimote Whiteboard
Wiimote Project » Wiimote Projects » Project Videos » Wiiboard Projects » using of the WiiRemoteJ library for wii board
Pages: [1]
  Print  
Author Topic: using of the WiiRemoteJ library for wii board  (Read 4764 times)
0 Members and 1 Guest are viewing this topic.
*
Karma: +0/-0
Posts: 5
Offline Offline
View Profile Email
« on: June 28, 2011, 03:03:11 PM »

Hi, I want to use the WiiRemoteJ library to interface with my balance board. but after i wrote my java code, it did not seem to work, i get no response. below is my code, can you give me some advice? ( my OS is windows7)



package summer.wiiboard;

/**
 *
 * @author Mat
 */

import java.awt.*;
import javax.swing.*;
import wiiremotej.*;
import wiiremotej.event.*;
import java.io.*;
public class BBImpl extends BalanceBoardAdapter
{
    private BalanceBoard board;
    private static JFrame graphFrame;
    private static JPanel graph;
    private static double massX;
    private static double massY;



    public static void main(String args[])
    {
        java.lang.System.setProperty("bluecove.jsr82.psm_minimum_off", "true");
        java.lang.System.setProperty("bluecove.stack.first", "widcomm");
        //basic console logging options...
        //WiiRemoteJ.setConsoleLoggingAll();
        //WiiRemoteJ.setConsoleLoggingOff();
        try
        {
            graphFrame = new JFrame();
    //        graphFrame.setTitle("Mass Graph");
            graphFrame.setTitle("Center of gravity graph: Balance Board");
            graphFrame.setSize(800, 600);
            graphFrame.setResizable(false);

            graph = new JPanel()
            {
                public void paintComponent(Graphics graphics)
                {
                    graphics.clearRect(0, 0, 800, 600);
                    graphics.fillRect(0, 0, 800, 600);
                    graphics.setColor(Color.WHITE);
                    graphics.drawLine(0, 300, 800, 300);
                    graphics.drawLine(400, 0, 400, 600);

                    graphics.setColor(Color.RED);
                    graphics.fillOval((int)(massX * 800+400-15), (int)(massY * 600+300-15), 30, 30);
                }
            };

            graph.setDoubleBuffered(true);
            graphFrame.add(graph);
            graphFrame.setVisible(false);
            //Find and connect to a Balance Board
            BalanceBoard board = null;
            System.out.println("Please press the red syn button.");
           
            while (board == null) {
               try {
                    System.out.println("Trying to connect.");
                    board = WiiRemoteJ.findBalanceBoard();

               }
                    catch(Exception e) {
                    board = null;
                    e.printStackTrace();
                    System.out.println("Failed to connect board. Trying again.");
                }
               
           }


            System.out.println("Wii Balance Board is connected.");

            board.addBalanceBoardListener(new BBImpl(board));
            board.setLEDIlluminated(true);

            final BalanceBoard boardF = board;
            Runtime.getRuntime().addShutdownHook(new Thread(new Runnable(){public void run(){boardF.disconnect();}}));
        }
        catch(Exception e){e.printStackTrace();}
    }

    public BBImpl(BalanceBoard board)
    {
        this.board = board;
    }

    public void disconnected()
    {
        System.out.println("Board disconnected... Please Wii again.");
        System.exit(0);
    }


    public void massInputReceived(BBMassEvent evt)
    {
       double massTL = evt.getMass(MassConstants.TOP, MassConstants.LEFT);
       double massTR = evt.getMass(MassConstants.TOP, MassConstants.RIGHT);
       double massBL = evt.getMass(MassConstants.BOTTOM, MassConstants.LEFT);
       double massBR = evt.getMass(MassConstants.BOTTOM, MassConstants.RIGHT);

       if (evt.getTotalMass() > 3) { // if mass is too small, don't bother
          double topMass = massTL + massTR;
          double bottomMass = massBL + massBR;
          double leftMass = massTL + massBL;
          double rightMass = massTR + massBR;

          double vertRange = topMass + bottomMass;
          double horizRange = rightMass + leftMass;

          massX = (rightMass-leftMass)/horizRange;
          massY = -(topMass-bottomMass)/vertRange;
       }
       else {
          massX = 0;
          massY = 0;
       }

       graph.repaint();
    }

    public void buttonInputReceived(BBButtonEvent evt) {
       if (evt.wasPressed()) {
          System.out.println("Disconnecting! Please Wii again.");
          System.exit(0);
       }
    }


}
Logged
Pages: [1]
  Print  
 
Jump to:  

Clicky Web Analytics