コード例 #1
0
//------------------------------------------------------------------------------
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)));
        }
    }
}
コード例 #2
0
ファイル: SdoDialog.cpp プロジェクト: chutao/openPOWERLINK_V2
//------------------------------------------------------------------------------
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;
    }
}