Exemplo n.º 1
0
  public long getDistancia() {
    System.out.println("Medição de distância em progresso...");

    this.trigger.low();

    System.out.println("Aguardando tempo do pino...");
    try {
      Thread.sleep(2000);
    } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    // Iniciando a leitura
    System.out.println("Iniciando a leitura");
    try {

      // Envia o sinal no pino Trigger
      // Coloca o trigger em HIGH por 10uS (8 ultrasound bursts at 40 kHz)
      this.trigger.high();
      TimeUnit.MICROSECONDS.sleep(10);
      this.trigger.low();

      // Escuta o pino de ECHO
      // O sensor emitirá uma onda sonora que ao encontrar um obstáculo
      // rebaterá de volta em direção ao módulo, sendo que o neste tempo
      // de emissão e recebimento do sinal o pino ECHO ficará em nivel alto.
      // Logo o calcula da distância pode ser feito de acordo com o tempo em
      // que o pino ECHO permaneceu em nível alto após o pino Trigger ter
      // sido colocado em nível alto.
      long inicio = 0;
      long fim = 0;

      while (this.echo.isLow()) {
        inicio = System.nanoTime();
      }
      while (this.echo.isHigh()) {
        fim = System.nanoTime();
      }

      // Calcula a diferença entre "fim" e "inicio"
      long duracao_pulso = fim - inicio;

      // Calcula distância
      long distancia = 17150 * duracao_pulso;

      // Round
      distancia = Math.round(distancia);

      System.out.println("Distancia: " + distancia);

      return distancia;

    } catch (InterruptedException e) {
      // TODO Auto-generated catch block
      e.printStackTrace();
    }

    return 0;
  }
Exemplo n.º 2
0
 public static void main(String[] args) throws IOException, InterruptedException {
   // 获取输出流
   FileOutputStream fos = new FileOutputStream("data.txt");
   // 从输出流中获取文件加锁对象,并锁定File
   FileLock fl = fos.getChannel().lock();
   if (fl != null) {
     System.out.println("Locked File");
     TimeUnit.MICROSECONDS.sleep(100);
     // 释放文件锁定
     fl.release();
     System.out.println("Release Lock");
   }
 }
Exemplo n.º 3
0
  /**
   * 实现父类update函数
   *
   * @parameter key zk路径 /BIZ
   * @parameter value zk路径中的数据
   */
  @Override
  public void update(String key, String value) {
    if (BIZ_PATH.equals(key)) {
      Map<String, BizType> target = new HashMap<String, MemcachedClient.BizType>();
      String[] bizList = value.split("#");
      for (String item : bizList) {
        String[] biz = item.split(",");
        String bizName = biz[0];
        int bizType = 0;
        try {
          bizType = Integer.parseInt(biz[1]);
        } catch (Exception e) {
          e.printStackTrace();
        }

        if (2 == biz.length) {
          int loop = 0;
          DistCacheAdapter adapter = null;
          while (null == adapter) {
            try {
              adapter = DistCacheAdapter.connect(bizName);
            } catch (Exception e) {
              adapter = null;
            }
            if (null == adapter) {
              try {
                TimeUnit.MICROSECONDS.sleep(50);
              } catch (InterruptedException e) {
                e.printStackTrace();
              }
            }
            if (++loop > 10) {
              break;
            }
          }
          if (null != adapter) {
            BizType bizItem = new BizType(bizName, bizType, adapter);
            target.put(bizName, bizItem);
          }
        }
      }
      synchronized (lock) {
        bizMap.clear();
        bizMap.putAll(target);
      }
    }
  }
Exemplo n.º 4
0
 public void doWork() throws InterruptedException {
   TimeUnit.MICROSECONDS.sleep(rand.nextInt(2000));
   System.out.println(this + " completed");
 }