123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186 |
- #include "elcommthreadpub.h"
- ELCommThreadPub::ELCommThreadPub(QObject *parent) : QThread(parent)
- {
- mqttIdx=1;
- client = new QMQTT::Client(QHostAddress("123.60.11.86"), 1883, this);
- client->setUsername("admin");
- client->setPassword("a10vE0s73g5");
- connect(client,&QMQTT::Client::connected,this,&ELCommThreadPub::onConnected);
- client->connectToHost();
- }
- ELCommThreadPub::~ELCommThreadPub()
- {
- }
- void ELCommThreadPub::run()
- {
- }
- void ELCommThreadPub::dataPub(QString devicename,QString method,QString faultrecordtype,QString starttime,QString endtime)
- {
- if(client->connectionState()==QMQTT::STATE_INIT || client->connectionState()==QMQTT::STATE_DISCONNECTED)
- {
- client->connectToHost();
- }
- QDateTime stTime ,endTime;
- if(method.compare("thing.service.GetFaultRecordList")==0){
- stTime = QDateTime::fromString(starttime.append(" 00:00:00.000"),"yyyy-MM-dd HH:mm:ss.zzz");
- endTime = QDateTime::fromString(endtime.append(" 00:00:00.000"),"yyyy-MM-dd HH:mm:ss.zzz");
- }else{
- stTime = QDateTime::fromString(starttime,"yyyy-MM-dd HH:mm:ss.zzz");
- endTime = QDateTime::fromString(endtime,"yyyy-MM-dd HH:mm:ss.zzz");
- }
- qint64 STime = stTime.toMSecsSinceEpoch();//毫秒级时间戳
- qint64 ETime = endTime.toMSecsSinceEpoch();
- QString saTime = QString::number(STime,16);
- QString enTime = QString::number(ETime,16);
- QString tes1,tes2,recordtype;
- tes1.append("0").append(saTime.mid(0,1));
- tes2.append("0").append(enTime.mid(0,1));
- recordtype.append("0").append(faultrecordtype);
- printf("stTime = %s, endTime = %s\n",stTime.toString("yyyy-MM-dd HH:mm:ss.zzz").toUtf8().data(),endTime.toString("yyyy-MM-dd HH:mm:ss.zzz").toUtf8().data());
- QByteArray data;
- if(method.compare("thing.service.GetFaultRecordList")==0){
- printf("enter method getFaultRecordList\n");
- data = QByteArray(22,0x00);
- data[0] = static_cast<char>(0xeb);
- data[1] = static_cast<char>(0x90);
- data[2] = static_cast<char>(0x10);
- data[3] = static_cast<char>(0x00);
- data[4] = static_cast<char>(0x17);
- data[5] = static_cast<char>(0x10);
- data[6] = static_cast<char>(hexstr_to_byte(recordtype)&0xff);
- data[7] = static_cast<char>(0x00);
- // data[8] = static_cast<char>(0x00);
- // data[9] = static_cast<char>(0xb2);
- // data[10] = static_cast<char>(0xc3);
- // data[11] = static_cast<char>(0x85);
- // data[12] = static_cast<char>(0x7b);
- // data[13] = static_cast<char>(0x01);
- // data[14] = static_cast<char>(0x00);
- // data[15] = static_cast<char>(0xc6);
- // data[16] = static_cast<char>(0x36);
- // data[17] = static_cast<char>(0x95);
- // data[18] = static_cast<char>(0x7b);
- // data[19] = static_cast<char>(0x01);
- data[8] = static_cast<char>(hexstr_to_byte(saTime.mid(9,2))&0xff);
- data[9] = static_cast<char>(hexstr_to_byte(saTime.mid(7,2))&0xff);
- data[10] = static_cast<char>(hexstr_to_byte(saTime.mid(5,2))&0xff);
- data[11] = static_cast<char>(hexstr_to_byte(saTime.mid(3,2))&0xff);
- data[12] = static_cast<char>(hexstr_to_byte(saTime.mid(1,2))&0xff);
- data[13] = static_cast<char>(hexstr_to_byte(tes1)&0xff);
- data[14] = static_cast<char>(hexstr_to_byte(enTime.mid(9,2))&0xff);
- data[15] = static_cast<char>(hexstr_to_byte(enTime.mid(7,2))&0xff);
- data[16] = static_cast<char>(hexstr_to_byte(enTime.mid(5,2))&0xff);
- data[17] = static_cast<char>(hexstr_to_byte(enTime.mid(3,2))&0xff);
- data[18] = static_cast<char>(hexstr_to_byte(enTime.mid(1,2))&0xff);
- data[19] = static_cast<char>(hexstr_to_byte(tes2)&0xff);
- quint16 Crc = chk_sum(data);
- data[20] = static_cast<char>(Crc&0xff);
- data[21] = static_cast<char>((Crc>>8)&0xff);
- }else if(method == "thing.service.GetFaultRecordConfig"){
- printf("enter method GetFaultRecordConfig\n");
- data = QByteArray(16,0x00);
- data[0] = static_cast<char>(0xeb);
- data[1] = static_cast<char>(0x90);
- data[2] = static_cast<char>(0x0A);
- data[3] = static_cast<char>(0x00);
- data[4] = static_cast<char>(0x17);
- data[5] = static_cast<char>(0x11);
- data[6] = static_cast<char>(hexstr_to_byte(recordtype)&0xff);
- data[7] = static_cast<char>(0x00);
- data[8] = static_cast<char>(hexstr_to_byte(saTime.mid(9,2))&0xff);
- data[9] = static_cast<char>(hexstr_to_byte(saTime.mid(7,2))&0xff);
- data[10] = static_cast<char>(hexstr_to_byte(saTime.mid(5,2))&0xff);
- data[11] = static_cast<char>(hexstr_to_byte(saTime.mid(3,2))&0xff);
- data[12] = static_cast<char>(hexstr_to_byte(saTime.mid(1,2))&0xff);
- data[13] = static_cast<char>(hexstr_to_byte(tes1)&0xff);
- quint16 Crc = chk_sum(data);
- data[14] = static_cast<char>(Crc&0xff);
- data[15] = static_cast<char>((Crc>>8)&0xff);
- }else if(method == "thing.service.GetFaultRecordData"){
- printf("enter method GetFaultRecordData\n");
- data = QByteArray(16,0x00);
- data[0] = static_cast<char>(0xeb);
- data[1] = static_cast<char>(0x90);
- data[2] = static_cast<char>(0x0A);
- data[3] = static_cast<char>(0x00);
- data[4] = static_cast<char>(0x17);
- data[5] = static_cast<char>(0x12);
- data[6] = static_cast<char>(hexstr_to_byte(recordtype)&0xff);
- data[7] = static_cast<char>(0x00);
- data[8] = static_cast<char>(hexstr_to_byte(saTime.mid(9,2))&0xff);
- data[9] = static_cast<char>(hexstr_to_byte(saTime.mid(7,2))&0xff);
- data[10] = static_cast<char>(hexstr_to_byte(saTime.mid(5,2))&0xff);
- data[11] = static_cast<char>(hexstr_to_byte(saTime.mid(3,2))&0xff);
- data[12] = static_cast<char>(hexstr_to_byte(saTime.mid(1,2))&0xff);
- data[13] = static_cast<char>(hexstr_to_byte(tes1)&0xff);
- quint16 Crc = chk_sum(data);
- data[14] = static_cast<char>(Crc&0xff);
- data[15] = static_cast<char>((Crc>>8)&0xff);
- }
- QString topic = QString("/anyoee/data/a10vE0s73g5/%1/down_raw").arg(devicename);
- emit SendPubData(topic,"SendPubSubData-publish-test",data);
- client->publish(QMQTT::Message(mqttIdx++,topic,data));
- if(mqttIdx>9999)
- mqttIdx = 1;
- }
- quint8 ELCommThreadPub::hexstr_to_byte(QString dat)
- {
- quint8 tmp[2];
- QByteArray Dat = dat.toLower().toLatin1();
- quint8 temp;
- temp = Dat.at(0)&0xff;
- if((temp>=0x30)&&(temp<=0x39))
- tmp[0] = temp-0x30;
- else
- tmp[0] = temp-0x37;
- temp = Dat.at(1)&0xff;
- if((temp>=0x30)&&(temp<=0x39))
- tmp[1] = temp-0x30;
- else
- tmp[1] = temp-0x37;
- return static_cast<quint8>(((tmp[0]&0x0f)<<4)|(tmp[1]&0x0f));
- }
- quint16 ELCommThreadPub::chk_sum(QByteArray buff)
- {
- quint16 crc = 0x0000;
- for(quint16 j=2;j<buff.length()-2;j++)
- {
- crc += static_cast<quint16>(buff[j]&0x00ff);
- }
- return crc;
- }
- void ELCommThreadPub::onConnected()
- {
- printf("ELCommThreadPub::onConnected \n");
- }
|