udphelper.cpp 1.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "udphelper.h"
  2. #define _GET_DEVICE_TYPE_AND_CHANNEL 0x00
  3. #define _GET_DEVICE_POWER_INFO 0x01
  4. #define _GLOBAL_REMOTE_PORT 32768
  5. UdpHelper::UdpHelper(QObject *parent) : QObject(parent)
  6. {
  7. mSocket = new QUdpSocket(this);
  8. mSocket->bind(QHostAddress::Any,this->port);
  9. }
  10. int UdpHelper::getDeviceTypeAndChannel(int *type, int *channel)
  11. {
  12. //bool status = false ;
  13. QByteArray dataArray;
  14. dataArray.resize(6);
  15. dataArray[0] = 0x55;
  16. dataArray[1] = 0x00;
  17. dataArray[2] = 0x02;
  18. dataArray[3] = _GET_DEVICE_TYPE_AND_CHANNEL;
  19. dataArray[4] = 0x00 ;
  20. dataArray[5] = 0xFF ;
  21. mSocket->writeDatagram(dataArray,QHostAddress::Broadcast,_GLOBAL_REMOTE_PORT);
  22. if(mSocket->waitForReadyRead(1000)==false)
  23. return -1 ;
  24. //recv
  25. QByteArray arr;
  26. arr.resize(mSocket->bytesAvailable());
  27. mSocket->readDatagram(arr.data(),arr.size(),&addr,&port);
  28. *type = (int)arr.at(0);
  29. *channel = (arr.at(1)<<8|arr.at(2));
  30. return 0;
  31. }
  32. int UdpHelper::getPowerInfo(bool *sts, float *vol, float *cur, float *power, float *factor, float *consum)
  33. {
  34. //bool status = false ;
  35. QByteArray dataArray;
  36. dataArray.resize(6);
  37. dataArray[0] = 0x55;
  38. dataArray[1] = 0x00;
  39. dataArray[2] = 0x02;
  40. dataArray[3] = _GET_DEVICE_POWER_INFO;
  41. dataArray[4] = 0x00 ;
  42. dataArray[5] = 0xFF ;
  43. mSocket->writeDatagram(dataArray,QHostAddress::Broadcast,_GLOBAL_REMOTE_PORT);
  44. if(mSocket->waitForReadyRead(1000)==false)
  45. return -1 ;
  46. QByteArray arr;
  47. char* data_buff;
  48. arr.resize(mSocket->bytesAvailable());
  49. mSocket->readDatagram(arr.data(),arr.size(),&addr,&port);
  50. data_buff = arr.data();
  51. *sts = data_buff[0];
  52. memcpy(vol,data_buff+1,4);
  53. memcpy(cur,data_buff+5,4);
  54. memcpy(power,data_buff+9,4);
  55. memcpy(factor,data_buff+13,4);
  56. memcpy(consum,data_buff+17,4);
  57. return 0;
  58. }