modbus.cpp 903 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "modbus.h"
  2. #include "message_queue.h"
  3. CModbusTcpSensor::CModbusTcpSensor(CMessageQueue* q) :_message(q)
  4. {
  5. _run = false;
  6. }
  7. void CModbusTcpSensor::SetModbusTcpSensor(SensorModbusTcp<CModbusTcpSensor>* modbus)
  8. {
  9. _modbus = modbus;
  10. }
  11. void CModbusTcpSensor::Start()
  12. {
  13. if(!_run)
  14. {
  15. _thread = std::thread(&CModbusTcpSensor::Run, this);
  16. _run = true;
  17. }
  18. //_modbus->read_registers(0x28,0x04);
  19. }
  20. void CModbusTcpSensor::Run()
  21. {
  22. while (_run)
  23. {
  24. _modbus->read_input_registers(0x10A,1);
  25. std::this_thread::sleep_for(std::chrono::milliseconds(1000));
  26. }
  27. }
  28. void CModbusTcpSensor::Stop()
  29. {
  30. if (_run)
  31. {
  32. _run = false;
  33. _thread.join();
  34. }
  35. }
  36. void CModbusTcpSensor::Notify(uint16_t * buffer)
  37. {
  38. if (_run)
  39. {
  40. _message->_Radardata.r7 = buffer[0];
  41. _message->_Radardata.r8 = buffer[1];
  42. }
  43. }