我正在尝试为SIU设备启用事件,如下所示:

    LPWFSRESULT lpWfsResult;
    WFSSIUENABLE commandData;
    commandData.fwSensors[WFS_SIU_OPERATORSWITCH] = WFS_SIU_ENABLE_EVENT;
    commandData.fwIndicators[WFS_SIU_OPENCLOSE] = WFS_SIU_ENABLE_EVENT;

    HRESULT hResult = WFSExecute(hService, WFS_CMD_SIU_ENABLE_EVENTS, &commandData, 10000, &lpWfsResult);
    cout << "Events enabled?:" << hResult << endl;
    WFSFreeResult(lpWfsResult);


这在其中一个测试ATM中按预期方式工作(hResult = 0)。
但是,在另一个测试ATM上,这将返回WFS_ERR_SIU_INVALID_PORT(-801)。

根据XFS doc,这意味着:



我不太了解文档的描述。有人可以解释为什么返回此状态以及应该怎么做吗?

谢谢。

最佳答案

我认为您需要在WFSExecute之前初始化WFSSIUENABLE结构。您仅在设置运算符(operator)开关和打开/关闭的值,其他设置如何?尝试做一个memset来将所有其他设置为零(WFS_SIU_NO_CHANGE):

memset( commandData, 0, sizeof( WFSSIUENABLE));

另一件事是要知道该自动柜员机中有哪些端口可用,首先询问SIU功能。如果尝试启用ATM中不可用的端口,则会出现此错误。并非所有AMT都有相同的可用端口。

09-06 10:34