#include "stdafx.h" #include "CBonder.h" namespace SERVO { CBonder::CBonder() : CEquipment() { m_nIndex = 0; } CBonder::~CBonder() { } const char* CBonder::getClassName() { static char* pszName = "CBonder"; return pszName; } void CBonder::init() { CEquipment::init(); } void CBonder::term() { CEquipment::term(); } // ±ØÐëҪʵÏÖµÄÐ麯Êý£¬Ôڴ˳õʼ»¯PinÁбí void CBonder::initPins() { // ¼ÓÈëPin³õʼ»¯´úÂë LOGI("initPins"); addPin(SERVO::PinType::INPUT, _T("In1")); addPin(SERVO::PinType::INPUT, _T("In2")); addPin(SERVO::PinType::OUTPUT, _T("Out")); } void CBonder::initSteps() { CEquipment::initSteps(); { // eq mode CEqModeStep* pStep = new CEqModeStep(); pStep->setName(STEP_MODE); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x340 : 0x640); pStep->setModeDev(m_nIndex == 0 ? 0x9d7d : 0xdd7d); if (addStep(STEP_ID_EQMODE_CHANGED, pStep) != 0) { delete pStep; } } { // eq status CEqStatusStep* pStep = new CEqStatusStep(); pStep->setName(STEP_STATUS); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x341 : 0x641); pStep->setStatusDev(m_nIndex == 0 ? 0x9d59 : 0xdd59); if (addStep(STEP_ID_EQSTATUS_CHANGED, pStep) != 0) { delete pStep; } } { // Eq Alarm static char* pszName[] = { STEP_ALARM_BLOCK1, STEP_ALARM_BLOCK2, STEP_ALARM_BLOCK3, STEP_ALARM_BLOCK4, STEP_ALARM_BLOCK5 }; static int dev[2][5] = { { 0x9f0e , 0x9f3b, 0x9f68, 0x9f95, 0x9fc2 }, { 0xdf0e , 0xdf3b, 0xdf68, 0xdf95, 0xdfc2 } }; static int writeSignalDev[2][5] = { { 0x342, 0x343, 0x344, 0x345, 0x346 }, { 0x642, 0x643, 0x644, 0x645, 0x646 } }; static int addr[] = { STEP_ID_EQALARM1, STEP_ID_EQALARM2, STEP_ID_EQALARM3, STEP_ID_EQALARM4, STEP_ID_EQALARM5 }; for (int i = 0; i < 5; i++) { CEqAlarmStep* pStep = new CEqAlarmStep(); pStep->setName(pszName[i]); pStep->setWriteSignalDev(writeSignalDev[m_nIndex][i]); pStep->setAlarmDev(dev[m_nIndex][i]); if (addStep(addr[i], pStep) != 0) { delete pStep; } } } { CEqReadStep* pStep = new CEqReadStep((m_nIndex == 0 ? 0xab55 : 0xeb55), 538 * 2, [&](void* pFrom, int code, const char* pszData, size_t size) -> int { if (code == ROK && pszData != nullptr && size > 0) { decodeProcessDataReport((CStep*)pFrom, pszData, size); } return -1; }); pStep->setName(STEP_PROCESS); pStep->setWriteSignalDev((m_nIndex == 0 ? 0x347 : 0x647)); if (addStep(STEP_ID_PROCESS_DATA_REPORT, pStep) != 0) { delete pStep; } } { // eq cim mode change CEqCimModeChangeStep* pStep = new CEqCimModeChangeStep(); pStep->setName(STEP_CIM_MODE_CHANGE); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x360 : 0x660); pStep->setCimModeDev(m_nIndex == 0 ? 0x965 : 0x12b5); if (addStep(STEP_ID_CIMMODE_CHANGED_CMD_REPLY, pStep) != 0) { delete pStep; } } { // eq cim message cmd CEqCimMessageCmdStep* pStep = new CEqCimMessageCmdStep(); pStep->setName(STEP_CIM_MESSAGE_CMD); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x361 : 0x661); pStep->setCimMessageDev(m_nIndex == 0 ? 0x950 : 0x12a0); if (addStep(STEP_ID_CIM_MSG_SET_CMD_REPLY, pStep) != 0) { delete pStep; } } { // eq current recipe change CEqCurrentRecipeChangeStep* pStep = new CEqCurrentRecipeChangeStep(); pStep->setName(STEP_EQ_RURRENT_RECIPE_CHANGE); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x348 : 0x648); pStep->setDataDev(m_nIndex == 0 ? 0xa850 : 0xe850); if (addStep(STEP_ID_CURRENT_RECIPE_CHANGE_REPORT, pStep) != 0) { delete pStep; } } { // CIM Message Confirm // Òª½«int32µÄÖµ²ð·ÖΪÁ½¸öshort, ·Ö±ðΪmsg idºÍpanel id // 65538, 2Ϊmsg id, 1Ϊpanel id CEqReadIntStep* pStep = new CEqReadIntStep(__INT32, m_nIndex == 0 ? 0x9d80 : 0xdd80); pStep->setName(STEP_EQ_CIM_MESSAGE_CONFIRM); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x349 : 0x649); if (addStep(STEP_ID_CIM_MSG_CONFIRM_REPORT, pStep) != 0) { delete pStep; } } { CEqCimMessageClearStep* pStep = new CEqCimMessageClearStep(); pStep->setName(STEP_CIM_MESSAGE_CLEAR); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x362 : 0x662); pStep->setClearCimMessageDev(m_nIndex == 0 ? 0x963 : 0x12b3); if (addStep(STEP_ID_CIM_MSG_CLEAR_CMD_REPLY, pStep) != 0) { delete pStep; } } { CEqDateTimeSetCmdStep* pStep = new CEqDateTimeSetCmdStep(); pStep->setName(STEP_DATETIME_SET_CMD); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x363 : 0x663); pStep->setDateTimeDev(m_nIndex == 0 ? 0x966 : 0x12b6); if (addStep(STEP_ID_DATETIME_SET_CMD_REPLY, pStep) != 0) { delete pStep; } } { CEqModeChangeStep* pStep = new CEqModeChangeStep(); pStep->setName(STEP_EQ_MODE_CHANGE); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x365 : 0x665); pStep->setEqModeDev(m_nIndex == 0 ? 0x96E : 0x12be); if (addStep(STEP_ID_EQMODE_CHANGE_CMD_REPLY, pStep) != 0) { delete pStep; } } { // ÇëÇóÖ÷Åä·½ÁбíµÄstep CEqWriteStep* pStep = new CEqWriteStep(); pStep->setName(STEP_EQ_MASTER_RECIPE_LIST_REQ); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x366 : 0x666); pStep->setDataDev(m_nIndex == 0 ? 0x125a : 0x1baa); if (addStep(STEP_ID_MASTER_RECIPE_LIST_CMD_REPLY, pStep) != 0) { delete pStep; } } { // master recipe list report CEqReadStep* pStep = new CEqReadStep(m_nIndex == 0 ? 0xa955 : 0xe955, 255 * 2, [&](void* pFrom, int code, const char* pszData, size_t size) -> int { CEqReadStep* pTmpStep = (CEqReadStep*)pFrom; short ret = MRLRC_OK; if (code == ROK && pszData != nullptr && size > 0) { // ´Ë´¦½âÊÍÅä·½Êý¾Ý ret = decodeRecipeListReport(pszData, size); } pTmpStep->setReturnCode(ret); return -1; }); pStep->setName(STEP_EQ_MASTER_RECIPE_LIST); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x34b : 0x64b); pStep->setReturnDev(m_nIndex == 0 ? 0x126d : 0x1bbd); if (addStep(STEP_ID_MASTER_RECIPE_LIST_REPORT, pStep) != 0) { delete pStep; } } { // ÇëÇóÅä·½²ÎÊý CEqWriteStep* pStep = new CEqWriteStep(); pStep->setName(STEP_EQ_RECIPE_PARAMETER_REQ); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x367 : 0x667); pStep->setDataDev(m_nIndex == 0 ? 0x125b : 0x1bab); if (addStep(STEP_ID_RECIPE_PARAMETER_CMD_REPLY, pStep) != 0) { delete pStep; } } { // recipe parameter report CEqReadStep* pStep = new CEqReadStep(m_nIndex == 0 ? 0xaa54 : 0xea54, 257 * 2, [&, pStep](void* pFrom, int code, const char* pszData, size_t size) -> int { CEqReadStep* pTmpStep = (CEqReadStep*)pFrom; short ret = MRLRC_OK; if (code == ROK && pszData != nullptr && size > 0) { // ´Ë´¦½âÊÍÅä·½Êý¾Ý ret = decodeRecipeParameterReport(pszData, size); } pTmpStep->setReturnCode(ret); return -1; }); pStep->setName(STEP_EQ_RECIPE_PARAMETER); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x34c : 0x64c); pStep->setReturnDev(m_nIndex == 0 ? 0x126c : 0x1bbc); if (addStep(STEP_ID_RECIPE_PARAMETER_REPORT, pStep) != 0) { delete pStep; } } // ʹÓÃCEqReadStepÌæ»»CEqJobEventStep { // Received Job Report Upstream #1~9 char szBuffer[256]; for (int i = 0; i < 2; i++) { CEqReadStep* pStep = new CEqReadStep((m_nIndex == 0 ? 0x8c90 : 0xcc90) + 320 * i, 320 * 2, [&](void* pFrom, int code, const char* pszData, size_t size) -> int { if (code == ROK && pszData != nullptr && size > 0) { int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port"); if (port > 0) { decodeReceivedJobReport((CStep*)pFrom, port, pszData, size); } } return -1; }); sprintf_s(szBuffer, "%s%d", STEP_EQ_RECEIVED_JOB_UPSn, i + 1); pStep->setName(szBuffer); pStep->setProp("Port", (void*)(__int64)(i + 1)); pStep->setWriteSignalDev((m_nIndex == 0 ? 0x300 : 0x600) + i); if (addStep(STEP_ID_RECIVE_JOB_UPS1 + i, pStep) != 0) { delete pStep; } } } { // Sent Out Job Report Downstream #1~9 char szBuffer[256]; for (int i = 0; i < 2; i++) { CEqReadStep* pStep = new CEqReadStep((m_nIndex == 0 ? 0x8000 : 0xc000) + 320 * i, 320 * 2, [&](void* pFrom, int code, const char* pszData, size_t size) -> int { if (code == ROK && pszData != nullptr && size > 0) { int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port"); if (port > 0) { decodeSentOutJobReport((CStep*)pFrom, port, pszData, size); } } return -1; }); sprintf_s(szBuffer, "%s%d", STEP_EQ_SENT_OUT_JOB_DOWNSn, i + 1); pStep->setName(szBuffer); pStep->setProp("Port", (void*)(__int64)(i + 1)); pStep->setWriteSignalDev((m_nIndex == 0 ? 0x30a : 0x60a) + i); if (addStep(STEP_ID_SENT_OUT_JOB_DOWNS1 + i, pStep) != 0) { delete pStep; } } } { // Fetched Out Job Report #1~15 char szBuffer[256]; for (int i = 0; i < 2; i++) { CEqReadStep* pStep = new CEqReadStep((m_nIndex == 0 ? 0x9c31 : 0xdc31) + 18 * i, 18 * 2, [&](void* pFrom, int code, const char* pszData, size_t size) -> int { if (code == ROK && pszData != nullptr && size > 0) { int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port"); if (port > 0) { decodeFetchedOutJobReport((CStep*)pFrom, port, pszData, size); } } return -1; }); sprintf_s(szBuffer, "%s%d", STEP_EQ_FETCHED_OUT_JOBn, i + 1); pStep->setName(szBuffer); pStep->setProp("Port", (void*)(__int64)(i + 1)); pStep->setWriteSignalDev((m_nIndex == 0 ? 0x323 : 0x623) + i); if (addStep(STEP_ID_FETCHED_OUT_JOB_REPORT1 + i, pStep) != 0) { delete pStep; } } } { // Stored Job Report #1~15 char szBuffer[256]; for (int i = 0; i < 2; i++) { CEqReadStep* pStep = new CEqReadStep((m_nIndex == 0 ? 0x9b23 : 0xdb23) + 18 * i, 18 * 2, [&](void* pFrom, int code, const char* pszData, size_t size) -> int { if (code == ROK && pszData != nullptr && size > 0) { int port = (int)(__int64)((CEqReadStep*)pFrom)->getProp("Port"); if (port > 0) { decodeStoredJobReport((CStep*)pFrom, port, pszData, size); } } return -1; }); sprintf_s(szBuffer, "%s%d", STEP_EQ_STORED_JOBn, i + 1); pStep->setName(szBuffer); pStep->setProp("Port", (void*)(__int64)(i + 1)); pStep->setWriteSignalDev((m_nIndex == 0 ? 0x314 : 0x614) + i); if (addStep(STEP_ID_STORE_JOB_REPORT1 + i, pStep) != 0) { delete pStep; } } } { // Indexer Operation Mode Change CEqWriteStep* pStep = new CEqWriteStep(); pStep->setName(STEP_EQ_IN_OP_MODE_CHANGE); pStep->setWriteSignalDev(0x370); pStep->setDataDev(0x923); pStep->setRetDataDev(0xa00e, 2); if (addStep(STEP_ID_IN_OP_CMD_REPLY, pStep) != 0) { delete pStep; } } // FAC Data Report addFacDataReportStep(m_nIndex == 0 ? 0xA589 : 0xE589, m_nIndex == 0 ? 0x34d : 0x64d, 1); /* { CEqReadStep* pStep = new CEqReadStep(m_nIndex == 0 ? 0xA589 : 0xE589, 133 * 2, [&](void* pFrom, int code, const char* pszData, size_t size) -> int { if (code == ROK && pszData != nullptr && size > 0) { decodeFacDataReport((CStep*)pFrom, pszData, size); } return -1; }); pStep->setName(STEP_EQ_FAC_DATA_REPORT); pStep->setProp("Port", (void*)1); pStep->setWriteSignalDev(0x34d); if (addStep(STEP_ID_FAC_DATA_REPORT, pStep) != 0) { delete pStep; } } */ // process start/end report { CEqReadStep* pStep = new CEqReadStep(m_nIndex == 0 ? 0x9D3F : 0xDD3F, 13 * 2, [&](void* pFrom, int code, const char* pszData, size_t size) -> int { if (code == ROK && pszData != nullptr && size > 0) { decodeJobProcessStartReport((CStep*)pFrom, pszData, size); } return -1; }); pStep->setName(STEP_EQ_JOB_PROCESS_START_REPORT); pStep->setProp("Port", (void*)1); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x333 : 0x633); if (addStep(STEP_ID_JOB_PROCESS_START_REPORT, pStep) != 0) { delete pStep; } } { CEqReadStep* pStep = new CEqReadStep(m_nIndex == 0 ? 0x9D4C : 0xDD4C, 13 * 2, [&](void* pFrom, int code, const char* pszData, size_t size) -> int { if (code == ROK && pszData != nullptr && size > 0) { decodeJobProcessEndReport((CStep*)pFrom, pszData, size); } return -1; }); pStep->setName(STEP_EQ_JOB_PROCESS_END_REPORT); pStep->setProp("Port", (void*)1); pStep->setWriteSignalDev(m_nIndex == 0 ? 0x334 : 0x634); if (addStep(STEP_ID_JOB_PROCESS_END_REPORT, pStep) != 0) { delete pStep; } } } // ±ØÐëҪʵÏÖµÄÐ麯Êý£¬Ôڴ˳õʼ»¯SlotÐÅÏ¢ void CBonder::initSlots() { m_slot[0].enable(); m_slot[0].setPosition(m_nID); m_slot[0].setNo(1); m_slot[0].setName("Slot 1(G2)"); m_slot[0].setLinkSignalPath(0); m_slot[0].setType(MaterialsType::G2); m_slot[1].enable(); m_slot[1].setPosition(m_nID); m_slot[1].setNo(2); m_slot[1].setName("Slot 2(G1)"); m_slot[1].setLinkSignalPath(1); m_slot[1].setType(MaterialsType::G1); } void CBonder::onTimer(UINT nTimerid) { CEquipment::onTimer(nTimerid); // test /* static int i[2] = { 0, 0 }; i[m_nIndex]++; if (m_nIndex == 0 && i[m_nIndex] % 20 == 0) { if (m_listener.onAlarm != nullptr) { m_listener.onAlarm(this, 1, i[m_nIndex], getID(), 1); } } */ } void CBonder::serialize(CArchive& ar) { CEquipment::serialize(ar); } void CBonder::getAttributeVector(CAttributeVector& attrubutes) { __super::getAttributeVector(attrubutes); } int CBonder::recvIntent(CPin* pPin, CIntent* pIntent) { return __super::recvIntent(pPin, pIntent); } void CBonder::setIndex(unsigned int index) { m_nIndex = index; } unsigned int CBonder::getIndex() { return m_nIndex; } BOOL CBonder::hasBondGlass() { CGlass* pGlass = (CGlass*)m_slot[1].getContext(); if (pGlass == nullptr) return FALSE; CGlass* pBuddy = pGlass->getBuddy(); return pBuddy != nullptr; } BOOL CBonder::hasG2Glass() { CGlass* pGlass = (CGlass*)m_slot[0].getContext(); return (pGlass != nullptr); } int CBonder::onProcessData(CProcessData* pProcessData) { CEquipment::onProcessData(pProcessData); return 0; } int CBonder::onProcessStateChanged(int slotNo, PROCESS_STATE state) { CEquipment::onProcessStateChanged(slotNo, state); if (state == PROCESS_STATE::Complete) { // ¼ì²éÊý¾Ý£¬µ±Ç°Á½Æ¬²£Á§£¬Ò»Æ¬ÎªG1, һƬΪG2, ÇÒpProcessDataÖеÄidÄÜÆ¥ÅäG1»òG2 Lock(); CGlass* pGlass2 = getGlassFromSlot(1); CGlass* pGlass1 = getGlassFromSlot(2); if (pGlass1 == nullptr || pGlass2 == nullptr) { LOGE("onProcessData,´íÎó!²»Âú×ãÁ½Æ¬²£Á§ÇÒ·Ö±ðΪG1ÓëG2µÄÌõ¼þ£¬Çë¼ì²éÊý¾ÝÊÇ·ñÕýÈ·!", m_strName.c_str()); Unlock(); return -1; } if (pGlass1->getBuddy() != nullptr) { LOGE("onProcessData,´íÎó!²£Á§½ÏÔçǰÒѱ»°ó¶¨£¬Çë¼ì²éÊý¾ÝÊÇ·ñÕýÈ·!", m_strName.c_str()); Unlock(); return -1; } if (pGlass1->getType() != MaterialsType::G1 || pGlass2->getType() != MaterialsType::G2) { LOGE("onProcessData,´íÎó!Á½Æ¬²£Á§Î´Æ¥Å䣬±ØÐë·Ö±ðΪG1ºÍG2ÀàÐÍ£¬Çë¼ì²éÊý¾ÝÊÇ·ñÕýÈ·!", m_strName.c_str()); Unlock(); return -1; } pGlass1->setBuddy(pGlass2); getSlot(0)->setContext(nullptr); LOGE("onProcessStateChanged,%sºÍ%sÒÑÌùºÏ!", m_strName.c_str(), pGlass1->getID().c_str(), pGlass2->getID().c_str()); Unlock(); } return 0; } int CBonder::getIndexerOperationModeBaseValue() { return m_nIndex == 0 ? 15000 : 20000; } int CBonder::parsingParams(const char* pszData, size_t size, std::vector& params) { ASSERT(pszData); if (size < 250) return 0; int i = 0, v; // 1.УÕý¶ÔλÑÓʱ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("УÕý¶ÔλÑÓʱ", "", this->getName().c_str(), v * 0.01f)); i += 2; // 2.±£Ñ¹Ê±¼ä v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("±£Ñ¹Ê±¼ä", "", this->getName().c_str(), v * 0.01f)); i += 2; // 3.Ç»Ì寯տ¿ÕÑÓʱ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("Ç»Ì寯տ¿ÕÑÓʱ", "", this->getName().c_str(), v * 0.01f)); i += 2; // 4.Ç»Ìå·Ö×Ó±ÃÆô¶¯ÑÓʱ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("Ç»Ìå·Ö×Ó±ÃÆô¶¯ÑÓʱ", "", this->getName().c_str(), v * 0.1f)); i += 2; // 5.Ç»ÌåÌù¸½³éÕæ¿ÕÑÓʱ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("Ç»ÌåÌù¸½³éÕæ¿ÕÑÓʱ", "", this->getName().c_str(), v * 0.1f)); i += 2; // 6.¼ÓÈȵȴýÑÓʱ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("¼ÓÈȵȴýÑÓʱ", "", this->getName().c_str(), v * 0.1f)); i += 2; // 7.ÆøÄÒѹÁ¦É趨 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÆøÄÒѹÁ¦É趨", "", this->getName().c_str(), v * 0.001f)); i += 4; // 8.ÆøÄÒ¼ÓѹËÙÂÊ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÆøÄÒ¼ÓѹËÙÂÊ", "", this->getName().c_str(), v * 0.001f)); i += 4; // 9.ÆøÄÒйѹËÙÂÊ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÆøÄÒйѹËÙÂÊ", "", this->getName().c_str(), v * 0.001f)); i += 4; // 10.Ìù¸½Ñ¹Á¦ÉÏÏÞ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("Ìù¸½Ñ¹Á¦ÉÏÏÞ", "", this->getName().c_str(), v * 0.1f)); i += 4; // 11.ZÖáת¾ØËÙ¶ÈÉ趨 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÉÏÇ»ZÖáת¾ØËÙ¶ÈÉ趨", "", this->getName().c_str(), v * 0.001f)); i += 4; // 12.ÉÏǻζÈÉ趨 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÉÏǻζÈÉ趨", "", this->getName().c_str(), v * 0.1f)); i += 2; // 13.ÏÂǻζÈÉ趨 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÏÂǻζÈÉ趨", "", this->getName().c_str(), v * 0.1f)); i += 2; // 14.ÉÏÇ»ZÖáÔ¤ÌùºÏλËÙ¶È v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÉÏÇ»ZÖáÔ¤ÌùºÏλËÙ¶È", "", this->getName().c_str(), v * 0.001f)); i += 4; // 15.ÉÏÇ»ZÖáÌù¸½Î»ËÙ¶È v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÉÏÇ»ZÖáÌù¸½Î»ËÙ¶È", "", this->getName().c_str(), v * 0.001f)); i += 4; // 16.ÉÏÇ»ZÉÏÇ»¼ÓÈÈλ¼ä¾à v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÉÏÇ»ZÉÏÇ»¼ÓÈÈλ¼ä¾à", "", this->getName().c_str(), v * 0.001f)); i += 4; // 17.ÉÏÇ»Ìù¸½Î»Ñ¹ÈëÁ¿ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÉÏÇ»Ìù¸½Î»Ñ¹ÈëÁ¿", "", this->getName().c_str(), v * 0.001f)); i += 4; // 18.ÉÏÇ»ZÖáÆÆÕæ¿Õ¾àÀë v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÉÏÇ»ZÖáÆÆÕæ¿Õ¾àÀë", "", this->getName().c_str(), v * 0.001f)); i += 4; // 19.϶¥PinÆÆÕæ¿Õ¾àÀë v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("϶¥PinÆÆÕæ¿Õ¾àÀë", "", this->getName().c_str(), v * 0.001f)); i += 4; // 20.϶¥Pin¼ÓÈÈλ¼ä¾à v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("϶¥Pin¼ÓÈÈλ¼ä¾à", "", this->getName().c_str(), v * 0.001f)); i += 4; // 21.Ç»ÌåÕæ¿Õ±ÃÕæ¿Õ¹æÉ趨ֵ params.push_back(CParam("Ç»ÌåÕæ¿Õ±ÃÕæ¿Õ¹æÉ趨ֵ", "", this->getName().c_str(), (double)toFloat(&pszData[i]))); i += 4; // 22.Ç»Ìå·Ö×ӱõ½´ïÉ趨ֵ params.push_back(CParam("Ç»Ìå·Ö×ӱõ½´ïÉ趨ֵ", "", this->getName().c_str(), (double)toFloat(&pszData[i]))); i += 4; return (int)params.size(); } int CBonder::parsingProcessData(const char* pszData, size_t size, std::vector& params) { return parsingParams(pszData, size, params); } int CBonder::parsingSVData(const char* pszData, size_t size, std::vector& params) { /* 1 ¹¤ÒÕÔËÐв½Öè 1Word 123456 2 ÆøÄÒѹÁ¦µ±Ç° 2Word 12345.6 3 ÉÏǻѹÁ¦ºÏ¼Æ 1Word 1234.56 4 ¹ÜµÀÕæ¿Õ¹æÖµ FLOAT 123.456 5 Ç»ÌåÕæ¿Õ¹æÖµ FLOAT 123.456 6 ÉÏǻζÈ1 1Word 12345.6 7 ÉÏǻζÈ2 1Word 12345.6 8 ÉÏǻζÈ3 1Word 12345.6 9 ÉÏǻζÈ4 1Word 12345.6 10 ÉÏǻζÈ5 1Word 12345.6 11 ÉÏǻζÈ6 1Word 12345.6 12 ÏÂǻζÈ1 1Word 12345.6 13 ÏÂǻζÈ2 1Word 12345.6 14 ÏÂǻζÈ3 1Word 12345.6 15 ÏÂǻζÈ4 1Word 12345.6 16 ÏÂǻζÈ5 1Word 12345.6 17 ÏÂǻζÈ6 1Word 12345.6 18 ѹºÏÊ£Óàʱ¼ä 1Word 1234.56 */ ASSERT(pszData); if (size < 125) return 0; int i = 0, v; // 1.¹¤ÒÕÔËÐв½Öè v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("¹¤ÒÕÔËÐв½Öè", "", this->getName().c_str(), v)); i += 2; // 2.ÆøÄÒѹÁ¦µ±Ç° v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8 | (pszData[i + 2] & 0xff) << 16 | (pszData[i + 3] & 0xff) << 24; params.push_back(CParam("ÆøÄÒѹÁ¦µ±Ç°", "", this->getName().c_str(), v * 0.1f)); i += 4; // 3.ÉÏǻѹÁ¦ºÏ¼Æ v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÉÏǻѹÁ¦ºÏ¼Æ", "", this->getName().c_str(), ((short)v) * 0.01f)); i += 2; // 4.¹ÜµÀÕæ¿Õ¹æÖµ params.push_back(CParam("¹ÜµÀÕæ¿Õ¹æÖµ", "", this->getName().c_str(), (double)toFloat(&pszData[i]))); i += 4; // 5.Ç»ÌåÕæ¿Õ¹æÖµ params.push_back(CParam("Ç»ÌåÕæ¿Õ¹æÖµ", "", this->getName().c_str(), (double)toFloat(&pszData[i]))); i += 4; // 6.ÉÏǻζÈ1 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÉÏǻζÈ1", "", this->getName().c_str(), v * 0.1f)); i += 2; // 7.ÉÏǻζÈ2 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÉÏǻζÈ2", "", this->getName().c_str(), v * 0.1f)); i += 2; // 8.ÉÏǻζÈ3 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÉÏǻζÈ3", "", this->getName().c_str(), v * 0.1f)); i += 2; // 9.ÉÏǻζÈ4 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÉÏǻζÈ4", "", this->getName().c_str(), v * 0.1f)); i += 2; // 10.ÉÏǻζÈ5 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÉÏǻζÈ5", "", this->getName().c_str(), v * 0.1f)); i += 2; // 11.ÉÏǻζÈ6 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÉÏǻζÈ6", "", this->getName().c_str(), v * 0.1f)); i += 2; // 12.ÏÂǻζÈ1 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÏÂǻζÈ1", "", this->getName().c_str(), v * 0.1f)); i += 2; // 13.ÏÂǻζÈ2 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÏÂǻζÈ2", "", this->getName().c_str(), v * 0.1f)); i += 2; // 14.ÏÂǻζÈ3 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÏÂǻζÈ3", "", this->getName().c_str(), v * 0.1f)); i += 2; // 15.ÏÂǻζÈ4 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÏÂǻζÈ4", "", this->getName().c_str(), v * 0.1f)); i += 2; // 16.ÏÂǻζÈ5 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÏÂǻζÈ5", "", this->getName().c_str(), v * 0.1f)); i += 2; // 17.ÏÂǻζÈ6 v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ÏÂǻζÈ6", "", this->getName().c_str(), v * 0.1f)); i += 2; // 18.¼ÓÈÈÊ£Óàʱ¼ä v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("¼ÓÈÈÊ£Óàʱ¼ä", "", this->getName().c_str(), v * 0.01f)); i += 2; // 19.ѹºÏÊ£Óàʱ¼ä v = (pszData[i] & 0xff) | (pszData[i + 1] & 0xff) << 8; params.push_back(CParam("ѹºÏÊ£Óàʱ¼ä", "", this->getName().c_str(), v * 0.01f)); i += 2; return (int)params.size(); } }