12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448 |
- #include "smartlightcommthread.h"
- #include "smartlightshm.h"
- SmartLightCommThread::SmartLightCommThread(qintptr socketDescriptor, QObject *parent)
- : QThread (parent)
- {
- idx = -1;
- ErrorCount[0] = 0x0000;
- ErrorCount[1] = 0x0000;
- WirelessSignal = 0xff;
- keepcomm = false;
- CmdList.clear();
- this->SocketDescriptor = socketDescriptor;
- }
- SmartLightCommThread::~SmartLightCommThread()
- {
- deleteLater();
- }
- QString SmartLightCommThread::deviceID()
- {
- return DeviceID;
- }
- void SmartLightCommThread::run()
- {
- QTcpSocket *so = new QTcpSocket;
- if(!so->setSocketDescriptor(this->SocketDescriptor))
- {
- so->abort();
- return;
- }
- WaitEcho = false;
- WaitCount = 0;
- DevType = -1;
- DeviceID = "";
- keepcomm = true;
- err_count = 0;
- while (keepcomm) {
- if(so->state()!=QTcpSocket::ConnectedState){
- close_self(so);
- return;
- }
- if(so->waitForReadyRead(1000)){
- WaitCount = 0;
- readData(so);
- }
- if(CmdList.length()>0){
- if(!WaitEcho){
- QByteArray cmd = CmdList.first();
- so->write(cmd);
- so->flush();
- CmdList.removeFirst();
- QString Data = QString("[ %1 %2 %3 >>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(so->peerAddress().toString())
- .arg(DeviceID.length()>0?QString("%1").arg(DeviceID):QString(""));
- for(int i=0;i<cmd.length();i++){
- Data.append(QString(" %1").arg(cmd.at(i)&0xff,2,16,QChar('0')));
- }
- emit CommData(DeviceID, 2, Data);
- WaitCount = 0;
- }
- }
- if(WaitEcho)
- WaitCount++;
- if(WaitCount>30)
- WaitEcho=false;
- usleep(100000);
- }
- }
- quint16 SmartLightCommThread::chk_crcc(QByteArray buff, int len)
- {
- quint16 default_data = 0xa001;
- quint16 crc = 0xffff;
- for(int j=0;j<len;j++)
- {
- crc ^= static_cast<quint8>(buff[j]&0xff);
- for(int i=0;i<8;i++)
- {
- if(crc&0x01)
- {
- crc >>= 1;
- crc ^= default_data;
- }else
- crc >>= 1;
- }
- }
- return crc;
- }
- void SmartLightCommThread::mk_EventList_qry(QString deviceId, quint8 type, quint8 cur, quint8 num)
- {
- UN_REFERENCED_PARAMETER(deviceId);
- if((type==0x01)||(type==0x02)){
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body = QByteArray(21,0x00);
- body[0] = static_cast<char>(ServerAddr1&0xff);
- body[1] = static_cast<char>((ServerAddr1>>8)&0xff);
- body[2] = static_cast<char>((ServerAddr1>>16)&0xff);
- body[3] = static_cast<char>((ServerAddr1>>24)&0xff);
- body[4] = static_cast<char>(ServerAddr0&0xff);
- body[5] = static_cast<char>((ServerAddr0>>8)&0xff);
- body[6] = static_cast<char>((ServerAddr0>>16)&0xff);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x0e);
- body[9] = static_cast<char>(0xe0);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(type&0xff);
- body[13] = static_cast<char>(0x00);
- body[14] = static_cast<char>(cur&0xff);
- body[15] = static_cast<char>(num&0xff);
- body[16] = static_cast<char>((((dt.time().second()/10)&0x0f)<<4)|(dt.time().second()%10));
- body[17] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|(dt.time().minute()%10));
- body[18] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|(dt.time().hour()%10));
- body[19] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|(dt.date().day()%10));
- body[20] = static_cast<char>(0x05);
- QByteArray cmd = mkDataFrame(body);
- CmdList.append(cmd);
- }
- }
- int SmartLightCommThread::get_fp_byte(int num)
- {
- if(num>0)
- return ((0x0100<<((num-1)&0x07))|(num>>3));
- return 0;
- }
- quint8 SmartLightCommThread::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));
- }
- void SmartLightCommThread::mk_hisData_qry(QString deviceId, quint16 f_pno, quint16 f_fno, QDateTime t1, QDateTime t2, quint8 sep, quint8 num)
- {
- UN_REFERENCED_PARAMETER(deviceId);
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body = QByteArray(1,0x00);
- if((f_fno==2)||(f_fno==9)){
- body = QByteArray(22,0x00);
- }else if((f_fno==1)||(f_fno==17)||(f_fno==18)||(f_fno==19)||(f_fno==20)||(f_fno==21)||(f_fno==22)){
- body = QByteArray(26,0x00);
- }else if((f_fno==41)||(f_fno==42)||(f_fno==43)||(f_fno==61)||(f_fno==62)){
- body = QByteArray(29,0x00);
- }
- body[0] = static_cast<char>(ServerAddr1&0xff);
- body[1] = static_cast<char>((ServerAddr1>>8)&0xff);
- body[2] = static_cast<char>((ServerAddr1>>16)&0xff);
- body[3] = static_cast<char>((ServerAddr1>>24)&0xff);
- body[4] = static_cast<char>(ServerAddr0&0xff);
- body[5] = static_cast<char>((ServerAddr0>>8)&0xff);
- body[6] = static_cast<char>((ServerAddr0>>16)&0xff);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x0d);
- body[9] = static_cast<char>(0xe0);
- int pno = get_fp_byte(f_pno);
- body[10] = static_cast<char>((pno>>8)&0xff);
- body[11] = static_cast<char>(pno&0xff);
- int fno = get_fp_byte(f_fno);
- body[12] = static_cast<char>((fno>>8)&0xff);
- body[13] = static_cast<char>(fno&0xff);
- if(body.length()==22){
- body[14] = static_cast<char>((((t1.date().day()/10)&0x0f)<<4)|((t1.date().day()%10)&0x0f));
- body[15] = static_cast<char>((((t1.date().month()/10)&0x0f)<<4)|((t1.date().month()%10)&0x0f));
- body[16] = static_cast<char>((((t1.date().year()/10)&0x0f)<<4)|((t1.date().year()%10)&0x0f));
- body[17] = static_cast<char>((((dt.time().second()/10)&0x0f)<<4)|(dt.time().second()%10));
- body[18] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|(dt.time().minute()%10));
- body[19] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|(dt.time().hour()%10));
- body[20] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|(dt.date().day()%10));
- body[21] = static_cast<char>(0x05);
- }else if(body.length()==26){
- body[14] = static_cast<char>((((t1.time().minute()/10)&0x0f)<<4)|((t1.time().minute()%10)&0x0f));
- body[15] = static_cast<char>((((t1.time().hour()/10)&0x0f)<<4)|((t1.time().hour()%10)&0x0f));
- body[16] = static_cast<char>((((t1.date().day()/10)&0x0f)<<4)|((t1.date().day()%10)&0x0f));
- body[17] = static_cast<char>((((t1.date().month()/10)&0x0f)<<4)|((t1.date().month()%10)&0x0f));
- body[18] = static_cast<char>((((t1.date().year()/10)&0x0f)<<4)|((t1.date().year()%10)&0x0f));
- body[19] = static_cast<char>(sep);
- body[20] = static_cast<char>(num);
- body[21] = static_cast<char>((((dt.time().second()/10)&0x0f)<<4)|(dt.time().second()%10));
- body[22] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|(dt.time().minute()%10));
- body[23] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|(dt.time().hour()%10));
- body[24] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|(dt.date().day()%10));
- body[25] = static_cast<char>(0x05);
- }else if(body.length()==29){
- body[14] = static_cast<char>((((t1.time().minute()/10)&0x0f)<<4)|((t1.time().minute()%10)&0x0f));
- body[15] = static_cast<char>((((t1.time().hour()/10)&0x0f)<<4)|((t1.time().hour()%10)&0x0f));
- body[16] = static_cast<char>((((t1.date().day()/10)&0x0f)<<4)|((t1.date().day()%10)&0x0f));
- body[17] = static_cast<char>((((t1.date().month()/10)&0x0f)<<4)|((t1.date().month()%10)&0x0f));
- body[18] = static_cast<char>((((t1.date().year()/10)&0x0f)<<4)|((t1.date().year()%10)&0x0f));
- body[19] = static_cast<char>((((t2.time().minute()/10)&0x0f)<<4)|((t2.time().minute()%10)&0x0f));
- body[20] = static_cast<char>((((t2.time().hour()/10)&0x0f)<<4)|((t2.time().hour()%10)&0x0f));
- body[21] = static_cast<char>((((t2.date().day()/10)&0x0f)<<4)|((t2.date().day()%10)&0x0f));
- body[22] = static_cast<char>((((t2.date().month()/10)&0x0f)<<4)|((t2.date().month()%10)&0x0f));
- body[23] = static_cast<char>((((t2.date().year()/10)&0x0f)<<4)|((t2.date().year()%10)&0x0f));
- body[24] = static_cast<char>((((dt.time().second()/10)&0x0f)<<4)|(dt.time().second()%10));
- body[25] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|(dt.time().minute()%10));
- body[26] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|(dt.time().hour()%10));
- body[27] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|(dt.date().day()%10));
- body[28] = static_cast<char>(0x05);
- }
- if(body.length()>1){
- QByteArray cmd = mkDataFrame(body);
- CmdList.append(cmd);
- }
- }
- //复位命令
- void SmartLightCommThread::reset_command(QString deviceId)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body = QByteArray(21,0x00);
- body[0] = static_cast<char>(0x01);
- body[1] = static_cast<char>(0x00);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x01);
- body[9] = static_cast<char>(0xe0);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x00);
- body[14] = static_cast<char>(0x01);
- body[15] = static_cast<char>(0x00);
- body[16] = static_cast<char>((((dt.time().second()/10)&0x0f)<<4)|(dt.time().second()%10));
- body[17] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|(dt.time().minute()%10));
- body[18] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|(dt.time().hour()%10));
- body[19] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|(dt.date().day()%10));
- body[20] = static_cast<char>(0x05);
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //设置参数开关灯时间
- void SmartLightCommThread::request_set_parameters_command(QString deviceId, int parameterType, QString tmp)
- {
- QJsonDocument document;
- QJsonParseError err;
- document = QJsonDocument::fromJson(tmp.toUtf8(), &err);
- if (err.error != QJsonParseError::NoError){
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(tmp)
- .arg(err.error);
- emit CommData(DeviceID, 2, Data);
- qDebug() << "Parse json " << tmp.toUtf8() << " error: " << err.error;
- return;
- }
- QJsonArray data_list=document.array();
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==9){
- body= QByteArray(22,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x45);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x01);
- int ncount = data_list.size();
- QJsonArray senddata;
- // for (int j = 0; j < ncount; j++)
- // {
- QJsonValue name_value = data_list.at(0);
- QJsonObject temp1 = name_value.toObject();
- QJsonValue value = temp1.value("date");
- QString studentname = value.toString();
- // }
- int month = studentname.mid(0, 2).toInt();
- int day = studentname.mid(3, 2).toInt();
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(month)
- .arg(day);
- emit CommData(DeviceID, 2, Data);
- QString hex1 = QString("%1").arg(month, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- QString hex2 = QString("%1").arg(day, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- body[14] = static_cast<char>(Dat1[0]&0xff);
- body[15] = static_cast<char>(Dat2[0]&0xff);
- body[16] = static_cast<char>(0x01);
- body[17] = static_cast<char>(0x00);
- QString on_hour = temp1.value("on_hour").toString();
- QString on_minute = temp1.value("on_minute").toString();
- QString off_hour = temp1.value("off_hour").toString();
- QString off_minute = temp1.value("off_minute").toString();
- QTime on_time = QTime::fromString(on_hour+":"+on_minute,"hh:mm");
- QTime off_time = QTime::fromString(off_hour+":"+off_minute,"hh:mm");
- QByteArray Dat3 =mkB19time(on_time);
- QByteArray Dat4 =mkB19time(off_time);
- body[18] = static_cast<char>(Dat3[0]&0xff);
- body[19] = static_cast<char>(Dat3[1]&0xff);
- body[20] = static_cast<char>(Dat4[0]&0xff);
- body[21] = static_cast<char>(Dat4[1]&0xff);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //设置参数通信参数配置
- void SmartLightCommThread::request_set_parameters_communication_command(QString deviceId, int parameterType, int timeOut,int retransmissionsNumber, int realTimeData, int historicalData, int eventData, int heartbeatCycle)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==1){
- body= QByteArray(18,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x00);
- body[14] = static_cast<char>(((((timeOut%100)/10)&0x0f)<<4)|(((timeOut%100)%10)&0x0f));
- body[15] = static_cast<char>(((retransmissionsNumber&0x0f)<<4)|((timeOut/100)&0x0f));
- if(realTimeData==1&&historicalData==1&&eventData==1){
- body[16] = static_cast<char>(0x07);
- }else if(realTimeData==1&&historicalData==1&&eventData==0){
- body[16] = static_cast<char>(0x03);
- }else if(realTimeData==1&&historicalData==0&&eventData==1){
- body[16] = static_cast<char>(0x05);
- }else if(realTimeData==1&&historicalData==0&&eventData==0){
- body[16] = static_cast<char>(0x01);
- }else if(realTimeData==0&&historicalData==1&&eventData==1){
- body[16] = static_cast<char>(0x06);
- }else if(realTimeData==0&&historicalData==0&&eventData==1){
- body[16] = static_cast<char>(0x04);
- }else if(realTimeData==0&&historicalData==1&&eventData==0){
- body[16] = static_cast<char>(0x02);
- }else if(realTimeData==0&&historicalData==0&&eventData==0){
- body[16] = static_cast<char>(0x00);
- }
- QString hex1 = QString("%1").arg(heartbeatCycle, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[17] = static_cast<char>(Dat1[0]&0xff);
- }else if(parameterType==5){
- body= QByteArray(19,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x10);
- body[13] = static_cast<char>(0x00);
- QString hex = QString("%1").arg(timeOut, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString hex1 = QString("%1").arg(retransmissionsNumber, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- QString hex2 = QString("%1").arg(realTimeData, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- QString hex3 = QString("%1").arg(historicalData, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex3)&0xff);
- QString hex4 = QString("%1").arg(eventData, 2, 16, QChar('0'));
- QByteArray Dat4 = QByteArray(1,0x00);
- Dat4[0] = static_cast<char>(hexstr_to_byte(hex4)&0xff);
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(Dat1[0]&0xff);
- body[16] = static_cast<char>(Dat2[0]&0xff);
- body[17] = static_cast<char>(Dat3[0]&0xff);
- body[18] = static_cast<char>(Dat4[0]&0xff);
- }else if(parameterType==11){
- body= QByteArray(21,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x01);
- QByteArray Dat =mkB08integer(timeOut);//DI
- QByteArray Dat1 =mkB10integer(retransmissionsNumber);//AI
- QByteArray Dat2 =mkB08integer(realTimeData);//智能表
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(Dat[1]&0xff);
- body[16] = static_cast<char>(Dat1[0]&0xff);
- body[17] = static_cast<char>(Dat1[1]&0xff);
- body[18] = static_cast<char>(Dat1[2]&0xff);
- body[19] = static_cast<char>(Dat2[0]&0xff);
- body[20] = static_cast<char>(Dat2[1]&0xff);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //设置参数主站IP、控制回路
- void SmartLightCommThread::request_set_parameters_ip_command(QString deviceId, int parameterType, int address1,int address2, int address3, int address4, int port, QString apn)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==2){
- body= QByteArray(36,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x00);
- QString hex = QString("%1").arg(address1, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString hex1 = QString("%1").arg(address2, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- QString hex2 = QString("%1").arg(address3, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- QString hex3 = QString("%1").arg(address4, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex3)&0xff);
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(Dat1[0]&0xff);
- body[16] = static_cast<char>(Dat2[0]&0xff);
- body[17] = static_cast<char>(Dat3[0]&0xff);
- QString hex4 = QString("%1").arg(port, 4, 16, QChar('0'));
- QString hex5 = hex4.mid(0, 2);
- QString hex6 = hex4.mid(2, 2);
- QByteArray Dat4 = QByteArray(2,0x00);
- Dat4[0] = static_cast<char>(hexstr_to_byte(hex5)&0xff);
- Dat4[1] = static_cast<char>(hexstr_to_byte(hex6)&0xff);
- body[18] = static_cast<char>(Dat4[1]&0xff);
- body[19] = static_cast<char>(Dat4[0]&0xff);
- }else if(parameterType==12){
- body= QByteArray(18,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x01);
- QString bin1 = apn.mid(0, 8);
- bool ok;
- int c = bin1.toInt(&ok,2);//先转为10进制
- QString d = QString("%1").arg(c,2,16,QLatin1Char('0')); //10进制转16进制
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(d)&0xff);
- QString bin2 = apn.mid(8, 8);
- bool ok1;
- int c1 = bin2.toInt(&ok1,2);//先转为10进制
- QString d1 = QString("%1").arg(c1,2,16,QLatin1Char('0')); //10进制转16进制
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(d1)&0xff);
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(Dat1[0]&0xff);
- QString hex2 = QString("%1").arg(address1, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- QString hex3 = QString("%1").arg(address2, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex3)&0xff);
- body[16] = static_cast<char>(Dat2[0]&0xff);
- body[17] = static_cast<char>(Dat3[0]&0xff);
- }else if(parameterType==13||parameterType==19){
- body= QByteArray(16+address3*11,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- int pn_re=address1%8;
- int pn_int=(address1-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- if(address1==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(address1==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- if(parameterType==13){
- body[12] = static_cast<char>(0x10);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==19){
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x02);
- }
- QString hex2 = QString("%1").arg(address2, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- QString hex3 = QString("%1").arg(address3, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex3)&0xff);
- body[14] = static_cast<char>(Dat2[0]&0xff);
- body[15] = static_cast<char>(Dat3[0]&0xff);
- QJsonDocument document;
- QJsonParseError err;
- document = QJsonDocument::fromJson(apn.toUtf8(), &err);
- if (err.error != QJsonParseError::NoError){
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(apn)
- .arg(err.error);
- emit CommData(DeviceID, 2, Data);
- qDebug() << "Parse json " << apn.toUtf8() << " error: " << err.error;
- return;
- }
- QJsonArray data_list=document.array();
- for (int j = 0; j < address3; j++)
- {
- QJsonValue name_value = data_list.at(j);
- QJsonObject temp1 = name_value.toObject();
- int configurationNumber = temp1.value("configuration_number").toInt();
- QString hex4 = QString("%1").arg(configurationNumber, 2, 16, QChar('0'));
- QByteArray Dat4 = QByteArray(1,0x00);
- Dat4[0] = static_cast<char>(hexstr_to_byte(hex4)&0xff);
- body[16+11*j] = static_cast<char>(Dat4[0]&0xff);
- int operationMode = temp1.value("Operation_mode").toInt();
- QString hex5 = QString("%1").arg(operationMode, 2, 16, QChar('0'));
- QByteArray Dat5 = QByteArray(1,0x00);
- Dat5[0] = static_cast<char>(hexstr_to_byte(hex5)&0xff);
- body[17+11*j] = static_cast<char>(Dat5[0]&0xff);
- int controlType = temp1.value("control_type").toInt();
- QString hex6 = QString("%1").arg(controlType, 2, 16, QChar('0'));
- QByteArray Dat6 = QByteArray(1,0x00);
- Dat6[0] = static_cast<char>(hexstr_to_byte(hex6)&0xff);
- body[18+11*j] = static_cast<char>(Dat6[0]&0xff);
- int switchPosition = temp1.value("switch_position").toInt();
- QString hex7 = QString("%1").arg(switchPosition, 2, 16, QChar('0'));
- QByteArray Dat7 = QByteArray(1,0x00);
- Dat7[0] = static_cast<char>(hexstr_to_byte(hex7)&0xff);
- body[19+11*j] = static_cast<char>(Dat7[0]&0xff);
- int relativeTime = temp1.value("relative_time").toInt();
- QString hex8 = QString("%1").arg(relativeTime, 2, 16, QChar('0'));
- QByteArray Dat8 = QByteArray(1,0x00);
- Dat8[0] = static_cast<char>(hexstr_to_byte(hex8)&0xff);
- body[20+11*j] = static_cast<char>(Dat8[0]&0xff);
- QString absoluteTime = temp1.value("absolute_time").toString();
- QDateTime time = QDateTime::fromString(absoluteTime, "yyyy-MM-dd hh:mm:ss");
- QByteArray Dat9 =mkB01datetime(time);
- body[21+11*j] = static_cast<char>(Dat9[0]&0xff);
- body[22+11*j] = static_cast<char>(Dat9[1]&0xff);
- body[23+11*j] = static_cast<char>(Dat9[2]&0xff);
- body[24+11*j] = static_cast<char>(Dat9[3]&0xff);
- body[25+11*j] = static_cast<char>(Dat9[4]&0xff);
- body[26+11*j] = static_cast<char>(Dat9[5]&0xff);
- }
- }else if(parameterType==20){
- body= QByteArray(15+address2,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- int pn_re=address1%8;
- int pn_int=(address1-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- if(address1==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(address1==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x02);
- QString hex2 = QString("%1").arg(address2, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- body[14] = static_cast<char>(Dat2[0]&0xff);
- QJsonDocument document;
- QJsonParseError err;
- document = QJsonDocument::fromJson(apn.toUtf8(), &err);
- if (err.error != QJsonParseError::NoError){
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(apn)
- .arg(err.error);
- emit CommData(DeviceID, 2, Data);
- qDebug() << "Parse json " << apn.toUtf8() << " error: " << err.error;
- return;
- }
- QJsonObject data_list=document.object();
- for (int j = 0; j < address3; j++)
- {
- QString s = QString::number(j+1, 10);
- int groupNumber = data_list.value("group_number"+s).toInt();
- QString hex3 = QString("%1").arg(groupNumber, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex3)&0xff);
- body[15+j] = static_cast<char>(Dat3[0]&0xff);
- }
- }else if(parameterType==25){
- body= QByteArray(16+address1*3,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x03);
- QString hex2 = QString("%1").arg(address1, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- body[14] = static_cast<char>(Dat2[0]&0xff);
- QString hex3 = QString("%1").arg(address2, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex3)&0xff);
- body[15] = static_cast<char>(Dat3[0]&0xff);
- QJsonDocument document;
- QJsonParseError err;
- document = QJsonDocument::fromJson(apn.toUtf8(), &err);
- if (err.error != QJsonParseError::NoError){
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(apn)
- .arg(err.error);
- emit CommData(DeviceID, 2, Data);
- qDebug() << "Parse json " << apn.toUtf8() << " error: " << err.error;
- return;
- }
- QJsonArray data_list=document.array();
- for (int j = 0; j < address1; j++)
- {
- QJsonValue name_value = data_list.at(j);
- QJsonObject temp1 = name_value.toObject();
- int portType = temp1.value("port_type").toInt();
- QString hex4 = QString("%1").arg(portType, 2, 16, QChar('0'));
- QByteArray Dat4 = QByteArray(1,0x00);
- Dat4[0] = static_cast<char>(hexstr_to_byte(hex4)&0xff);
- body[16+3*j] = static_cast<char>(Dat4[0]&0xff);
- int linesIdentification = temp1.value("lines_identification").toInt();
- int portWays = temp1.value("port_ways").toInt();
- body[17+3*j] = static_cast<char>(((linesIdentification&0x01)<<7)|(portWays&0x0f));
- int pointPhase = temp1.value("point_phase").toInt();
- QString hex6 = QString("%1").arg(pointPhase, 2, 16, QChar('0'));
- QByteArray Dat6 = QByteArray(1,0x00);
- Dat6[0] = static_cast<char>(hexstr_to_byte(hex6)&0xff);
- body[18+3*j] = static_cast<char>(Dat6[0]&0xff);
- }
- }else if(parameterType==26){
- body= QByteArray(15+address1*12,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x03);
- QString hex2 = QString("%1").arg(address1, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- body[14] = static_cast<char>(Dat2[0]&0xff);
- QJsonDocument document;
- QJsonParseError err;
- document = QJsonDocument::fromJson(apn.toUtf8(), &err);
- if (err.error != QJsonParseError::NoError){
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(apn)
- .arg(err.error);
- emit CommData(DeviceID, 2, Data);
- qDebug() << "Parse json " << apn.toUtf8() << " error: " << err.error;
- return;
- }
- QJsonArray data_list=document.array();
- for (int j = 0; j < address1; j++)
- {
- QJsonValue name_value = data_list.at(j);
- QJsonObject temp1 = name_value.toObject();
- int enableIdentity = temp1.value("enable_identity").toInt();
- QString hex3 = QString("%1").arg(enableIdentity, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex3)&0xff);
- body[15+12*j] = static_cast<char>(Dat3[0]&0xff);
- int portType = temp1.value("port_type").toInt();
- QString hex4 = QString("%1").arg(portType, 2, 16, QChar('0'));
- QByteArray Dat4 = QByteArray(1,0x00);
- Dat4[0] = static_cast<char>(hexstr_to_byte(hex4)&0xff);
- body[16+12*j] = static_cast<char>(Dat4[0]&0xff);
- int linesIdentification = temp1.value("lines_identification").toInt();
- int portWays = temp1.value("port_ways").toInt();
- body[17+12*j] = static_cast<char>(((linesIdentification&0x01)<<7)|(portWays&0x0f));
- int pointPhase = temp1.value("point_phase").toInt();
- QString hex6 = QString("%1").arg(pointPhase, 2, 16, QChar('0'));
- QByteArray Dat6 = QByteArray(1,0x00);
- Dat6[0] = static_cast<char>(hexstr_to_byte(hex6)&0xff);
- body[18+12*j] = static_cast<char>(Dat6[0]&0xff);
- QString onUpperLimit = temp1.value("on_upper_limit").toString();
- int onUpperLimitLength = onUpperLimit.length();
- QString s = ".";
- int onUpperLimitIntLength = onUpperLimit.indexOf(s);
- float d;
- int g;
- if(onUpperLimitIntLength==-1){
- if(onUpperLimitLength<=3){
- d=onUpperLimit.toFloat();
- g=0;
- }else if(onUpperLimitLength>3&&onUpperLimitLength<=7){
- d=onUpperLimit.mid(0,3).toFloat();
- g=onUpperLimitLength-3;
- }else if(onUpperLimitLength>7){
- d=onUpperLimit.mid(0,3).toFloat();
- g=4;
- }
- }else{
- if(onUpperLimitIntLength==1){
- int onUpperIntLimit = onUpperLimit.mid(0,1).toInt();
- if(onUpperIntLimit==0){
- QString str=QString("%1").arg(onUpperLimit.toFloat(),0,'G',3);
- d = str.toFloat();
- g=-3;
- }else{
- QString str=QString("%1").arg(onUpperLimit.toFloat(),0,'G',3);
- d = str.toFloat();
- g=-2;
- }
- }else if(onUpperLimitIntLength==2){
- QString str=QString("%1").arg(onUpperLimit.toFloat(),0,'G',3);
- d = str.toFloat();
- g=-1;
- }else if(onUpperLimitIntLength==3){
- QString str=QString("%1").arg(onUpperLimit.toFloat(),0,'G',3);
- d = str.toFloat();
- g=0;
- }else if(onUpperLimitIntLength==4){
- QString str=QString("%1").arg(onUpperLimit.toFloat(),0,'G',3);
- d = str.toFloat();
- g=1;
- }else if(onUpperLimitIntLength==5){
- QString str=QString("%1").arg(onUpperLimit.toFloat(),0,'G',3);
- d = str.toFloat();
- g=2;
- }else if(onUpperLimitIntLength==6){
- QString str=QString("%1").arg(onUpperLimit.toFloat(),0,'G',3);
- d = str.toFloat();
- g=3;
- }else if(onUpperLimitIntLength==7){
- QString str=QString("%1").arg(onUpperLimit.toFloat(),0,'G',3);
- d = str.toFloat();
- g=4;
- }else{
- QString str=QString("%1").arg(onUpperLimit.toFloat(),0,'G',3);
- d = str.toFloat();
- g=4;
- }
- }
- d = onUpperLimitLength-onUpperLimitIntLength+1;
- }
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //设置参数单灯事件检测配置参数
- void SmartLightCommThread::request_set_parameters_event_detection_command(QString deviceId, int parameterType, int excessiveCurrent,int excessiveCurrentRecovery,int lowCurrent, int lowCurrentRecovery, int capacitorFailure, int capacitorFailureRecovery, int lampFailure, int lampFailureRecovery, int fuseFailure, int fuseFailureRecovery)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==6){
- body= QByteArray(26,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x44);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x20);
- body[13] = static_cast<char>(0x00);
- QString hex = QString("%1").arg(excessiveCurrent, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString hex1 = QString("%1").arg(excessiveCurrentRecovery, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- QString hex2 = QString("%1").arg(lowCurrent, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- QString hex3 = QString("%1").arg(lowCurrentRecovery, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex3)&0xff);
- QString hex4 = QString("%1").arg(capacitorFailure, 4, 16, QChar('0'));
- QString hex41 = hex4.mid(0, 2);
- QString hex42 = hex4.mid(2, 2);
- QByteArray Dat4 = QByteArray(2,0x00);
- Dat4[0] = static_cast<char>(hexstr_to_byte(hex41)&0xff);
- Dat4[1] = static_cast<char>(hexstr_to_byte(hex42)&0xff);
- QString hex5 = QString("%1").arg(capacitorFailureRecovery, 4, 16, QChar('0'));
- QString hex51 = hex5.mid(0, 2);
- QString hex52 = hex5.mid(2, 2);
- QByteArray Dat5 = QByteArray(2,0x00);
- Dat5[0] = static_cast<char>(hexstr_to_byte(hex51)&0xff);
- Dat5[1] = static_cast<char>(hexstr_to_byte(hex52)&0xff);
- QString hex6 = QString("%1").arg(lampFailure, 2, 16, QChar('0'));
- QByteArray Dat6 = QByteArray(1,0x00);
- Dat6[0] = static_cast<char>(hexstr_to_byte(hex6)&0xff);
- QString hex7 = QString("%1").arg(lampFailureRecovery, 2, 16, QChar('0'));
- QByteArray Dat7 = QByteArray(1,0x00);
- Dat7[0] = static_cast<char>(hexstr_to_byte(hex7)&0xff);
- QString hex8 = QString("%1").arg(fuseFailure, 2, 16, QChar('0'));
- QByteArray Dat8 = QByteArray(1,0x00);
- Dat8[0] = static_cast<char>(hexstr_to_byte(hex8)&0xff);
- QString hex9 = QString("%1").arg(fuseFailureRecovery, 2, 16, QChar('0'));
- QByteArray Dat9 = QByteArray(1,0x00);
- Dat9[0] = static_cast<char>(hexstr_to_byte(hex9)&0xff);
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(Dat1[0]&0xff);
- body[16] = static_cast<char>(Dat2[0]&0xff);
- body[17] = static_cast<char>(Dat3[0]&0xff);
- body[18] = static_cast<char>(Dat4[1]&0xff);
- body[19] = static_cast<char>(Dat4[0]&0xff);
- body[20] = static_cast<char>(Dat5[1]&0xff);
- body[21] = static_cast<char>(Dat5[0]&0xff);
- body[22] = static_cast<char>(Dat6[0]&0xff);
- body[23] = static_cast<char>(Dat7[0]&0xff);
- body[24] = static_cast<char>(Dat8[0]&0xff);
- body[25] = static_cast<char>(Dat9[0]&0xff);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //控制命令开关灯
- void SmartLightCommThread::request_control_command(QString deviceId, int parameterType, int pn, int controlType, int economizeGear)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==2||parameterType==1||parameterType==3||parameterType==9){
- body= QByteArray(16,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x45);
- body[9] = static_cast<char>(0x75);
- int pn_re=pn%8;
- int pn_int=(pn-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(controlType)
- .arg(economizeGear);
- emit CommData(DeviceID, 2, Data);
- if(pn==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(pn==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- if(parameterType==1){
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==2){
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==3){
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==9){
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x01);
- }
- if(controlType==3){
- QString hex1 = QString("%1").arg(controlType, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- QString hex2 = QString("%1").arg(economizeGear, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- body[14] = static_cast<char>(Dat1[0]&0xff);
- body[15] = static_cast<char>(Dat2[0]&0xff);
- }else{
- QString hex1 = QString("%1").arg(controlType, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[14] = static_cast<char>(Dat1[0]&0xff);
- body[15] = static_cast<char>(0x00);
- }
- }else if(parameterType==10||parameterType==11){//单灯控制器复位
- body= QByteArray(15,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x45);
- body[9] = static_cast<char>(0x75);
- int pn_re=pn%8;
- int pn_int=(pn-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(controlType)
- .arg(economizeGear);
- emit CommData(DeviceID, 2, Data);
- if(pn==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(pn==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- if(parameterType==10){
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==11){
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x01);
- }
- QString hex1 = QString("%1").arg(controlType, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[14] = static_cast<char>(Dat1[0]&0xff);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //控制命令单灯预约
- void SmartLightCommThread::request_control_command_appointment(QString deviceId, int parameterType, int pn,int configure, int controlType, int economizeGear,QString control_time)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==12||parameterType==13||parameterType==17){
- body= QByteArray(23,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x45);
- body[9] = static_cast<char>(0x75);
- int pn_re=pn%8;
- int pn_int=(pn-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(controlType)
- .arg(economizeGear);
- emit CommData(DeviceID, 2, Data);
- if(pn==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(pn==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- if(parameterType==12){
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==13){
- body[12] = static_cast<char>(0x10);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==17){
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x02);
- }
- QString hex1 = QString("%1").arg(configure, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[14] = static_cast<char>(Dat1[0]&0xff);
- QDateTime time = QDateTime::fromString(control_time, "yyyy-MM-dd hh:mm:ss");
- QByteArray Dat2 =mkB01datetime(time);
- body[15] = static_cast<char>(Dat2[0]&0xff);
- body[16] = static_cast<char>(Dat2[1]&0xff);
- body[17] = static_cast<char>(Dat2[2]&0xff);
- body[18] = static_cast<char>(Dat2[3]&0xff);
- body[19] = static_cast<char>(Dat2[4]&0xff);
- body[20] = static_cast<char>(Dat2[5]&0xff);
- QString hex3 = QString("%1").arg(controlType, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex3)&0xff);
- body[21] = static_cast<char>(Dat3[0]&0xff);
- QString hex4 = QString("%1").arg(economizeGear, 2, 16, QChar('0'));
- QByteArray Dat4 = QByteArray(1,0x00);
- Dat4[0] = static_cast<char>(hexstr_to_byte(hex4)&0xff);
- body[22] = static_cast<char>(Dat4[0]&0xff);
- }else if(parameterType==14||parameterType==15||parameterType==18){
- body= QByteArray(15,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x45);
- body[9] = static_cast<char>(0x75);
- int pn_re=pn%8;
- int pn_int=(pn-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(controlType)
- .arg(economizeGear);
- emit CommData(DeviceID, 2, Data);
- if(pn==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(pn==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- if(parameterType==14){
- body[12] = static_cast<char>(0x20);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==15){
- body[12] = static_cast<char>(0x40);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==18){
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x02);
- }
- QString hex1 = QString("%1").arg(configure, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[14] = static_cast<char>(Dat1[0]&0xff);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //控制命令对时命令
- void SmartLightCommThread::request_control_command_time(QString deviceId, int parameterType, QString control_time)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==31){
- body= QByteArray(20,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x45);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x40);
- body[13] = static_cast<char>(0x03);
- QDateTime time = QDateTime::fromString(control_time, "yyyy-MM-dd hh:mm:ss");
- QByteArray Dat =mkB01datetime(time);
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(Dat[1]&0xff);
- body[16] = static_cast<char>(Dat[2]&0xff);
- body[17] = static_cast<char>(Dat[3]&0xff);
- body[18] = static_cast<char>(Dat[4]&0xff);
- body[19] = static_cast<char>(Dat[5]&0xff);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //控制命令无参数
- void SmartLightCommThread::request_control_command_no_parameters(QString deviceId, int parameterType)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==4){
- body= QByteArray(14,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x45);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x00);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //请求实时数据命令无参数
- void SmartLightCommThread::request_real_time_data_command(QString deviceId,int parameterType)
- {
- QString Data = QString("[ %1 %2 %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg("12345678")
- .arg(DeviceID.length()>0?QString("%1").arg(DeviceID):QString(""));
- emit CommData(DeviceID, 2, Data);
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body = QByteArray(14,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4C);
- if(parameterType==2){
- body[9] = static_cast<char>(0x73);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==3){
- body[9] = static_cast<char>(0x74);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==4){
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==25){
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x03);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //请求实时数据命令参数
- void SmartLightCommThread::request_real_time_data_command2(QString deviceId, int parameterType, int pn, int queryNumber, int startPoint)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==9){
- body= QByteArray(14,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4C);
- body[9] = static_cast<char>(0x76);
- int pn_re=pn%8;
- int pn_int=(pn-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(Dat[0]&0xff)
- .arg(Dat[0]&0xff);
- emit CommData(DeviceID, 2, Data);
- if(pn==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(pn==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==10){
- body= QByteArray(14,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4C);
- body[9] = static_cast<char>(0x76);
- int pn_re=pn%8;
- int pn_int=(pn-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(Dat[0]&0xff)
- .arg(Dat[0]&0xff);
- emit CommData(DeviceID, 2, Data);
- if(pn==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(pn==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==11){
- body= QByteArray(16,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4C);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x01);
- if(startPoint>255){
- if(queryNumber>120){
- body[14] = static_cast<char>(0x0A);
- body[15] = static_cast<char>(0xFF);
- }else{
- QString hex = QString("%1").arg(queryNumber, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(0xFF);
- }
- }else{
- if(queryNumber>120){
- QString hex = QString("%1").arg(startPoint, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- body[14] = static_cast<char>(0x0A);
- body[15] = static_cast<char>(Dat[0]&0xff);
- }else{
- QString hex = QString("%1").arg(queryNumber, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString hex1 = QString("%1").arg(startPoint, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(Dat1[0]&0xff);
- }
- }
- }else if(parameterType==12){
- body= QByteArray(16,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4C);
- body[9] = static_cast<char>(0x75);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x01);
- if(startPoint>255){
- if(queryNumber>120){
- body[14] = static_cast<char>(0x0A);
- body[15] = static_cast<char>(0xFF);
- }else{
- QString hex = QString("%1").arg(queryNumber, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(0xFF);
- }
- }else{
- if(queryNumber>120){
- QString hex = QString("%1").arg(startPoint, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- body[14] = static_cast<char>(0x0A);
- body[15] = static_cast<char>(Dat[0]&0xff);
- }else{
- QString hex = QString("%1").arg(queryNumber, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString hex1 = QString("%1").arg(startPoint, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[14] = static_cast<char>(Dat[0]&0xff);
- body[15] = static_cast<char>(Dat1[0]&0xff);
- }
- }
- }else if(parameterType==17||parameterType==33||parameterType==34||parameterType==35||parameterType==36||parameterType==37||parameterType==38||parameterType==39||parameterType==100){
- body= QByteArray(14,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4C);
- body[9] = static_cast<char>(0x76);
- int pn_re=pn%8;
- int pn_int=(pn-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(Dat[0]&0xff)
- .arg(Dat[0]&0xff);
- emit CommData(DeviceID, 2, Data);
- if(pn==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(pn==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- if(parameterType==17){
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x02);
- }else if(parameterType==33){
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x04);
- }else if(parameterType==34){
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x04);
- }else if(parameterType==35){
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x04);
- }else if(parameterType==36){
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x04);
- }else if(parameterType==37){
- body[12] = static_cast<char>(0x10);
- body[13] = static_cast<char>(0x04);
- }else if(parameterType==38){
- body[12] = static_cast<char>(0x20);
- body[13] = static_cast<char>(0x04);
- }else if(parameterType==39){
- body[12] = static_cast<char>(0x40);
- body[13] = static_cast<char>(0x04);
- }else if(parameterType==100){
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x0C);
- }
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //请求历史数据
- void SmartLightCommThread::request_historical_data_command(QString deviceId, int parameterType, int pn, int dataFreezingDensity, int dataPoints,QString start_time)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==1||parameterType==17||parameterType==18||parameterType==19||parameterType==20||parameterType==21||parameterType==22){
- body = QByteArray(21,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4D);
- body[9] = static_cast<char>(0x76);
- int pn_re=pn%8;
- int pn_int=(pn-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(Dat[0]&0xff)
- .arg(Dat[0]&0xff);
- emit CommData(DeviceID, 2, Data);
- if(pn==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(pn==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- if(parameterType==1){
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==17){
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x02);
- }else if(parameterType==18){
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x02);
- }else if(parameterType==19){
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x02);
- }else if(parameterType==20){
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x02);
- }else if(parameterType==21){
- body[12] = static_cast<char>(0x10);
- body[13] = static_cast<char>(0x02);
- }else if(parameterType==22){
- body[12] = static_cast<char>(0x20);
- body[13] = static_cast<char>(0x02);
- }
- QDateTime time = QDateTime::fromString(start_time, "yyyy-MM-dd hh:mm:ss");
- QByteArray Dat1 =mkB15datetime(time);
- body[14] = static_cast<char>(Dat1[0]&0xff);
- body[15] = static_cast<char>(Dat1[1]&0xff);
- body[16] = static_cast<char>(Dat1[2]&0xff);
- body[17] = static_cast<char>(Dat1[3]&0xff);
- body[18] = static_cast<char>(Dat1[4]&0xff);
- QString hex1 = QString("%1").arg(dataFreezingDensity, 2, 16, QChar('0'));
- QByteArray Dat2 = QByteArray(1,0x00);
- Dat2[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[19] = static_cast<char>(Dat2[0]&0xff);
- QString hex2 = QString("%1").arg(dataPoints, 2, 16, QChar('0'));
- QByteArray Dat3 = QByteArray(1,0x00);
- Dat3[0] = static_cast<char>(hexstr_to_byte(hex2)&0xff);
- body[20] = static_cast<char>(Dat3[0]&0xff);
- }else if(parameterType==2){
- body = QByteArray(17,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4D);
- body[9] = static_cast<char>(0x76);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x00);
- QDate date = QDate::fromString(start_time, "yyyy-MM-dd");
- QByteArray Dat1 =mkB20date(date);
- body[14] = static_cast<char>(Dat1[0]&0xff);
- body[15] = static_cast<char>(Dat1[1]&0xff);
- body[16] = static_cast<char>(Dat1[2]&0xff);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //请求事件数据
- void SmartLightCommThread::request_event_data_command(QString deviceId, int parameterType, int pm, int pn)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body = QByteArray(16,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4E);
- body[9] = static_cast<char>(0x76);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- if(parameterType==1){
- body[12] = static_cast<char>(0x01);
- }else if(parameterType==2){
- body[12] = static_cast<char>(0x02);
- }
- body[13] = static_cast<char>(0x00);
- QString hex = QString("%1").arg(pm, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- body[14] = static_cast<char>(Dat[0]&0xff);
- QString hex1 = QString("%1").arg(pn, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[15] = static_cast<char>(Dat1[0]&0xff);
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //查询参数控制器开关灯时间参数命令
- void SmartLightCommThread::query_parameters_commandf9(QString deviceId,int parameterType)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body = QByteArray(18,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4A);
- body[9] = static_cast<char>(0x76);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x01);
- body[14] = static_cast<char>(0x01);
- body[15] = static_cast<char>(0x01);
- body[16] = static_cast<char>(0x00);
- body[17] = static_cast<char>(0x0a);
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //查询参数命令带参数
- void SmartLightCommThread::query_parameters_command_parameter(QString deviceId,int parameterType,int pn,int number,QString dataList)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body;
- if(parameterType==13||parameterType==19||parameterType==20){
- body= QByteArray(14,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4A);
- body[9] = static_cast<char>(0x76);
- int pn_re=pn%8;
- int pn_int=(pn-pn_re)/8+1;
- QString hex = QString("%1").arg(pn_int, 2, 16, QChar('0'));
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(Dat[0]&0xff)
- .arg(Dat[0]&0xff);
- emit CommData(DeviceID, 2, Data);
- if(pn==0){
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- }else{
- if(pn_re==1){
- body[10] = static_cast<char>(0x01);
- }else if(pn_re==2){
- body[10] = static_cast<char>(0x02);
- }else if(pn_re==3){
- body[10] = static_cast<char>(0x04);
- }else if(pn_re==4){
- body[10] = static_cast<char>(0x08);
- }else if(pn_re==5){
- body[10] = static_cast<char>(0x10);
- }else if(pn_re==6){
- body[10] = static_cast<char>(0x20);
- }else if(pn_re==7){
- body[10] = static_cast<char>(0x40);
- }else if(pn_re==0){
- body[10] = static_cast<char>(0x80);
- }
- if(pn==8){
- body[11] = static_cast<char>(0x01);
- }else{
- body[11] = static_cast<char>(Dat[0]&0xff);
- }
- }
- if(parameterType==13){
- body[12] = static_cast<char>(0x10);
- body[13] = static_cast<char>(0x01);
- }else if (parameterType==19) {
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x02);
- }else if (parameterType==20) {
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x02);
- }
- }else if(parameterType==17){
- body= QByteArray(15+2*number,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4A);
- body[9] = static_cast<char>(0x76);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x02);
- QString hex1 = QString("%1").arg(number, 2, 16, QChar('0'));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex1)&0xff);
- body[14] = static_cast<char>(Dat1[0]&0xff);
- QJsonDocument document;
- QJsonParseError err;
- document = QJsonDocument::fromJson(dataList.toUtf8(), &err);
- if (err.error != QJsonParseError::NoError){
- QString Data = QString("[ %1 %2 +++++++++ %3 >>>>>>>>>>>>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(dataList)
- .arg(err.error);
- emit CommData(DeviceID, 2, Data);
- qDebug() << "Parse json " << dataList.toUtf8() << " error: " << err.error;
- return;
- }
- QJsonArray data_list=document.array();
- for (int j = 0; j < number; j++)
- {
- QJsonValue name_value = data_list.at(j);
- QJsonObject temp1 = name_value.toObject();
- int serialNumber = temp1.value("serial_number").toInt();
- QString hex4 = QString("%1").arg(serialNumber, 4, 16, QChar('0'));
- QString hex5 = hex4.mid(0,2);
- QString hex6 = hex4.mid(2,2);
- QByteArray Dat4 = QByteArray(2,0x00);
- Dat4[0] = static_cast<char>(hexstr_to_byte(hex5)&0xff);
- Dat4[1] = static_cast<char>(hexstr_to_byte(hex6)&0xff);
- body[15+2*j] = static_cast<char>(Dat4[0]&0xff);
- body[16+2*j] = static_cast<char>(Dat4[1]&0xff);
- }
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- //查询参数命令
- void SmartLightCommThread::query_parameters_command(QString deviceId,int parameterType, int pseq)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body = QByteArray(14,0x00);
- body[0] = static_cast<char>(0x00);
- body[1] = static_cast<char>(0x09);
- body[2] = static_cast<char>(0x00);
- body[3] = static_cast<char>(0x00);
- body[4] = static_cast<char>(0x00);
- body[5] = static_cast<char>(0x00);
- body[6] = static_cast<char>(0x00);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x4A);
- QString hex1 = QString("%1").arg(pseq, 1, 16);
- QString hex = QString("%1%2").arg(7).arg(hex1);
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(hexstr_to_byte(hex)&0xff);
- body[9] = static_cast<char>(Dat1[0]&0xff);
- if(parameterType==1){//终端上行通信口通信参数设置
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==2){//主站IP地址和端口
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x02);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==3){//终端事件记录配置设置
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==4){//设备基本信息
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==5){//终端事件检测配置参数
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x10);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==6){//单灯事件检测配置参数
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x20);
- body[13] = static_cast<char>(0x00);
- }else if(parameterType==11){//信息量检测间隔时间参数
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x04);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==12){//控制回路参数
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x08);
- body[13] = static_cast<char>(0x01);
- }else if(parameterType==88){//防盗通道配置
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x80);
- body[13] = static_cast<char>(0x0A);
- }
- QByteArray cmd = resetDataFrame(body);
- CmdList.append(cmd);
- }
- QByteArray SmartLightCommThread::resetDataFrame(QByteArray body){
- QByteArray data = QByteArray(body.length()+9,0x00);
- int len = body.length();
- data[0] = static_cast<char>(0x68);
- data[1] = static_cast<char>(len&0xff);
- data[2] = static_cast<char>((len>>8)&0xff);
- data[3] = static_cast<char>(len&0xff);
- data[4] = static_cast<char>((len>>8)&0xff);
- data[5] = static_cast<char>(0x68);
- data[6] = static_cast<char>(0x00);
- data[7] = static_cast<char>(0x09);
- data[8] = static_cast<char>(0x00);
- data[9] = static_cast<char>(0x00);
- data[10] = static_cast<char>(0x00);
- data[11] = static_cast<char>(0x00);
- data[12] = static_cast<char>(0x00);
- data[13] = static_cast<char>(0x00);
- for(int i=8;i<body.length();i++)
- data[6+i] = static_cast<char>(body.at(i)&0xff);
- quint16 crc = chk_crcc(data.mid(6,len),len);
- data[data.length()-3] = static_cast<char>(crc&0xff);
- data[data.length()-2] = static_cast<char>((crc>>8)&0xff);
- data[data.length()-1] = static_cast<char>(0x16);
- return data;
- }
- void SmartLightCommThread::confirm_report(QTcpSocket *so)
- {
- QDateTime dt = QDateTime::currentDateTime();
- QByteArray body = QByteArray(20,0x00);
- body[0] = static_cast<char>(ServerAddr1&0xff);
- body[1] = static_cast<char>((ServerAddr1>>8)&0xff);
- body[2] = static_cast<char>((ServerAddr1>>16)&0xff);
- body[3] = static_cast<char>((ServerAddr1>>24)&0xff);
- body[4] = static_cast<char>(ServerAddr0&0xff);
- body[5] = static_cast<char>((ServerAddr0>>8)&0xff);
- body[6] = static_cast<char>((ServerAddr0>>16)&0xff);
- body[7] = static_cast<char>(0x00);
- body[8] = static_cast<char>(0x00);
- body[9] = static_cast<char>(0xe0);
- body[10] = static_cast<char>(0x00);
- body[11] = static_cast<char>(0x00);
- body[12] = static_cast<char>(0x01);
- body[13] = static_cast<char>(0x00);
- body[14] = static_cast<char>(0x00);
- body[15] = static_cast<char>((((dt.time().second()/10)&0x0f)<<4)|(dt.time().second()%10));
- body[16] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|(dt.time().minute()%10));
- body[17] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|(dt.time().hour()%10));
- body[18] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|(dt.date().day()%10));
- body[19] = static_cast<char>(0x05);
- QByteArray cmd = mkDataFrame(body);
- so->write(cmd);
- so->flush();
- QString Data = QString("[ %1 %2 %3 >>> ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(so->peerAddress().toString())
- .arg(DeviceID.length()>0?QString("%1").arg(DeviceID):QString(""));
- for(int i=0;i<cmd.length();i++){
- Data.append(QString(" %1").arg(cmd.at(i)&0xff,2,16,QChar('0')));
- }
- emit CommData(DeviceID, 2, Data);
- }
- QByteArray SmartLightCommThread::mkDataFrame(QByteArray body){
- QByteArray data = QByteArray(body.length()+9,0x00);
- int len = body.length();
- data[0] = static_cast<char>(0x68);
- data[1] = static_cast<char>(len&0xff);
- data[2] = static_cast<char>((len>>8)&0xff);
- data[3] = static_cast<char>(len&0xff);
- data[4] = static_cast<char>((len>>8)&0xff);
- data[5] = static_cast<char>(0x68);
- data[6] = static_cast<char>(ServerAddr1&0xff);
- data[7] = static_cast<char>((ServerAddr1>>8)&0xff);
- data[8] = static_cast<char>((ServerAddr1>>16)&0xff);
- data[9] = static_cast<char>((ServerAddr1>>24)&0xff);
- data[10] = static_cast<char>(ServerAddr0&0xff);
- data[11] = static_cast<char>((ServerAddr0>>8)&0xff);
- data[12] = static_cast<char>((ServerAddr0>>16)&0xff);
- data[13] = static_cast<char>(0x00);
- for(int i=8;i<body.length();i++)
- data[6+i] = static_cast<char>(body.at(i)&0xff);
- quint16 crc = chk_crcc(data.mid(6,len),len);
- data[data.length()-3] = static_cast<char>(crc&0xff);
- data[data.length()-2] = static_cast<char>((crc>>8)&0xff);
- data[data.length()-1] = static_cast<char>(0x16);
- return data;
- }
- float SmartLightCommThread::get_repValue(int type, QByteArray dat)
- {
- switch (type) {
- case 0x01:
- if(dat.length()==2){
- return static_cast<float>(((dat.at(1)&0xf0)>>4)*100
- +(dat.at(1)&0x0f)*10
- +((dat.at(0)&0xf0)>>4)
- +(dat.at(0)&0x0f)*0.1);
- }
- break;
- case 0x02:
- if(dat.length()==3){
- return static_cast<float>((((dat.at(2)&0x80)==0x80)?-1:1)
- *(((dat.at(2)&0x70)>>4)*100
- +(dat.at(2)&0x0f)*10
- +((dat.at(1)&0xf0)>>4)
- +((dat.at(1)&0x0f)*0.1)
- +(((dat.at(0)&0xf0)>>4)*0.01)
- +((dat.at(0)&0x0f)*0.001)));
- }
- break;
- case 0x03:
- case 0x05:
- case 0x07:
- if(dat.length()==2){
- int d = (((dat.at(1)&0x10)==0x10)?-1:1)
- *((dat.at(1)&0x0f)*100+((dat.at(0)&0xf0)>>4)*10+(dat.at(0)&0x0f));
- switch ((dat.at(1)>>5)&0x07) {
- case 0x00:
- return static_cast<float>(d*10000);
- break;
- case 0x01:
- return static_cast<float>(d*1000);
- break;
- case 0x02:
- return static_cast<float>(d*100);
- break;
- case 0x03:
- return static_cast<float>(d*10);
- break;
- case 0x04:
- return static_cast<float>(d);
- break;
- case 0x05:
- return static_cast<float>(d*0.1);
- break;
- case 0x06:
- return static_cast<float>(d*0.01);
- break;
- case 0x07:
- return static_cast<float>(d*0.001);
- break;
- }
- }
- break;
- case 0x04:
- case 0x06:
- case 0x08:
- if(dat.length()==2){
- return static_cast<float>((((dat.at(1)&0x80)==0x80)?-1:1)
- *(((dat.at(1)&0x70)>>4)*100
- +(dat.at(1)&0x0f)*10
- +((dat.at(0)&0xf0)>>4)
- +((dat.at(0)&0x0f)*0.1)));
- }
- break;
- }
- return static_cast<float>(0.0);
- }
- bool SmartLightCommThread::checkDataBody(QTcpSocket *so, QByteArray body)
- {
- int ud_cur=0;
- int len = body.length();
- quint8 f_dir=0x00;
- quint8 f_prm=0x00;
- quint8 f_afn=0x00;
- quint8 f_seq=0x00;
- quint8 f_con=0x00;
- quint8 f_fin=0x00;
- quint8 f_fir=0x00;
- quint8 f_tpv=0x00;
- quint16 f_dlen=0x0000;
- quint16 f_prof=0x0000;
- quint16 f_sn=0x0000;
- quint16 f_pno=0x0000;
- quint16 f_fno=0x0000;
- if(DevType==0x00){
- ud_cur = 8;
- }else{
- f_prof = (body.at(ud_cur+0)&0x00ff)|((body.at(ud_cur+1)&0x00ff)<<8);
- f_sn = (body.at(ud_cur+2)&0x00ff)|((body.at(ud_cur+3)&0x00ff)<<8);
- ud_cur =12;
- }
- f_dir = (body.at(ud_cur+0)&0x80)>>7;
- f_prm = (body.at(ud_cur+0)&0x40)>>6;
- f_afn = body.at(ud_cur+0)&0x1f;
- f_seq = body.at(ud_cur+1)&0x0f;
- f_con = (body.at(ud_cur+1)&0x10)>>4;
- f_fin = (body.at(ud_cur+1)&0x20)>>5;
- f_fir = (body.at(ud_cur+1)&0x40)>>6;
- f_tpv = (body.at(ud_cur+1)&0x80)>>7;
- f_pno = (body.at(ud_cur+3)&0x00ff)*8;
- for(int i=0;i<8;i++){
- int bit = 0x01<<i;
- if((body.at(ud_cur+2)&bit)==bit){
- f_pno += (i+1);
- break;
- }
- }
- f_fno = (body.at(ud_cur+5)&0x00ff)*8;
- for(int i=0;i<8;i++){
- int bit = 0x01<<i;
- if((body.at(ud_cur+4)&bit)==bit){
- f_fno += (i+1);
- break;
- }
- }
- switch (f_afn) {
- case 0x00://确认、否认
- if(f_pno==0){
- QString response_type = "";
- if(f_fno==1){//全部确认
- response_type="全部确认";
- }else if(f_fno==2){//全部否认
- response_type="全部否认";
- }else if(f_fno==3){//按数据单元标识确认和否认
- response_type="按数据单元标识确认和否认";
- }else if(f_fno==4){//安全认证错误应答
- response_type="安全认证错误应答";
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tresponse_type:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(response_type);
- emit CommData(DeviceID, 1, o_Data);
- }
- break;
- case 0x01://复位
- if(f_pno==0){
- if(f_fno==1){//终端复位
- f_dlen=4;
- if(len>=(ud_cur+6+2)){
- ErrorCount[0] = body.at(ud_cur+6)&0xff;
- ErrorCount[1] = body.at(ud_cur+7)&0xff;
- if(f_con==0x01){
- confirm_report(so);
- }
- }
- }else if(f_fno==2){//上行通信重连指令
- f_dlen=4;
- if(len>=(ud_cur+6+2)){
- ErrorCount[0] = body.at(ud_cur+6)&0xff;
- ErrorCount[1] = body.at(ud_cur+7)&0xff;
- if(f_con==0x01){
- confirm_report(so);
- }
- }
- }else if(f_fno==3){//终端模块复位
- f_dlen=5;
- if(len>=(ud_cur+6+3)){
- ErrorCount[0] = body.at(ud_cur+7)&0xff;
- ErrorCount[1] = body.at(ud_cur+8)&0xff;
- WirelessSignal = body.at(ud_cur+6)&0xff;
- if(f_con==0x01){
- confirm_report(so);
- }
- }
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal);
- emit CommData(DeviceID, 1, o_Data);
- }
- break;
- case 0x02://链路接口检测
- if(f_pno==0){
- if(f_fno==1){//登录
- f_dlen=4;
- if(len>=(ud_cur+6+2)){
- ErrorCount[0] = body.at(ud_cur+6)&0xff;
- ErrorCount[1] = body.at(ud_cur+7)&0xff;
- if(f_con==0x01){
- confirm_report(so);
- }
- }
- }else if(f_fno==2){//退出
- f_dlen=4;
- if(len>=(ud_cur+6+2)){
- ErrorCount[0] = body.at(ud_cur+6)&0xff;
- ErrorCount[1] = body.at(ud_cur+7)&0xff;
- if(f_con==0x01){
- confirm_report(so);
- }
- }
- }else if(f_fno==3){//心跳
- f_dlen=5;
- if(len>=(ud_cur+6+3)){
- ErrorCount[0] = body.at(ud_cur+7)&0xff;
- ErrorCount[1] = body.at(ud_cur+8)&0xff;
- WirelessSignal = body.at(ud_cur+6)&0xff;
- if(f_con==0x01){
- confirm_report(so);
- }
- }
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal);
- emit CommData(DeviceID, 1, o_Data);
- }
- break;
- case 0x04://设置参数
- break;
- case 0x05://控制命令
- break;
- case 0x09://请求终端配置
- break;
- case 0x0a://查询参数
- if(f_pno==0){
- if(f_fno==1){
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(body.at(ud_cur+6));
- QString over_time1(Dat.toHex());
- // QString over_time1 = QString::fromUtf8(Dat);
- QString over_time2 = QString("%1").arg(body.at(ud_cur+7)&0x0f);
- QString over_time3 = "0x0"+over_time2+over_time1;
- // QByteArray Dat1 = QByteArray(1,0x0000);
- // Dat1[0] = static_cast<char>(hexstr_to_byte(over_time3)&0xffff);
- int over_time = over_time3.toInt(NULL, 16);
- int retransmission = (body.at(ud_cur+7)&0xf0)>>4;
- int anasta = (body.at(ud_cur+8)&0xff);
- int realTimeData=0;
- int historicalData=0;
- int eventData =0;
- if(anasta==0x00){
- realTimeData=0;
- historicalData=0;
- eventData=0;
- }else if(anasta==0x01){
- realTimeData=1;
- historicalData=0;
- eventData=0;
- }else if(anasta==0x02){
- realTimeData=0;
- historicalData=1;
- eventData=0;
- }else if(anasta==0x03){
- realTimeData=1;
- historicalData=1;
- eventData=0;
- }else if(anasta==0x04){
- realTimeData=0;
- historicalData=0;
- eventData=1;
- }else if(anasta==0x05){
- realTimeData=1;
- historicalData=0;
- eventData=1;
- }else if(anasta==0x06){
- realTimeData=0;
- historicalData=1;
- eventData=1;
- }else if(anasta==0x07){
- realTimeData=1;
- historicalData=1;
- eventData=1;
- }
- int heartbeat = (body.at(ud_cur+9)&0xff);
- QJsonObject o_Data2;
- o_Data2.insert("retransmission", retransmission);
- o_Data2.insert("realTimeData", realTimeData);
- o_Data2.insert("historicalData", historicalData);
- o_Data2.insert("eventData", eventData);
- o_Data2.insert("heartbeat", heartbeat);
- o_Data2.insert("tovTimeInt", over_time);
- QJsonObject o_Data1;
- o_Data1.insert("code", 200);
- o_Data1.insert("msg", "操作成功");
- o_Data1.insert("data", o_Data2);
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\toverTime:%14\tretransmission:%15\trealTimeData:%16\thistoricalData:%17\teventData:%18\theartbeat:%19\tovTimeInt:%20")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(over_time3).arg(retransmission).arg(realTimeData).arg(historicalData).arg(eventData).arg(heartbeat).arg(over_time);
- emit CommData(DeviceID, 11, QString(QJsonDocument(o_Data1).toJson()).replace("\"","\\\""));
- }else if(f_fno==2){
- int address1 = (body.at(ud_cur+6)&0xff);
- int address2 = (body.at(ud_cur+7)&0xff);
- int address3 = (body.at(ud_cur+8)&0xff);
- int address4 = (body.at(ud_cur+9)&0xff);
- QByteArray Dat = QByteArray(1,0x00);
- Dat[0] = static_cast<char>(body.at(ud_cur+10));
- QByteArray Dat1 = QByteArray(1,0x00);
- Dat1[0] = static_cast<char>(body.at(ud_cur+11));
- QString portString1(Dat.toHex());
- QString portString2(Dat1.toHex());
- QString portString = portString2+portString1;
- int port = portString.toInt(NULL, 16);
- QString addresss = QString("%1.%2.%3.%4").arg(address1).arg(address2).arg(address3).arg(address4);
- QJsonObject o_Data;
- o_Data.insert("addresss", addresss);
- o_Data.insert("port", port);
- emit CommData(DeviceID, 11, QString(QJsonDocument(o_Data).toJson()).replace("\"","\\\""));
- }else if(f_fno==3){
-
- }
- }
- break;
- case 0x0c://请求实时数据
- if(f_pno==0){
- if(f_fno==2){//终端日历时钟
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+11)&0xf0)>>4)*10+(body.at(ud_cur+11)&0x0f)),
- (((body.at(ud_cur+10)&0x10)>>4)*10+(body.at(ud_cur+10)&0x0f)),
- (((body.at(ud_cur+9)&0xf0)>>4)*10+(body.at(ud_cur+9)&0x0f))),
- QTime((((body.at(ud_cur+8)&0xf0)>>4)*10+(body.at(ud_cur+8)&0x0f)),
- (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)),
- (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f))));
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\ttime:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(t.toString("yyyy-MM-dd HH:mm:ss"));
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==3){//节能开关档位
- quint8 gear = body.at(ud_cur+6)&0xff;
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tgear:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(gear);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==4){//单灯轮询当前状态查询
- int polsta = (body.at(ud_cur+6)&0x01);
- int consta = (body.at(ud_cur+7)&0x01);
- QString polling = "";
- QString conenble = "";
- if(polsta==0x01){
- polling="轮询中";
- }else{
- polling="不轮询";
- }
- if(consta==0x01){
- conenble="发现";
- }else{
- conenble="未发现";
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tpolling:%14\tcontroll:%15")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(polling).arg(conenble);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==9){//模拟量查询
- QString ananame = "";
- int anasta = (body.at(ud_cur+6)&0xff);
- if(anasta==0x00){
- ananame="未知";
- }else if(anasta==0x01){
- ananame="电压";
- }else if(anasta==0x02){
- ananame="电流";
- }else if(anasta==0x03){
- ananame="有功功率";
- }else if(anasta==0x04){
- ananame="无功功率";
- }else if(anasta==0x05){
- ananame="功率因数";
- }else if(anasta==0x06){
- ananame="频率";
- }else if(anasta==0x07){
- ananame="相角";
- }else if(anasta==0x08){
- ananame="照度";
- }
- int analog_data = ((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100;
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\ttype:%14\tvalue:%15")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(ananame).arg(analog_data);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==10){//状态量查询
- int state_data = (body.at(ud_cur+6)&0xff);
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tvalue:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(state_data);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==11){//模拟量批量查询
- quint8 query_number = body.at(ud_cur+6)&0xff;
- quint8 start_point = body.at(ud_cur+7)&0xff;
- QJsonArray o_Data1;
- for(quint8 i=0;i<query_number;i++){
- QString ananame = "";
- quint8 point = body.at(ud_cur+8+4*i)&0xff;
- int anasta = (body.at(ud_cur+9+4*i)&0xff);
- if(anasta==0x00){
- ananame="未知";
- }else if(anasta==0x01){
- ananame="电压";
- }else if(anasta==0x02){
- ananame="电流";
- }else if(anasta==0x03){
- ananame="有功功率";
- }else if(anasta==0x04){
- ananame="无功功率";
- }else if(anasta==0x05){
- ananame="功率因数";
- }else if(anasta==0x06){
- ananame="频率";
- }else if(anasta==0x07){
- ananame="相角";
- }else if(anasta==0x08){
- ananame="照度";
- }
- quint8 f_g1=0x00;
- quint8 f_g2=0x00;
- quint8 f_g3=0x00;
- quint8 f_s=0x00;
- double analog_data;
- f_s = (body.at(ud_cur+11+4*i)&0x10)>>4;
- f_g1 = (body.at(ud_cur+11+4*i)&0x20)>>5;
- f_g2 = (body.at(ud_cur+11+4*i)&0x40)>>6;
- f_g3 = (body.at(ud_cur+11+4*i)&0x80)>>7;
- if(f_s==0x01){
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*10000);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*1000);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*100);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*10);
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*1);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*0.1);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*0.01);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*0.001);
- }
- }else{
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*10000;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*1000;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*100;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*10;
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*1;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*0.1;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*0.01;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+10+4*i)&0xf0)>>4)*10+(body.at(ud_cur+10+4*i)&0x0f)+(body.at(ud_cur+11+4*i)&0x0f)*100)*0.001;
- }
- }
- QJsonObject o_Data2;
- o_Data2.insert("point", point);
- o_Data2.insert("type", ananame);
- o_Data2.insert("value", analog_data);
- o_Data1.append(o_Data2);
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tquery_number:%14\tstart_point:%15\tdata_list:%16")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(query_number).arg(start_point).arg(QString(QJsonDocument(o_Data1).toJson()).replace("\"","\\\""));
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==12){//遥信量批量查询
- quint8 query_number = body.at(ud_cur+6)&0xff;
- quint8 start_point = body.at(ud_cur+7)&0xff;
- QJsonArray o_Data1;
- for(quint8 i=0;i<query_number;i++){
- quint8 point = body.at(ud_cur+8+2*i)&0xff;
- int status_data = (body.at(ud_cur+9+2*i)&0xff);
- QJsonObject o_Data2;
- o_Data2.insert("point", point);
- o_Data2.insert("value", status_data);
- o_Data1.append(o_Data2);
- }
- QString o_Data = QString("dir:%1,prm:%2,afn:%3,seq:%4,con:%5,fin:%6,fir:%7,tpv:%8,pno:%9,fno:%10,ec0:%11,ec1:%12,sig:%13,query_number:%14,start_point:%15,data_list:%16")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(query_number).arg(start_point).arg(QString(QJsonDocument(o_Data1).toJson()).replace("\"","\\\""));
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==33||f_fno==34||f_fno==35||f_fno==36||f_fno==37||f_fno==38||f_fno==39){//pn=0
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tvalue:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(0);
- emit CommData(DeviceID, 1, o_Data);
- }
- }else{
- if(f_fno==9){//模拟量查询
- QString ananame = "";
- int anasta = (body.at(ud_cur+6)&0xff);
- if(anasta==0x00){
- ananame="未知";
- }else if(anasta==0x01){
- ananame="电压";
- }else if(anasta==0x02){
- ananame="电流";
- }else if(anasta==0x03){
- ananame="有功功率";
- }else if(anasta==0x04){
- ananame="无功功率";
- }else if(anasta==0x05){
- ananame="功率因数";
- }else if(anasta==0x06){
- ananame="频率";
- }else if(anasta==0x07){
- ananame="相角";
- }else if(anasta==0x08){
- ananame="照度";
- }
- quint8 f_g1=0x00;
- quint8 f_g2=0x00;
- quint8 f_g3=0x00;
- quint8 f_s=0x00;
- double analog_data;
- f_s = (body.at(ud_cur+8)&0x10)>>4;
- f_g1 = (body.at(ud_cur+8)&0x20)>>5;
- f_g2 = (body.at(ud_cur+8)&0x40)>>6;
- f_g3 = (body.at(ud_cur+8)&0x80)>>7;
- if(f_s==0x01){
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*10000);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*1000);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*100);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*10);
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*1);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*0.1);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*0.01);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*0.001);
- }
- }else{
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*10000;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*1000;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*100;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*10;
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*1;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*0.1;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*0.01;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)+(body.at(ud_cur+8)&0x0f)*100)*0.001;
- }
- }
- QString o_Data = QString("dir:%1\tpointprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\ttype:%14\tvalue:%15")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(ananame).arg(analog_data);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==10){//状态量查询
- int state_data = (body.at(ud_cur+6)&0xff);
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tvalue:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(state_data);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==33){//单灯运行状态查询
- int swtich_status = (body.at(ud_cur+6)&0xff);
- int run_status = (body.at(ud_cur+7)&0xff);
- QString swtich_name = "";
- QString run_name = "";
- if(swtich_status==0x00){
- swtich_name="关灯";
- }else if(swtich_status==0x01){
- swtich_name="正常开灯";
- }else if(swtich_status==0x02){
- swtich_name="节能开灯状态";
- }
- if(run_status==0x00){
- run_name="正常";
- }else if(run_status==0x01){
- run_name="灯亮但有异常";
- }else if(run_status==0x02){
- run_name="异常灭灯 ";
- }else if(run_status==0x03){
- run_name="其他";
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tswtich_status:%14\trun_status:%15")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(swtich_name).arg(run_name);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==34){//单灯电压查询
- double analog_data;
- analog_data = ((body.at(ud_cur+6)&0xf0)>>4)+(body.at(ud_cur+6)&0x0f)*0.1+(body.at(ud_cur+7)&0x0f)*10+((body.at(ud_cur+7)&0xf0)>>4)*100;
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tvalue:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(analog_data);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==35){//单灯电流查询
- quint8 f_s=0x00;
- double ele_data;
- f_s = (body.at(ud_cur+8)&0x80)>>7;
- if(f_s==0x01){
- ele_data = -(((body.at(ud_cur+6)&0xf0)>>4)*0.01+(body.at(ud_cur+6)&0x0f)*0.001+(body.at(ud_cur+7)&0x0f)*0.1+((body.at(ud_cur+7)&0xf0)>>4)+(body.at(ud_cur+8)&0x0f)*10+((body.at(ud_cur+8)&0x70)>>4)*100);
- }else{
- ele_data = ((body.at(ud_cur+6)&0xf0)>>4)*0.01+(body.at(ud_cur+6)&0x0f)*0.001+(body.at(ud_cur+7)&0x0f)*0.1+((body.at(ud_cur+7)&0xf0)>>4)+(body.at(ud_cur+8)&0x0f)*10+((body.at(ud_cur+8)&0x70)>>4)*100;
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tvalue:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(ele_data);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==36||f_fno==38||f_fno==39){//单灯有功功率查询
- quint8 f_g1=0x00;
- quint8 f_g2=0x00;
- quint8 f_g3=0x00;
- quint8 f_s=0x00;
- double active_power_data;
- f_s = (body.at(ud_cur+7)&0x10)>>4;
- f_g1 = (body.at(ud_cur+7)&0x20)>>5;
- f_g2 = (body.at(ud_cur+7)&0x40)>>6;
- f_g3 = (body.at(ud_cur+7)&0x80)>>7;
- if(f_s==0x01){
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- active_power_data = -((((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*10000);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- active_power_data = -((((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*1000);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- active_power_data = -((((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*100);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- active_power_data = -((((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*10);
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- active_power_data = -((((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*1);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- active_power_data = -((((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*0.1);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- active_power_data = -((((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*0.01);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- active_power_data = -((((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*0.001);
- }
- }else{
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- active_power_data = (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*10000;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- active_power_data = (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*1000;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- active_power_data = (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*100;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- active_power_data = (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*10;
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- active_power_data = (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*1;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- active_power_data = (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*0.1;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- active_power_data = (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*0.01;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- active_power_data = (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)+(body.at(ud_cur+7)&0x0f)*100)*0.001;
- }
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tvalue:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(active_power_data);
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==37){//单灯功率因数查询
- quint8 f_s=0x00;
- double power_factor_data;
- f_s = (body.at(ud_cur+7)&0x80)>>7;
- if(f_s==0x01){
- power_factor_data = -((body.at(ud_cur+6)&0x0f)*0.1+((body.at(ud_cur+6)&0xf0)>>4)+(body.at(ud_cur+7)&0x0f)*10+((body.at(ud_cur+7)&0x70)>>4)*100);
- }else{
- power_factor_data = (body.at(ud_cur+6)&0x0f)*0.1+((body.at(ud_cur+6)&0xf0)>>4)+(body.at(ud_cur+7)&0x0f)*10+((body.at(ud_cur+7)&0x70)>>4)*100;
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tvalue:%14")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(power_factor_data);
- emit CommData(DeviceID, 1, o_Data);
- }
- }
- break;
- case 0x0d://请求历史数据
- if(f_pno==0){
- if(f_fno==1||f_fno==17||f_fno==18||f_fno==19||f_fno==20||f_fno==21||f_fno==22){//控制器模拟量历史数据曲线
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+10)&0xf0)>>4)*10+(body.at(ud_cur+10)&0x0f)),
- (((body.at(ud_cur+9)&0xf0)>>4)*10+(body.at(ud_cur+9)&0x0f)),
- (((body.at(ud_cur+8)&0xf0)>>4)*10+(body.at(ud_cur+8)&0x0f))),
- QTime((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)),
- (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)),
- 0));
- quint8 data_freezing_density = body.at(ud_cur+11)&0xff;
- quint8 data_points = body.at(ud_cur+12)&0xff;
- QString ananame = "";
- int anasta = (body.at(ud_cur+13)&0xff);
- if(anasta==0x00){
- ananame="未知";
- }else if(anasta==0x01){
- ananame="电压";
- }else if(anasta==0x02){
- ananame="电流";
- }else if(anasta==0x03){
- ananame="有功功率";
- }else if(anasta==0x04){
- ananame="无功功率";
- }else if(anasta==0x05){
- ananame="功率因数";
- }else if(anasta==0x06){
- ananame="频率";
- }else if(anasta==0x07){
- ananame="相角";
- }else if(anasta==0x08){
- ananame="照度";
- }
- QJsonArray o_Data1;
- for(quint8 i=0;i<data_points;i++){
- quint8 f_g1=0x00;
- quint8 f_g2=0x00;
- quint8 f_g3=0x00;
- quint8 f_s=0x00;
- double analog_data;
- f_s = (body.at(ud_cur+15+2*i)&0x10)>>4;
- f_g1 = (body.at(ud_cur+15+2*i)&0x20)>>5;
- f_g2 = (body.at(ud_cur+15+2*i)&0x40)>>6;
- f_g3 = (body.at(ud_cur+15+2*i)&0x80)>>7;
- if(f_s==0x01){
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*10000);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*1000);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*100);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*10);
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*1);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.1);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.01);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.001);
- }
- }else{
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*10000;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*1000;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*100;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*10;
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*1;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.1;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.01;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.001;
- }
- }
- QJsonObject o_Data2;
- o_Data2.insert("point", i+1);
- o_Data2.insert("type", ananame);
- o_Data2.insert("value", analog_data);
- o_Data1.append(o_Data2);
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tdata_freezing_density:%14\tdata_points:%15\tdata_time:%16\tdata_list:%17")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(data_freezing_density).arg(data_points).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(QJsonDocument(o_Data1).toJson()).replace("\"","\\\""));
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==2){
- QDate t = QDate(2000+(((body.at(ud_cur+8)&0xf0)>>4)*10+(body.at(ud_cur+8)&0x0f)),
- (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)),
- (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)));
- quint8 records_number = body.at(ud_cur+9)&0xff;
- QJsonArray o_Data1;
- for(quint8 i=0;i<records_number;i++){
- QDateTime t1 = QDateTime(QDate(2000+(((body.at(ud_cur+15+9*i)&0xf0)>>4)*10+(body.at(ud_cur+15+9*i)&0x0f)),
- (((body.at(ud_cur+14+9*i)&0x10)>>4)*10+(body.at(ud_cur+14+9*i)&0x0f)),
- (((body.at(ud_cur+13+9*i)&0xf0)>>4)*10+(body.at(ud_cur+13+9*i)&0x0f))),
- QTime((((body.at(ud_cur+12+9*i)&0xf0)>>4)*10+(body.at(ud_cur+12+9*i)&0x0f)),
- (((body.at(ud_cur+11+9*i)&0xf0)>>4)*10+(body.at(ud_cur+11+9*i)&0x0f)),
- (((body.at(ud_cur+10+9*i)&0xf0)>>4)*10+(body.at(ud_cur+10+9*i)&0x0f))));
- quint8 control_point = body.at(ud_cur+16+9*i)&0xff;
- int control_type = body.at(ud_cur+17+9*i)&0xff;
- QString control_name = "";
- if(control_type==0x00){
- control_name="开";
- }else if(control_type==0x01){
- control_name="关";
- }else if(control_type==0x02){
- control_name="节能开关调档";
- }
- quint8 economize_gear = body.at(ud_cur+18+9*i)&0xff;
- QJsonObject o_Data2;
- o_Data2.insert("time", t.toString("yyyy-MM-dd HH:mm:ss"));
- o_Data2.insert("point", control_point);
- o_Data2.insert("type", control_name);
- o_Data2.insert("value", economize_gear);
- o_Data1.append(o_Data2);
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tdata:%14\trecords_numbers:%15\tdata_list:%16")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(t.toString("yyyy-MM-dd")).arg(records_number).arg(QString(QJsonDocument(o_Data1).toJson()).replace("\"","\\\""));
- emit CommData(DeviceID, 1, o_Data);
- }
- }else{
- if(f_fno==1||f_fno==17||f_fno==18||f_fno==19||f_fno==20||f_fno==21||f_fno==22){//控制器模拟量历史数据曲线
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+10)&0xf0)>>4)*10+(body.at(ud_cur+10)&0x0f)),
- (((body.at(ud_cur+9)&0xf0)>>4)*10+(body.at(ud_cur+9)&0x0f)),
- (((body.at(ud_cur+8)&0xf0)>>4)*10+(body.at(ud_cur+8)&0x0f))),
- QTime((((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)),
- (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)),
- 0));
- quint8 data_freezing_density = body.at(ud_cur+11)&0xff;
- quint8 data_points = body.at(ud_cur+12)&0xff;
- QString ananame = "";
- int anasta = (body.at(ud_cur+13)&0xff);
- if(anasta==0x00){
- ananame="未知";
- }else if(anasta==0x01){
- ananame="电压";
- }else if(anasta==0x02){
- ananame="电流";
- }else if(anasta==0x03){
- ananame="有功功率";
- }else if(anasta==0x04){
- ananame="无功功率";
- }else if(anasta==0x05){
- ananame="功率因数";
- }else if(anasta==0x06){
- ananame="频率";
- }else if(anasta==0x07){
- ananame="相角";
- }else if(anasta==0x08){
- ananame="照度";
- }
- QJsonArray o_Data1;
- for(quint8 i=0;i<data_points;i++){
- quint8 f_g1=0x00;
- quint8 f_g2=0x00;
- quint8 f_g3=0x00;
- quint8 f_s=0x00;
- double analog_data;
- f_s = (body.at(ud_cur+15+2*i)&0x10)>>4;
- f_g1 = (body.at(ud_cur+15+2*i)&0x20)>>5;
- f_g2 = (body.at(ud_cur+15+2*i)&0x40)>>6;
- f_g3 = (body.at(ud_cur+15+2*i)&0x80)>>7;
- if(f_s==0x01){
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*10000);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*1000);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*100);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*10);
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*1);
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.1);
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.01);
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- analog_data = -((((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.001);
- }
- }else{
- if(f_g1==0x00&&f_g2==0x00&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*10000;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*1000;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*100;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x00){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*10;
- }else if(f_g1==0x00&&f_g2==0x00&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*1;
- }else if(f_g1==0x01&&f_g2==0x00&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.1;
- }else if(f_g1==0x00&&f_g2==0x01&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.01;
- }else if(f_g1==0x01&&f_g2==0x01&&f_g3==0x01){
- analog_data = (((body.at(ud_cur+14+2*i)&0xf0)>>4)*10+(body.at(ud_cur+14+2*i)&0x0f)+(body.at(ud_cur+15+2*i)&0x0f)*100)*0.001;
- }
- }
- QJsonObject o_Data2;
- o_Data2.insert("point", i+1);
- o_Data2.insert("type", ananame);
- o_Data2.insert("value", analog_data);
- o_Data1.append(o_Data2);
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tdata_freezing_density:%14\tdata_points:%15\tdata_time:%16\tdata_list:%17")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(data_freezing_density).arg(data_points).arg(t.toString("yyyy-MM-dd HH:mm:ss")).arg(QString(QJsonDocument(o_Data1).toJson()).replace("\"","\\\""));
- emit CommData(DeviceID, 1, o_Data);
- }else if(f_fno==2){
- QDate t = QDate(2000+(((body.at(ud_cur+8)&0xf0)>>4)*10+(body.at(ud_cur+8)&0x0f)),
- (((body.at(ud_cur+7)&0xf0)>>4)*10+(body.at(ud_cur+7)&0x0f)),
- (((body.at(ud_cur+6)&0xf0)>>4)*10+(body.at(ud_cur+6)&0x0f)));
- quint8 records_number = body.at(ud_cur+9)&0xff;
- QJsonArray o_Data1;
- for(quint8 i=0;i<records_number;i++){
- QDateTime t1 = QDateTime(QDate(2000+(((body.at(ud_cur+15+9*i)&0xf0)>>4)*10+(body.at(ud_cur+15+9*i)&0x0f)),
- (((body.at(ud_cur+14+9*i)&0x10)>>4)*10+(body.at(ud_cur+14+9*i)&0x0f)),
- (((body.at(ud_cur+13+9*i)&0xf0)>>4)*10+(body.at(ud_cur+13+9*i)&0x0f))),
- QTime((((body.at(ud_cur+12+9*i)&0xf0)>>4)*10+(body.at(ud_cur+12+9*i)&0x0f)),
- (((body.at(ud_cur+11+9*i)&0xf0)>>4)*10+(body.at(ud_cur+11+9*i)&0x0f)),
- (((body.at(ud_cur+10+9*i)&0xf0)>>4)*10+(body.at(ud_cur+10+9*i)&0x0f))));
- quint8 control_point = body.at(ud_cur+16+9*i)&0xff;
- int control_type = body.at(ud_cur+17+9*i)&0xff;
- QString control_name = "";
- if(control_type==0x00){
- control_name="开";
- }else if(control_type==0x01){
- control_name="关";
- }else if(control_type==0x02){
- control_name="节能开关调档";
- }
- quint8 economize_gear = body.at(ud_cur+18+9*i)&0xff;
- QJsonObject o_Data2;
- o_Data2.insert("time", t.toString("yyyy-MM-dd HH:mm:ss"));
- o_Data2.insert("point", control_point);
- o_Data2.insert("type", control_name);
- o_Data2.insert("value", economize_gear);
- o_Data1.append(o_Data2);
- }
- QString o_Data = QString("dir:%1\tprm:%2\tafn:%3\tseq:%4\tcon:%5\tfin:%6\tfir:%7\ttpv:%8\tpno:%9\tfno:%10\tec0:%11\tec1:%12\tsig:%13\tdata:%14\trecords_numbers:%15\tdata_list:%16")
- .arg(f_dir).arg(f_prm).arg(f_afn,2,16,QChar('0')).arg(f_seq).arg(f_con).arg(f_fin).arg(f_fir).arg(f_tpv).arg(f_pno).arg(f_fno).arg(ErrorCount[0]).arg(ErrorCount[1]).arg(WirelessSignal).arg(t.toString("yyyy-MM-dd")).arg(records_number).arg(QString(QJsonDocument(o_Data1).toJson()).replace("\"","\\\""));
- emit CommData(DeviceID, 1, o_Data);
- }
- }
- break;
- case 0x0e://请求事件数据
- if(f_pno==0){
- if(f_fno==1){//重要事件
- if(len>(ud_cur+6+4)){
- ErrorCount[0] = body.at(ud_cur+6)&0xff;
- ErrorCount[1] = body.at(ud_cur+7)&0xff;
- quint8 Err_Cur = body.at(ud_cur+8)&0xff;
- quint8 Err_End = body.at(ud_cur+9)&0xff;
- int err_len=0;
- slShm->smartLightList[idx].ErrCount[0]=(ErrorCount[0]&0xff);
- slShm->smartLightList[idx].ErrCount[1]=(ErrorCount[1]&0xff);
- for(quint8 i=0;i<=(Err_End-Err_Cur);i++){
- quint8 evid = (Err_Cur+i)&0xff;
- if(len>(ud_cur+6+4+err_len+2)){
- quint8 err_code = body.at(ud_cur+err_len+10)&0xff;
- quint8 evt_len = body.at(ud_cur+err_len+11)&0xff;
- QString o_data = "";
- if(len>=(ud_cur+6+4+err_len+2+evt_len)){
- o_data.append(QString("%1 ").arg(err_code,2,16,QChar('0')));
- o_data.append(QString("%1 ").arg(evt_len,2,16,QChar('0')));
- for(int j=0;j<evt_len;j++)
- o_data.append(QString("%1 ").arg(body.at(ud_cur+6+4+err_len+2+j)&0xff,2,16,QChar('0')));
- emit CommData(DeviceID, 1, o_data);
- switch (err_code) {
- case 1://ACU失电记录
- if(evt_len==6){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0x01);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" ACU失电记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- emit getEAlarm(DeviceID,err_code,sta,0,0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 2://正常开灯成功记录
- if(evt_len==5){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 正常开灯成功记录 "));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- emit getEAlarm(DeviceID,err_code,0,0,0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 3://正常开灯失败记录
- if(evt_len==5){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 正常开灯失败记录 "));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- emit getEAlarm(DeviceID,err_code,0,0,0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 4://正常关灯成功记录
- if(evt_len==5){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 正常关开灯成功记录 "));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- emit getEAlarm(DeviceID,err_code,0,0,0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 5://正常关灯失败记录
- if(evt_len==5){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 正常关灯失败记录 "));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- emit getEAlarm(DeviceID,err_code,0,0,0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 6://异常开灯记录
- if(evt_len==7){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0x01);
- uint arg1 = (body.at(ud_cur+err_len+18)&0x01);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 异常开灯记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(",异常原因:"));
- if(arg1==0x01)
- o_data.append(QString::fromUtf8("调试"));
- else
- o_data.append(QString::fromUtf8("未知"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 7://异常关灯记录
- if(evt_len==7){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0x01);
- uint arg1 = (body.at(ud_cur+err_len+18)&0x01);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 异常关灯记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(",异常原因:"));
- if(arg1==0x01)
- o_data.append(QString::fromUtf8("调试"));
- else
- o_data.append(QString::fromUtf8("未知"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 8://模拟量上限告警(关灯时间内)
- case 9://模拟量上限告警(开灯时间内)
- case 10://模拟量下限告警(开灯时间内)
- if(evt_len>=11){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0x01);
- uint arg1 = (body.at(ud_cur+err_len+18)&0x01);
- uint arg2 = (body.at(ud_cur+err_len+19)&0x03);
- uint arg3 = (body.at(ud_cur+err_len+20)&0x07);
- float value = get_repValue(static_cast<int>(arg3),body.mid(ud_cur+err_len+21,evt_len-9));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- if((err_code==8)||(err_code==9))
- o_data.append(QString::fromUtf8(" 模拟量上限告警"));
- else if(err_code==10)
- o_data.append(QString::fromUtf8(" 模拟量下限告警"));
- if(err_code==8)
- o_data.append(QString::fromUtf8("(关灯时间内) "));
- else if((err_code==9)||(err_code==10))
- o_data.append(QString::fromUtf8("(开灯时间内) "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" %1 %2 ").arg((arg1&0x7f)?QString::fromUtf8("%1").arg(arg1&0x7f):QString::fromUtf8("总")).arg((arg1&0x80)?QString::fromUtf8("出线"):QString::fromUtf8("进线")));
- if(arg2==0x00)
- o_data.append(QString::fromUtf8("相位:未知"));
- else if(arg2==0x01)
- o_data.append(QString::fromUtf8("相位:A相"));
- else if(arg2==0x02)
- o_data.append(QString::fromUtf8("相位:B相"));
- else if(arg2==0x03)
- o_data.append(QString::fromUtf8("相位:C相"));
- o_data.append(QString::fromUtf8(" 当前值:%1%2").arg(QString::number(static_cast<double>(value),'g',3))
- .arg(arg3==0x01?"V"
- :(arg3==0x02?"A"
- :(((arg3==0x03)||(arg3==0x04))?"W/VAR"
- :(arg3==0x05?"%"
- :(arg3==0x06?"Hz"
- :(arg3==0x07?"°"
- :(arg3==0x08?"lx"
- :""))))))));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].ARG[2] = arg3;
- slShm->smartLightList[idx].LastEvent[evid].VALUE[0] = value;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),static_cast<int>(arg3),value,0.0,"",t);
- }
- }
- break;
- case 11://终端通信故障
- if(evt_len==6){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0x01);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 终端通信故障 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- emit getEAlarm(DeviceID,err_code,sta,0,0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 12://接口转换模块故障
- if(evt_len==6){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0x01);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 接口转换模块故障 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- emit getEAlarm(DeviceID,err_code,sta,0,0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 13://接触器档位切换正常记录
- if(evt_len==8){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- uint arg1 = (body.at(ud_cur+err_len+17)&0xff);
- uint arg2 = (body.at(ud_cur+err_len+18)&0xff);
- uint arg3 = (body.at(ud_cur+err_len+19)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 接触器档位正常切换 "));
- for(int i=0;i<8;i++)
- o_data.append((arg1&(0x01<<i))?QString::fromUtf8("闭合 "):QString::fromUtf8("断开 "));
- for(int i=0;i<8;i++)
- o_data.append((arg2&(0x01<<i))?QString::fromUtf8("闭合 "):QString::fromUtf8("断开 "));
- for(int i=0;i<8;i++)
- o_data.append((arg3&(0x01<<i))?QString::fromUtf8("闭合 "):QString::fromUtf8("断开 "));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].ARG[2] = arg3;
- emit getEAlarm(DeviceID,err_code,0,static_cast<int>(arg1),static_cast<int>(arg2),static_cast<int>(arg3),0.0,0.0,"",t);
- }
- }
- break;
- case 14://接触器档位切换失败记录
- if(evt_len==8){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- uint arg1 = (body.at(ud_cur+err_len+17)&0xff);
- uint arg2 = (body.at(ud_cur+err_len+18)&0xff);
- uint arg3 = (body.at(ud_cur+err_len+19)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 接触器档位切换失败 "));
- for(int i=0;i<8;i++)
- o_data.append((arg1&(0x01<<i))?QString::fromUtf8("闭合 "):QString::fromUtf8("断开 "));
- for(int i=0;i<8;i++)
- o_data.append((arg2&(0x01<<i))?QString::fromUtf8("闭合 "):QString::fromUtf8("断开 "));
- for(int i=0;i<8;i++)
- o_data.append((arg3&(0x01<<i))?QString::fromUtf8("闭合 "):QString::fromUtf8("断开 "));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].ARG[2] = arg3;
- emit getEAlarm(DeviceID,err_code,0,static_cast<int>(arg1),static_cast<int>(arg2),static_cast<int>(arg3),0.0,0.0,"",t);
- }
- }
- break;
- case 15://单灯正常开灯记录
- case 16://单灯正常关灯记录
- if(evt_len>=9){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- uint arg1 = ((body.at(ud_cur+err_len+17)&0x00ff)|((body.at(ud_cur+err_len+18)&0x00ff)<<8));
- uint arg2 = ((body.at(ud_cur+err_len+19)&0x00ff)|((body.at(ud_cur+err_len+20)&0x00ff)<<8));
- if(evt_len==(9+arg2*2)){
- QString others="[";
- for(uint i=0;i<arg2;i++){
- if(i==0)
- others.append(QString("%1").arg(((body.at(ud_cur+err_len+21+i*2)&0x00ff)|((body.at(ud_cur+err_len+22+i*2)&0x00ff)<<8))));
- else
- others.append(QString(",%1").arg(((body.at(ud_cur+err_len+21+i*2)&0x00ff)|((body.at(ud_cur+err_len+22+i*2)&0x00ff)<<8))));
- }
- others.append("]");
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- if(err_code==15){
- o_data.append(QString::fromUtf8(" 单灯正常开灯记录 "));
- o_data.append(QString::fromUtf8("开灯成功:%1 ").arg(arg1));
- o_data.append(QString::fromUtf8("开灯失败:%1 ").arg(arg2));
- }else if(err_code==16){
- o_data.append(QString::fromUtf8(" 单灯正常关灯记录 "));
- o_data.append(QString::fromUtf8("关灯成功:%1 ").arg(arg1));
- o_data.append(QString::fromUtf8("关灯失败:%1 ").arg(arg2));
- }
- if(arg2>0){
- o_data.append(QString::fromUtf8("失败灯号:"));
- o_data.append(others);
- }
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- emit getEAlarm(DeviceID,err_code,0,static_cast<int>(arg1),static_cast<int>(arg2),0,0.0,0.0,others,t);
- }
- }
- }
- break;
- case 17://单灯异常开灯记录
- case 18://单灯异常关灯记录
- if(evt_len==9){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = ((body.at(ud_cur+err_len+18)&0x00ff)|((body.at(ud_cur+err_len+19)&0x00ff)<<8));
- uint arg2 = (body.at(ud_cur+err_len+20)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- if(err_code==17)
- o_data.append(QString::fromUtf8(" 单灯异常开灯 "));
- else if(err_code==18)
- o_data.append(QString::fromUtf8(" 单灯异常关灯 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 灯具序号:%1 ").arg(arg1));
- if(arg2==0x01)
- o_data.append(QString::fromUtf8("原因:调试"));
- else if(arg2==0x00)
- o_data.append(QString::fromUtf8("原因:未知"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- emit getEAlarm(DeviceID,err_code,0,static_cast<int>(arg1),static_cast<int>(arg2),0,0.0,0.0,"",t);
- }
- }
- break;
- case 19://单灯过流记录
- case 20://单灯欠流记录
- if(evt_len>=10){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = ((body.at(ud_cur+err_len+18)&0x00ff)|((body.at(ud_cur+err_len+19)&0x00ff)<<8));
- float value = get_repValue(2,body.mid(20,2));
- uint arg2 = (evt_len>10)?(body.at(ud_cur+err_len+22)&0xff):0x00;
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- if(err_code==19)
- o_data.append(QString::fromUtf8(" 单灯过流记录 "));
- else if(err_code==20)
- o_data.append(QString::fromUtf8(" 单灯欠流记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 灯具序号:%1 ").arg(arg1));
- o_data.append(QString::fromUtf8("电流值:%1A").arg(QString::number(static_cast<double>(value),'g',3)));
- o_data.append(QString::fromUtf8(" 控制态:%1").arg(arg2));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].VALUE[0] = value;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),0,value,0.0,"",t);
- }
- }
- break;
- case 21://单灯电流故障记录
- if(evt_len>=12){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = static_cast<uint>(((body.at(ud_cur+err_len+18)&0x00ff)|((body.at(ud_cur+err_len+19)&0x00ff)<<8)));
- float value = get_repValue(2,body.mid(20,2));
- float v2 = get_repValue(5,body.mid(22,2));
- uint arg2 = (evt_len>12)?(body.at(ud_cur+err_len+24)&0xff):0x00;
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 单灯电流故障记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 灯具序号:%1 ").arg(arg1));
- o_data.append(QString::fromUtf8("电流值:%1A").arg(QString::number(static_cast<double>(value),'g',3)));
- o_data.append(QString::fromUtf8(" 功率因素:%1%%").arg(QString::number(static_cast<double>(v2),'g',3)));
- o_data.append(QString::fromUtf8(" 控制态:%1").arg(arg2));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].VALUE[0] = value;
- slShm->smartLightList[idx].LastEvent[evid].VALUE[1] = v2;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),0,value,v2,"",t);
- }
- }
- break;
- case 22://单灯灯具故障记录
- case 23://单灯熔丝故障记录
- if(evt_len>=12){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = static_cast<uint>(((body.at(ud_cur+err_len+18)&0x00ff)|((body.at(ud_cur+err_len+19)&0x00ff)<<8)));
- float value = get_repValue(1,body.mid(20,2));
- float v2 = get_repValue(2,body.mid(23,2));
- uint arg2 = (evt_len>12)?(body.at(ud_cur+err_len+24)&0xff):0x00;
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- if(err_code==22)
- o_data.append(QString::fromUtf8(" 单灯电流故障记录 "));
- else if(err_code==23)
- o_data.append(QString::fromUtf8(" 单灯熔丝故障记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 灯具序号:%1 ").arg(arg1));
- o_data.append(QString::fromUtf8("电压值:%1V").arg(QString::number(static_cast<double>(value),'g',3)));
- o_data.append(QString::fromUtf8(" 电流值:%1A").arg(QString::number(static_cast<double>(v2),'g',3)));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].VALUE[0] = value;
- slShm->smartLightList[idx].LastEvent[evid].VALUE[1] = v2;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),0,value,v2,"",t);
- }
- }
- break;
- case 24://单灯通信故障记录
- if(evt_len==12){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- uint arg1 = static_cast<uint>(((body.at(ud_cur+err_len+17)&0x00ff)|((body.at(ud_cur+err_len+18)&0x00ff)<<8)));
- QDateTime t2 = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+23)&0xf0)>>4)*10+(body.at(ud_cur+err_len+23)&0x0f)),
- (((body.at(ud_cur+err_len+22)&0xf0)>>4)*10+(body.at(ud_cur+err_len+22)&0x0f)),
- (((body.at(ud_cur+err_len+21)&0xf0)>>4)*10+(body.at(ud_cur+err_len+21)&0x0f))),
- QTime((((body.at(ud_cur+err_len+20)&0xf0)>>4)*10+(body.at(ud_cur+err_len+20)&0x0f)),
- (((body.at(ud_cur+err_len+19)&0xf0)>>4)*10+(body.at(ud_cur+err_len+19)&0x0f)),
- 0));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 单灯通信故障记录 "));
- o_data.append(QString::fromUtf8(" 终端控制器设备序号:%1 ").arg(arg1));
- o_data.append(QString::fromUtf8("最后通信时间:%1").arg(t2.toString("yyyy-MM-dd HH:mm:ss")));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = t2.toTime_t();
- emit getEAlarm(DeviceID,err_code,0,static_cast<int>(arg1),static_cast<int>(t2.toTime_t()),0,0.0,0.0,"",t);
- }
- }
- break;
- case 25://设施物理状态报警记录
- if(evt_len==9){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = (body.at(ud_cur+err_len+18)&0xff);
- uint arg2 = (body.at(ud_cur+err_len+19)&0xff);
- uint arg3 = (body.at(ud_cur+err_len+20)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 设施物理状态报警记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 遥信点(设备)编号:%1").arg(arg1));
- if(arg2==0x00)
- o_data.append(QString::fromUtf8(" 遥信点类型:开关"));
- else if(arg2==0x01)
- o_data.append(QString::fromUtf8(" 遥信点类型:失电"));
- else if(arg2==0x02)
- o_data.append(QString::fromUtf8(" 遥信点类型:接触器状态"));
- else if(arg2==0x03)
- o_data.append(QString::fromUtf8(" 遥信点类型:节能档位状态"));
- else if(arg2==0x04)
- o_data.append(QString::fromUtf8(" 遥信点类型:中间继电器状态"));
- else if(arg2==0x05)
- o_data.append(QString::fromUtf8(" 遥信点类型:手自动切换"));
- else if(arg2==0x06)
- o_data.append(QString::fromUtf8(" 遥信点类型:门磁"));
- else if(arg2==0x07)
- o_data.append(QString::fromUtf8(" 遥信点类型:设施物理状态"));
- o_data.append(QString::fromUtf8(" 设施状态:%1").arg(arg3));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].ARG[2] = arg3;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),static_cast<int>(arg3),0.0,0.0,"",t);
- }
- }
- break;
- case 26://进线缺相事件记录
- if(evt_len==7){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = (body.at(ud_cur+err_len+18)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 进线缺相事件记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 第%1进线").arg(((arg1>>6)&0x03))+1);
- if((arg1&0x08)){
- if(arg1&0x01)
- o_data.append(QString::fromUtf8(" A相正常"));
- else
- o_data.append(QString::fromUtf8(" A相缺相"));
- }else{
- o_data.append(QString::fromUtf8(" A相未接"));
- }
- if((arg1&0x10)){
- if(arg1&0x02)
- o_data.append(QString::fromUtf8(" B相正常"));
- else
- o_data.append(QString::fromUtf8(" B相缺相"));
- }else{
- o_data.append(QString::fromUtf8(" B相未接"));
- }
- if((arg1&0x20)){
- if(arg1&0x04)
- o_data.append(QString::fromUtf8(" C相正常"));
- else
- o_data.append(QString::fromUtf8(" C相缺相"));
- }else{
- o_data.append(QString::fromUtf8(" C相未接"));
- }
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 27://门磁状态变化事件
- if(evt_len==7){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- uint arg1 = (body.at(ud_cur+err_len+17)&0xff);
- uint arg2 = (body.at(ud_cur+err_len+18)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 门磁状态变化事件 "));
- if((arg1==0x00)&&(arg2==0x00)){
- o_data.append(QString::fromUtf8("门被关闭,告警解除"));
- }else if((arg1==0x01)&&(arg2==0x01)){
- o_data.append(QString::fromUtf8("门被打开,告警"));
- }else if((arg1==0x02)&&(arg2==0x02)){
- o_data.append(QString::fromUtf8("门被打开,正常"));
- }
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- emit getEAlarm(DeviceID,err_code,0,static_cast<int>(arg1),static_cast<int>(arg2),0,0.0,0.0,"",t);
- }
- }
- break;
- case 28://校时失败事件记录
- case 29://校时成功事件记录
- if(evt_len>=7){//结构有疑问,需要测试确认,yao
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- if(err_code==28)
- o_data.append(QString::fromUtf8(" 校时失败事件记录 "));
- else if(err_code==29)
- o_data.append(QString::fromUtf8(" 校时成功事件记录 "));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- emit getEAlarm(DeviceID,err_code,0,0,0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 30://箱防雷失效事件
- if(evt_len==6){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 箱防雷失效事件 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- emit getEAlarm(DeviceID,err_code,sta,0,0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 33://回路切换事件记录
- if(evt_len>=9){//结构有疑问,需要测试确认,yao
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- uint arg1 = (body.at(ud_cur+err_len+17)&0xff);
- uint arg2 = (body.at(ud_cur+err_len+18)&0xff);
- uint arg3 = (body.at(ud_cur+err_len+19)&0xff);
- int sta = (body.at(ud_cur+err_len+20)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 回路切换事件记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("计划自主操作"));
- else if(sta==0x02)
- o_data.append(QString::fromUtf8("应急操作"));
- else if(sta==0x03)
- o_data.append(QString::fromUtf8("根据光照度操作"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].ARG[2] = arg3;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),static_cast<int>(arg3),0.0,0.0,"",t);
- }
- }
- break;
- case 34://回路状态异常事件记录
- if(evt_len>=9){//结构有疑问,需要测试确认,yao
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = (body.at(ud_cur+err_len+18)&0xff);
- uint arg2 = (body.at(ud_cur+err_len+19)&0xff);
- uint arg3 = (body.at(ud_cur+err_len+20)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 回路状态异常事件记录 "));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].ARG[2] = arg3;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),static_cast<int>(arg3),0.0,0.0,"",t);
- }
- }
- break;
- case 35://出线状态异常事件记录
- if(evt_len==10){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = (body.at(ud_cur+err_len+18)&0xff);
- uint arg2 = (body.at(ud_cur+err_len+19)&0xff);
- uint arg3 = (body.at(ud_cur+err_len+20)&0xff);
- int value = (body.at(ud_cur+err_len+21)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 出线状态异常事件记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 出线ID:%1 ").arg(arg1));
- if(arg2==0x00)
- o_data.append(QString::fromUtf8("相位:未知"));
- else if(arg2==0x01)
- o_data.append(QString::fromUtf8("相位:A相"));
- else if(arg2==0x02)
- o_data.append(QString::fromUtf8("相位:B相"));
- else if(arg2==0x03)
- o_data.append(QString::fromUtf8("相位:C相"));
- o_data.append(QString::fromUtf8(" 隶属回路控制状态:%1").arg(arg3,8,2,QChar('0')));
- o_data.append(QString::fromUtf8(" 出线当前状态:%1").arg(value,8,2,QChar('0')));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].ARG[2] = arg3;
- slShm->smartLightList[idx].LastEvent[evid].VALUE[0] = static_cast<float>(value);
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),static_cast<int>(arg3),value,0.0,"",t);
- }
- }
- break;
- case 36://灯杆漏电事件记录
- if(evt_len==12){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = static_cast<uint>(((body.at(ud_cur+err_len+18)&0x00ff)|((body.at(ud_cur+err_len+19)&0x00ff)<<8)));
- float value = get_repValue(2,body.mid(20,2));
- float v2 = get_repValue(1,body.mid(22,2));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 灯杆漏电事件记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 单灯设备序号:%1 ").arg(arg1));
- o_data.append(QString::fromUtf8(" 漏电流:%1A").arg(QString::number(static_cast<double>(value),'g',3)));
- o_data.append(QString::fromUtf8(" 杆电压:%1V").arg(QString::number(static_cast<double>(v2),'g',3)));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].VALUE[0] = value;
- slShm->smartLightList[idx].LastEvent[evid].VALUE[1] = v2;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),0,0,value,v2,"",t);
- }
- }
- break;
- case 37://灯杆防雷器失效事件记录
- if(evt_len==8){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = static_cast<uint>(((body.at(ud_cur+err_len+18)&0x00ff)|((body.at(ud_cur+err_len+19)&0x00ff)<<8)));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 灯杆防雷器失效事件记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 单灯设备序号:%1 ").arg(arg1));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),0,0,0.0,0.0,"",t);
- }
- }
- break;
- case 38://断线报警事件记录
- if(evt_len==8){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = (body.at(ud_cur+err_len+18)&0xff);
- uint arg2 = (body.at(ud_cur+err_len+19)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 断线报警事件记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 监测出线ID:%1 ").arg(arg1));
- if(arg2==0x00)
- o_data.append(QString::fromUtf8("正常"));
- else if(arg2==0x01)
- o_data.append(QString::fromUtf8("被盗"));
- else if(arg2==0x02)
- o_data.append(QString::fromUtf8("非法接入"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),0,0.0,0.0,"",t);
- }
- }
- break;
- case 39://光感报警事件记录
- if(evt_len==8){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+16)&0xf0)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f)),
- (((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f))),
- QTime((((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f)),
- 0));
- int sta = (body.at(ud_cur+err_len+17)&0xff);
- uint arg1 = (body.at(ud_cur+err_len+18)&0xff);
- uint arg2 = (body.at(ud_cur+err_len+19)&0xff);
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 光感报警事件记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8("回路ID:%1 ").arg(arg1));
- if(arg2==0x00)
- o_data.append(QString::fromUtf8("光照度低于开灯光照度阈值"));
- else if(arg2==0x01)
- o_data.append(QString::fromUtf8("光照度高于开灯光照度阈值"));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),0,0.0,0.0,"",t);
- }
- }
- break;
- case 51://升级成功事件记录
- if(evt_len==15){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+17)&0xf0)>>4)*10+(body.at(ud_cur+err_len+17)&0x0f)),
- (((body.at(ud_cur+err_len+16)&0x10)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f))),
- QTime((((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f)),
- (((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f))));
- int sta = (body.at(ud_cur+err_len+18)&0xff);
- uint arg1 = 0;
- uint arg2 = 0;
- uint arg3 = 0;
- QString others = QString(body.mid(19,8));
- QStringList vers = others.split(".");
- if(vers.length()>0){
- for(int v=0;v<vers.length();v++){
- if(v==0)
- arg1 = vers.at(v).toUInt();
- else if(v==1)
- arg2 = vers.at(v).toUInt();
- else if(v==2)
- arg3 = vers.at(v).toUInt();
- else
- break;
- }
- }
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 升级成功事件记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("升级失败"));
- else
- o_data.append(QString::fromUtf8("升级成功"));
- o_data.append(QString::fromUtf8("版本号:%1").arg(others));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].ARG[2] = arg3;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),static_cast<int>(arg3),0.0,0.0,others,t);
- }
- }
- break;
- case 52://单灯状态变化记录
- if(evt_len==20){
- QDateTime t = QDateTime(QDate(2000+(((body.at(ud_cur+err_len+17)&0xf0)>>4)*10+(body.at(ud_cur+err_len+17)&0x0f)),
- (((body.at(ud_cur+err_len+16)&0x10)>>4)*10+(body.at(ud_cur+err_len+16)&0x0f)),
- (((body.at(ud_cur+err_len+15)&0xf0)>>4)*10+(body.at(ud_cur+err_len+15)&0x0f))),
- QTime((((body.at(ud_cur+err_len+14)&0xf0)>>4)*10+(body.at(ud_cur+err_len+14)&0x0f)),
- (((body.at(ud_cur+err_len+13)&0xf0)>>4)*10+(body.at(ud_cur+err_len+13)&0x0f)),
- (((body.at(ud_cur+err_len+12)&0xf0)>>4)*10+(body.at(ud_cur+err_len+12)&0x0f))));
- int sta = (body.at(ud_cur+err_len+18)&0xff);
- uint arg1 = static_cast<uint>((body.at(ud_cur+err_len+19)&0x00ff)|((body.at(ud_cur+err_len+20)&0x00ff)<<8));
- uint arg2 = (body.at(ud_cur+err_len+21)&0xff);
- uint arg3 = (body.at(ud_cur+err_len+22)&0xff);
- float v1 = get_repValue(1,body.mid(23,2));
- float v2 = get_repValue(2,body.mid(25,3));
- float v3 = get_repValue(3,body.mid(28,2));
- float v4 = get_repValue(5,body.mid(30,2));
- o_data = "";
- o_data.append(t.toString("yyyy-MM-dd HH:mm:ss"));
- o_data.append(QString::fromUtf8(" 单灯状态变化记录 "));
- if(sta==0x01)
- o_data.append(QString::fromUtf8("开始"));
- else
- o_data.append(QString::fromUtf8("恢复"));
- o_data.append(QString::fromUtf8(" 灯具序号:%1 ").arg(arg1));
- if(arg2==0)
- o_data.append(QString::fromUtf8("开关灯状态:开"));
- else if(arg2==1)
- o_data.append(QString::fromUtf8("开关灯状态:关"));
- else if(arg2==2){
- o_data.append(QString::fromUtf8("开关灯状态:节能开关调档"));
- o_data.append(QString::fromUtf8(" 节能档位:%1").arg(arg3));
- }
- o_data.append(QString::fromUtf8(" 电压:%1V").arg(QString::number(static_cast<double>(v1),'g',3)));
- o_data.append(QString::fromUtf8(" 电流:%1A").arg(QString::number(static_cast<double>(v2),'g',3)));
- o_data.append(QString::fromUtf8(" 有功功率:%1W/VAR").arg(QString::number(static_cast<double>(v3),'g',3)));
- o_data.append(QString::fromUtf8(" 功率因素:%1%").arg(QString::number(static_cast<double>(v4),'g',3)));
- emit CommData(DeviceID, 1, o_data);
- if(slShm->smartLightList[idx].LastEvent[evid].TIME!=t.toTime_t()){
- slShm->smartLightList[idx].LastEvent[evid].TIME = t.toTime_t();
- slShm->smartLightList[idx].LastEvent[evid].ERC = err_code;
- slShm->smartLightList[idx].LastEvent[evid].STA = sta&0xff;
- slShm->smartLightList[idx].LastEvent[evid].ARG[0] = arg1;
- slShm->smartLightList[idx].LastEvent[evid].ARG[1] = arg2;
- slShm->smartLightList[idx].LastEvent[evid].ARG[2] = arg3;
- emit getEAlarm(DeviceID,err_code,sta,static_cast<int>(arg1),static_cast<int>(arg2),static_cast<int>(arg3),v1,v2,
- QString("%1,%2").arg(QString::number(static_cast<double>(v3),'g',3)).arg(QString::number(static_cast<double>(v4),'g',3)),t);
- }
- }
- break;
- }
- err_len += (2+evt_len);
- }else
- break;
- }else
- break;
- }
- }
- }else if(f_fno==2){//一般事件
- }
- }
- break;
- case 0x10://数据转发
- break;
- }
- return true;
- }
- void SmartLightCommThread::check_idx()
- {
- quint8 idhash = 0x00;
- char *deviceid = DeviceID.toLocal8Bit().data();
- for(int i=0;i<strlen(deviceid);i++){
- idhash = (idhash+deviceid[i]&0xff)&0xff;
- }
- for(int i=0;i<DevNum;i++){
- if(slShm->smartLightList[i].Enabled==0x01){
- if(idhash==slShm->smartLightList[i].LightCodeHash){
- if(strcmp(deviceid,slShm->smartLightList[i].LigthCode)==0){
- idx = i;
- return;
- }
- }
- }else{
- idx = i;
- sprintf(slShm->smartLightList[i].LigthCode,"%s",deviceid);
- slShm->smartLightList[i].Enabled=0x01;
- emit getNewDev(DeviceID);
- return;
- }
- }
- }
- bool SmartLightCommThread::checkDataFrame(QTcpSocket *so, QByteArray dat)
- {
- int Len[2];
- int len = dat.length();
- if(((dat.at(0)&0xff)==0x68)&&((dat.at(5)&0xff)==0x68)&&((dat.at(len-1)&0xff)==0x16)){
- Len[0] = (dat.at(1)&0x00ff)|((dat.at(2)&0x00ff)<<8);
- Len[1] = (dat.at(3)&0x00ff)|((dat.at(4)&0x00ff)<<8);
- if(Len[0]==Len[1]){
- if(dat.length()==(Len[0]+9)){
- quint16 crc = chk_crcc(dat.mid(6,Len[0]),Len[0]);
- if(((dat.at(len-3)&0xff)==(crc&0xff))&&((dat.at(len-2)&0xff)==((crc>>8)&0xff))){
- if(DevType<0){
- DevType = dat.at(13)&0xff;
- quint32 deviceId = 0;
- for(int i=12;i>5;i--){
- if((((dat.at(i)>>4)&0x0f)<10)&&((dat.at(i)&0x0f)<10)){
- deviceId = deviceId*100+((dat.at(i)>>4)&0x0f)*10+(dat.at(i)&0x0f);
- }else
- return false;
- }
- DeviceID = QString("%1").arg(deviceId,14,10,QChar('0'));
- }
- if(DeviceID.length()==14){
- if(idx<0)
- check_idx();
- return checkDataBody(so,dat.mid(6,Len[0]));
- }
- return false;
- }
- }
- }
- }
- return false;
- }
- void SmartLightCommThread::readData(QTcpSocket *so){
- QByteArray data = so->readAll();
- QString Data = QString("[ %1 %2 %3 <<< ]").arg(QDateTime::currentDateTime().toString("yyyy-MM-dd HH:mm:ss.zzz")).arg(so->peerAddress().toString())
- .arg(DeviceID.length()>0?QString("%1").arg(DeviceID):QString(""));
- for(int i=0;i<data.length();i++){
- Data.append(QString(" %1").arg(data.at(i)&0xff,2,16,QChar('0')));
- }
- emit CommData(DeviceID, 1, Data);
- bool data_ok = checkDataFrame(so, data);
- }
- void SmartLightCommThread::close_self(QTcpSocket *so)
- {
- so->abort();
- keepcomm = false;
- }
- void SmartLightCommThread::stop()
- {
- keepcomm = false;
- }
- QByteArray SmartLightCommThread::mkB01datetime(QDateTime dt)
- {
- QByteArray dat = QByteArray(6,0x00);
- dat[0] = static_cast<char>((((dt.time().second()/10)&0x0f)<<4)|((dt.time().second()%10)&0x0f));
- dat[1] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|((dt.time().minute()%10)&0x0f));
- dat[2] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|((dt.time().hour()%10)&0x0f));
- dat[3] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|((dt.date().day()%10)&0x0f));
- dat[4] = static_cast<char>(((dt.date().dayOfWeek()&0x07)<<5)|(((dt.date().month()/10)&0x01)<<4)|((dt.date().month()%10)&0x0f));
- dat[5] = static_cast<char>(((((dt.date().year()%100)/10)&0x0f)<<4)|((dt.date().year()%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB02float(float d, int g)
- {
- QByteArray dat = QByteArray(2,0x00);
- if((g<5)&&(g>-4)){
- int D = static_cast<int>(static_cast<double>(d)/qPow(10,g));
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>((((4-g)&0x07)<<5)|((d<0)?0x10:0x00)|((D/100)&0x0f));
- }
- return dat;
- }
- QByteArray SmartLightCommThread::mkB03integer(int d, int g)
- {
- QByteArray dat = QByteArray(4,0x00);
- if((g>-1)&&(g<2)){
- dat[0] = static_cast<char>(((((d%100)/10)&0x0f)<<4)|((d%10)&0x0f));
- dat[1] = static_cast<char>(((((d%10000)/1000)&0x0f)<<4)|(((d%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((((d%1000000)/100000)&0x0f)<<4)|(((d%100000)/10000)&0x0f));
- dat[3] = static_cast<char>(((g&0x01)<<6)|((d<0)?0x10:0x00)|((d/1000000)&0x0f));
- }
- return dat;
- }
- QByteArray SmartLightCommThread::mkB04integer(int d, int s0)
- {
- QByteArray dat = QByteArray(1, 0x00);
- if((s0>-1)&&(s0<2)){
- dat[0] = static_cast<char>(((s0&0x01)<<7)|(((d/10)&0x07)<<4)|((d%10)&0x0f));
- }
- return dat;
- }
- QByteArray SmartLightCommThread::mkB05float(float d)
- {
- QByteArray dat = QByteArray(2,0x00);
- int D = static_cast<int>(static_cast<double>(d)*10);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((d<0)?0x80:0x00)|((((D%10000)/1000)&0x07)<<4)|(((D%1000)/100)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB06float(float d)
- {
- QByteArray dat = QByteArray(2,0x00);
- int D = static_cast<int>(static_cast<double>(d)*100);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((d<0)?0x80:0x00)|((((D%10000)/1000)&0x07)<<4)|(((D%1000)/100)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB07float(float d)
- {
- QByteArray dat = QByteArray(2,0x00);
- int D = static_cast<int>(static_cast<double>(d)*10);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((((D%10000)/1000)&0x0f)<<4)|(((D%1000)/100)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB08integer(int d)
- {
- QByteArray dat = QByteArray(2,0x00);
- // int D = static_cast<int>(static_cast<double>(d)*100);
- dat[0] = static_cast<char>(((((d%100)/10)&0x0f)<<4)|((d%10)&0x0f));
- dat[1] = static_cast<char>(((((d%10000)/1000)&0x0f)<<4)|(((d%1000)/100)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB09float(float d)
- {
- QByteArray dat = QByteArray(2,0x00);
- int D = static_cast<int>(static_cast<double>(d)*10000);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((((D%10000)/1000)&0x0f)<<4)|(((D%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((d<0)?0x80:0x00)|((((D%1000000)/100000)&0x07)<<4)|(((D%100000)/10000)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB10integer(int d)
- {
- QByteArray dat = QByteArray(3,0x00);
- dat[0] = static_cast<char>(((((d%100)/10)&0x0f)<<4)|((d%10)&0x0f));
- dat[1] = static_cast<char>(((((d%10000)/1000)&0x0f)<<4)|(((d%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((((d%1000000)/100000)&0x0f)<<4)|(((d%100000)/10000)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB11double(double d)
- {
- QByteArray dat = QByteArray(5,0x00);
- long long D = static_cast<long long>(d*100);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((((D%10000)/1000)&0x0f)<<4)|(((D%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((((D%1000000)/100000)&0x0f)<<4)|(((D%100000)/10000)&0x0f));
- dat[3] = static_cast<char>(((((D%100000000)/10000000)&0x0f)<<4)|(((D%10000000)/1000000)&0x0f));
- dat[4] = static_cast<char>(((((D%10000000000)/1000000000)&0x0f)<<4)|(((D%1000000000)/100000000)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB12longlong(long long d)
- {
- QByteArray dat = QByteArray(6,0x00);
- dat[0] = static_cast<char>(((((d%100)/10)&0x0f)<<4)|((d%10)&0x0f));
- dat[1] = static_cast<char>(((((d%10000)/1000)&0x0f)<<4)|(((d%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((((d%1000000)/100000)&0x0f)<<4)|(((d%100000)/10000)&0x0f));
- dat[3] = static_cast<char>(((((d%100000000)/10000000)&0x0f)<<4)|(((d%10000000)/1000000)&0x0f));
- dat[4] = static_cast<char>(((((d%10000000000)/1000000000)&0x0f)<<4)|(((d%1000000000)/100000000)&0x0f));
- dat[5] = static_cast<char>(((((d%1000000000000)/100000000000)&0x0f)<<4)|(((d%100000000000)/10000000000)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB13float(float d)
- {
- QByteArray dat = QByteArray(4,0x00);
- int D = static_cast<int>(static_cast<double>(d)*10000);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((((D%10000)/1000)&0x0f)<<4)|(((D%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((((D%1000000)/100000)&0x0f)<<4)|(((D%100000)/10000)&0x0f));
- dat[3] = static_cast<char>(((((D%100000000)/10000000)&0x0f)<<4)|(((D%10000000)/1000000)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB14double(double d)
- {
- QByteArray dat = QByteArray(5,0x00);
- long long D = static_cast<long long>(d*10000);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((((D%10000)/1000)&0x0f)<<4)|(((D%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((((D%1000000)/100000)&0x0f)<<4)|(((D%100000)/10000)&0x0f));
- dat[3] = static_cast<char>(((((D%100000000)/10000000)&0x0f)<<4)|(((D%10000000)/1000000)&0x0f));
- dat[4] = static_cast<char>(((((D%10000000000)/1000000000)&0x0f)<<4)|(((D%1000000000)/100000000)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB15datetime(QDateTime dt)
- {
- QByteArray dat = QByteArray(5,0x00);
- dat[0] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|((dt.time().minute()%10)&0x0f));
- dat[1] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|((dt.time().hour()%10)&0x0f));
- dat[2] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|((dt.date().day()%10)&0x0f));
- dat[3] = static_cast<char>((((dt.date().month()/10)&0x01)<<4)|((dt.date().month()%10)&0x0f));
- dat[4] = static_cast<char>(((((dt.date().year()%100)/10)&0x0f)<<4)|((dt.date().year()%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB16datetime(QDateTime dt)
- {
- QByteArray dat = QByteArray(4,0x00);
- dat[0] = static_cast<char>((((dt.time().second()/10)&0x0f)<<4)|((dt.time().second()%10)&0x0f));
- dat[1] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|((dt.time().minute()%10)&0x0f));
- dat[2] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|((dt.time().hour()%10)&0x0f));
- dat[3] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|((dt.date().day()%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB17datetime(QDateTime dt)
- {
- QByteArray dat = QByteArray(4,0x00);
- dat[0] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|((dt.time().minute()%10)&0x0f));
- dat[1] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|((dt.time().hour()%10)&0x0f));
- dat[2] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|((dt.date().day()%10)&0x0f));
- dat[3] = static_cast<char>((((dt.date().month()/10)&0x01)<<4)|((dt.date().month()%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB18datetime(QDateTime dt)
- {
- QByteArray dat = QByteArray(3,0x00);
- dat[0] = static_cast<char>((((dt.time().minute()/10)&0x0f)<<4)|((dt.time().minute()%10)&0x0f));
- dat[1] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|((dt.time().hour()%10)&0x0f));
- dat[2] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|((dt.date().day()%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB19time(QTime t)
- {
- QByteArray dat = QByteArray(2,0x00);
- dat[0] = static_cast<char>((((t.minute()/10)&0x0f)<<4)|((t.minute()%10)&0x0f));
- dat[1] = static_cast<char>((((t.hour()/10)&0x0f)<<4)|((t.hour()%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB20date(QDate d)
- {
- QByteArray dat = QByteArray(3,0x00);
- dat[0] = static_cast<char>((((d.day()/10)&0x0f)<<4)|((d.day()%10)&0x0f));
- dat[1] = static_cast<char>((((d.month()/10)&0x01)<<4)|((d.month()%10)&0x0f));
- dat[2] = static_cast<char>(((((d.year()%100)/10)&0x0f)<<4)|((d.year()%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB21date(QDate d)
- {
- QByteArray dat = QByteArray(2,0x00);
- dat[0] = static_cast<char>((((d.month()/10)&0x01)<<4)|((d.month()%10)&0x0f));
- dat[1] = static_cast<char>(((((d.year()%100)/10)&0x0f)<<4)|((d.year()%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB22integer(int d)
- {
- QByteArray dat = QByteArray(1,0x00);
- dat[0] = static_cast<char>(((((d%100)/10)&0x0f)<<4)|((d%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB23float(float d)
- {
- QByteArray dat = QByteArray(3,0x00);
- int D = static_cast<int>(d*100);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((((D%10000)/1000)&0x0f)<<4)|(((D%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((((D%1000000)/100000)&0x0f)<<4)|(((D%100000)/10000)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB24datetime(QDateTime dt)
- {
- QByteArray dat = QByteArray(2,0x00);
- dat[0] = static_cast<char>((((dt.time().hour()/10)&0x0f)<<4)|((dt.time().hour()%10)&0x0f));
- dat[1] = static_cast<char>((((dt.date().day()/10)&0x0f)<<4)|((dt.date().day()%10)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB25float(float d)
- {
- QByteArray dat = QByteArray(3,0x00);
- int D = static_cast<int>(static_cast<double>(d)*1000);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((((D%10000)/1000)&0x0f)<<4)|(((D%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((d<0)?0x80:0x00)|((((D%1000000)/100000)&0x07)<<4)|(((D%100000)/10000)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB26float(float d)
- {
- QByteArray dat = QByteArray(2,0x00);
- int D = static_cast<int>(static_cast<double>(d)*1000);
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((((D%10000)/1000)&0x0f)<<4)|(((D%1000)/100)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB27integer(int d)
- {
- QByteArray dat = QByteArray(4,0x00);
- dat[0] = static_cast<char>(((((d%100)/10)&0x0f)<<4)|((d%10)&0x0f));
- dat[1] = static_cast<char>(((((d%10000)/1000)&0x0f)<<4)|(((d%1000)/100)&0x0f));
- dat[2] = static_cast<char>(((((d%1000000)/100000)&0x0f)<<4)|(((d%100000)/10000)&0x0f));
- dat[3] = static_cast<char>(((((d%100000000)/10000000)&0x0f)<<4)|(((d%10000000)/1000000)&0x0f));
- return dat;
- }
- QByteArray SmartLightCommThread::mkB28double(double d, int g)
- {
- QByteArray dat = QByteArray(2,0x00);
- if((g<5)&&(g>-4)){
- long long D = static_cast<long long>(d/qPow(10,g));
- dat[0] = static_cast<char>(((((D%100)/10)&0x0f)<<4)|((D%10)&0x0f));
- dat[1] = static_cast<char>(((((D%10000)/1000)&0x0f)<<4)|(((D%1000)/100)&0x0f));
- dat[2] = static_cast<char>((((4-g)&0x07)<<5)|((d<0)?0x10:0x00)|((D/10000)&0x0f));
- }
- return dat;
- }
|