2015-05-12 31 views
-1

我的PHP服务器脚本通过RS232连接到硬件,因此只有一个请求会提供有效的反馈。我如何确保一次只能发送一个请求,如队列?如何在改造中使用队列

定时器调用这两个函数,所以我在服务器站点2上看到同时发生的请求。

private void deviceGetActualVolume() { 
    if (isOnline()) { 
     RestAdapter adapter = new RestAdapter.Builder() 
       //.setLogLevel(RestAdapter.LogLevel.FULL) 
       .setEndpoint(deviceIp) 
       .build(); 

     deviceAPI api = adapter.create(deviceAPI.class); 
     api.GetActualVolume(new Callback<deviceResponse>() { 
      @Override 
      public void success(deviceResponse device_response, Response response) { 
       if (!device_response.isOk()) { 
        Toast.makeText(MainActivity.this, "Command Error", Toast.LENGTH_LONG).show(); 
       } else { 
        UpdateActualValue(0, device_response.getActualvolume()); 
       } 
      } 
      @Override 
      public void failure(RetrofitError retrofitError) { Toast.makeText(MainActivity.this, "deviceGetActualVolume Failure", Toast.LENGTH_LONG).show(); } 
     }); 

    } else { Toast.makeText(MainActivity.this, getString(R.string.notconnected), Toast.LENGTH_LONG).show(); } 
} 

private void deviceGetScale() { 
    if (isOnline()) { 
     RestAdapter adapter = new RestAdapter.Builder() 
       //.setLogLevel(RestAdapter.LogLevel.FULL) 
       .setEndpoint(deviceIp) 
       .build(); 

     deviceAPI api = adapter.create(deviceAPI.class); 
     api.GetScaleValue(new Callback<deviceResponse>() { 
      @Override 
      public void success(deviceResponse device_response, Response response) { 
       if (!device_response.isOk()) { 
        Toast.makeText(MainActivity.this, "Command Error", Toast.LENGTH_LONG).show(); 
       } else { 
        UpdateScaleValue(device_response.getScale()); 
       } 
      } 

      @Override 
      public void failure(RetrofitError retrofitError) { 
       Toast.makeText(MainActivity.this, "deviceGetScale Failure", Toast.LENGTH_LONG).show(); 
      } 
     }); 

    } else { Toast.makeText(MainActivity.this, getString(R.string.notconnected), Toast.LENGTH_LONG).show(); } 
} 

回答

0

这是不可能的改造,而不是正确的方式。

解决方案是编写一个通过RS232通信的单个后台应用程序,通过memcached获取命令变量。 memcached由可访问的php组件写入和读取。