FHMasterSim.java 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package at.acdp.urweb.fhpp;
  2. import at.acdp.urweb.Params;
  3. import com.digitalpetri.modbus.codec.Modbus;
  4. import com.digitalpetri.modbus.master.ModbusTcpMaster;
  5. import com.digitalpetri.modbus.master.ModbusTcpMasterConfig;
  6. import com.digitalpetri.modbus.requests.ModbusRequest;
  7. import com.digitalpetri.modbus.requests.ReadHoldingRegistersRequest;
  8. import com.digitalpetri.modbus.requests.WriteMultipleRegistersRequest;
  9. import com.digitalpetri.modbus.responses.ReadHoldingRegistersResponse;
  10. import io.netty.util.ReferenceCountUtil;
  11. import io.netty.util.concurrent.CompleteFuture;
  12. import org.slf4j.Logger;
  13. import org.slf4j.LoggerFactory;
  14. import java.util.ArrayList;
  15. import java.util.List;
  16. import java.util.Timer;
  17. import java.util.concurrent.CompletableFuture;
  18. import java.util.concurrent.Executors;
  19. import java.util.concurrent.ScheduledExecutorService;
  20. public class FHMasterSim implements IFHMaster {
  21. private final static Logger logger = LoggerFactory.getLogger(FHMasterSim.class);
  22. private final ScheduledExecutorService scheduler = Executors.newSingleThreadScheduledExecutor();
  23. private volatile boolean started = false;
  24. private int targetPos=-1;
  25. private float curPos=-1;
  26. private float simSpeed=0.1f;
  27. public FHMasterSim() {
  28. }
  29. @Override
  30. public void start(Params app) throws InterruptedException {
  31. started = true;
  32. while(true) {
  33. Thread.sleep(30);
  34. curPos = curPos + ((targetPos - curPos) * simSpeed);
  35. }
  36. }
  37. @Override
  38. public void direktAuftrag(int pos, int speed, int start, boolean relative) {
  39. logger.info("direktAuftrag {},{},{},{}", pos, speed, start, relative);
  40. targetPos=pos;
  41. }
  42. @Override
  43. public CompletableFuture<Status> readStatus() {
  44. Status s=new Status();
  45. s.istPosition = (int) curPos;
  46. s.enabled = true;
  47. return CompletableFuture.completedFuture(s);
  48. }
  49. @Override
  50. public void bereitschaft() {
  51. logger.info("bereitschaft");
  52. }
  53. @Override
  54. public void stop() {
  55. started = false;
  56. }
  57. }