/************************* sick 511 雷达 upd协议连接控制板 *************************/ #pragma once #include "Laser.h" #include #include #include #include #include class CUdpLaser : public CLaser { public: CUdpLaser(int id, Automatic::stLaserCalibParam laser_param); virtual ~CUdpLaser(); virtual bool Connect(); virtual void Disconnect(); virtual bool Start(); virtual bool Stop(); protected: virtual bool RecvData(CBinaryData& data); virtual DATA_type Data2PointXYZ(CBinaryData* pData, std::vector& points); private: bool Send(char* sendbuf, int len); // 发送指令 int Recv(char* recvbuf, int len); // 接收数据 static int FindHead(char* buf, int b_len); static int FindTail(char* buf, int b_len); private: bool GetData(CBinaryData* pData, std::vector& distance, float& freq, float& start_angle); long Str0x2Long(const char* data, int len); protected: #pragma region udp相关变量 int m_socket; // WSADATA m_wsd; struct sockaddr_in m_send_addr; std::mutex m_mutex; #pragma endregion };