| 
							
								 | 
							
							#include "BoltModeStructData.h"
 | 
						
						
						
						
							 | 
							
								 | 
							
							#include <sstream>
 | 
						
						
						
						
							 | 
							
								 | 
							
							#include <iomanip>
 | 
						
						
						
						
							 | 
							
								 | 
							
							#include <ctime>
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							#include "Utils.h"
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							BoltModeStructData::BoltModeStructData()
 | 
						
						
						
						
							 | 
							
								 | 
							
							    : m_data(nullptr)
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							BoltModeStructData::BoltModeStructData(BoltModeParam_t *data)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    : m_data(nullptr)
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    setData(data);
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							BoltModeStructData::~BoltModeStructData()
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    if(m_data != nullptr)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        for(int i=0; i<2; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            m_data->format[i].diameterList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							            m_data->format[i].typeList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							            m_data->format[i].torqueList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							        delete m_data;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data = nullptr;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							Data* BoltModeStructData::clone()
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    Data* data = new BoltModeStructData();
 | 
						
						
						
						
							 | 
							
								 | 
							
							    data->copy(this);
 | 
						
						
						
						
							 | 
							
								 | 
							
							    return data;
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							void BoltModeStructData::copy(Data* data)
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    BoltModeStructData *dt = dynamic_cast<BoltModeStructData *>(data);
 | 
						
						
						
						
							 | 
							
								 | 
							
							    if(dt->getData() == nullptr)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        return;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    if(m_data == nullptr)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data = new BoltModeParam_t();
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    m_data->name = dt->getData()->name;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    for(int i=0; i<2; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data->format[i].diameterList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data->format[i].typeList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data->format[i].torqueList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        //m_data->format = dt->getData()->format;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::copy(dt->getData()->format[i].diameterList.begin(), dt->getData()->format[i].diameterList.end(), std::back_inserter(m_data->format[i].diameterList));
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::copy(dt->getData()->format[i].typeList.begin(), dt->getData()->format[i].typeList.end(), std::back_inserter(m_data->format[i].typeList));
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::copy(dt->getData()->format[i].torqueList.begin(), dt->getData()->format[i].torqueList.end(), std::back_inserter(m_data->format[i].torqueList));
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							void BoltModeStructData::copy(Data& data)
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    BoltModeStructData *dt = dynamic_cast<BoltModeStructData *>(&data);
 | 
						
						
						
						
							 | 
							
								 | 
							
							    if(dt->getData() == nullptr)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        return;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    if(m_data == nullptr)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data = new BoltModeParam_t();
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    m_data->name = dt->getData()->name;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    for(int i=0; i<2; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data->format[i].diameterList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data->format[i].typeList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data->format[i].torqueList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        //m_data->format = dt->getData()->format;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::copy(dt->getData()->format[i].diameterList.begin(), dt->getData()->format[i].diameterList.end(), std::back_inserter(m_data->format[i].diameterList));
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::copy(dt->getData()->format[i].typeList.begin(), dt->getData()->format[i].typeList.end(), std::back_inserter(m_data->format[i].typeList));
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::copy(dt->getData()->format[i].torqueList.begin(), dt->getData()->format[i].torqueList.end(), std::back_inserter(m_data->format[i].torqueList));
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							int BoltModeStructData::length()
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    int length = 0;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    length += 10;    // 扳手名称
 | 
						
						
						
						
							 | 
							
								 | 
							
							    for(int i=0; i<2; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        length += 1;     // 制式
 | 
						
						
						
						
							 | 
							
								 | 
							
							        length += 1;     // 直径数量
 | 
						
						
						
						
							 | 
							
								 | 
							
							        length += 10 * m_data->format[i].diameterList.size();   // 直径名称
 | 
						
						
						
						
							 | 
							
								 | 
							
							        length += 1;     // 等级数量
 | 
						
						
						
						
							 | 
							
								 | 
							
							        length += 10 * m_data->format[i].typeList.size();   // 等级名称
 | 
						
						
						
						
							 | 
							
								 | 
							
							        length += 4 * m_data->format[i].diameterList.size() * m_data->format[i].typeList.size();   // 扭矩值
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							    return length;
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							std::string BoltModeStructData::toStr()
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    std::stringstream ss;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    ss << "name : " << m_data->name << std::endl;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    for(int i=0; i<2; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        //ss << "format : " << ((m_data->format == 0) ? (std::string("公制")) : (std::string("英制"))) << std::endl;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        ss << "format : " << ((i == 0) ? std::string("公制") : std::string("英制")) << std::endl;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        ss << "diameter : ";
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::list<std::string>::iterator diameterIter = m_data->format[i].diameterList.begin();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        while(diameterIter != m_data->format[i].diameterList.end())
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            ss << *diameterIter << ", ";
 | 
						
						
						
						
							 | 
							
								 | 
							
							            diameterIter++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							        ss << std::endl;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::list<std::string>::iterator typeIter = m_data->format[i].typeList.begin();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        while(typeIter != m_data->format[i].typeList.end())
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            ss << *typeIter << ", ";
 | 
						
						
						
						
							 | 
							
								 | 
							
							            typeIter++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							        ss << std::endl;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::list<int>::iterator torqueIter = m_data->format[i].torqueList.begin();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        while(torqueIter != m_data->format[i].torqueList.end())
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            ss << *torqueIter << ", ";
 | 
						
						
						
						
							 | 
							
								 | 
							
							            torqueIter++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							        ss << std::endl;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    return ss.str();
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							// 1. 0 共 1 字节: 制式
 | 
						
						
						
						
							 | 
							
								 | 
							
							// 2. 1-10 共 10 字节: 扳手名称
 | 
						
						
						
						
							 | 
							
								 | 
							
							// 3. 11 共 1 字节: 直径数量
 | 
						
						
						
						
							 | 
							
								 | 
							
							// 4. 12-21 共10字节:直径名称
 | 
						
						
						
						
							 | 
							
								 | 
							
							// 5. 重复4
 | 
						
						
						
						
							 | 
							
								 | 
							
							// 6. 22 共 1 字节:等级数量
 | 
						
						
						
						
							 | 
							
								 | 
							
							// 7. 23-32 共10字节:等级名称
 | 
						
						
						
						
							 | 
							
								 | 
							
							// 8. 4 共4字节: 扭矩
 | 
						
						
						
						
							 | 
							
								 | 
							
							// 9. 重复 8
 | 
						
						
						
						
							 | 
							
								 | 
							
							std::string BoltModeStructData::toByteStr()
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    std::string s;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    // 名称
 | 
						
						
						
						
							 | 
							
								 | 
							
							    char name[11];
 | 
						
						
						
						
							 | 
							
								 | 
							
							    memset(name, 0, sizeof(name));
 | 
						
						
						
						
							 | 
							
								 | 
							
							    memcpy(name, m_data->name.c_str(), m_data->name.length() <= 10 ? m_data->name.length() : 10);
 | 
						
						
						
						
							 | 
							
								 | 
							
							    name[10] = '\0';
 | 
						
						
						
						
							 | 
							
								 | 
							
							    s.append(name, 10);
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    for(unsigned char i=0; i<2; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        // 制式
 | 
						
						
						
						
							 | 
							
								 | 
							
							        //s.append(Utils::charToByteStr(m_data->format));
 | 
						
						
						
						
							 | 
							
								 | 
							
							        s.append(Utils::charToByteStr(i));
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        // 螺栓直径数量
 | 
						
						
						
						
							 | 
							
								 | 
							
							        unsigned char diameterCount = m_data->format[i].diameterList.size();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        s.append(Utils::charToByteStr(diameterCount));
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::list<std::string>::iterator diameterIter = m_data->format[i].diameterList.begin();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        while(diameterIter != m_data->format[i].diameterList.end())
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            char diameter[11];
 | 
						
						
						
						
							 | 
							
								 | 
							
							            memset(diameter, 0, sizeof(diameter));
 | 
						
						
						
						
							 | 
							
								 | 
							
							            memcpy(diameter, (*diameterIter).c_str(), (*diameterIter).length() <= 10 ? (*diameterIter).length() : 10);
 | 
						
						
						
						
							 | 
							
								 | 
							
							            diameter[10] = '\0';
 | 
						
						
						
						
							 | 
							
								 | 
							
							            s.append(diameter, 10);
 | 
						
						
						
						
							 | 
							
								 | 
							
							            diameterIter++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        // 螺栓等级数量
 | 
						
						
						
						
							 | 
							
								 | 
							
							        unsigned char typeCount = m_data->format[i].typeList.size();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        s.append(Utils::charToByteStr(typeCount));
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::list<std::string>::iterator typeIter = m_data->format[i].typeList.begin();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        while(typeIter != m_data->format[i].typeList.end())
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            char type[11];
 | 
						
						
						
						
							 | 
							
								 | 
							
							            memset(type, 0, sizeof(type));
 | 
						
						
						
						
							 | 
							
								 | 
							
							            memcpy(type, (*typeIter).c_str(), (*typeIter).length() <= 10 ? (*typeIter).length() : 10);
 | 
						
						
						
						
							 | 
							
								 | 
							
							            type[10] = '\0';
 | 
						
						
						
						
							 | 
							
								 | 
							
							            s.append(type, 10);
 | 
						
						
						
						
							 | 
							
								 | 
							
							            typeIter++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        // 扭矩
 | 
						
						
						
						
							 | 
							
								 | 
							
							        // 检查扭矩数量是否正确,如果缺少,后续补0,如果有多,调整数量
 | 
						
						
						
						
							 | 
							
								 | 
							
							        int torqueCount = m_data->format[i].torqueList.size();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        if(torqueCount < diameterCount * typeCount)
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            for(int i=torqueCount; i<diameterCount * typeCount; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							            {
 | 
						
						
						
						
							 | 
							
								 | 
							
							                m_data->format[i].torqueList.push_back(0);
 | 
						
						
						
						
							 | 
							
								 | 
							
							            }
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							        torqueCount = diameterCount * typeCount;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        //s.append(Utils::charToByteStr(torqueCount));  -- 协议中无扭矩数量
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::list<int>::iterator torqueIter = m_data->format[i].torqueList.begin();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        int nCount = 0;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        while(torqueIter != m_data->format[i].torqueList.end())
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            int torque = *torqueIter;
 | 
						
						
						
						
							 | 
							
								 | 
							
							            s.append(Utils::intToByteStr(torque));
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							            nCount++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							            if(nCount >= torqueCount)
 | 
						
						
						
						
							 | 
							
								 | 
							
							            {
 | 
						
						
						
						
							 | 
							
								 | 
							
							                break;
 | 
						
						
						
						
							 | 
							
								 | 
							
							            }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							            torqueIter++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    return s;
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							std::string BoltModeStructData::toHexStr()
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    std::string s = toByteStr();
 | 
						
						
						
						
							 | 
							
								 | 
							
							    return Utils::strToHexStr(s);
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							bool BoltModeStructData::fromByteStr(std::string str)
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    if(str.length() < 13)   // 名称10,制式1,直径数量1,型号数量1,。。。制式1,直径数量1,型号数量1
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        return false;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    unsigned int pos = 0;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    // name
 | 
						
						
						
						
							 | 
							
								 | 
							
							    m_data->name = str.substr(pos, 10);
 | 
						
						
						
						
							 | 
							
								 | 
							
							    pos += 10;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    for(int i=0; i<2; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        // format
 | 
						
						
						
						
							 | 
							
								 | 
							
							        //m_data->format = str.at(pos);
 | 
						
						
						
						
							 | 
							
								 | 
							
							        unsigned char format = str.at(pos);
 | 
						
						
						
						
							 | 
							
								 | 
							
							        pos++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        // diameter
 | 
						
						
						
						
							 | 
							
								 | 
							
							        unsigned char diameterCount = str.at(pos);
 | 
						
						
						
						
							 | 
							
								 | 
							
							        pos++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        for(int i = 0; i<diameterCount; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            std::string diameter = str.substr(pos, 10);
 | 
						
						
						
						
							 | 
							
								 | 
							
							            pos += 10;
 | 
						
						
						
						
							 | 
							
								 | 
							
							            m_data->format[i].diameterList.push_back(diameter);
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        // type
 | 
						
						
						
						
							 | 
							
								 | 
							
							        unsigned char typeCount = str.at(pos);
 | 
						
						
						
						
							 | 
							
								 | 
							
							        pos++;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        for(int i = 0; i<typeCount; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            std::string type = str.substr(pos, 10);
 | 
						
						
						
						
							 | 
							
								 | 
							
							            pos += 10;
 | 
						
						
						
						
							 | 
							
								 | 
							
							            m_data->format[i].typeList.push_back(type);
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        // torque
 | 
						
						
						
						
							 | 
							
								 | 
							
							        for(int i=0; i<diameterCount * typeCount; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							        {
 | 
						
						
						
						
							 | 
							
								 | 
							
							            std::string torque = str.substr(pos, 4);
 | 
						
						
						
						
							 | 
							
								 | 
							
							            pos += 4;
 | 
						
						
						
						
							 | 
							
								 | 
							
							            m_data->format[i].torqueList.push_back(Utils::byteStrToInt(torque));
 | 
						
						
						
						
							 | 
							
								 | 
							
							        }
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							    return true;
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							void BoltModeStructData::setData(BoltModeParam_t* data)
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    if(m_data != nullptr)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        delete m_data;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data = nullptr;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							    m_data = data;
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							void BoltModeStructData::copyData(BoltModeParam_t* data)
 | 
						
						
						
						
							 | 
							
								 | 
							
							{
 | 
						
						
						
						
							 | 
							
								 | 
							
							    if(m_data == nullptr)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data = new BoltModeParam_t();
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							    m_data->name = data->name;
 | 
						
						
						
						
							 | 
							
								 | 
							
							    for(int i=0; i<2; i++)
 | 
						
						
						
						
							 | 
							
								 | 
							
							    {
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data->format[i].diameterList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data->format[i].typeList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							        m_data->format[i].torqueList.clear();
 | 
						
						
						
						
							 | 
							
								 | 
							
							
 | 
						
						
						
						
							 | 
							
								 | 
							
							        //m_data->format = data->format;
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::copy(data->format[i].diameterList.begin(), data->format[i].diameterList.end(), std::back_inserter(m_data->format[i].diameterList));
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::copy(data->format[i].typeList.begin(), data->format[i].typeList.end(), std::back_inserter(m_data->format[i].typeList));
 | 
						
						
						
						
							 | 
							
								 | 
							
							        std::copy(data->format[i].torqueList.begin(), data->format[i].torqueList.end(), std::back_inserter(m_data->format[i].torqueList));
 | 
						
						
						
						
							 | 
							
								 | 
							
							    }
 | 
						
						
						
						
							 | 
							
								 | 
							
							}
 |