| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include "udphelper.h"
- #define _GET_DEVICE_TYPE_AND_CHANNEL 0x00
- #define _GET_DEVICE_POWER_INFO 0x01
- #define _GLOBAL_REMOTE_PORT 32768
- UdpHelper::UdpHelper(QObject *parent) : QObject(parent)
- {
- mSocket = new QUdpSocket(this);
- mSocket->bind(QHostAddress::Any,this->port);
- }
- int UdpHelper::getDeviceTypeAndChannel(int *type, int *channel)
- {
- //bool status = false ;
- QByteArray dataArray;
- dataArray.resize(6);
- dataArray[0] = 0x55;
- dataArray[1] = 0x00;
- dataArray[2] = 0x02;
- dataArray[3] = _GET_DEVICE_TYPE_AND_CHANNEL;
- dataArray[4] = 0x00 ;
- dataArray[5] = 0xFF ;
- mSocket->writeDatagram(dataArray,QHostAddress::Broadcast,_GLOBAL_REMOTE_PORT);
- if(mSocket->waitForReadyRead(1000)==false)
- return -1 ;
- //recv
- QByteArray arr;
- arr.resize(mSocket->bytesAvailable());
- mSocket->readDatagram(arr.data(),arr.size(),&addr,&port);
- *type = (int)arr.at(0);
- *channel = (arr.at(1)<<8|arr.at(2));
- return 0;
- }
- int UdpHelper::getPowerInfo(bool *sts, float *vol, float *cur, float *power, float *factor, float *consum)
- {
- //bool status = false ;
- QByteArray dataArray;
- dataArray.resize(6);
- dataArray[0] = 0x55;
- dataArray[1] = 0x00;
- dataArray[2] = 0x02;
- dataArray[3] = _GET_DEVICE_POWER_INFO;
- dataArray[4] = 0x00 ;
- dataArray[5] = 0xFF ;
- mSocket->writeDatagram(dataArray,QHostAddress::Broadcast,_GLOBAL_REMOTE_PORT);
- if(mSocket->waitForReadyRead(1000)==false)
- return -1 ;
- QByteArray arr;
- char* data_buff;
- arr.resize(mSocket->bytesAvailable());
- mSocket->readDatagram(arr.data(),arr.size(),&addr,&port);
- data_buff = arr.data();
- *sts = data_buff[0];
- memcpy(vol,data_buff+1,4);
- memcpy(cur,data_buff+5,4);
- memcpy(power,data_buff+9,4);
- memcpy(factor,data_buff+13,4);
- memcpy(consum,data_buff+17,4);
- return 0;
- }
|