//------------------------------------------------------------------------------ void SdoDialog::userDefEvent(void* pUserArg_p) { tSdoComConHdl SdoComConHdl; tObdSize obdSize; tOplkError ret; obdSize = data.size(); if (pUserArg_p == readButton) { ret = oplk_readObject(&SdoComConHdl, targetNodeId, targetIndex, targetSubindex, data.data(), &obdSize, (tSdoType) sdoType, NULL); if (ret == kErrorApiTaskDeferred) { // SDO transfer started return; } else if (ret == kErrorOk) { // local OD access data.resize(obdSize); emit sigUpdateData("Successfully read from local OD"); } else { data.resize(0); emit sigUpdateData(QString("Error 0x%1: %2") .arg(ret, 0, 16) .arg(debugstr_getRetValStr(ret))); } } else if (pUserArg_p == writeButton) { ret = oplk_writeObject(&SdoComConHdl, targetNodeId, targetIndex, targetSubindex, data.data(), obdSize, (tSdoType) sdoType, NULL); if (ret == kErrorApiTaskDeferred) { // SDO transfer started return; } else if (ret == kErrorOk) { // local OD access data.resize(obdSize); emit sigUpdateData("Successfully written to local OD"); } else { data.resize(0); emit sigUpdateData(QString("Error 0x%1: %2") .arg(ret, 0, 16) .arg(debugstr_getRetValStr(ret))); } } }
//------------------------------------------------------------------------------ void SdoDialog::sdoFinished(tSdoComFinished sdoInfo_p) { switch (sdoInfo_p.sdoComConState) { case kSdoComTransferFinished: this->data.resize(sdoInfo_p.transferredBytes); emit sigUpdateData(QString("Successfully %1 data") .arg((sdoInfo_p.sdoAccessType == kSdoAccessTypeWrite ? "written" : "read"))); break; default: case kSdoComTransferRxAborted: case kSdoComTransferTxAborted: emit sigUpdateData(QString("0x%1 = %2") .arg(sdoInfo_p.abortCode, 8, 16, QLatin1Char('0')) .arg(debugstr_getAbortCodeStr(sdoInfo_p.abortCode))); break; case kSdoComTransferLowerLayerAbort: emit sigUpdateData(QString("Lower layer abort (timeout)")); break; } }