在编写代码时,发现需要做一堆重复性的工作,量大且容易犯错,于是通过代码的形式输出。
需要导出的内容如下:
代码如下:
void CModbusInputConfig::on_paraBtn_clicked()
{
QString filePath = QFileDialog::getSaveFileName(this,tr("保存参数文件"),"./Config/para.ini","para(*.ini)");
if(filePath.isEmpty())
return;
QFile file(filePath);
if(!file.open(QIODevice::WriteOnly))
{
return;
}
QTextStream out(&file);
static int iCout = 0;
out <<"//send order"<<endl;
for(int i =0;i< m_pData->bufferList.size();i++)
{
DIYModbus_Struct::Buffer_Struct bufferStru = m_pData->bufferList.at(i);
QString strFun = QString::number(bufferStru.fun);
strFun = "0x"+QString("%1").arg(bufferStru.fun,2,16,QChar('0').toUpper());
QString strStart = QString::number(bufferStru.iStart);
strStart = "0x"+QString("%1").arg(bufferStru.iStart,4,16,QChar('0').toUpper());
QString strLen = QString::number(bufferStru.len);
strLen = "0x"+QString("%1").arg(bufferStru.len,4,16,QChar('0').toUpper());
out << "m_buffer["<<i<<"].fun = "<<strFun<<";"<<endl;
out << "m_buffer["<<i<<"].iStart = "<<strStart<<";"<<endl;
out << "m_buffer["<<i<<"].len = "<<strLen<<";"<<endl;
out<<""<<endl;
}
out<<"//YC"<<endl;
int iYCSize = m_pData->YCList.size();
for(int i =0;i < iYCSize;i++)
{
DIYModbus_Struct::YC_Struct YCStr = g_data.YCList.at(i);
QString type;
if(YCStr.type == 1)
{
type = "TYPE_SHORT";
iCout++;
}
else
{
type = "TYPE_LONG";
}
out << "m_YCStruct["<<i<<"].iBuffer = " << (YCStr.iBuffer)<<";"<<endl;
out << "m_YCStruct["<<i<<"].type = "<<type<<";"<<endl;
out << "m_YCStruct["<<i<<"].index1 = "<<YCStr.index1<<";"<<endl;
out << "m_YCStruct["<<i<<"].index2 = "<<YCStr.index2<<";"<<endl;
out << "m_YCStruct["<<i<<"].index3 = "<<YCStr.index3<<";"<<endl;
out << "m_YCStruct["<<i<<"].index4 = "<<YCStr.index4<<";"<<endl;
out<<""<<endl;
}
out<<"//YX "<<endl;
// m_YXStruct[0].iBuffer = 0;
// m_YXStruct[0].iByte = 14;
// m_YXStruct[0].iBit = 1;
int YXSize = m_pData->YXList.size();
for(int i=0;i<YXSize;i++)
{
DIYModbus_Struct::YX_Struct YXStr = g_data.YXList.at(i);
out << "m_YXStruct["<<i<<"].iBuffer = " << YXStr.iBuffer << ";" << endl;
out << "m_YXStruct["<<i<<"].iByte = " << YXStr.iByte <<";" << endl;
out << "m_YXStruct["<<i<<"].iBit = " << YXStr.iByteBit <<";" << endl;
out << endl;
}
int YXYXSize = m_pData->YCYXList.size();
// m_YXYCStruct[0].iYC =3;
// m_YXYCStruct[0].type =1;
// m_YXYCStruct[0].value =2;
out << "//YXYC"<<endl;
for(int i=0;i<YXYXSize;i++)
{
DIYModbus_Struct::YCYX_Struct YCYXStr = g_data.YCYXList.at(i);
out << "m_YXYCStruct["<<i<<"].iYC = " << (YCYXStr.iYC+1) <<";" << endl;
out << "m_YXYCStruct["<<i<<"].type = " << YCYXStr.type << ";" << endl;
out << "m_YXYCStruct["<<i<<"].value = " << YCYXStr.value << ";"<< endl;
out << endl;
}
out<<"BUFFER_NUM = " << m_pData->bufferList.size() << endl;
out<<"YC2_NUM = " << iCout << endl;
out<<"YC4_NUM = " << m_pData->YCList.size()-iCout << endl;
out<<"YX_NUM = " << m_pData->YXList.size() << endl;
out<<"YXYC_NUM = " << m_pData->YCYXList.size() << endl;
int MAXSize = ( m_pData->YXList.size()+m_pData->YCYXList.size())/8 +iCout*4+
(m_pData->YCList.size()-iCout)*2+20;
out << "MAXsize = " << MAXSize << endl;
iCout = 0;
}
验证内容如下: