UdpLaser.h 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. /*************************
  2. sick 511 雷达 upd协议连接控制板
  3. *************************/
  4. #pragma once
  5. #include "Laser.h"
  6. #include <sys/types.h>
  7. #include <sys/socket.h>
  8. #include <netinet/in.h>
  9. #include <arpa/inet.h>
  10. #include <mutex>
  11. class CUdpLaser : public CLaser
  12. {
  13. public:
  14. CUdpLaser(int id, Automatic::stLaserCalibParam laser_param);
  15. virtual ~CUdpLaser();
  16. virtual bool Connect();
  17. virtual void Disconnect();
  18. virtual bool Start();
  19. virtual bool Stop();
  20. protected:
  21. virtual bool RecvData(CBinaryData& data);
  22. virtual DATA_type Data2PointXYZ(CBinaryData* pData, std::vector<CPoint3D>& points);
  23. private:
  24. bool Send(char* sendbuf, int len); // 发送指令
  25. int Recv(char* recvbuf, int len); // 接收数据
  26. static int FindHead(char* buf, int b_len);
  27. static int FindTail(char* buf, int b_len);
  28. private:
  29. bool GetData(CBinaryData* pData, std::vector<float>& distance,
  30. float& freq, float& start_angle);
  31. long Str0x2Long(const char* data, int len);
  32. protected:
  33. #pragma region udp相关变量
  34. int m_socket;
  35. // WSADATA m_wsd;
  36. struct sockaddr_in m_send_addr;
  37. std::mutex m_mutex;
  38. #pragma endregion
  39. };