DENSORobot / denso_cobotta_ros

denso_cobotta_ros’s documentation
https://densorobot.github.io/docs/denso_cobotta_ros/
GNU General Public License v2.0
14 stars 19 forks source link

How to use electric chuck in native C++? #22

Closed bndcyan10 closed 1 year ago

bndcyan10 commented 1 year ago

I am using the b-Cap Client library in native C++. I tried to operate COBOTTA's electric chuck with the code below, but it didn't work. crush. Please let me know where I am going wrong.

#include "/bcap_core/bCAPClient/bcap_client.h"  // b-cap client libarary header
...

bool CobottaController_HandMoveH()
{
    HRESULT hr;
    BSTR bstr;
    VARIANT vntParam;
    VARIANT vntReturn;
    VARIANT* pvntData;

    bstr = SysAllocString(L"HandMoveH");

    VariantInit(&vntParam);
    VariantInit(&vntReturn);

    vntParam.vt = (VT_VARIANT|VT_ARRAY);
    vntParam.parray = SafeArrayCreateVector(VT_VARIANT, 0, 3);
    SafeArrayAccessData(vntParam.parray, (void**)&pvntData);

    pvntData[0].vt = VT_R8;
    pvntData[0].dblVal = 25;  // force [N]
    pvntData[1].vt = VT_BOOL;
    pvntData[1].bVal = VARIANT_TRUE;    // TRUE : close FALSE : open
    pvntData[2].vt = VT_BSTR;
    pvntData[2].bstrVal = SysAllocString(L"DetectOn");  // option

    SafeArrayUnaccessData(vntParam.parray);

    hr = bCap_ControllerExecute(fd, hCtrl, bstr, vntParam, &vntReturn); // crush here

    sleep(2); // wait

    SysFreeString(bstr);
    VariantClear(&vntReturn);
    VariantClear(&vntParam);

    if ( SUCCEEDED(hr)) { return true; }
    else { return false; }

}

platfrom : windows11 compiler : MSVC 2022 community b-Cap Client Library : build to static library with CMake(MSVC)

furukawahiromi commented 1 year ago

Sorry, this repository is for COBOTTA OSS type. Your COBOTTA is Standard type.

Please email this issue with the error number and error message.