コード例 #1
0
 public void run() {
   try {
     byte[] b = new byte[100];
     int i = 0;
     while (i < 3) {
       if (l2ccon.ready()) {
         l2ccon.receive(b);
         System.out.println("Thread " + tn + " received data");
         i++;
       }
       synchronized (this) {
         wait(100);
       }
     }
     l2ccon.close();
   } catch (Exception e) {
     try {
       l2ccon.close();
     } catch (IOException e1) {
       e1.printStackTrace();
     }
   }
   System.out.println("Thread " + tn + " closed");
 }
コード例 #2
0
    protected IncomingThread(int source, String btaddress)
        throws IOException, InterruptedException {
      super("out:" + btaddress);

      // see http://code.google.com/p/bluecove/issues/detail?id=64
      System.setProperty(BlueCoveConfigProperties.PROPERTY_JSR_82_PSM_MINIMUM_OFF, "true");
      System.setProperty(BlueCoveConfigProperties.PROPERTY_STACK_FIRST, "widcomm");
      System.setProperty(BlueCoveConfigProperties.PROPERTY_STACK, "widcomm");
      System.loadLibrary("bluecove");

      String l2cap = "btl2cap://" + btaddress + ":13;authenticate=false;encrypt=false;master=false";

      logger.log(LogService.LOG_DEBUG, "Bluetooth address: " + btaddress);
      logger.log(LogService.LOG_DEBUG, "Opening incoming connection: " + l2cap);

      incoming = (L2CAPConnection) Connector.open(l2cap, Connector.WRITE, true);

      logger.log(LogService.LOG_DEBUG, "Incoming connection is " + incoming.toString());

      active = true;
    }
コード例 #3
0
    @Override
    public void run() {
      while (active) {
        byte[] buf = new byte[1024];
        int length = 0;
        try {
          length = incoming.receive(buf);
        } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
          active = false;
        }
        /*
        StringBuffer sb = new StringBuffer();
        logger.log(LogService.LOG_DEBUG, "received:");
        for (int i = 0; i < length; i++) {
        	String hex = Integer.toHexString(buf[i] & 0xff);
        	sb.append(hex.length() == 1 ? "0x0" : "0x").append(hex).append(" ");
        	if ((i + 1) % 8 == 0) {
        		logger.log(LogService.LOG_DEBUG, sb.toString());
        		sb.delete(0, sb.length());
        	}
        }

        if (sb.length() > 0) {
        	logger.log(LogService.LOG_DEBUG, sb.toString());
        }*/

        StringBuffer s = new StringBuffer();
        for (int i = 0; i < length; i++) {
          s.append(String.format("%02x", buf[i]));
        }

        // do not take the last number in account, it seems to not be constant
        String incomingString = s.substring(0, s.length() - 1);
        Button b = buttonMatching.get(incomingString);
        if (b == null) {
          logger.log(
              LogService.LOG_WARNING,
              "The button with number '"
                  + incomingString
                  + "' is not recognized (usually because several buttons are pressed in the same time).");
        } else {
          // FIXME: to be complete
          switch (b) {
            case CIRCLE_BACK_KEY:
              eventSender = sensorCircle;
              break;

            case DOWN_ARROW:
              eventSender = sensorDown;
              break;

            case LEFT_ARROW:
              eventSender = sensorLeft;
              break;

            case RIGHT_ARROW:
              eventSender = sensorRight;
              break;

            case UP_ARROW:
              eventSender = sensorUp;
              break;

            case ENTER_KEY:
              eventSender = sensorEnter;
              break;

            case PLAY_KEY:
              eventSender = sensorPlay;
              break;

            case SELECT_KEY:
              eventSender = sensorSelect;
              break;

            case SQUARE_VIEW_KEY:
              eventSender = sensorSquare;
              break;

            case START_KEY:
              eventSender = sensorStart;
              break;

            case TRIANGLE_OPTIONS_KEY:
              eventSender = sensorTriangle;
              break;

            case X_KEY:
              eventSender = sensorX;
              break;

            default:
              break;
          }
        }
      }
    }