#include "codecxyckdigital.h" CODECXyckDigital::CODECXyckDigital() : QObject() { } QByteArray CODECXyckDigital::reqGetInfo() { QByteArray buffer; buffer.append(static_cast(FUNCCODE_DIGITAL_GET_INFO)); buffer.append(static_cast(0x00)); buffer.append(static_cast(0x00)); return createFrame(buffer); } QByteArray CODECXyckDigital::reqControl(int iChannel, LightState lightstate) { QByteArray buffer; buffer.append(static_cast(FUNCCODE_DIGITAL_CONTROL)); buffer.append(static_cast(iChannel)); buffer.append(static_cast(lightstate)); return createFrame(buffer); } QByteArray CODECXyckDigital::reqPreconditioning(int iChannel, ModeState modestate) { qDebug()<<"预设电流: Channel:"<(FUNCCODE_DIGITAL_PRECONDITIONING)); buffer.append(static_cast(iChannel)); buffer.append(static_cast(modestate)); return createFrame(buffer); } QByteArray CODECXyckDigital::resqPowoff(PowState powstate) { QByteArray buffer; buffer.append(static_cast(FUNCCODE_DIGITAL_POWOFF)); buffer.append(static_cast(0x00)); buffer.append(static_cast(powstate)); return createFrame(buffer); } QByteArray CODECXyckDigital::reqUpdateA(int iChannel, int AValue) { QByteArray buffer; buffer.append(static_cast(FUNCCODE_DIGITAL_UPDATE_A)); buffer.append(static_cast(iChannel)); buffer.append(static_cast(AValue)); return createFrame(buffer); } QByteArray CODECXyckDigital::reqPowOn(ModeState state) { QByteArray buffer; buffer.append(static_cast(FUNCCODE_DIGITAL_POWON)); buffer.append(static_cast(0x00)); buffer.append(static_cast(state)); return createFrame(buffer); } void CODECXyckDigital::dealFrame(QByteArray buffer) { switch (static_cast(buffer.data()[2])) { case FUNCCODE_DIGITAL_GET_INFO: respGetInfo(buffer); break; case FUNCCODE_DIGITAL_CONTROL: respControl(buffer); break; case FUNCCODE_DIGITAL_PRECONDITIONING: resqPreconditioning(buffer); break; case FUNCCODE_DIGITAL_POWOFF: reqPowoff(); break; case FUNCCODE_DIGITAL_UPDATE_A: resqUpdateA(buffer); break; case FUNCCODE_DIGITAL_ERROR: emit commandSendError(static_cast(buffer.data()[3]) ,ErrorCode(static_cast(buffer.data()[4])) ,static_cast(buffer.data()[5])); break; default: emit frameError(ErrorCode::ErrorFuncCode,createError(0,buffer.data()[3],ErrorCode::ErrorFuncCode)); break; } } QByteArray CODECXyckDigital::respDigitalInfo(DigitalInfo *di) { QByteArray buffer; buffer.append(static_cast(FUNCCODE_DIGITAL_GET_INFO)); buffer.append(static_cast(0x00)); buffer.append(static_cast(di->adapterState)); buffer.append(static_cast(di->batteryState)); buffer.append(static_cast(di->reset)); buffer.append(static_cast(di->AChannelA)); buffer.append(static_cast(di->AChannelB)); buffer.append(static_cast(di->AChannelC)); buffer.append(static_cast(di->AChannelD)); buffer.append(static_cast(0)); buffer.append(static_cast(0)); return createFrame(buffer); } void CODECXyckDigital::respGetInfo(QByteArray buffer) { DigitalInfo *di= new DigitalInfo(); di->adapterState=static_cast(buffer.data()[4]); di->batteryState=static_cast(buffer.data()[5]); di->reset=static_cast(buffer.data()[6]); di->AChannelA=static_cast(buffer.data()[7]); di->AChannelB=static_cast(buffer.data()[8]); di->AChannelC=static_cast(buffer.data()[9]); di->AChannelD=static_cast(buffer.data()[10]); //qDebug()<<"AChannelA:"<AChannelA)<<"AChannelB:"<AChannelB)<<"AChannelC:"<AChannelC)<<"AChannelD:"<AChannelD); emit digitalInfoRev(di); } void CODECXyckDigital::respControl(QByteArray buffer) { LightState ls=LightState(static_cast(buffer.data()[4])); emit controlRespond(static_cast(buffer.data()[3]),ls); } void CODECXyckDigital::resqPreconditioning(QByteArray buffer) { emit preconditioningRespond(static_cast(buffer.data()[3]),ModeState(static_cast(buffer.data()[4]))); } void CODECXyckDigital::reqPowoff() { emit powOffCommandRev(); } void CODECXyckDigital::resqUpdateA(QByteArray buffer) { emit AUpdated(static_cast(buffer.data()[3]),ModeState(static_cast(buffer.data()[4]))); } void CODECXyckDigital::resqPowOn(QByteArray buffer) { emit PowOn(ModeState(static_cast(buffer.data()[4]))); } QByteArray CODECXyckDigital::createFrame(QByteArray dataBuffer) { QByteArray buffer; buffer.append(static_cast(FRAME_HEAD)); buffer.append(static_cast(dataBuffer.length())); for(int i=0;i(0x8F)); buffer.append(static_cast(iChannel)); buffer.append(static_cast(iFuncCode)); buffer.append(static_cast(errcode)); return buffer; }