This commit is contained in:
curtis
2024-11-25 17:15:44 +08:00
commit 32e5360a91
3749 changed files with 1432905 additions and 0 deletions

View File

@@ -0,0 +1,349 @@
#include "codecxyckanalog.h"
CODECXyckAnalog::CODECXyckAnalog()
:QObject()
{
_dataList=new QList<MyoelectricData>();
iii=0;
logFile=new QFile("d:/test.txt");
logFile->open(QIODevice::Truncate|QIODevice::ReadWrite);
qDebug()<<"build";
}
QByteArray CODECXyckAnalog::reqSetting(int iChannel, AnalogSetting setting)
{
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_SETTING));
buffer.append(static_cast<char>(iChannel));
buffer.append(static_cast<char>(setting.workmode));
buffer.append(static_cast<char>(setting.samplerate>>8));
buffer.append(static_cast<char>(setting.samplerate%0x100));
buffer.append(static_cast<char>(static_cast<int>(setting.frequency*2)>>8));
buffer.append(static_cast<char>(static_cast<int>(setting.frequency*2)%0x100));
buffer.append(static_cast<char>(setting.pulseWidth>>8));
buffer.append(static_cast<char>(setting.pulseWidth%0x100));
buffer.append(static_cast<char>(static_cast<int>(setting.risingTime*2)>>8));
buffer.append(static_cast<char>(static_cast<int>(setting.risingTime*2)%0x100));
buffer.append(static_cast<char>(setting.holdingTime>>8));
buffer.append(static_cast<char>(setting.holdingTime%0x100));
buffer.append(static_cast<char>(static_cast<int>(setting.fallingTime*2)>>8));
buffer.append(static_cast<char>(static_cast<int>(setting.fallingTime*2)%0x100));
buffer.append(static_cast<char>(setting.breakTime>>8));
buffer.append(static_cast<char>(setting.breakTime%0x100));
return createFrame(buffer);
}
QByteArray CODECXyckAnalog::reqChannalControl(ChannelState ch1, ChannelState ch2, ChannelState ch3, ChannelState ch4)
{
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_CHANNAL_CONTROL));
buffer.append(static_cast<char>(ch1));
buffer.append(static_cast<char>(ch2));
buffer.append(static_cast<char>(ch3));
buffer.append(static_cast<char>(ch4));
return createFrame(buffer);
}
QByteArray CODECXyckAnalog::reqSetCurrent(int iChannel, int iCurrent)
{
if(iCurrent>100||iCurrent<0)
{
return nullptr;
}
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_SET_CURRENT));
buffer.append(static_cast<char>(iChannel));
buffer.append(static_cast<char>(iCurrent));
return createFrame(buffer);
}
QByteArray CODECXyckAnalog::reqDataChange(int iChannel, DataMode datamode)
{
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_DATA_CHANGE));
buffer.append(static_cast<char>(iChannel));
buffer.append(static_cast<char>(datamode));
return createFrame(buffer);
}
QByteArray CODECXyckAnalog::reqSetGain(int iChannel, GainMode gainmode)
{
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_SET_GAIN));
buffer.append(static_cast<char>(iChannel));
buffer.append(static_cast<char>(gainmode));
return createFrame(buffer);
}
QByteArray CODECXyckAnalog::reqSetCollect(int iChannel, ChannelState channelstate)
{
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_SET_COLLECT));
buffer.append(static_cast<char>(iChannel));
buffer.append(static_cast<char>(channelstate));
return createFrame(buffer);
}
QByteArray CODECXyckAnalog::reqSetStimulate(int iChannel, ChannelState channelstate)
{
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_SET_STIMULATE));
buffer.append(static_cast<char>(iChannel));
buffer.append(static_cast<char>(channelstate));
return createFrame(buffer);
}
QByteArray CODECXyckAnalog::reqGetState()
{
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_STATE));
buffer.append(static_cast<char>(0));
buffer.append(static_cast<char>(0));
return createFrame(buffer);
}
void CODECXyckAnalog::dealFrame(QByteArray buffer)
{
switch (static_cast<uint8_t>(buffer.data()[2]))
{
case FUNCCODE_ANALOG_SETTING:
respSetting(buffer);
break;
case FUNCCODE_ANALOG_CHANNAL_CONTROL:
respChannalControl(buffer);
break;
case FUNCCODE_ANALOG_SET_CURRENT:
respSetCurrent(buffer);
break;
case FUNCCODE_ANALOG_DATA_UPLOAD:
respDataUpload(buffer);
break;
case FUNCCODE_ANALOG_DATA_CHANGE:
respDataChange(buffer);
break;
case FUNCCODE_ANALOG_SET_GAIN:
respSetGain(buffer);
break;
case FUNCCODE_ANALOG_SET_COLLECT:
respSetCollect(buffer);
break;
case FUNCCODE_ANALOG_SET_STIMULATE:
respSetStimulate(buffer);
break;
case FUNCCODE_ANALOG_STATE:
respGetState(buffer);
break;
case FUNCCODE_ANALOG_ERROR:
emit commandSendError(static_cast<uint8_t>(buffer.data()[3])
,ErrorCode(static_cast<uint8_t>(buffer.data()[4]))
,static_cast<uint8_t>(buffer.data()[5]));
break;
default:
break;
}
}
void CODECXyckAnalog::clearList()
{
_dataList->clear();
}
QList<MyoelectricData> *CODECXyckAnalog::GetMyoelectricData(int iStep)
{
int iCount=_dataList->length();
if(iCount<=0)
{
return nullptr;
}
int iDT=0;
if(iStep<=iCount&&iStep!=0)
{
iDT=iCount/iStep;
}
if(iDT<1)
{
iDT=0;
}
QList<MyoelectricData> *resultList=new QList<MyoelectricData>();
for(int i=0;i<iCount;)
{
resultList->append(_dataList->takeFirst());
i++;
if(resultList->count()==iStep)
{
break;
}
for(int j=0;j<iDT&&i<iCount;j++)
{
_dataList->takeFirst();
i++;
}
}
return resultList;
}
QByteArray CODECXyckAnalog::respAnalogState(AnalogState *as)
{
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_STATE));
buffer.append(static_cast<char>(0x00));
buffer.append(static_cast<char>(as->electrodeStateA));
buffer.append(static_cast<char>(as->electrodeStateB));
buffer.append(static_cast<char>(as->electrodeStateC));
buffer.append(static_cast<char>(as->electrodeStateD));
buffer.append(static_cast<char>(as->resetState));
buffer.append(static_cast<char>(as->channelWorkStateA));
buffer.append(static_cast<char>(as->channelWorkStateB));
buffer.append(static_cast<char>(as->channelWorkStateC));
buffer.append(static_cast<char>(as->channelWorkStateD));
buffer.append(static_cast<char>(as->AValueA));
buffer.append(static_cast<char>(as->AValueB));
buffer.append(static_cast<char>(as->AValueC));
buffer.append(static_cast<char>(as->AValueD));
return createFrame(buffer);
}
QByteArray CODECXyckAnalog::respMyoelectricData(MyoelectricData *md)
{
QByteArray buffer;
buffer.append(static_cast<char>(FUNCCODE_ANALOG_DATA_UPLOAD));
buffer.append(static_cast<char>(0x00));
buffer.append(static_cast<char>(md->ch1>>8));
buffer.append(static_cast<char>(md->ch1%0x100));
buffer.append(static_cast<char>(md->ch2>>8));
buffer.append(static_cast<char>(md->ch2%0x100));
buffer.append(static_cast<char>(md->ch3>>8));
buffer.append(static_cast<char>(md->ch3%0x100));
buffer.append(static_cast<char>(md->ch4>>8));
buffer.append(static_cast<char>(md->ch4%0x100));
return createFrame(buffer);
}
void CODECXyckAnalog::respSetting(QByteArray buffer)
{
int iChannel=buffer.data()[3];
AnalogSetting *analogSetting=new AnalogSetting();
analogSetting->workmode =WorkMode(static_cast<uint8_t>(buffer.data()[4]));
analogSetting->samplerate=SampleRate((static_cast<uint8_t>(buffer.data()[5])<<8)+static_cast<uint8_t>(buffer.data()[6]));
analogSetting->frequency = ((static_cast<uint8_t>(buffer.data()[7])<<8)+static_cast<uint8_t>(buffer.data()[8]))/2.0;
analogSetting->pulseWidth =(static_cast<uint8_t>(buffer.data()[9])<<8)+static_cast<uint8_t>(buffer.data()[10]);
analogSetting->risingTime= ((static_cast<uint8_t>(buffer.data()[11])<<8)+static_cast<uint8_t>(buffer.data()[12]))/2.0;
analogSetting->holdingTime =(static_cast<uint8_t>(buffer.data()[13])<<8)+static_cast<uint8_t>(buffer.data()[14]);
analogSetting->fallingTime=((static_cast<uint8_t>(buffer.data()[15])<<8)+static_cast<uint8_t>(buffer.data()[16]))/2.0;
analogSetting->breakTime =(static_cast<uint8_t>(buffer.data()[17])<<8)+static_cast<uint8_t>(buffer.data()[18]);
emit analogSettingRev(iChannel,analogSetting);
}
void CODECXyckAnalog::respChannalControl(QByteArray buffer)
{
ChannelState ch1=ChannelState(static_cast<uint8_t>(buffer.data()[3]));
ChannelState ch2=ChannelState(static_cast<uint8_t>(buffer.data()[4]));
ChannelState ch3=ChannelState(static_cast<uint8_t>(buffer.data()[5]));
ChannelState ch4=ChannelState(static_cast<uint8_t>(buffer.data()[6]));
emit channalControlRev(ch1,ch2,ch3,ch4);
}
void CODECXyckAnalog::respSetCurrent(QByteArray buffer)
{
int iChannel=buffer.data()[3];
int iCurrent=static_cast<uint8_t>(buffer.data()[4]);
emit currentRev(iChannel,iCurrent);
}
void CODECXyckAnalog::respDataUpload(QByteArray buffer)
{
ignoreCount++;
MyoelectricData md;
md.ch1=(static_cast<uint8_t>(buffer.data()[4])<<8)+static_cast<uint8_t>(buffer.data()[5]);
md.ch2=(static_cast<uint8_t>(buffer.data()[6])<<8)+static_cast<uint8_t>(buffer.data()[7]);
md.ch3=(static_cast<uint8_t>(buffer.data()[8])<<8)+static_cast<uint8_t>(buffer.data()[9]);
md.ch4=(static_cast<uint8_t>(buffer.data()[10])<<8)+static_cast<uint8_t>(buffer.data()[11]);
QString logTemp=QString::number(md.ch1)+" "+QString::number(md.ch2)+" "+QString::number(md.ch3)+" "+QString::number(md.ch4)+"\r\n";
logFile->write(logTemp.toUtf8());
logFile->flush();
// if(ignoreCount%100==0)
// {
// qDebug()<<QString::number(ignoreCount);
// qDebug()<<"ch1:"<<QString::number(md.ch1)<<"ch2:"<<QString::number(md.ch2)<<"ch3:"<<QString::number(md.ch3)<<"ch4:"<<QString::number(md.ch4);
// }
_dataList->append(md);
//qDebug()<<QString::number(md.ch1);
}
void CODECXyckAnalog::respDataChange(QByteArray buffer)
{
int iChannel=static_cast<uint8_t>(buffer.data()[3]);
DataMode dm=DataMode(static_cast<uint8_t>(buffer.data()[4]));
ignoreCount=0;
emit dataChangeRev(iChannel,dm);
}
void CODECXyckAnalog::respSetGain(QByteArray buffer)
{
int iChannel=static_cast<uint8_t>(buffer.data()[3]);
GainMode gm=GainMode(static_cast<uint8_t>(buffer.data()[4]));
emit gainRev(iChannel,gm);
}
void CODECXyckAnalog::respSetCollect(QByteArray buffer)
{
int iChannel=static_cast<uint8_t>(buffer.data()[3]);
ChannelState cs=ChannelState(static_cast<uint8_t>(buffer.data()[4]));
emit collectRev(iChannel,cs);
}
void CODECXyckAnalog::respSetStimulate(QByteArray buffer)
{
int iChannel=static_cast<uint8_t>(buffer.data()[3]);
ChannelState cs=ChannelState(static_cast<uint8_t>(buffer.data()[4]));
emit stimulateRev(iChannel,cs);
}
void CODECXyckAnalog::respGetState(QByteArray buffer)
{
AnalogState *analogstate = new AnalogState();
analogstate->electrodeStateA=ModeState(static_cast<uint8_t>(buffer.data()[4]));
analogstate->electrodeStateB=ModeState(static_cast<uint8_t>(buffer.data()[5]));
analogstate->electrodeStateC=ModeState(static_cast<uint8_t>(buffer.data()[6]));
analogstate->electrodeStateD=ModeState(static_cast<uint8_t>(buffer.data()[7]));
analogstate->resetState=ModeState(static_cast<uint8_t>(buffer.data()[8]));
analogstate->channelWorkStateA=ChannelWorkState(static_cast<uint8_t>(buffer.data()[9]));
analogstate->channelWorkStateB=ChannelWorkState(static_cast<uint8_t>(buffer.data()[10]));
analogstate->channelWorkStateC=ChannelWorkState(static_cast<uint8_t>(buffer.data()[11]));
analogstate->channelWorkStateD=ChannelWorkState(static_cast<uint8_t>(buffer.data()[12]));
analogstate->AValueA=static_cast<uint8_t>(buffer.data()[13]);
analogstate->AValueB=static_cast<uint8_t>(buffer.data()[14]);
analogstate->AValueC=static_cast<uint8_t>(buffer.data()[15]);
analogstate->AValueD=static_cast<uint8_t>(buffer.data()[16]);
emit stateInfoRev(analogstate);
}
QByteArray CODECXyckAnalog::createFrame(QByteArray dataBuffer)
{
QByteArray buffer;
buffer.append(static_cast<char>(FRAME_HEAD));
buffer.append(static_cast<char>(dataBuffer.length()));
for(int i=0;i<dataBuffer.length();i++)
{
buffer.append(dataBuffer.data()[i]);
}
buffer.append(DataCheck::getSum(buffer,2,buffer.length()-1));
buffer.append(0x55);
return buffer;
}

View File

@@ -0,0 +1,87 @@
#ifndef CODECXYCKANALOG_H
#define CODECXYCKANALOG_H
#include <QObject>
#include <QByteArray>
#include <QList>
#include <QDebug>
#include <QFile>
#include "XYComFunc_global.h"
//#include "CommomFunc/datacheck.h"
#include "commonStruct.h"
/**
* @brief 模拟板编解码类
*/
class XYCOMFUNC_EXPORT CODECXyckAnalog :public QObject
{
Q_OBJECT
public:
/**
* @brief 编解码类构造
*/
CODECXyckAnalog();
/**
* @brief 设置方案
* @param 指定通道
* @param 参数结构体,包含波升波降脉宽频率工作时间休息时间
* @return
*/
QByteArray reqSetting(int iChannel ,AnalogSetting setting);
QByteArray reqChannalControl(ChannelState ch1,ChannelState ch2,ChannelState ch3,ChannelState ch4);
QByteArray reqSetCurrent(int iChannel,int iCurrent);
QByteArray reqDataChange(int iChannel,DataMode datamode);
QByteArray reqSetGain(int iChannel,GainMode gainmode);
QByteArray reqSetCollect(int iChannel,ChannelState channelstate);
QByteArray reqSetStimulate(int iChannel,ChannelState channelstate);
QByteArray reqGetState();
void dealFrame(QByteArray buffer);
void clearList();
QList<MyoelectricData> *GetMyoelectricData(int iStep=0);
//以下仅测试适用,实际由下位机发送
QByteArray respAnalogState(AnalogState *as);
QByteArray respMyoelectricData(MyoelectricData *md);
signals:
void commandSendError(int iChannel,ErrorCode errorcode,int iFunctionCode);
void analogSettingRev(int iChannel,AnalogSetting *analogsetting);
void channalControlRev(ChannelState ch1,ChannelState ch2,ChannelState ch3,ChannelState ch4);
void currentRev(int iChannel,int iCurrent);
void dataChangeRev(int iChannel,DataMode datamode);
void gainRev(int iChannel,GainMode gainmode);
void collectRev(int iChannel,ChannelState channelstate);
void stimulateRev(int iChannel,ChannelState channelstate);
void stateInfoRev(AnalogState *analogstate);
private:
void respSetting(QByteArray buffer);
void respChannalControl(QByteArray buffer);
void respSetCurrent(QByteArray buffer);
void respDataUpload(QByteArray buffer);
void respDataChange(QByteArray buffer);
void respSetGain(QByteArray buffer);
void respSetCollect(QByteArray buffer);
void respSetStimulate(QByteArray buffer);
void respGetState(QByteArray buffer);
QByteArray createFrame(QByteArray dataBuffer);
private:
QList<MyoelectricData> *_dataList;
int iii ;
int ignoreCount=0;
QFile *logFile;
};
#endif // CODECXYCKANALOG_H

View File

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

View File

@@ -0,0 +1,142 @@
#ifndef CODECXYCKDIGITAL_H
#define CODECXYCKDIGITAL_H
#include <QObject>
#include <QByteArray>
#include <QDebug>
#include "XYComFunc_global.h"
#include "CommomFunc/datacheck.h"
#include "commonStruct.h"
class XYCOMFUNC_EXPORT CODECXyckDigital : public QObject
{
Q_OBJECT
public:
CODECXyckDigital();
/**
* @brief 轮询请求
* @return
*/
QByteArray reqGetInfo();
/**
* @brief 控制请求,控制灯亮状态
* @return
*/
QByteArray reqControl(int iChannel,LightState lightstate);
/**
* @brief 预调节请求
* @return
*/
QByteArray reqPreconditioning(int iChannel,ModeState modestate);
/**
* @brief 关机指令响应
* @param powstate
* @return
*/
QByteArray resqPowoff(PowState powstate);
/**
* @brief 处理串口类收到的数据帧
* @param buffer
*/
void dealFrame(QByteArray buffer);
QByteArray reqUpdateA(int iChannel,int AValue);
QByteArray reqPowOn(ModeState state);
//以下方法仅仅用于测试
QByteArray respDigitalInfo(DigitalInfo *di);
private:
/**
* @brief 处理状态请求应答
* @param buffer
*/
void respGetInfo(QByteArray buffer);
/**
* @brief 处理控制请求应答
* @param buffer
*/
void respControl(QByteArray buffer);
/**
* @brief 处理预调节请求应答
* @param buffer
*/
void resqPreconditioning(QByteArray buffer);
/**
* @brief 处理关机请求
*/
void reqPowoff();
/**
* @brief 处理异常应答
* @param buffer
*/
void resqError(QByteArray buffer);
void resqUpdateA(QByteArray buffer);
void resqPowOn(QByteArray buffer);
/**
* @brief 生成完整的数据帧
* @param 数据位
* @return
*/
QByteArray createFrame(QByteArray dataBuffer);
/**
* @brief 创建异常信息应答
* @param iFuncCode
* @param iChannel
* @param errcode
* @return
*/
QByteArray createError(int iFuncCode,int iChannel,ErrorCode errcode);
signals:
void commandSendError(int iChannel,ErrorCode errorcode,int iFunctionCode);
/**
* @brief 帧数据解析异常
* @param errorcode
* @param errBuffer
*/
void frameError(ErrorCode errorcode,QByteArray errBuffer=nullptr);
/**
* @brief 数字板信息接收信号
* @param di
*/
void digitalInfoRev(DigitalInfo *di);
/**
* @brief 关机指令接收信号
*/
void powOffCommandRev();
/**
* @brief 控制响应接收信号
* @param iChannel
* @param lightstate
*/
void controlRespond(int iChannel,LightState lightstate);
/**
* @brief 预调节响应接收信号
* @param iChannel
* @param modestate
*/
void preconditioningRespond(int iChannel,ModeState modestate);
void AUpdated(int iChannel,int AValue);
void PowOn(ModeState powOnState);
public slots:
};
#endif // CODECXYCKDIGITAL_H