1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072 |
- #include "webdatathread.h"
- #include "ytservicecore.h"
- //#include <QtDebug>
- //extern WebDataShm *webData;
- //extern UserInfoShm *userinfoShm;
- typedef union {
- float f;
- unsigned char c[4];
- }FC;
- WebDataThread::WebDataThread(qintptr socketDescriptor, QObject *parent) :
- QThread(parent)
- {
- this->SocketDescriptor = socketDescriptor;
- }
- void WebDataThread::run(){
- QTcpSocket *so = new QTcpSocket;
- if(!so->setSocketDescriptor(this->SocketDescriptor)){
- so->abort();
- // printf("setSocketDescriptor error\n");
- return;
- }
- keepRunning = true;
- // printf("socket in %s \n", so->peerAddress().toString().toUtf8().data());
- while(keepRunning){
- if(so->state()!=QAbstractSocket::ConnectedState){
- close_self(so);
- return;
- }
- if(so->waitForReadyRead())
- getData(so);
- }
- }
- void WebDataThread::close_self(QTcpSocket *so){
- so->abort();
- keepRunning = false;
- }
- QByteArray WebDataThread::mkUserCountReturn(){
- QByteArray ret = QByteArray(17,0x00);
- int crc=0;
- QDateTime datetime = QDateTime::currentDateTime();
- ret[0] = 0x7e;
- ret[1] = 0x10;
- ret[2] = 0x00;
- ret[3] = 0x03;
- ret[4] = static_cast<char>(0x82&0xff);
- ret[5] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[6] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[7] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[8] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[9] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[10] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[11] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[12] = static_cast<char>(0x01);
- ret[13] = static_cast<char>((webData->UsersCount>>8)&0xff);
- ret[14] = static_cast<char>(webData->UsersCount&0xff);
- ret[15] = static_cast<char>(0x00);
- ret[16] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<15;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[15] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkUserSyncData(quint16 uIdx)
- {
- int cur = 0;
- int crc = 0;
- QByteArray loginname = QByteArray(webData->users[uIdx].LoginName);
- QByteArray password = QByteArray(webData->users[uIdx].Password);
- QByteArray username = QByteArray(webData->users[uIdx].UserName);
- int l_loginname = loginname.length();
- int l_password = password.length();
- int l_username = username.length();
- int datalen = l_loginname+l_password+l_username+13;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x01);
- ret[cur++] = static_cast<char>((uIdx>>8)&0xff);
- ret[cur++] = static_cast<char>(uIdx&0xff);
- ret[cur++] = static_cast<char>(webData->users[uIdx].Status&0xff);
- ret[cur++] = static_cast<char>((l_loginname>>8)&0xff);
- ret[cur++] = static_cast<char>(l_loginname&0xff);
- for(int i=0;i<l_loginname;i++)
- ret[cur++] = static_cast<char>(loginname.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_password>>8)&0xff);
- ret[cur++] = static_cast<char>(l_password&0xff);
- for(int i=0;i<l_password;i++)
- ret[cur++] = static_cast<char>(password.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_username>>8)&0xff);
- ret[cur++] = static_cast<char>(l_username&0xff);
- for(int i=0;i<l_username;i++)
- ret[cur++] = static_cast<char>(username.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++){
- crc += static_cast<int>(ret[i]&0xff);
- }
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkCompanyCountReturn()
- {
- int cur = 0, crc = 0;
- quint16 datalen = 0x0003;
- QByteArray ret = QByteArray(17,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>(((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f);
- ret[cur++] = static_cast<char>((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f);
- ret[cur++] = static_cast<char>(((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f);
- ret[cur++] = static_cast<char>(((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f);
- ret[cur++] = static_cast<char>(((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f);
- ret[cur++] = static_cast<char>(((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f);
- ret[cur++] = static_cast<char>(((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f);
- ret[cur++] = static_cast<char>(0x02);
- ret[cur++] = static_cast<char>((webData->CompanysCount>>8)&0xff);
- ret[cur++] = static_cast<char>(webData->CompanysCount&0xff);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkCompanySyncData(quint16 cIdx)
- {
- int cur = 0, crc = 0;
- QByteArray CompanyCode = webData->companys[cIdx].CompanyCode;
- QByteArray CompanyName = webData->companys[cIdx].CompanyName;
- QByteArray ProjectType = webData->companys[cIdx].ProjectType;
- QByteArray UserName = webData->companys[cIdx].UserName;
- QByteArray Phone = webData->companys[cIdx].Phone;
- int l_CompanyCode = CompanyCode.length();
- int l_CompanyName = CompanyName.length();
- int l_ProjectType = ProjectType.length();
- int l_UserName = UserName.length();
- int l_Phone = Phone.length();
- int datalen = l_CompanyCode+l_CompanyName+l_ProjectType+l_UserName+l_Phone+658;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x02);
- ret[cur++] = static_cast<char>((cIdx>>8)&0xff);
- ret[cur++] = static_cast<char>(cIdx&0xff);
- ret[cur++] = static_cast<char>((l_CompanyCode>>8)&0xff);
- ret[cur++] = static_cast<char>(l_CompanyCode&0xff);
- for(int i=0;i<l_CompanyCode;i++){
- ret[cur++] = static_cast<char>(CompanyCode.at(i)&0xff);
- }
- ret[cur++] = 0x00;
- ret[cur++] = static_cast<char>((l_CompanyName>>8)&0xff);
- ret[cur++] = static_cast<char>(l_CompanyName&0xff);
- for(int i=0;i<l_CompanyName;i++){
- ret[cur++] = static_cast<char>(CompanyName.at(i)&0xff);
- }
- ret[cur++] = 0x00;
- ret[cur++] = static_cast<char>((l_ProjectType>>8)&0xff);
- ret[cur++] = static_cast<char>(l_ProjectType&0xff);
- for(int i=0;i<l_ProjectType;i++){
- ret[cur++] = static_cast<char>(ProjectType.at(i)&0xff);
- }
- ret[cur++] = 0x00;
- ret[cur++] = static_cast<char>((l_UserName>>8)&0xff);
- ret[cur++] = static_cast<char>(l_UserName&0xff);
- for(int i=0;i<l_UserName;i++){
- ret[cur++] = static_cast<char>(UserName.at(i)&0xff);
- }
- ret[cur++] = 0x00;
- ret[cur++] = static_cast<char>((l_Phone>>8)&0xff);
- ret[cur++] = static_cast<char>(l_Phone&0xff);
- for(int i=0;i<l_Phone;i++){
- ret[cur++] = static_cast<char>(Phone.at(i)&0xff);
- }
- ret[cur++] = 0x00;
- for(int i=0;i<32;i++){
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevCount>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevCount)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevOutLineCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevOutLineCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevOutLineCount>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevOutLineCount)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevOutConfirmCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevOutConfirmCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevOutConfirmCount>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevOutConfirmCount)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevAlarmCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevAlarmCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevAlarmCount>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevAlarmCount)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevAlarmConfirmCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevAlarmConfirmCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevAlarmConfirmCount>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->companys[cIdx].subType[i].DevAlarmConfirmCount)&0xff);
- }
- ret[cur] = 0x00;
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkUserCompanyCountReturn()
- {
- int cur = 0, crc = 0;
- quint16 datalen = 0x0003;
- QByteArray ret = QByteArray(17,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x03);
- ret[cur++] = static_cast<char>((webData->UserCompanyCount>>8)&0xff);
- ret[cur++] = static_cast<char>(webData->UserCompanyCount&0xff);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkUserCompanySyncData(quint16 ucIdx)
- {
- int cur = 0, crc = 0;
- QByteArray Loginname = QByteArray(webData->userCompanys[ucIdx].Loginname);
- QByteArray CompanyCode = QByteArray(webData->userCompanys[ucIdx].CompanyCode);
- int l_Loginname = Loginname.length();
- int l_CompanyCode = CompanyCode.length();
- int datalen = l_Loginname+l_CompanyCode+9;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x03);
- ret[cur++] = static_cast<char>((ucIdx>>8)&0xff);
- ret[cur++] = static_cast<char>(ucIdx&0xff);
- ret[cur++] = static_cast<char>((l_Loginname>>8)&0xff);
- ret[cur++] = static_cast<char>(l_Loginname&0xff);
- for(int i=0;i<l_Loginname;i++){
- ret[cur++] = static_cast<char>(Loginname.at(i)&0xff);
- }
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_CompanyCode>>8)&0xff);
- ret[cur++] = static_cast<char>(l_CompanyCode&0xff);
- for(int i=0;i<l_CompanyCode;i++){
- ret[cur++] = static_cast<char>(CompanyCode.at(i)&0xff);
- }
- ret[cur++] = static_cast<char>(0x00);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkBuildingCountReturn()
- {
- int cur = 0, crc = 0;
- quint16 datalen = 0x0003;
- QByteArray ret = QByteArray(5,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x04);
- ret[cur++] = static_cast<char>((webData->BuildingsCount>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->BuildingsCount)&0xff);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkBuildingSyncData(quint16 bIdx)
- {
- int cur = 0, crc=0;
- QByteArray BuildingCode = QByteArray(webData->buildings[bIdx].BuildingCode);
- QByteArray BuildingName = QByteArray(webData->buildings[bIdx].BuildingName);
- QByteArray CompanyCode = QByteArray(webData->buildings[bIdx].CompanyCode);
- QByteArray Address = QByteArray(webData->buildings[bIdx].Address);
- QByteArray FullAddress = QByteArray(webData->buildings[bIdx].FullAddress);
- FC Lng, Lat;
- Lng.f = webData->buildings[bIdx].Lng;
- Lat.f = webData->buildings[bIdx].Lat;
- int l_BuildingCode = BuildingCode.length();
- int l_BuildingName = BuildingName.length();
- int l_CompanyCode = CompanyCode.length();
- int l_Address = Address.length();
- int l_FullAddress = FullAddress.length();
- int datalen = l_BuildingCode+l_BuildingName+l_CompanyCode+l_Address+l_FullAddress+26;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x04);
- ret[cur++] = static_cast<char>((bIdx>>8)&0xff);
- ret[cur++] = static_cast<char>(bIdx&0xff);
- ret[cur++] = static_cast<char>((l_BuildingCode>>8)&0xff);
- ret[cur++] = static_cast<char>(l_BuildingCode&0xff);
- for(int i=0;i<l_BuildingCode;i++)
- ret[cur++] = static_cast<char>(BuildingCode.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_BuildingName>>8)&0xff);
- ret[cur++] = static_cast<char>(l_BuildingName&0xff);
- for(int i=0;i<l_BuildingName;i++)
- ret[cur++] = static_cast<char>(BuildingName.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_CompanyCode>>8)&0xff);
- ret[cur++] = static_cast<char>(l_CompanyCode&0xff);
- for(int i=0;i<l_CompanyCode;i++)
- ret[cur++] = static_cast<char>(CompanyCode.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_Address>>8)&0xff);
- ret[cur++] = static_cast<char>(l_Address&0xff);
- for(int i=0;i<l_Address;i++)
- ret[cur++] = static_cast<char>(Address.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_FullAddress>>8)&0xff);
- ret[cur++] = static_cast<char>(l_FullAddress&0xff);
- for(int i=0;i<l_FullAddress;i++)
- ret[cur++] = static_cast<char>(FullAddress.at(i)&0xff);
- ret[cur++]=static_cast<char>(0x00);
- for(int i=0;i<4;i++)
- ret[cur++] = static_cast<char>(Lng.c[i]&0xff);
- for(int i=0;i<4;i++)
- ret[cur++] = static_cast<char>(Lat.c[i]&0xff);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkDeviceCountReturn()
- {
- int cur = 0, crc = 0;
- quint16 datalen = 0x05;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x05);
- ret[cur++] = static_cast<char>((webData->DevicesCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->DevicesCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->DevicesCount>>8)&0xff);
- ret[cur++] = static_cast<char>(webData->DevicesCount&0xff);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkDeviceSyncData(quint32 dIdx)
- {
- int cur = 0, crc = 0;
- QByteArray DevCode = QByteArray(webData->devices[dIdx].DevCode);
- QByteArray CompanyCode = QByteArray(webData->devices[dIdx].CompanyCode);
- QByteArray DevName = QByteArray(webData->devices[dIdx].DevName);
- QByteArray DevInfo = QByteArray(webData->devices[dIdx].DevInfo);
- int l_DevCode = DevCode.length();
- int l_CompanyCode = CompanyCode.length();
- int l_DevName = DevName.length();
- int l_DevInfo = DevInfo.length();
- int datalen = l_DevCode+l_CompanyCode+l_DevName+l_DevInfo+22;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x05);
- ret[cur++] = static_cast<char>((dIdx>>24)&0xff);
- ret[cur++] = static_cast<char>((dIdx>>16)&0xff);
- ret[cur++] = static_cast<char>((dIdx>>8)&0xff);
- ret[cur++] = static_cast<char>(dIdx&0xff);
- ret[cur++] = static_cast<char>((webData->devices[dIdx].DevIdx>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->devices[dIdx].DevIdx>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->devices[dIdx].DevIdx>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->devices[dIdx].DevIdx)&0xff);
- ret[cur++] = static_cast<char>(webData->devices[dIdx].Enabled&0xff);
- ret[cur++] = static_cast<char>(webData->devices[dIdx].dwType&0xff);
- ret[cur++] = static_cast<char>((l_DevCode>>8)&0xff);
- ret[cur++] = static_cast<char>(l_DevCode&0xff);
- for(int i=0;i<l_DevCode;i++)
- ret[cur++] = static_cast<char>(DevCode.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_CompanyCode>>8)&0xff);
- ret[cur++] = static_cast<char>(l_CompanyCode&0xff);
- for(int i=0;i<l_CompanyCode;i++)
- ret[cur++] = static_cast<char>(CompanyCode.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_DevName>>8)&0xff);
- ret[cur++] = static_cast<char>(l_DevName&0xff);
- for(int i=0;i<l_DevName;i++)
- ret[cur++] = static_cast<char>(DevName.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>((l_DevInfo>>8)&0xff);
- ret[cur++] = static_cast<char>(l_DevInfo&0xff);
- for(int i=0;i<l_DevInfo;i++)
- ret[cur++] = static_cast<char>(DevInfo.at(i)&0xff);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkCompanyAlarmCountReturn(quint16 cIdx)
- {
- int cur = 0, crc = 0;
- quint16 datalen = 0x0003;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e&0xff);
- ret[cur++] = static_cast<char>(0x10&0xff);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x06);
- if((cIdx>webData->CompanysAlarmCount)&&(cIdx!=10239)){
- ret[cur++] = static_cast<char>((webData->CompanysAlarmCount>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanysAlarmCount)&0xff);
- }else{
- ret[cur++] = static_cast<char>((cIdx>>8)&0xff);
- ret[cur++] = static_cast<char>(cIdx&0xff);
- }
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkCompanyAlarmSyncData(quint16 cIdx)
- {
- int cur = 0, crc = 0;
- QList<QByteArray> dataList;
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[0].Data));
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[1].Data));
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[2].Data));
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[3].Data));
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[4].Data));
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[5].Data));
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[6].Data));
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[7].Data));
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[8].Data));
- dataList.append(QByteArray(webData->CompanyAlarm[cIdx].alarmRec[9].Data));
- int datalen = 3;
- for(int i=0;i<10;i++)
- datalen += dataList.at(i).length()+9;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x06);
- ret[cur++] = static_cast<char>((cIdx>>8)&0xff);
- ret[cur++] = static_cast<char>(cIdx&0xff);
- for(int i=0;i<10;i++){
- QByteArray Data = dataList.at(i);
- int len = Data.length();
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[cIdx].alarmRec[i].DeviceIdx>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[cIdx].alarmRec[i].DeviceIdx>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[cIdx].alarmRec[i].DeviceIdx>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[cIdx].alarmRec[i].DeviceIdx)&0xff);
- ret[cur++] = static_cast<char>(webData->CompanyAlarm[cIdx].alarmRec[i].dwType&0xff);
- ret[cur++] = static_cast<char>(webData->CompanyAlarm[cIdx].alarmRec[i].ShowFlag&0xff);
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[cIdx].alarmRec[i].Time_T>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[cIdx].alarmRec[i].Time_T>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[cIdx].alarmRec[i].Time_T>>8)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[cIdx].alarmRec[i].Time_T)&0xff);
- ret[cur++] = static_cast<char>((len>>8)&0xff);
- ret[cur++]= static_cast<char>(len&0xff);
- for(int j=0;j<len;j++){
- ret[cur++] = static_cast<char>(Data.at(j)&0xff);
- }
- ret[cur++] = static_cast<char>(0x00);
- }
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkHeartBeatReturn()
- {
- int crc = 0;
- QByteArray ret = QByteArray(14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[0] = static_cast<char>(0x7e);
- ret[1] = static_cast<char>(0x10);
- ret[2] = static_cast<char>(0x00);
- ret[3] = static_cast<char>(0x00);
- ret[4] = static_cast<char>(0x81&0xff);
- ret[5] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[6] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[7] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[8] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[9] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[10] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[11] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[12] = static_cast<char>(0x00);
- ret[13] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<12;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[12] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkDataCountReturn()
- {
- quint16 datalen = 20;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- int cur = 0, crc = 0;
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x87&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x07);
- ret[cur++] = static_cast<char>((webData->CompanysCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanysCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanysCount>>8)&0xff);
- ret[cur++] = static_cast<char>(webData->CompanysCount&0xff);
- ret[cur++] = static_cast<char>((webData->BuildingsCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->BuildingsCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->BuildingsCount>>8)&0xff);
- ret[cur++] = static_cast<char>(webData->BuildingsCount&0xff);
- ret[cur++] = static_cast<char>((webData->DevicesCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->DevicesCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->DevicesCount>>8)&0xff);
- ret[cur++] = static_cast<char>(webData->DevicesCount&0xff);
- ret[cur++] = static_cast<char>((webData->UsersCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->UsersCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->UsersCount>>8)&0xff);
- ret[cur++] = static_cast<char>(webData->UsersCount&0xff);
- ret[cur++] = static_cast<char>((webData->UserCompanyCount>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->UserCompanyCount>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->UserCompanyCount>>8)&0xff);
- ret[cur++] = static_cast<char>(webData->UserCompanyCount&0xff);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkCompanyAlarmTimeCountReturn()
- {
- int cur = 0, crc = 0;
- quint16 datalen = 0x0003;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- quint16 page = ((webData->CompanysAlarmCount>>8)&0x00ff)+1;
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x08);
- ret[cur++] = static_cast<char>((page>>8)&0xff);
- ret[cur++] = static_cast<char>(page&0xff);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- QByteArray WebDataThread::mkCompanyAlarmSyncTime(quint16 page)
- {
- if(page<40){
- int cur = 0, crc = 0;
- quint16 datalen = 1027;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x82&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(0x08);
- ret[cur++] = static_cast<char>((page>>8)&0xff);
- ret[cur++] = static_cast<char>(page&0xff);
- for(quint16 i=0;i<256;i++){
- if(webData->CompanyAlarm[((page<<8)&0xff00)|(i&0x00ff)].alarmRec[0].ShowFlag==0x01){
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[((page<<8)&0xff00)|(i&0x00ff)].alarmRec[0].Time_T>>24)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[((page<<8)&0xff00)|(i&0x00ff)].alarmRec[0].Time_T>>16)&0xff);
- ret[cur++] = static_cast<char>((webData->CompanyAlarm[((page<<8)&0xff00)|(i&0x00ff)].alarmRec[0].Time_T>>8)&0xff);
- ret[cur++] = static_cast<char>(webData->CompanyAlarm[((page<<8)&0xff00)|(i&0x00ff)].alarmRec[0].Time_T&0xff);
- }else{
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>(0x00);
- ret[cur++] = static_cast<char>(0x00);
- }
- }
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }else
- return mkCompanyAlarmTimeCountReturn();
- }
- QByteArray WebDataThread::mkSyncRtn(quint8 subCmd)
- {
- int cur = 0, crc = 0;
- quint16 datalen = 0x01;
- QByteArray ret = QByteArray(datalen+14,0x00);
- QDateTime datetime = QDateTime::currentDateTime();
- ret[cur++] = static_cast<char>(0x7e);
- ret[cur++] = static_cast<char>(0x10);
- ret[cur++] = static_cast<char>((datalen>>8)&0xff);
- ret[cur++] = static_cast<char>(datalen&0xff);
- ret[cur++] = static_cast<char>(0x84&0xff);
- ret[cur++] = static_cast<char>((((datetime.date().year()/1000)&0x0f)<<4)|(((datetime.date().year()%1000)/100)&0x0f));
- ret[cur++] = static_cast<char>(((((datetime.date().year()%100)/10)&0x0f)<<4)|((datetime.date().year()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().month()/10)&0x0f)<<4)|((datetime.date().month()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.date().day()/10)&0x0f)<<4)|((datetime.date().day()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().hour()/10)&0x0f)<<4)|((datetime.time().hour()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().minute()/10)&0x0f)<<4)|((datetime.time().minute()%10)&0x0f));
- ret[cur++] = static_cast<char>((((datetime.time().second()/10)&0x0f)<<4)|((datetime.time().second()%10)&0x0f));
- ret[cur++] = static_cast<char>(subCmd);
- ret[cur] = static_cast<char>(0x00);
- ret[cur+1] = static_cast<char>(0xe7&0xff);
- for(int i=1;i<cur;i++)
- crc += static_cast<int>(ret[i]&0xff);
- ret[cur] = static_cast<char>(crc&0xff);
- return ret;
- }
- void WebDataThread::setAlarmCompanyInfo(int row, QByteArray data)
- {
- quint16 cur = 3;
- quint16 d_len = static_cast<quint16>(data.length());
- QList<AlarmSet> AlarmList;
- if(row>=10240)
- return;
- for(quint8 i=0;i<10;i++){
- if(d_len>(cur+11)){
- quint16 deviceIdx = static_cast<quint16>(((data.at(cur+2)&0x00ff)<<8)|(data.at(cur+3)&0x00ff));
- quint8 dwType = data.at(cur+4)&0xff;
- quint8 showFlag = data.at(cur+5)&0xff;
- uint a_time = static_cast<uint>(((data.at(cur+6)&0x000000ff)<<24)|((data.at(cur+7)&0x000000ff)<<16)|((data.at(cur+8)&0x000000ff)<<8)|(data.at(cur+9)&0x000000ff));
- quint16 data_len = static_cast<quint16>(((data.at(cur+10)&0x00ff)<<8)|(data.at(cur+11)&0x00ff));
- if(d_len>(cur+data_len+12)){
- QByteArray aData = data.mid(cur+12,data_len);
- if((deviceIdx<10240)&&(deviceIdx<webData->DevicesCount)){
- AlarmList.append(AlarmSet(deviceIdx,webData->devices[deviceIdx].DevName,
- aData,dwType,a_time,showFlag));
- }
- cur += data_len+13;
- }
- }
- }
- for(int i=(AlarmList.length()-1);i>=0;i--){
- setCompanyAlarmSet(QString(webData->devices[AlarmList.at(i).DeviceIdx].DevCode),AlarmList.at(i));
- }
- }
- void WebDataThread::setCompanyAlarmSet(QString deviceCode, AlarmSet set)
- {
- QString companyCode;
- quint16 companyIdx = 0xffff;
- quint32 deviceIdx = 0xffffffff;
- AlarmSet tmp = AlarmSet(0xffffffff,"","",0xff,0,0);
- for(quint32 i=0;i<102400;i++){
- if(i>=webData->DevicesCount)
- break;
- if(QString::compare(QString(webData->devices[i].DevCode),deviceCode)==0){
- deviceIdx = i;
- companyCode = QString(webData->devices[i].CompanyCode);
- set.DeviceIdx = deviceIdx;
- set.DevName = QString(webData->devices[i].DevName);
- break;
- }
- }
- for(quint16 i=0;i<10240;i++){
- if(i>=webData->CompanysCount)
- break;
- if(QString::compare(QString(webData->companys[i].CompanyCode),companyCode)==0){
- companyIdx = i;
- break;
- }
- }
- if(companyIdx<webData->CompanysCount){
- for(quint8 i=0;i<10;i++){
- if(set.AlarmTime>webData->CompanyAlarm[companyIdx].alarmRec[i].Time_T){
- for(quint8 j=9;j>i;j--){
- get_AlarmSet(companyIdx,j-1,&tmp);
- set_AlarmSet(companyIdx,j,tmp);
- }
- set_AlarmSet(companyIdx,i,set);
- break;
- }
- }
- for(quint8 i=0;i<10;i++){
- if(set.AlarmTime>webData->CompanyAlarm[10239].alarmRec[i].Time_T){
- for(quint8 j=9;j>i;j--){
- get_AlarmSet(10239,j-1,&tmp);
- set_AlarmSet(10239,j,tmp);
- }
- set_AlarmSet(10239,i,set);
- break;
- }
- }
- }
- }
- void WebDataThread::set_AlarmSet(quint16 companyIdx, quint8 alarmIdx, AlarmSet set)
- {
- if(((companyIdx<webData->CompanysCount)||(companyIdx==10239))&&(alarmIdx<10)){
- if(set.Enabled==0x01){
- webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].DeviceIdx = set.DeviceIdx;
- sprintf(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].DevName,"%s",set.DevName.toUtf8().data());
- sprintf(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Data,"%s",set.AlarmData.toUtf8().data());
- sprintf(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Time,"%s",QDateTime::fromTime_t(set.AlarmTime).toString("yyyy-MM-dd HH:mm:ss").toUtf8().data());
- webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].dwType = set.dwType;
- webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Time_T = set.AlarmTime;
- webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].ShowFlag = 0x01;
- }else
- webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].ShowFlag = 0x00;
- webData->CompanyAlarm[companyIdx].UpdateTime = QDateTime::currentDateTime().toTime_t();
- }
- }
- void WebDataThread::get_AlarmSet(quint16 companyIdx, quint8 alarmIdx, AlarmSet *set)
- {
- if(((companyIdx<webData->CompanysCount)||(companyIdx==10239))&&(alarmIdx<10)){
- if(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].ShowFlag==0x01){
- set->Enabled = 0x01;
- set->DeviceIdx = webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].DeviceIdx;
- set->dwType = webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].dwType;
- set->AlarmTime = webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Time_T;
- set->DevName = QString::fromUtf8(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].DevName);
- set->AlarmData = QString::fromUtf8(webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].Data);
- webData->CompanyAlarm[companyIdx].alarmRec[alarmIdx].ShowFlag = 0x01;
- }else{
- set->Enabled = 0x00;
- }
- }
- }
- void WebDataThread::getData(QTcpSocket *so)
- {
- QByteArray cmd = so->readAll();
- // printf("get cmd\n");
- if(((cmd.at(0)&0xff)==0x7e)&&((cmd.at(1)&0xf0)==0x10)&&((cmd.at(cmd.length()-1)&0xff)==0xe7)&&(cmd.length()>13)){
- quint16 datalen = static_cast<quint16>(((cmd.at(2)&0x00ff)<<8)|(cmd.at(3)&0x00ff));
- quint8 crc = 0x00;
- if(cmd.length()==(datalen+14)){
- for(int i=1;i<(cmd.length()-2);i++)
- crc += static_cast<quint8>(cmd.at(i)&0xff);
- if(static_cast<quint8>(cmd.at(cmd.length()-2)&0xff)==static_cast<quint8>(crc)){
- switch(cmd.at(4)&0xff){
- case 0x01:
- so->write(mkHeartBeatReturn());
- so->flush();
- break;
- case 0x02:
- {
- if(datalen==0x0003){
- switch(cmd.at(12)&0xff){
- case 0x01:
- {
- quint16 uIdx = static_cast<quint16>(((cmd.at(13)&0x00ff)<<8)|(cmd.at(14)&0x00ff));
- if(uIdx<webData->UsersCount){
- so->write(mkUserSyncData(uIdx));
- }else{
- so->write(mkUserCountReturn());
- }
- so->flush();
- }
- break;
- case 0x02:
- {
- quint16 cIdx = static_cast<quint16>(((cmd.at(13)&0x00ff)<<8)|(cmd.at(14)&0x00ff));
- if(cIdx<webData->CompanysCount)
- so->write(mkCompanySyncData(cIdx));
- else{
- so->write(mkCompanyCountReturn());
- }
- so->flush();
- }
- break;
- case 0x03:
- {
- quint16 ucIdx = static_cast<quint16>(((cmd.at(13)&0x00ff)<<8)|(cmd.at(14)&0x00ff));
- if(ucIdx<webData->UserCompanyCount)
- so->write(mkUserCompanySyncData(ucIdx));
- else{
- so->write(mkUserCompanyCountReturn());
- }
- so->flush();
- }
- break;
- case 0x04:
- {
- quint16 bIdx = static_cast<quint16>(((cmd.at(13)&0x00ff)<<8)|(cmd.at(14)&0x00ff));
- if(bIdx<webData->BuildingsCount)
- so->write(mkBuildingSyncData(bIdx));
- else
- so->write(mkBuildingCountReturn());
- so->flush();
- }
- break;
- case 0x06:
- {
- quint16 cIdx = static_cast<quint16>(((cmd.at(13)&0x00ff)<<8)|(cmd.at(14)&0x00ff));
- if((cIdx==10239)||(cIdx<webData->CompanysAlarmCount))
- so->write(mkCompanyAlarmSyncData(cIdx));
- else
- so->write(mkCompanyAlarmCountReturn(cIdx));
- so->flush();
- }
- break;
- case 0x08:
- {
- quint16 page = static_cast<quint16>(((cmd.at(13)&0x00ff)<<8)|(cmd.at(14)&0x00ff));
- if(page<=((webData->CompanysAlarmCount>>8)&0x00ff))
- so->write(mkCompanyAlarmSyncTime(page));
- else
- so->write(mkCompanyAlarmTimeCountReturn());
- so->flush();
- }
- break;
- default:break;
- }
- }else if(datalen==0x0005){
- switch(cmd.at(12)&0xff){
- case 0x05:
- {
- quint32 dIdx = static_cast<quint32>(((cmd.at(13)&0x000000ff)<<24)
- |((cmd.at(14)&0x00000000ff)<<16)
- |((cmd.at(15)&0x00000000ff)<<8)
- |(cmd.at(16)&0x000000ff));
- if(dIdx<webData->DevicesCount)
- so->write(mkDeviceSyncData(dIdx));
- else
- so->write(mkDeviceCountReturn());
- so->flush();
- }
- break;
- default:break;
- }
- }else if(datalen==0x0001){
- switch(cmd.at(12)&0xff){
- case 0x07:
- so->write(mkDataCountReturn());
- so->flush();
- break;
- default:break;
- }
- }else{
- switch(cmd.at(12)&0xff){
- case 0x06:
- if(datalen>=170){
- quint16 cIdx = static_cast<quint16>(((cmd.at(13)&0x00ff)<<8)|(cmd.at(14)&0x00ff));
- setAlarmCompanyInfo(cIdx,cmd.mid(12,datalen));
- }
- break;
- default:break;
- }
- }
- }
- break;
- case 0x04:
- {
- switch(cmd.at(12)&0xff){
- case 0x01:
- {
- int len = ((cmd.at(13)&0x00ff)<<8)|(cmd.at(14)&0x00ff);
- if(cmd.length()==(len+18)){
- QString deviceCode = QString(cmd.mid(15,len));
- emit needSync(deviceCode);
- so->write(mkSyncRtn(0x01));
- }
- }
- break;
- case 0x02:
- {
- quint8 dwtype = cmd.at(13)&0xff;
- quint8 showFalg = cmd.at(14)&0xff;
- int deviceCodeLen = ((cmd.at(15)&0x00ff)<<8)|(cmd.at(16)&0x00ff);
- if(cmd.length()>(deviceCodeLen+30)){
- QString deviceCode = QString(cmd.mid(17,deviceCodeLen));
- int companyCodeLen = ((cmd.at(19+deviceCodeLen)&0x00ff)<<8)|(cmd.at(20+deviceCodeLen)&0x00ff);
- if(cmd.length()>(deviceCodeLen+companyCodeLen+30)){
- QString companyCode = QString(cmd.mid(21+deviceCodeLen,companyCodeLen));
- uint t = static_cast<uint>(((cmd.at(23+deviceCodeLen+companyCodeLen)&0x000000ff)<<24)
- |((cmd.at(24+deviceCodeLen+companyCodeLen)&0x000000ff)<<16)
- |((cmd.at(25+deviceCodeLen+companyCodeLen)&0x000000ff)<<8)
- |(cmd.at(26+deviceCodeLen+companyCodeLen)&0x000000ff));
- int dataLen = ((cmd.at(27+deviceCodeLen+companyCodeLen)&0x00ff)<<8)|(cmd.at(28+deviceCodeLen+companyCodeLen));
- if(cmd.length()==(30+deviceCodeLen+companyCodeLen+dataLen)){
- QString repData = QString(cmd.mid(29+deviceCodeLen+companyCodeLen,dataLen));
- so->write(mkSyncRtn(0x02));
- for(quint16 i=0;i<webData->DevicesCount;i++){
- if(QString::compare(deviceCode,QString(webData->devices[i].DevCode))==0){
- setCompanyAlarmSet(deviceCode,AlarmSet(i,QString(webData->devices[i].DevName),repData,dwtype,t,showFalg));
- break;
- }
- }
- }
- }
- }
- }
- break;
- default:break;
- }
- }
- break;
- default:break;
- }
- }//else
- // printf("crc error %d %d\n",crc,static_cast<quint8>(cmd.at(cmd.length()-2)&0xff));
- }//else
- // printf("len error: %d\n",datalen);
- }//else
- // printf("frame error\n");
- }
|