例如json配置文件有如下内容
其中cmdOpen为要发送的十六进制命令字符串,那么就需要转换。在Qt/MFC下的方法如下:
//QT下
int convertStringToCharArrary(string strCmd, char chCmd[])
{
QString qstrCmd = QString::fromStdString(strCmd);
QStringList cmdList = qstrCmd.split(" ");
int iSize = cmdList.size();
for (int i=0; i<iSize;i++)
{
QString s = cmdList.at(i);
bool ok;
int iHexnum = s.toInt(&ok, 16);
chCmd[i] = iHexnum;
}
return iSize;
}
//调用方法:
int RelayRemoteControl::sendData()
{
char cmd[CMD_MAX_SIZE] = {0};
int iSize = convertStringToCharArrary(m_cmd, cmd);
int iRet = send(m_tcp, cmd, iSize + 1, 0);
return iRet;
}
//MFC下
int convertStringToCharArrary(string strCmd, char chCmd[])
{
CString cstrCmd = CString(strCmd.c_str());
CStringArray* result = new CStringArray;
while(TRUE)
{
int index = cstrCmd.Find(_T(" "));
if(index == -1)
{
result->Add(cstrCmd);
break;
}
CString test1 = cstrCmd.Left(index);
result->Add(test1);
cstrCmd = cstrCmd.Right(cstrCmd.GetLength()-index-1);
}
int iSize = result->GetSize();
for(int i=0; i<iSize; i++)
{
int iDec = strtol(result->GetAt(i), NULL, 16);
chCmd[i] = iDec;
}
return iSize;
}
//调用方法同QT下