2,新增“Apps”; 3,新增“Common”; 4,新增“FileList”; 5,新增“MediaX”; 6,新增“OpenSource”; 7,新增“Samples”; 8,新增“SoftwareBusinessLines”.
1512 lines
61 KiB
C++
1512 lines
61 KiB
C++
#include "SerialMovement.h"
|
||
#include "Logger.h"
|
||
#include "UIHelp/ConfigHelp.h"
|
||
#include "Arith/CH375DLL.H"
|
||
|
||
SerialMovement::SerialMovement(QObject *parent):serialhelp(parent)
|
||
{
|
||
currentSettings.baudRate = 115200;
|
||
ConfigHelp::GetInstance()->loadSerialSendTime(m_SendInterval);
|
||
|
||
memset(&m_CoreReturnInfo,0,sizeof(m_CoreReturnInfo));
|
||
|
||
m_bIsSend = true;
|
||
m_bIsUSB = false;
|
||
}
|
||
|
||
SerialMovement::~SerialMovement()
|
||
{
|
||
}
|
||
|
||
void SerialMovement::readData()
|
||
{
|
||
if(m_bIsUSB)
|
||
{
|
||
BYTE* pBuf = new BYTE[2560];
|
||
unsigned long pLength = 2560;
|
||
|
||
//参数2:端口号:1:上位机数据发送端口;2:视频采集端口;3:上位机数据接收端口
|
||
if(CH375ReadEndP(0, 3, pBuf, &pLength))
|
||
{
|
||
QString Data ="";
|
||
QString val ="";
|
||
for(int i = 0;i < pLength;i++)
|
||
{
|
||
val= QString("%1 ").arg(pBuf[i],2,16,QLatin1Char('0'));
|
||
Data += val.toUpper();
|
||
}
|
||
|
||
emit ShowRecvData(Data);
|
||
}
|
||
else
|
||
{
|
||
CH375ClearBufUpload(0, 3);
|
||
// qDebug()<<"CH375ClearBuf";
|
||
|
||
}
|
||
|
||
}
|
||
else
|
||
{
|
||
|
||
QByteArray arr = m_serialPort->readAll();
|
||
|
||
for (int i = 0; i < arr.length(); i++)
|
||
{
|
||
// 将串口读取的数据放入缓冲区,每当收集到一次完整的数据帧就清空缓冲区
|
||
m_byDataBuffer[m_iComPoint++] = arr[i];
|
||
|
||
if (m_iComState == 0 && (unsigned char)(arr[i]) == 0x55)
|
||
{
|
||
m_iComState = 101;
|
||
}
|
||
else if (m_iComState == 101 && (unsigned char)(arr[i]) == 0xBB)
|
||
{
|
||
m_iComState = 102;
|
||
m_iComLength = 14;
|
||
}
|
||
else if (m_iComState == 101 && (unsigned char)(arr[i]) == 0xCC)
|
||
{
|
||
m_iComState = 102;
|
||
m_iComLength = 40;
|
||
}
|
||
else if(m_iComState == 102)
|
||
{
|
||
if(m_iComPoint >= m_iComLength)
|
||
{
|
||
// if(m_iComLength == 14)//
|
||
{
|
||
uint8_t chkData = m_byDataBuffer[m_iComLength-2];
|
||
//测试屏蔽校验
|
||
if(ChkDataCalculate(m_byDataBuffer,m_iComLength) == chkData)
|
||
{
|
||
|
||
QString Data ="";
|
||
QString val ="";
|
||
for(int i = 0;i<m_iComLength;i++)
|
||
{
|
||
val= QString("%1 ").arg(m_byDataBuffer[i],2,16,QLatin1Char('0'));
|
||
Data += val.toUpper();
|
||
}
|
||
|
||
emit ShowRecvData(Data);
|
||
|
||
if(m_iComLength == 40)
|
||
{
|
||
analysisInfo(m_byDataBuffer,40);
|
||
emit SendCoreInfo(m_CoreReturnInfo);
|
||
}
|
||
if(m_iComLength == 14)
|
||
{
|
||
analysisReplyInfo(m_byDataBuffer,14);
|
||
emit SendCoreReplyInfo(m_CoreReplyInfo);
|
||
}
|
||
}
|
||
}
|
||
m_iComState = 0;
|
||
m_iComPoint = 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
m_iComState = 0;
|
||
m_iComPoint = 0;
|
||
}
|
||
|
||
}
|
||
|
||
|
||
//升级准备
|
||
for(int i = 0;i < arr.length(); ++i) //0x7E 0x32
|
||
{
|
||
unsigned char ch = arr[i];
|
||
m_pUpdateReadyBuf[m_nUpdateReadyIndex++] = ch;
|
||
if(0 == m_nUpdateReadyRes && 0x7E == ch)
|
||
{
|
||
m_nUpdateReadyRes = 1;
|
||
}
|
||
else if(1 == m_nUpdateReadyRes && 0x32 == ch)
|
||
{
|
||
m_nUpdateReadyRes = 2;
|
||
}
|
||
else if(2 == m_nUpdateReadyRes)
|
||
{
|
||
if(m_nUpdateReadyIndex>=7)
|
||
{
|
||
QString Data ="";
|
||
QString val ="";
|
||
for(int i = 0;i < 7;i++)
|
||
{
|
||
val= QString("%1 ").arg(m_pUpdateReadyBuf[i],2,16,QLatin1Char('0'));
|
||
Data += val.toUpper();
|
||
}
|
||
|
||
emit ShowRecvData(Data);
|
||
|
||
if(m_pUpdateReadyBuf[m_nUpdateReadyIndex-2] == 0x7E && m_pUpdateReadyBuf[m_nUpdateReadyIndex-1] == 0x55)
|
||
{
|
||
Parse32Cmd(m_pUpdateReadyBuf);
|
||
}
|
||
m_nUpdateReadyRes = 0;
|
||
m_nUpdateReadyIndex = 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
m_nUpdateReadyRes = 0;
|
||
m_nUpdateReadyIndex = 0;
|
||
}
|
||
}
|
||
|
||
for(int i = 0;i < arr.length(); ++i) //0x7E 0x42
|
||
{
|
||
unsigned char ch = arr[i];
|
||
m_pUpdateBuf[m_nUpdateIndex++] = ch;
|
||
if(0 == m_nUpdateRes && 0x7E == ch)
|
||
{
|
||
m_nUpdateRes = 1;
|
||
}
|
||
else if(1 == m_nUpdateRes && 0x42 == ch)
|
||
{
|
||
m_nUpdateRes = 2;
|
||
}
|
||
else if(2 == m_nUpdateRes)
|
||
{
|
||
if(m_nUpdateIndex>=9)
|
||
{
|
||
QString Data ="";
|
||
QString val ="";
|
||
for(int i = 0;i < 9;i++)
|
||
{
|
||
val= QString("%1 ").arg(m_pUpdateBuf[i],2,16,QLatin1Char('0'));
|
||
Data += val.toUpper();
|
||
}
|
||
|
||
emit ShowRecvData(Data);
|
||
|
||
if(m_pUpdateBuf[m_nUpdateIndex-2] == 0x7E && m_pUpdateBuf[m_nUpdateIndex-1] == 0x55)
|
||
{
|
||
Parse42Cmd(m_pUpdateBuf);
|
||
}
|
||
m_nUpdateRes = 0;
|
||
m_nUpdateIndex = 0;
|
||
}
|
||
}
|
||
else
|
||
{
|
||
m_nUpdateRes = 0;
|
||
m_nUpdateIndex = 0;
|
||
}
|
||
}
|
||
|
||
}
|
||
|
||
|
||
|
||
|
||
}
|
||
|
||
void SerialMovement::writeDateToMovement(unsigned char ID,QString Data)
|
||
{
|
||
if(!m_bIsSend)
|
||
{
|
||
return;
|
||
}
|
||
|
||
int len = (Data.size()+1)/3;
|
||
QString str = QString("55 AA %1 %2 %3 00 F0")
|
||
.arg(ID,2,16,QLatin1Char('0'))
|
||
.arg(len,2,16,QLatin1Char('0'))
|
||
.arg(Data);
|
||
QByteArray Cmd = createCommand(str);
|
||
if(m_bConnectFlag)
|
||
{
|
||
m_serialPort->write(Cmd);
|
||
GLogger::GetInstance()->WriteInfo("Send:"+str);
|
||
}
|
||
else
|
||
{
|
||
CommonHelper::ShowMessageBoxError(tr("串口未开启!"));
|
||
}
|
||
|
||
|
||
str = showHex(Cmd);
|
||
|
||
emit ShowSendCmd(str);
|
||
|
||
int msec = 1;
|
||
ConfigHelp::GetInstance()->loadSerialSendTime(msec);
|
||
CommonHelper::Sleep(msec);
|
||
}
|
||
|
||
void SerialMovement::writeCmdToolData(QString Data)
|
||
{
|
||
if(!m_bIsSend)
|
||
{
|
||
return;
|
||
}
|
||
|
||
QByteArray Cmd = HexStringToByteArray(Data);
|
||
// QByteArray Cmd = createCommand(Data);
|
||
|
||
if(m_bConnectFlag)
|
||
{
|
||
if(m_bIsUSB)
|
||
{
|
||
unsigned long pLength = Cmd.size();
|
||
BYTE *pBuf = (unsigned char*)Cmd.data();
|
||
CH375WriteEndP(0, 1, pBuf, &pLength);
|
||
}
|
||
else
|
||
{
|
||
m_serialPort->write(Cmd);
|
||
}
|
||
GLogger::GetInstance()->WriteInfo("Send:"+Data);
|
||
}
|
||
else
|
||
{
|
||
CommonHelper::ShowMessageBoxError(tr("串口未开启!"));
|
||
}
|
||
|
||
QString strHex = showHex(Cmd);
|
||
|
||
emit ShowSendCmd(QString(strHex));
|
||
|
||
int msec = 1;
|
||
ConfigHelp::GetInstance()->loadSerialSendTime(msec);
|
||
CommonHelper::Sleep(msec);
|
||
}
|
||
|
||
void SerialMovement::WriteData(const char *data, qint64 len)
|
||
{
|
||
if(!m_bIsSend)
|
||
{
|
||
return;
|
||
}
|
||
|
||
QByteArray sendByteArray;
|
||
sendByteArray.resize(len);
|
||
for (int i = 0; i < sendByteArray.length(); i++)
|
||
{
|
||
sendByteArray[i] = data[i];
|
||
}
|
||
QString sendDataStr = showHex(sendByteArray);
|
||
|
||
emit ShowSendCmd(QString(sendDataStr));
|
||
|
||
if(m_bConnectFlag)
|
||
{
|
||
m_serialPort->write(data,len);
|
||
GLogger::GetInstance()->WriteInfo("Send:"+sendDataStr);
|
||
}
|
||
else
|
||
{
|
||
CommonHelper::ShowMessageBoxError(tr("串口未开启!"));
|
||
}
|
||
|
||
|
||
}
|
||
|
||
void SerialMovement::PackageUpgradeReq(int fileNo, qint64 fileSize, int frameCount,
|
||
const unsigned char* fileCheckValue, int fileCheckValueLen,
|
||
unsigned char* req, int& reqLen)
|
||
{
|
||
int i = 0;
|
||
unsigned char szTemp[4] = {0};
|
||
int nTempLen = 4;
|
||
req[i++] = char(0x7E);
|
||
req[i++] = char(0x23);
|
||
req[i++] = fileNo;
|
||
|
||
memset(szTemp, 0, sizeof(szTemp));
|
||
IntToHex(fileSize, szTemp, 4);
|
||
memcpy(req+i, szTemp, 4);
|
||
i += 4;
|
||
|
||
memset(szTemp, 0, sizeof(szTemp));
|
||
IntToHex(frameCount, szTemp, 4);
|
||
memcpy(req+i, szTemp, 2);
|
||
i += 2;
|
||
|
||
memcpy(req+i, fileCheckValue, fileCheckValueLen);
|
||
i += fileCheckValueLen;
|
||
|
||
memset(szTemp, 0, sizeof(szTemp));
|
||
CheckSum(req, BUFF_SIZE, 1, i, ECHECK_PLUS, szTemp, nTempLen); //从1开始,不包含帧头7E
|
||
memcpy(req+i, szTemp, 2);
|
||
i += 2;
|
||
|
||
req[i++] = char(0x7E);
|
||
req[i++] = char(0x55);
|
||
|
||
|
||
reqLen = i;
|
||
}
|
||
|
||
void SerialMovement::PackageFlashDataReq(int frameNo, int nRealLength, const unsigned char* flashData,
|
||
unsigned char*req, int& reqLen)
|
||
{
|
||
int i = 0;
|
||
unsigned char szTemp[4] = {0};
|
||
int nTempLen = 4;
|
||
req[i++] = char(0x7E);
|
||
req[i++] = char(0x24);
|
||
|
||
memset(szTemp, 0, sizeof(szTemp));
|
||
IntToHex(frameNo, szTemp, 4);
|
||
memcpy(req+i, szTemp, 2);
|
||
i += 2;
|
||
|
||
memset(szTemp, 0, sizeof(szTemp));
|
||
IntToHex(nRealLength, szTemp, 4);
|
||
memcpy(req+i, szTemp, 4);
|
||
i += 4;
|
||
|
||
//memcpy(buffer+i, flashData, nRealLength);
|
||
//i += nRealLength;
|
||
memcpy(req+i, flashData, 1024);
|
||
i += 1024;
|
||
|
||
memset(szTemp, 0, sizeof(szTemp));
|
||
CheckSum(req, BUFF_SIZE, 1, i, ECHECK_PLUS, szTemp, nTempLen); //从1开始,不包含帧头7E
|
||
memcpy(req+i, szTemp, 4);
|
||
i += 4;
|
||
|
||
req[i++] = char(0x7E);
|
||
req[i++] = char(0x55);
|
||
|
||
reqLen = i;
|
||
}
|
||
|
||
void SerialMovement::Parse32Cmd(byte* buf)
|
||
{
|
||
if(buf[2] == 0x10)
|
||
{
|
||
emit SigSendShowRecvData("收到准备好,开始发送第一帧");
|
||
|
||
emit SigSendUpgradeData(1);
|
||
|
||
}
|
||
else if(buf[2] == 0x1F)
|
||
{
|
||
emit SigSendShowRecvData("未准备好!");
|
||
}
|
||
}
|
||
|
||
void SerialMovement::Parse42Cmd(byte* buf)
|
||
{
|
||
uchar ch = buf[2];
|
||
int frameNum = buf[4] << 8 | buf[3];
|
||
if(0x22 == ch) //装订成功
|
||
{
|
||
emit SigSendShowRecvData("装订成功!");
|
||
}
|
||
else if(0x23 == ch) //装订失败
|
||
{
|
||
emit SigSendShowRecvData("装订失败!");
|
||
}
|
||
else if(0x24 == ch) //传输中
|
||
{
|
||
QString showStr = QString("传输中,下位机请求帧编号:%1").arg(frameNum);
|
||
emit SigSendShowRecvData(showStr);
|
||
|
||
emit SigSendUpgradeData(frameNum);
|
||
}
|
||
|
||
}
|
||
|
||
void SerialMovement::analysisInfo(unsigned char* DataBuf,int BufSize)
|
||
{
|
||
int offset = 5;
|
||
unsigned char* Buf = DataBuf+offset;
|
||
|
||
m_CoreReturnInfo.cRecvMode = DataBuf[4];
|
||
m_CoreReturnInfo.nMsgId = DataBuf[5];
|
||
|
||
switch (DataBuf[4])
|
||
{
|
||
case 0x03:
|
||
if(DataBuf[5] == 0)
|
||
{
|
||
GeneralInfo Gval;
|
||
Gval.InfoFlag = Buf[0];
|
||
Gval.FrameRate = (ushort)(Buf[1]<<8|Buf[2])/100;
|
||
Gval.SyncMode = Buf[3];
|
||
Gval.SyncState = Buf[4];
|
||
Gval.Resolution_W = (ushort)(Buf[5]<<8|Buf[6]);
|
||
Gval.Resolution_H = (ushort)(Buf[7]<<8|Buf[8]);
|
||
Gval.EnvirTemp = (short)(Buf[9]<<8|Buf[10])/10.0;
|
||
Gval.FocusTemp = (short)(Buf[11]<<8|Buf[12])/10.0;
|
||
Gval.TestImage = Buf[13];
|
||
Gval.SceneType = Buf[14];
|
||
Gval.PicActionAcope = Buf[15];
|
||
Gval.ColdTime = (ushort)(Buf[16]<<8|Buf[17]);
|
||
Gval.ColdState = Buf[18];
|
||
m_CoreReturnInfo.General = Gval;
|
||
}
|
||
else if(DataBuf[5] == 1)
|
||
{
|
||
VideoInfo Vval;
|
||
Vval.InfoFlag = Buf[0];
|
||
Vval.VideoMode = Buf[1];
|
||
Vval.LvdsMode = Buf[2];
|
||
Vval.TestInfo = Buf[3];
|
||
Vval.PseudoColor = Buf[4];
|
||
Vval.Polarity = Buf[5];
|
||
Vval.Mirror = Buf[6];
|
||
Vval.ZoomType = Buf[7];
|
||
Vval.Zoom = Buf[8];
|
||
Vval.CursorType = Buf[9];
|
||
Vval.XPos = (ushort)(Buf[10]<<8|Buf[11]);
|
||
Vval.YPos = (ushort)(Buf[12]<<8|Buf[13]);
|
||
// Vval.XPosCenter = (ushort)(Buf[10]<<8|Buf[11]);
|
||
// Vval.YPosCenter = (ushort)(Buf[12]<<8|Buf[13]);
|
||
|
||
Vval.ElecSelfTest= (ushort)(Buf[14]<<8|Buf[15]);
|
||
Vval.Unlimited = (short)(Buf[16]<<8|Buf[17])/1000.0;
|
||
Vval.CharSwitch = Buf[18];
|
||
Vval.PicFreezeSwitch = Buf[19];
|
||
Vval.PAL_Mode = Buf[20];
|
||
|
||
m_CoreReturnInfo.Video = Vval;
|
||
}
|
||
else if(DataBuf[5] == 2)
|
||
{
|
||
ZoomInfo sZoomInfo;
|
||
sZoomInfo.InfoFlag = Buf[0];
|
||
sZoomInfo.AnalogVideoSwitch = Buf[1];
|
||
sZoomInfo.DigitalVideoMode = Buf[2];
|
||
sZoomInfo.XPosCenter = (ushort)(Buf[3]<<8|Buf[4]);
|
||
sZoomInfo.YPosCenter = (ushort)(Buf[5]<<8|Buf[6]);
|
||
|
||
m_CoreReturnInfo.Zoom = sZoomInfo;
|
||
}
|
||
break;
|
||
|
||
case 0x04:
|
||
if(DataBuf[5] == 0)
|
||
{
|
||
AirthInfo Alval;
|
||
|
||
Alval.InfoFlag = Buf[0];
|
||
Alval.StripeFilter_Switch = Buf[1];
|
||
Alval.StripeFilter_Thres = Buf[2];
|
||
Alval.StripeHoriFilter_Switch = Buf[3];
|
||
Alval.StripeHoriFilter_Thres = Buf[4];
|
||
Alval.Move_Thres = Buf[5];
|
||
Alval.MoveNoiseFilter_Switch = Buf[6];
|
||
Alval.TimeNoiseFilter_Switch = Buf[7];
|
||
Alval.SpaceNoiseFilter_Switch = Buf[8];
|
||
Alval.TimeNoiseFilter_LutMode = Buf[9];
|
||
Alval.SpaceNoiseFilter_Level = Buf[10];
|
||
Alval.Y8NoiseFilter_Switch = Buf[11];
|
||
Alval.Y8NoiseFilter_Level = Buf[12];
|
||
Alval.DDE_Level = Buf[13];
|
||
Alval.DDE_Y8_Level = Buf[14];
|
||
Alval.TG_Mode = Buf[15];
|
||
Alval.LineBright = Buf[16];
|
||
Alval.LineContrast = Buf[17];
|
||
Alval.Y8Range = Buf[18];
|
||
Alval.Y8Mean = Buf[19];
|
||
Alval.HistPer = Buf[20];
|
||
Alval.LinePer = Buf[21];
|
||
Alval.TL = (ushort)(Buf[22]<<8|Buf[23]);
|
||
Alval.TR = (ushort)(Buf[24]<<8|Buf[25]);
|
||
Alval.FrameDelay_Switch = Buf[26];
|
||
|
||
|
||
//未用到
|
||
Alval.StripeFilter_Window = Buf[4];
|
||
Alval.DDE_Switch = Buf[17];
|
||
Alval.RangeChange_Switch = Buf[18];
|
||
Alval.BrightnessStep = Buf[20];
|
||
Alval.ContrastStep = Buf[21];
|
||
|
||
m_CoreReturnInfo.Airth = Alval;
|
||
}
|
||
else if(DataBuf[5] == 1)
|
||
{
|
||
TGInfo Tval;
|
||
Tval.InfoFlag = Buf[0];
|
||
Tval.Y16Range = (ushort)(Buf[1]<<8|Buf[2]);
|
||
Tval.Y16Aver = (ushort)(Buf[3]<<8|Buf[4]);
|
||
Tval.Y16Max = (ushort)(Buf[5]<<8|Buf[6]);
|
||
Tval.Y16Min = (ushort)(Buf[7]<<8|Buf[8]);
|
||
Tval.Sobel = (ushort)(Buf[9]<<8|Buf[10]);
|
||
Tval.BlockTG_Switch = Buf[11];
|
||
Tval.BlockTG_Use_Switch = Buf[12];
|
||
Tval.BlockTG_Para = Buf[13];
|
||
Tval.BF_IDE_Switch = Buf[14];
|
||
Tval.BF_IDE_Sigma = Buf[15];
|
||
Tval.BF_IDE_Level = Buf[16];
|
||
Tval.Defog_Switch = Buf[17];
|
||
Tval.Defog = Buf[18];
|
||
Tval.Y8_AdjustBC_Switch = Buf[19];
|
||
Tval.BCMode = Buf[20];
|
||
|
||
Tval.Brightness = Buf[21];
|
||
Tval.Contrast = Buf[22];
|
||
|
||
Tval.Y16OutStream = Buf[23];
|
||
Tval.Y8OutStream = Buf[24];
|
||
|
||
//未用到
|
||
Tval.ContrastLimit = (ushort)(Buf[12]<<8|Buf[13]);
|
||
Tval.Coef = (ushort)(Buf[18]<<8|Buf[19]);
|
||
|
||
m_CoreReturnInfo.TG = Tval;
|
||
}
|
||
else if(DataBuf[5] == 2) //时域滤波Y16算法
|
||
{
|
||
TimeY16Info sY16Time;
|
||
sY16Time.InfoFlag = Buf[0];
|
||
sY16Time.Gause1 = Buf[1];
|
||
sY16Time.Gause2 = Buf[2];
|
||
sY16Time.Gause3 = Buf[3];
|
||
sY16Time.Gause4 = Buf[4];
|
||
sY16Time.DfFilter1 = Buf[5];
|
||
sY16Time.DfFilter2 = Buf[6];
|
||
sY16Time.AddDf1 = Buf[7];
|
||
sY16Time.AddDf2 = Buf[8];
|
||
sY16Time.Tail1 = (ushort)(Buf[9]<<8|Buf[10]);
|
||
sY16Time.Tail2 = Buf[11];
|
||
sY16Time.Tail3 = Buf[12];
|
||
sY16Time.DiffIir1 = (ushort)(Buf[13]<<8|Buf[14]);
|
||
sY16Time.DiffIir2 = Buf[15];
|
||
sY16Time.DiffIir3 = Buf[16];
|
||
sY16Time.Alpha1 = Buf[17];
|
||
sY16Time.Alpha2 = (ushort)(Buf[18]<<8|Buf[19]);
|
||
sY16Time.Alpha3 = (ushort)(Buf[20]<<8|Buf[21]);
|
||
sY16Time.MD1 = Buf[22];
|
||
sY16Time.MD2 = (ushort)(Buf[23]<<8|Buf[24]);
|
||
sY16Time.ArithSW = Buf[25];
|
||
|
||
m_CoreReturnInfo.Y16Time = sY16Time;
|
||
}
|
||
else if(DataBuf[5] == 3) //去横纹算法
|
||
{
|
||
StripeHoriInfo sHoriStripe;
|
||
sHoriStripe.InfoFlag = Buf[0];
|
||
sHoriStripe.Filter1 = Buf[1];
|
||
sHoriStripe.Filter2 = Buf[2];
|
||
sHoriStripe.Filter3 = Buf[3];
|
||
sHoriStripe.Filter4 = Buf[4];
|
||
sHoriStripe.Filter5 = Buf[5];
|
||
sHoriStripe.ThresParam1 = Buf[6];
|
||
sHoriStripe.ThresParam2 = Buf[7];
|
||
sHoriStripe.RowDiffTh1 = (uint)(Buf[8]<<24|Buf[9]<<16|Buf[10]<<8|Buf[11]);
|
||
sHoriStripe.RowDiffTh2 = (uint)(Buf[12]<<24|Buf[13]<<16|Buf[14]<<8|Buf[15]);
|
||
sHoriStripe.HoriNumTh1 = (ushort)(Buf[16]<<8|Buf[17]);
|
||
sHoriStripe.HoriNumTh2 = (ushort)(Buf[18]<<8|Buf[19]);
|
||
sHoriStripe.HoriNumTh3 = (ushort)(Buf[20]<<8|Buf[21]);
|
||
sHoriStripe.ArithHoriSW = Buf[22];
|
||
|
||
m_CoreReturnInfo.HoriStripe = sHoriStripe;
|
||
}
|
||
else if(DataBuf[5] == 4) //去竖纹算法
|
||
{
|
||
StripeVerInfo sVerStripe;
|
||
sVerStripe.InfoFlag = Buf[0];
|
||
sVerStripe.VerThres1 = (ushort)(Buf[1]<<8|Buf[2]);
|
||
sVerStripe.VerThres2 = Buf[3];
|
||
sVerStripe.WeightThr1 = (ushort)(Buf[4]<<8|Buf[5]);
|
||
sVerStripe.WeightThr2 = (ushort)(Buf[6]<<8|Buf[7]);
|
||
sVerStripe.WeightThr3 = (ushort)(Buf[8]<<8|Buf[9]);
|
||
sVerStripe.Noise1 = Buf[10];
|
||
sVerStripe.Noise2 = Buf[11];
|
||
sVerStripe.Noise3 = (ushort)(Buf[12]<<8|Buf[13]);
|
||
sVerStripe.ArithVerSW = Buf[14];
|
||
|
||
m_CoreReturnInfo.VerStripe = sVerStripe;
|
||
}
|
||
else if(DataBuf[5] == 5) //空域滤波Y6
|
||
{
|
||
SpaceFilterInfo sFilterSpace;
|
||
sFilterSpace.InfoFlag = Buf[0];
|
||
sFilterSpace.ResolveThres1 = (ushort)(Buf[1]<<8|Buf[2]);
|
||
sFilterSpace.ResolveThres2 = (ushort)(Buf[3]<<8|Buf[4]);
|
||
|
||
sFilterSpace.Enhance1_Thres1 = (ushort)(Buf[5]<<8|Buf[6]);
|
||
sFilterSpace.Enhance1_Thres2 = (ushort)(Buf[7]<<8|Buf[8]);
|
||
|
||
sFilterSpace.Enhance2_Thres1 = (ushort)(Buf[9]<<8|Buf[10]);
|
||
sFilterSpace.Enhance2_Thres2 = (ushort)(Buf[11]<<8|Buf[12]);
|
||
|
||
sFilterSpace.Enhance_Slop1 = (ushort)(Buf[13]<<8|Buf[14]);
|
||
sFilterSpace.Enhance_Slop2 = (ushort)(Buf[15]<<8|Buf[16]);
|
||
|
||
sFilterSpace.Resolve_Slop1 = Buf[17];
|
||
sFilterSpace.Resolve_Slop2 = Buf[18];
|
||
|
||
sFilterSpace.ArithY16SpaceSW = Buf[19];
|
||
|
||
|
||
m_CoreReturnInfo.FilterSpace = sFilterSpace;
|
||
}
|
||
else if(DataBuf[5] == 6) //动态范围压缩算法
|
||
{
|
||
DynamicPressFirstInfo sDynamicPress;
|
||
sDynamicPress.InfoFlag = Buf[0];
|
||
sDynamicPress.HistmaxMode = Buf[1];
|
||
sDynamicPress.HISTMAXMin = (uint)(Buf[2]<<24|Buf[3]<<16|Buf[4]<<8|Buf[5]);
|
||
sDynamicPress.HISTMAXMax = (uint)(Buf[6]<<24|Buf[7]<<16|Buf[8]<<8|Buf[9]);
|
||
sDynamicPress.ExtValue = (uint)(Buf[10]<<24|Buf[11]<<16|Buf[12]<<8|Buf[13]);
|
||
|
||
sDynamicPress.Coef1 = Buf[14];
|
||
sDynamicPress.Coef2 = (ushort)(Buf[15]<<8|Buf[16]);
|
||
sDynamicPress.Coef3 = (ushort)(Buf[17]<<8|Buf[18]);
|
||
|
||
sDynamicPress.ExternalBright = (ushort)(Buf[19]<<8|Buf[20]);
|
||
sDynamicPress.ExternalContrast = (ushort)(Buf[21]<<8|Buf[22]);
|
||
sDynamicPress.GsMode = Buf[23];
|
||
|
||
sDynamicPress.Gs0Coef1 = Buf[24];
|
||
sDynamicPress.Gs0Coef2 = Buf[25];
|
||
sDynamicPress.Gs0Coef3 = Buf[26];
|
||
sDynamicPress.Gs1Coef1 = Buf[27];
|
||
sDynamicPress.Gs1Coef2 = Buf[28];
|
||
sDynamicPress.Gs1Coef3 = Buf[29];
|
||
|
||
m_CoreReturnInfo.DynamicFirst = sDynamicPress;
|
||
|
||
}
|
||
else if(DataBuf[5] == 7) //动态范围压缩算法
|
||
{
|
||
DynamicPressSecondInfo sDynamicPress;
|
||
sDynamicPress.InfoFlag = Buf[0];
|
||
sDynamicPress.LumTh1 = Buf[1];
|
||
sDynamicPress.LumTh2 = Buf[2];
|
||
sDynamicPress.LumTh3 = Buf[3];
|
||
sDynamicPress.LumTh4 = Buf[4];
|
||
|
||
sDynamicPress.LumLv1 = Buf[5];
|
||
sDynamicPress.LumLv2 = Buf[6];
|
||
sDynamicPress.LumLv3 = Buf[7];
|
||
|
||
sDynamicPress.VarTh1 = (ushort)(Buf[8]<<8|Buf[9]);
|
||
sDynamicPress.VarTh2 = (ushort)(Buf[10]<<8|Buf[11]);
|
||
// sDynamicPress.VarTh3 = Buf[10];
|
||
// sDynamicPress.VarTh4 = Buf[11];
|
||
|
||
sDynamicPress.VarLv1 = Buf[12];
|
||
sDynamicPress.VarLv2 = Buf[13];
|
||
sDynamicPress.VarLv3 = Buf[14];
|
||
|
||
sDynamicPress.ContrastTh1 = Buf[15];
|
||
sDynamicPress.ContrastTh2 = Buf[16];
|
||
sDynamicPress.ContrastTh3 = Buf[17];
|
||
sDynamicPress.ContrastTh4 = Buf[18];
|
||
|
||
sDynamicPress.ContrastLv1 = Buf[19];
|
||
sDynamicPress.ContrastLv2 = Buf[20];
|
||
sDynamicPress.ContrastLv3 = Buf[21];
|
||
|
||
sDynamicPress.LeftPointTh = (uint)(Buf[22]<<24|Buf[23]<<16|Buf[24]<<8|Buf[25]);
|
||
sDynamicPress.RightPointTh = (uint)(Buf[26]<<24|Buf[27]<<16|Buf[28]<<8|Buf[29]);
|
||
|
||
m_CoreReturnInfo.DynamicSecond = sDynamicPress;
|
||
|
||
}
|
||
else if(DataBuf[5] == 8) //动态范围压缩算法
|
||
{
|
||
DynamicPressThirdInfo sDynamicPress;
|
||
sDynamicPress.InfoFlag = Buf[0];
|
||
sDynamicPress.GrayMaxMin1 = Buf[1];
|
||
sDynamicPress.GrayMaxMin2 = (ushort)(Buf[2]<<8|Buf[3]);
|
||
sDynamicPress.GrayMaxMin3 = (ushort)(Buf[4]<<8|Buf[5]);
|
||
sDynamicPress.PseudoColor1 = (ushort)(Buf[6]<<8|Buf[7]);
|
||
sDynamicPress.PseudoColor2 = (ushort)(Buf[8]<<8|Buf[9]);
|
||
sDynamicPress.VarTh3 = (ushort)(Buf[10]<<8|Buf[11]);
|
||
sDynamicPress.VarTh4 = (ushort)(Buf[12]<<8|Buf[13]);
|
||
|
||
m_CoreReturnInfo.DynamicThird = sDynamicPress;
|
||
}
|
||
else if(DataBuf[5] == 9) //宽动态算法
|
||
{
|
||
WideDynamicInfo sWideDynamic;
|
||
sWideDynamic.InfoFlag = Buf[0];
|
||
sWideDynamic.CenterParam1 = Buf[1];
|
||
sWideDynamic.CenterParam2 = Buf[2];
|
||
sWideDynamic.CenterParam3 = Buf[3];
|
||
sWideDynamic.CenterParam4 = (ushort)(Buf[4]<<8|Buf[5]);
|
||
sWideDynamic.FusEnable = Buf[6];
|
||
sWideDynamic.FusCofe = Buf[7];
|
||
sWideDynamic.FusDelta = (ushort)(Buf[8]<<8|Buf[9]);
|
||
sWideDynamic.FusThrhd = (ushort)(Buf[10]<<8|Buf[11]);
|
||
sWideDynamic.FilterParam1 = Buf[12];
|
||
sWideDynamic.FilterParam2 = Buf[13];
|
||
sWideDynamic.FilterParam3 = Buf[14];
|
||
sWideDynamic.Gaus1 = Buf[15];
|
||
sWideDynamic.Gaus2 = Buf[16];
|
||
sWideDynamic.Gaus3 = Buf[17];
|
||
sWideDynamic.Gaus4 = Buf[18];
|
||
sWideDynamic.Gaus5 = Buf[19];
|
||
sWideDynamic.ArithWideSW = Buf[20];
|
||
|
||
m_CoreReturnInfo.WideDynamic = sWideDynamic;
|
||
|
||
}
|
||
else if(DataBuf[5] == 10) //BACA算法
|
||
{
|
||
BACAInfo sBACA;
|
||
sBACA.InfoFlag = Buf[0];
|
||
sBACA.BACASW = Buf[1];
|
||
sBACA.RatioT1 = Buf[2];
|
||
sBACA.RatioT2 = Buf[3];
|
||
sBACA.RatioT3 = Buf[4];
|
||
sBACA.RatioT4 = Buf[5];
|
||
sBACA.RatioR1 = Buf[6];
|
||
sBACA.RatioR2 = Buf[7];
|
||
sBACA.RatioR3 = Buf[8];
|
||
sBACA.MeanParam1 = Buf[9];
|
||
sBACA.MeanParam2 = Buf[10];
|
||
sBACA.MeanParam3 = Buf[11];
|
||
sBACA.Bright = Buf[12];
|
||
sBACA.Contrast = Buf[13];
|
||
|
||
m_CoreReturnInfo.BACA = sBACA;
|
||
|
||
}
|
||
else if(DataBuf[5] == 11) //分块调光
|
||
{
|
||
BlockTGInfo sBlockTG;
|
||
sBlockTG.InfoFlag = Buf[0];
|
||
sBlockTG.BonusSel1 = Buf[1];
|
||
sBlockTG.BonusSel2 = (ushort)(Buf[2]<<8|Buf[3]);
|
||
sBlockTG.BonusSel3 = Buf[4];
|
||
sBlockTG.BonusSel4 = Buf[5];
|
||
sBlockTG.ClipLimit1 = Buf[6];
|
||
sBlockTG.ClipLimit2 = Buf[7];
|
||
sBlockTG.ClipLimit3 = Buf[8];
|
||
sBlockTG.ClipLimit4 = Buf[9];
|
||
sBlockTG.ClipLimit5 = Buf[10];
|
||
sBlockTG.ClipLimit6 = Buf[11];
|
||
sBlockTG.ClipLimit7 = Buf[12];
|
||
sBlockTG.ClipLimit8 = Buf[13];
|
||
sBlockTG.ClipLimit9 = Buf[14];
|
||
sBlockTG.ArithBlockTGSW = Buf[15];
|
||
|
||
m_CoreReturnInfo.TGBlock = sBlockTG;
|
||
}
|
||
else if(DataBuf[5] == 12) //时域滤波Y8算法
|
||
{
|
||
TimeY8FirstInfo sY8Time;
|
||
sY8Time.InfoFlag = Buf[0];
|
||
sY8Time.Y8NoiseSwitch = Buf[1];
|
||
sY8Time.Nr3dYLowPowerEn = Buf[2];
|
||
sY8Time.MeanWinsel1 = Buf[3];
|
||
sY8Time.MeanWinsel2 = Buf[4];
|
||
sY8Time.DiffFilter1Winsel1 = Buf[5];
|
||
sY8Time.DiffFilter1Winsel2 = Buf[6];
|
||
sY8Time.DiffFilter1Winsel3 = Buf[7];
|
||
sY8Time.DiffFilter1Coef1 = Buf[8];
|
||
sY8Time.DiffFilter1Coef2 = Buf[9];
|
||
sY8Time.DiffFilter1Coef3 = Buf[10];
|
||
sY8Time.DiffFilter1Coef4 = Buf[11];
|
||
sY8Time.DiffFilter1Coef5 = Buf[12];
|
||
sY8Time.DiffFilter1Coef6 = Buf[13];
|
||
sY8Time.DiffFilter1Coef7 = Buf[14];
|
||
sY8Time.DiffFilter1Coef8 = Buf[15];
|
||
sY8Time.DiffFilter1Coef9 = Buf[16];
|
||
sY8Time.DiffFilter1Coef10 = Buf[17];
|
||
sY8Time.DiffFilter2Winsel1 = Buf[18];
|
||
sY8Time.DiffFilter2Winsel2 = Buf[19];
|
||
sY8Time.DiffFilter2Winsel3 = Buf[20];
|
||
sY8Time.DiffFilter2Coef1 = Buf[21];
|
||
sY8Time.DiffFilter2Coef2 = Buf[22];
|
||
sY8Time.DiffFilter2Coef3 = Buf[23];
|
||
sY8Time.DiffFilter2Coef4 = Buf[24];
|
||
sY8Time.DiffFilter2Coef5 = Buf[25];
|
||
sY8Time.DiffFilter2Coef6 = Buf[26];
|
||
sY8Time.DiffFilter2Coef7 = Buf[27];
|
||
sY8Time.DiffFilter2Coef8 = Buf[28];
|
||
sY8Time.DiffFilter2Coef9 = Buf[29];
|
||
sY8Time.DiffFilter2Coef10 = Buf[30];
|
||
sY8Time.DiffAdjust1Max = Buf[31];
|
||
sY8Time.DiffAdjust1Ratio = Buf[32];
|
||
|
||
m_CoreReturnInfo.Y8TimeFirst = sY8Time;
|
||
|
||
}
|
||
else if(DataBuf[5] == 13) //时域滤波Y8算法
|
||
{
|
||
TimeY8SecondInfo sY8Time;
|
||
sY8Time.InfoFlag = Buf[0];
|
||
sY8Time.DiffAdjust2Max = Buf[1];
|
||
sY8Time.DiffAdjust2Ratio = Buf[2];
|
||
sY8Time.Motion1U16Motion = (ushort)(Buf[3]<<8|Buf[4]);
|
||
sY8Time.Motion1MotionCoef = Buf[5];
|
||
sY8Time.Motion1MotionOffset = Buf[6];
|
||
|
||
sY8Time.Motion1LumTh1 = Buf[7];
|
||
sY8Time.Motion1LumTh2 = Buf[8];
|
||
sY8Time.Motion1LumTh3 = Buf[9];
|
||
sY8Time.Motion1LumTh4 = Buf[10];
|
||
|
||
sY8Time.Motion1LumCoef1 = Buf[11];
|
||
sY8Time.Motion1LumCoef2 = Buf[12];
|
||
sY8Time.Motion1LumCoef3 = Buf[13];
|
||
|
||
sY8Time.Motion2U16Motion = (ushort)(Buf[14]<<8|Buf[15]);
|
||
sY8Time.Motion2MotionCoef = Buf[16];
|
||
sY8Time.Motion2MotionOffset = Buf[17];
|
||
|
||
sY8Time.Motion2LumTh1 = Buf[18];
|
||
sY8Time.Motion2LumTh2 = Buf[19];
|
||
sY8Time.Motion2LumTh3 = Buf[20];
|
||
sY8Time.Motion2LumTh4 = Buf[21];
|
||
|
||
sY8Time.Motion2LumCoef1 = Buf[22];
|
||
sY8Time.Motion2LumCoef2 = Buf[23];
|
||
sY8Time.Motion2LumCoef3 = Buf[24];
|
||
sY8Time.MD1Param1 = (ushort)(Buf[25]<<8|Buf[26]);
|
||
sY8Time.MD1Param2 = (ushort)(Buf[27]<<8|Buf[28]);
|
||
sY8Time.MD1Param3 = (ushort)(Buf[29]<<8|Buf[30]);
|
||
sY8Time.MD1Param4 = (ushort)(Buf[31]<<8|Buf[32]);
|
||
|
||
|
||
m_CoreReturnInfo.Y8TimeSecond = sY8Time;
|
||
|
||
}
|
||
else if(DataBuf[5] == 14) //时域滤波Y8算法
|
||
{
|
||
TimeY8ThirdInfo sY8Time;
|
||
sY8Time.InfoFlag = Buf[0];
|
||
sY8Time.MD1Param5 = (ushort)(Buf[1]<<8|Buf[2]);
|
||
sY8Time.MD1Param6 = (ushort)(Buf[3]<<8|Buf[4]);
|
||
sY8Time.MD1Param7 = (ushort)(Buf[5]<<8|Buf[6]);
|
||
sY8Time.MD1Param8 = (ushort)(Buf[7]<<8|Buf[8]);
|
||
sY8Time.MD1Param9 = (ushort)(Buf[9]<<8|Buf[10]);
|
||
sY8Time.MD1Param10 = (ushort)(Buf[11]<<8|Buf[12]);
|
||
sY8Time.MD1Param11 = (ushort)(Buf[13]<<8|Buf[14]);
|
||
sY8Time.MD1Param12 = (ushort)(Buf[15]<<8|Buf[16]);
|
||
|
||
sY8Time.MD1Param13Mdratios0 = Buf[17];
|
||
sY8Time.MD1Param13Mdratios1 = Buf[18];
|
||
sY8Time.MD1Param13Mdratios2 = Buf[19];
|
||
|
||
sY8Time.MD1Param14Mdratiom0 = Buf[20];
|
||
sY8Time.MD1Param14Mdratiom1 = Buf[21];
|
||
sY8Time.MD1Param14Mdratiom2 = Buf[22];
|
||
sY8Time.MD1Param15Mdenhs0 = Buf[23];
|
||
sY8Time.MD1Param15Mdenhs1 = Buf[24];
|
||
sY8Time.MD1Param15Mdenhs2 = Buf[25];
|
||
sY8Time.MD1Param16Mdenhm0 = Buf[26];
|
||
sY8Time.MD1Param16Mdenhm1 = Buf[27];
|
||
sY8Time.MD1Param16Mdenhm2 = Buf[28];
|
||
sY8Time.MD1Param17Mddark = Buf[29];
|
||
sY8Time.MD1Param17Mdbright = Buf[30];
|
||
sY8Time.MD1Param17Mddbmax = Buf[31];
|
||
sY8Time.MD1Param17Mddbmin = Buf[32];
|
||
|
||
m_CoreReturnInfo.Y8TimeThird = sY8Time;
|
||
|
||
}
|
||
else if(DataBuf[5] == 15) //时域滤波Y8算法
|
||
{
|
||
TimeY8ForthInfo sY8Time;
|
||
sY8Time.InfoFlag = Buf[0];
|
||
sY8Time.MD1Param18MdGsCoef0 = Buf[1];
|
||
sY8Time.MD1Param18MdGsCoef1 = Buf[2];
|
||
sY8Time.MD1Param18MdGsCoef2 = Buf[3];
|
||
sY8Time.MD2Param1 = (ushort)(Buf[4]<<8|Buf[5]);
|
||
sY8Time.MD2Param2 = (ushort)(Buf[6]<<8|Buf[7]);
|
||
sY8Time.MD2Param3 = (ushort)(Buf[8]<<8|Buf[9]);
|
||
sY8Time.MD2Param4 = (ushort)(Buf[10]<<8|Buf[11]);
|
||
sY8Time.MD2Param5 = (ushort)(Buf[12]<<8|Buf[13]);
|
||
sY8Time.MD2Param6 = (ushort)(Buf[14]<<8|Buf[15]);
|
||
sY8Time.MD2Param7 = (ushort)(Buf[16]<<8|Buf[17]);
|
||
sY8Time.MD2Param8 = (ushort)(Buf[18]<<8|Buf[19]);
|
||
sY8Time.MD2Param9 = (ushort)(Buf[20]<<8|Buf[21]);
|
||
sY8Time.MD2Param10 = (ushort)(Buf[22]<<8|Buf[23]);
|
||
sY8Time.MD2Param11 = (ushort)(Buf[24]<<8|Buf[25]);
|
||
sY8Time.MD2Param12 = (ushort)(Buf[26]<<8|Buf[27]);
|
||
|
||
sY8Time.MD2Param13Mdratios0 = Buf[28];
|
||
sY8Time.MD2Param13Mdratios1 = Buf[29];
|
||
sY8Time.MD2Param13Mdratios2 = Buf[30];
|
||
|
||
m_CoreReturnInfo.Y8TimeForth = sY8Time;
|
||
|
||
}
|
||
else if(DataBuf[5] == 16) //时域滤波Y8算法
|
||
{
|
||
TimeY8FifthInfo sY8Time;
|
||
sY8Time.InfoFlag = Buf[0];
|
||
sY8Time.MD2Param14Mdratiom0 = Buf[1];
|
||
sY8Time.MD2Param14Mdratiom1 = Buf[2];
|
||
sY8Time.MD2Param14Mdratiom2 = Buf[3];
|
||
sY8Time.MD2Param15Mdenhs0 = Buf[4];
|
||
sY8Time.MD2Param15Mdenhs1 = Buf[5];
|
||
sY8Time.MD2Param15Mdenhs2 = Buf[6];
|
||
sY8Time.MD2Param16Mdenhm0 = Buf[7];
|
||
sY8Time.MD2Param16Mdenhm1 = Buf[8];
|
||
sY8Time.MD2Param16Mdenhm2 = Buf[9];
|
||
sY8Time.MD2Param17Mddark = Buf[10];
|
||
sY8Time.MD2Param17Mdbright = Buf[11];
|
||
sY8Time.MD2Param17Mddbmax = Buf[12];
|
||
sY8Time.MD2Param17Mddbmin = Buf[13];
|
||
sY8Time.MD2Param18MdGsCoef0 = Buf[14];
|
||
sY8Time.MD2Param18MdGsCoef1 = Buf[15];
|
||
sY8Time.MD2Param18MdGsCoef2 = Buf[16];
|
||
sY8Time.Tmpd1Alphamax = (ushort)(Buf[17]<<8|Buf[18]);
|
||
sY8Time.Tmpd1Alpharatio = Buf[19];
|
||
sY8Time.Tmpd2Alphamax = (ushort)(Buf[20]<<8|Buf[21]);
|
||
sY8Time.Tmpd2Alpharatio = Buf[22];
|
||
sY8Time.Tail1DifIirTailCoef1 = Buf[23];
|
||
sY8Time.Tail1DifIirTailCoef2 = Buf[24];
|
||
sY8Time.Tail1DifIirTailCoef3 = Buf[25];
|
||
sY8Time.Tail1DifIirTailCoef4 = Buf[26];
|
||
sY8Time.Tail1DifIirTailCoef5 = Buf[27];
|
||
sY8Time.Tail1DifIirTailCoef6 = Buf[28];
|
||
sY8Time.Tail1DifIirTailCoef7 = Buf[29];
|
||
sY8Time.Tail1DifIirTailCoef8 = Buf[30];
|
||
sY8Time.Tail1DifIirTailCoef9 = Buf[31];
|
||
sY8Time.Tail1DifIirTailCoef10 = Buf[32];
|
||
|
||
m_CoreReturnInfo.Y8TimeFifth = sY8Time;
|
||
|
||
}
|
||
else if(DataBuf[5] == 17) //时域滤波Y8算法
|
||
{
|
||
TimeY8SixthInfo sY8Time;
|
||
sY8Time.InfoFlag = Buf[0];
|
||
sY8Time.Tail1ShrinkRatio1 = Buf[1];
|
||
sY8Time.Tail1ShrinkRatio2 = Buf[2];
|
||
sY8Time.Tail1ShrinkRatio3 = Buf[3];
|
||
sY8Time.Tail1ShrinkRatio4 = Buf[4];
|
||
sY8Time.Tail1ShrinkRatio5 = Buf[5];
|
||
sY8Time.Tail1ShrinkThr1 = Buf[6];
|
||
sY8Time.Tail1ShrinkThr2 = Buf[7];
|
||
sY8Time.Tail1ShrinkThr3 = Buf[8];
|
||
sY8Time.Tail1ShrinkThr4 = Buf[9];
|
||
sY8Time.Stacor1Offset = Buf[10];
|
||
sY8Time.Stacor1Coef = Buf[11];
|
||
|
||
m_CoreReturnInfo.Y8TimeSixth = sY8Time;
|
||
|
||
}
|
||
else if(DataBuf[5] == 18) //空域滤波Y8算法
|
||
{
|
||
SpaceY8Info sY8Space;
|
||
sY8Space.InfoFlag = Buf[0];
|
||
sY8Space.SpaceY8Switch = Buf[1];
|
||
sY8Space.ResolveThres1 = (ushort)(Buf[2]<<8|Buf[3]);
|
||
sY8Space.ResolveThres2 = (ushort)(Buf[4]<<8|Buf[5]);
|
||
sY8Space.Enhance1Thres1 = (ushort)(Buf[6]<<8|Buf[7]);
|
||
sY8Space.Enhance1Thres2 = (ushort)(Buf[8]<<8|Buf[9]);
|
||
sY8Space.Enhance2Thres1 = (ushort)(Buf[10]<<8|Buf[11]);
|
||
sY8Space.Enhance2Thres2 = (ushort)(Buf[12]<<8|Buf[13]);
|
||
sY8Space.EnhanceSlop1 = (ushort)(Buf[14]<<8|Buf[15]);
|
||
sY8Space.EnhanceSlop2 = (ushort)(Buf[16]<<8|Buf[17]);
|
||
sY8Space.ResolveSlop1 = Buf[18];
|
||
sY8Space.ResolveSlop2 = Buf[19];
|
||
|
||
m_CoreReturnInfo.Y8Space = sY8Space;
|
||
|
||
}
|
||
else if(DataBuf[5] == 19) //边缘增强算法
|
||
{
|
||
IDEEdgeFirstInfo sIDE;
|
||
sIDE.InfoFlag = Buf[0];
|
||
sIDE.IDConsMode = Buf[1];
|
||
sIDE.IDWidthRatio = Buf[2];
|
||
sIDE.IDEdgeSmooth = Buf[3];
|
||
sIDE.IDEOffsetStrength = Buf[4];
|
||
sIDE.IDEFltWinMode = Buf[5];
|
||
sIDE.ClipEn = Buf[6];
|
||
sIDE.PosStr = Buf[7];
|
||
sIDE.PosClipRatio = Buf[8];
|
||
sIDE.PosMaxOffset = Buf[9];
|
||
sIDE.NegStr = Buf[10];
|
||
sIDE.NegClipRatio = Buf[11];
|
||
sIDE.NegMinOffset = Buf[12];
|
||
sIDE.WidthT1 = Buf[13];
|
||
sIDE.WidthT2 = Buf[14];
|
||
sIDE.WidthT3 = Buf[15];
|
||
sIDE.WidthT4 = Buf[16];
|
||
sIDE.WidthR1 = Buf[17];
|
||
sIDE.WidthR2 = Buf[18];
|
||
sIDE.WidthR3 = Buf[19];
|
||
sIDE.ThinAddT1 = Buf[20];
|
||
sIDE.ThinAddT2 = Buf[21];
|
||
sIDE.ThinAddT3 = Buf[22];
|
||
sIDE.ThinAddT4 = Buf[23];
|
||
sIDE.ThinAddR1 = Buf[24];
|
||
sIDE.ThinAddR2 = Buf[25];
|
||
sIDE.ThinAddR3 = Buf[26];
|
||
sIDE.ThinPowerT1 = Buf[27];
|
||
sIDE.ThinPowerT2 = Buf[28];
|
||
sIDE.ThinPowerT3 = Buf[29];
|
||
sIDE.ThinPowerT4 = Buf[30];
|
||
|
||
m_CoreReturnInfo.IDEFirst = sIDE;
|
||
|
||
}
|
||
else if(DataBuf[5] == 20) //边缘增强算法
|
||
{
|
||
IDEEdgeSecondInfo sIDE;
|
||
sIDE.InfoFlag = Buf[0];
|
||
sIDE.ThinPower1 = Buf[1];
|
||
sIDE.ThinPower2 = Buf[2];
|
||
sIDE.ThinPower3 = Buf[3];
|
||
sIDE.LumT1 = Buf[4];
|
||
sIDE.LumT2 = Buf[5];
|
||
sIDE.LumT3 = Buf[6];
|
||
sIDE.LumT4 = Buf[7];
|
||
sIDE.LumR1 = Buf[8];
|
||
sIDE.LumR2 = Buf[9];
|
||
sIDE.LumR3 = Buf[10];
|
||
sIDE.FreqT1 = Buf[11];
|
||
sIDE.FreqT2 = Buf[12];
|
||
sIDE.FreqT3 = Buf[13];
|
||
sIDE.FreqT4 = Buf[14];
|
||
sIDE.FreqR1 = Buf[15];
|
||
sIDE.FreqR2 = Buf[16];
|
||
sIDE.FreqR3 = Buf[17];
|
||
sIDE.ContrastT1 = Buf[18];
|
||
sIDE.ContrastT2 = Buf[19];
|
||
sIDE.ContrastT3 = Buf[20];
|
||
sIDE.ContrastT4 = Buf[21];
|
||
sIDE.ContrastR1 = Buf[22];
|
||
sIDE.ContrastR2 = Buf[23];
|
||
sIDE.ContrastR3 = Buf[24];
|
||
sIDE.LightHigh = Buf[25];
|
||
sIDE.OffsetThrd = Buf[26];
|
||
sIDE.LightNumLow = Buf[27];
|
||
sIDE.LightNumHigh = Buf[28];
|
||
sIDE.ArithIDEEdgeSW = Buf[29];
|
||
|
||
m_CoreReturnInfo.IDESecond = sIDE;
|
||
|
||
}
|
||
|
||
break;
|
||
case 0x05:
|
||
OpticsInfo Oval;
|
||
Oval.InfoFlag = Buf[0];
|
||
Oval.FocusVal = (ushort)(Buf[1]<<8|Buf[2])/10.0;
|
||
Oval.CrossSceneAngle = (ushort)(Buf[3]<<8|Buf[4])/100.0;
|
||
Oval.AutoFocusState = Buf[5];
|
||
Oval.RealTimeAutoFocus_Switch = Buf[6];
|
||
Oval.AutoFocus_XPos = (ushort)(Buf[7]<<8|Buf[8]);
|
||
Oval.AutoFocus_YPos = (ushort)(Buf[9]<<8|Buf[10]);
|
||
Oval.AutoFocus_WH = (ushort)(Buf[11]<<8|Buf[12]);
|
||
Oval.AutoFocus_Gray = (uint)(Buf[13]<<24|Buf[14]<<16|Buf[15]<<8|Buf[16]);
|
||
Oval.Scene = Buf[17];
|
||
Oval.UartExtend = Buf[18];
|
||
Oval.SceneCount = Buf[19];
|
||
Oval.Shutter = Buf[20];
|
||
Oval.OpticalFilter = Buf[21];
|
||
Oval.PickDot_StageNum = Buf[22];
|
||
Oval.Move_Flag = Buf[23];
|
||
Oval.SFTemp = Buf[24];
|
||
Oval.FocusStep = Buf[25];
|
||
Oval.ZoomStep = Buf[26];
|
||
Oval.CurrentScene = Buf[27];
|
||
Oval.CurrentFocusVal = (ushort)(Buf[28]<<8|Buf[29])/10.0;;
|
||
|
||
m_CoreReturnInfo.Optics = Oval;
|
||
break;
|
||
case 0x06:
|
||
if(DataBuf[5] == 0)
|
||
{
|
||
NUCInfo Nval;
|
||
Nval.InfoFlag = Buf[0];
|
||
Nval.IntegralGearMode = Buf[1];
|
||
Nval.IntegralGear = Buf[2];
|
||
Nval.IntegralTime = (ushort)(Buf[3]<<8|Buf[4]);
|
||
Nval.BaseGearMode = Buf[5];
|
||
Nval.BaseGear = Buf[6];
|
||
Nval.BadPointThreshold = Buf[7];
|
||
Nval.ReplaceBadPoint_Switch = Buf[8];
|
||
Nval.BadPointReplaceMode = Buf[9];
|
||
Nval.BadPointCursor_Switch = Buf[10];
|
||
Nval.BadPointReplaceType = Buf[11];
|
||
Nval.Dynamic_AdjustBadPoint_Switch = Buf[12];
|
||
Nval.DecideFlatArea_Threshold = Buf[13];
|
||
Nval.Dynamic_AdjustBadPoint_Count = (ushort)(Buf[14]<<8|Buf[15]);
|
||
Nval.Move_Flag = Buf[16];
|
||
Nval.PotCoverSwitch = Buf[17];
|
||
Nval.GG_Coef = (short)(((ushort)Buf[18]<<8)|((ushort)Buf[19]));
|
||
|
||
Nval.ADMax = (ushort)(Buf[20]<<8|Buf[21]);
|
||
Nval.ADMin = (ushort)(Buf[22]<<8|Buf[23]);
|
||
Nval.EnvirTemp = (short)(Buf[24]<<8|Buf[25])/10.0;
|
||
Nval.SecondaryIntegralGear = Buf[26];
|
||
Nval.WorkCheck = Buf[27];
|
||
Nval.ObjTemp = (short)(Buf[28]<<8|Buf[29])/10.0;
|
||
|
||
//暂未用到
|
||
Nval.BadPoint_CheckFrameNum = Buf[12];
|
||
Nval.FlatAreaFindBadPoint_Threshold = Buf[14];
|
||
|
||
m_CoreReturnInfo.NUC = Nval;
|
||
}
|
||
else if(DataBuf[5] == 1)
|
||
{
|
||
CurGearInfo Cval;
|
||
Cval.InfoFlag = Buf[0];
|
||
Cval.INT = Buf[1];
|
||
Cval.FOV = Buf[2];
|
||
Cval.B1 = (ushort)(Buf[3]<<8|Buf[4]);
|
||
Cval.B2 = (ushort)(Buf[5]<<8|Buf[6]);
|
||
Cval.Bh = (ushort)(Buf[7]<<8|Buf[8]);
|
||
Cval.Bs = (ushort)(Buf[9]<<8|Buf[10]);
|
||
Cval.DeltaB = (short)(Buf[11]<<8|Buf[12]);
|
||
Cval.B = (ushort)(Buf[13]<<8|Buf[14]);
|
||
Cval.BadPointCount = (ushort)(Buf[15]<<8|Buf[16]);
|
||
Cval.BadPointCount_New = (ushort)(Buf[17]<<8|Buf[18]);
|
||
Cval.CurrentBASE = Buf[19];
|
||
Cval.AE_Switch = Buf[20];
|
||
Cval.AE_ADMax = (ushort)(Buf[21]<<8|Buf[22]);
|
||
Cval.AE_ADMin = (ushort)(Buf[23]<<8|Buf[24]);
|
||
Cval.AE_TimeMax = (ushort)(Buf[25]<<8|Buf[26]);
|
||
Cval.AE_TimeMin = (ushort)(Buf[27]<<8|Buf[28]);
|
||
Cval.AE_OptimalAD = (ushort)(Buf[29]<<8|Buf[30]);
|
||
|
||
m_CoreReturnInfo.CurGear = Cval;
|
||
}
|
||
else if(DataBuf[5] == 2)
|
||
{
|
||
ADInfo Aval;
|
||
Aval.InfoFlag = Buf[0];
|
||
Aval.AD1 = (ushort)(Buf[1]<<8|Buf[2]);
|
||
Aval.AD2 = (ushort)(Buf[3]<<8|Buf[4]);
|
||
Aval.AD3 = (ushort)(Buf[5]<<8|Buf[6]);
|
||
Aval.AD4 = (ushort)(Buf[7]<<8|Buf[8]);
|
||
Aval.AD5 = (ushort)(Buf[9]<<8|Buf[10]);
|
||
Aval.AD6 = (ushort)(Buf[11]<<8|Buf[12]);
|
||
Aval.AD7 = (ushort)(Buf[13]<<8|Buf[14]);
|
||
Aval.AD8 = (ushort)(Buf[15]<<8|Buf[16]);
|
||
Aval.Ax = (ushort)(Buf[17]<<8|Buf[18]);
|
||
Aval.Dx = (ushort)(Buf[19]<<8|Buf[20]);
|
||
|
||
//
|
||
Aval.CrossBadLine = (ushort)(Buf[21]<<8|Buf[22]);
|
||
Aval.VerticalBadLine = (ushort)(Buf[23]<<8|Buf[24]);
|
||
|
||
m_CoreReturnInfo.AD = Aval;
|
||
}
|
||
else if(DataBuf[5] == 3)
|
||
{
|
||
ASCINucFirstInfo ASCINuc;
|
||
ASCINuc.InfoFlag = Buf[0];
|
||
ASCINuc.DeltBSW = Buf[1];
|
||
ASCINuc.DeltBCoef = Buf[2];
|
||
ASCINuc.AutoCompensation = Buf[3];
|
||
ASCINuc.SFFCTemp = Buf[4];
|
||
ASCINuc.ManualBadPointSW = Buf[5];
|
||
ASCINuc.AutoCheckFrameNum = (ushort)(Buf[6]<<8|Buf[7]);
|
||
ASCINuc.AutoCheckThreshold = Buf[8];
|
||
ASCINuc.KBadPointSW = Buf[9];
|
||
ASCINuc.KBadPointMin = (ushort)(Buf[10]<<8|Buf[11]);
|
||
ASCINuc.KBadPointMax = (ushort)(Buf[12]<<8|Buf[13]);
|
||
ASCINuc.BprAddSW = Buf[14];
|
||
ASCINuc.BprAddParam1 = Buf[15];
|
||
ASCINuc.BprAddParam2 = Buf[16];
|
||
ASCINuc.BprAddJudgeThres = (ushort)(Buf[17]<<8|Buf[18]);
|
||
ASCINuc.BprAddThres = Buf[19];
|
||
ASCINuc.BprAddCheckParam = Buf[20];
|
||
ASCINuc.DeltBTemp = (ushort)(Buf[21]<<8|Buf[22]);
|
||
ASCINuc.SUCSW = Buf[23];
|
||
ASCINuc.SUCWorkTime = Buf[24];
|
||
ASCINuc.RASEL = Buf[25];
|
||
ASCINuc.GAIN = Buf[26];
|
||
ASCINuc.HSSD = Buf[27];
|
||
ASCINuc.NUCSW = Buf[28];
|
||
ASCINuc.NUCXMax = (ushort)(Buf[29]<<8|Buf[30]);
|
||
ASCINuc.NUCXMin = (ushort)(Buf[31]<<8|Buf[32]);
|
||
|
||
m_CoreReturnInfo.ASCINUCFirst = ASCINuc;
|
||
}
|
||
else if(DataBuf[5] == 4)
|
||
{
|
||
ASCINucSecondInfo ASCINuc;
|
||
ASCINuc.InfoFlag = Buf[0];
|
||
ASCINuc.NUCInit = Buf[1];
|
||
ASCINuc.NUCFullScreen = Buf[2];
|
||
ASCINuc.TECSW = Buf[3];
|
||
ASCINuc.PrintEn = Buf[4];
|
||
ASCINuc.RegPageNum = Buf[5];
|
||
ASCINuc.RegAddr = Buf[6];
|
||
ASCINuc.RegValueSet = Buf[7];
|
||
ASCINuc.RegValueGet = Buf[8];
|
||
|
||
m_CoreReturnInfo.ASCINUCSecond = ASCINuc;
|
||
}
|
||
|
||
break;
|
||
case 0x07:
|
||
if(DataBuf[5] == 0)
|
||
{
|
||
DetectorInfo Dval;
|
||
Dval.InfoFlag = Buf[0];
|
||
Dval.DetectorType = (ushort)(Buf[1]<<8|Buf[2]);
|
||
Dval.ADDelay = Buf[3];
|
||
Dval.GPOL = Buf[4];
|
||
Dval.VR = Buf[5];
|
||
Dval.UPCOL = Buf[6];
|
||
Dval.UPROW = Buf[7];
|
||
Dval.Gain = Buf[8];
|
||
Dval.DetectorElecControl = Buf[9];
|
||
Dval.AccuWorkTime = (uint)(Buf[10]<<24|Buf[11]<<16|Buf[12]<<8|Buf[13]);
|
||
Dval.CurWorkTime = (uint)(Buf[14]<<24|Buf[15]<<16|Buf[16]<<8|Buf[17]);
|
||
Dval.BootCount = (ushort)(Buf[18]<<8|Buf[19]);
|
||
Dval.Version_Inner_Year = (ushort)(Buf[20]<<8|Buf[21]);
|
||
Dval.Version_Inner_Mon = Buf[22];
|
||
Dval.Version_Inner_Day = Buf[23];
|
||
Dval.DetectorWorkMode = Buf[24];
|
||
Dval.VREF = Buf[25];
|
||
Dval.OpenWindowSwitch = Buf[26];
|
||
Dval.FocusTemp = (short)(Buf[27]<<8|Buf[28])/10.0;
|
||
Dval.OutHumity = Buf[29];
|
||
Dval.OutAspectSW = Buf[30];
|
||
Dval.OutAspectVAlue = (ushort)(Buf[31]<<8|Buf[32]);
|
||
|
||
|
||
m_CoreReturnInfo.Detector = Dval;
|
||
}
|
||
else if(DataBuf[5] == 1)
|
||
{
|
||
DetectorInfo2 Dval2;
|
||
Dval2.InfoFlag = Buf[0];
|
||
Dval2.ADAssess = Buf[1];
|
||
Dval2.MultiSamplingSwitch = Buf[2];
|
||
Dval2.AverageNum = Buf[3];
|
||
Dval2.OutputStart = Buf[4];
|
||
Dval2.Sort = Buf[5];
|
||
Dval2.MachineHeadingCode = (uint)(Buf[6]<<24|Buf[7]<<16|Buf[8]<<8|Buf[9]);
|
||
Dval2.Version_Year = (ushort)(Buf[10]<<8|Buf[11]);
|
||
Dval2.Version_Mon = Buf[12];
|
||
Dval2.Version_Day = Buf[13];
|
||
Dval2.SoftwareConfig_User_aa = Buf[14];
|
||
Dval2.SoftwareConfig_User_xx = Buf[15];
|
||
Dval2.SoftwareConfig_User_yy = Buf[16];
|
||
Dval2.SoftwareConfig_Core_aa = Buf[17];
|
||
Dval2.SoftwareConfig_Core_xx = Buf[18];
|
||
Dval2.SoftwareConfig_Core_yy = Buf[19];
|
||
Dval2.Dx = (ushort)(Buf[20]<<8|Buf[21]);
|
||
Dval2.DX_ad = (ushort)(Buf[22]<<8|Buf[23])/1000.0;
|
||
Dval2.DX_dot = (ushort)(Buf[24]<<8|Buf[25])/1000.0;
|
||
Dval2.OpenWindowStart_X = (ushort)(Buf[26]<<8|Buf[27]);
|
||
Dval2.OpenWindowStart_Y = (ushort)(Buf[28]<<8|Buf[29]);
|
||
|
||
m_CoreReturnInfo.Detector2 = Dval2;
|
||
}
|
||
|
||
break;
|
||
|
||
case 0x0A:
|
||
if(DataBuf[5] == 0)
|
||
{
|
||
UserInfo User;
|
||
User.InfoFlag = Buf[0];
|
||
User.FocusTemp = (short)(Buf[1]<<8|Buf[2])/10.0;
|
||
User.EnvirTemp = (short)(Buf[3]<<8|Buf[4])/10.0;
|
||
User.ElecSelfTest = (ushort)(Buf[5]<<8|Buf[6]);
|
||
User.ColdTime = (ushort)(Buf[7]<<8|Buf[8]);;
|
||
User.AccuWorkTime = (uint)(Buf[9]<<24|Buf[10]<<16|Buf[11]<<8|Buf[12]);
|
||
User.CharSwitch = Buf[13];
|
||
User.CursorType = Buf[14];
|
||
User.XPos = (ushort)(Buf[15]<<8|Buf[16]);
|
||
User.YPos = (ushort)(Buf[17]<<8|Buf[18]);
|
||
|
||
m_CoreReturnInfo.User = User;
|
||
}
|
||
else if(DataBuf[5] == 1)
|
||
{
|
||
UserInfo2 User2;
|
||
User2.InfoFlag = Buf[0];
|
||
User2.FrameRate =(ushort)(Buf[1]<<8|Buf[2])/100;
|
||
User2.SyncMode = Buf[3];
|
||
User2.SceneType = Buf[4];
|
||
User2.LvdsMode = Buf[5];
|
||
User2.Polarity = Buf[6];
|
||
User2.Mirror = Buf[7];
|
||
User2.Zoom = Buf[8];
|
||
User2.Unlimited = (short)(Buf[9]<<8|Buf[10])/1000.0;
|
||
User2.DDE_Level = Buf[11];
|
||
User2.BCMode = Buf[12];
|
||
User2.Brightness = Buf[13];
|
||
User2.Contrast = Buf[14];
|
||
User2.FocusVal = (ushort)(Buf[15]<<8|Buf[16])/10.0;
|
||
User2.FocusStep = Buf[17];
|
||
User2.RealTimeAutoFocus_Switch = Buf[18];
|
||
User2.CurrentScene = Buf[19];
|
||
User2.IntegralGearMode = Buf[20];
|
||
User2.IntegralGear = Buf[21];
|
||
User2.IntegralTime = (ushort)(Buf[22]<<8|Buf[23]);
|
||
User2.BadPointCount_New = (ushort)(Buf[24]<<8|Buf[25]);
|
||
User2.PseudoColor = Buf[26];
|
||
|
||
m_CoreReturnInfo.User2 = User2;
|
||
}
|
||
|
||
break;
|
||
|
||
|
||
|
||
default:
|
||
break;
|
||
}
|
||
|
||
}
|
||
|
||
void SerialMovement::analysisReplyInfo(unsigned char *DataBuf, int BufSize)
|
||
{
|
||
int offset = 5;
|
||
unsigned char* Buf = DataBuf+offset;
|
||
|
||
|
||
switch (DataBuf[4])
|
||
{
|
||
case 0x00:
|
||
{
|
||
if(DataBuf[5] == 0x01) //版本握手命令
|
||
{
|
||
m_CoreReplyInfo.DetectorReply.SystemTypeName = Buf[1]; //机芯版本==类型 00:FPGA; 01:ASIC(格式:00V2.00)
|
||
m_CoreReplyInfo.DetectorReply.SystemTypeVer_V = Buf[2]; //版本号字母V
|
||
m_CoreReplyInfo.DetectorReply.SystemTypeVer_aa = Buf[3]; //版本号aa
|
||
m_CoreReplyInfo.DetectorReply.SystemTypeVer_dot = Buf[4]; //版本号"."
|
||
m_CoreReplyInfo.DetectorReply.SystemTypeVer_xx = Buf[5]; //版本号xx
|
||
|
||
}
|
||
break;
|
||
}
|
||
case 0x07:
|
||
{
|
||
if(DataBuf[5] == 0x01)
|
||
{
|
||
|
||
QString strType;
|
||
for(int i = 1;i<7;i++)
|
||
{
|
||
char ch = Buf[i];
|
||
strType += QString(ch);
|
||
|
||
}
|
||
|
||
m_CoreReplyInfo.DetectorReply.DetectorType = strType;
|
||
}
|
||
else if(DataBuf[5] == 0x16)
|
||
{
|
||
QString strName;
|
||
for(int i = 1;i<7;i++)
|
||
{
|
||
char ch = Buf[i];
|
||
strName += QString(ch);
|
||
|
||
}
|
||
|
||
m_CoreReplyInfo.DetectorReply.DetectorName = strName;
|
||
}
|
||
|
||
break;
|
||
}
|
||
default:
|
||
break;
|
||
}
|
||
}
|
||
|
||
|
||
QString SerialMovement::CmdInsertVal(int Num,QString Cmd,ulong val)
|
||
{
|
||
QString str;
|
||
int point;
|
||
|
||
switch (Num) {
|
||
case 1:
|
||
str = QString("%1").arg(val & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx");
|
||
Cmd.replace(point,2,str);
|
||
break;
|
||
case 2:
|
||
str = QString("%1 %2")
|
||
.arg((val>>8) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg(val & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx xx");
|
||
Cmd.replace(point,5,str);
|
||
break;
|
||
case 3:
|
||
str = QString("%1 %2 %3")
|
||
.arg((val>>16) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>8) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg(val & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx xx xx");
|
||
Cmd.replace(point,8,str);
|
||
case 4:
|
||
str = QString("%1 %2 %3 %4")
|
||
.arg((val>>24) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>16) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>8) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg(val & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx xx xx");
|
||
Cmd.replace(point,11,str);
|
||
case 6:
|
||
str = QString("%1 %2 %3 %4 %5 %6")
|
||
.arg((val>>36) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>32) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>24) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>16) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>8) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg(val & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx xx xx xx xx xx");
|
||
Cmd.replace(point,17,str);
|
||
default:
|
||
break;
|
||
}
|
||
|
||
return Cmd;
|
||
}
|
||
|
||
QString SerialMovement::CmdInsertValPro(int Num,QString Cmd,ulong val)
|
||
{
|
||
QString str;
|
||
int point;
|
||
|
||
switch (Num) {
|
||
case 1:
|
||
str = QString("%1").arg(val & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx");
|
||
Cmd.replace(point,2,str);
|
||
break;
|
||
case 2:
|
||
str = QString("%1 %2")
|
||
.arg(val & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>8) & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx xx");
|
||
Cmd.replace(point,5,str);
|
||
break;
|
||
case 3:
|
||
str = QString("%1 %2 %3")
|
||
.arg(val & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>8) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>16) & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx xx xx");
|
||
Cmd.replace(point,8,str);
|
||
case 4:
|
||
str = QString("%1 %2 %3 %4")
|
||
.arg(val & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>8) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>16) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>24) & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx xx xx");
|
||
Cmd.replace(point,11,str);
|
||
case 6:
|
||
str = QString("%1 %2 %3 %4 %5 %6")
|
||
.arg((val) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>8) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>16) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>24) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>32) & 0xFF,2,16,QLatin1Char('0'))
|
||
.arg((val>>36) & 0xFF,2,16,QLatin1Char('0'));
|
||
point = Cmd.indexOf("xx xx xx xx xx xx");
|
||
Cmd.replace(point,17,str);
|
||
default:
|
||
break;
|
||
}
|
||
|
||
return Cmd;
|
||
}
|