1

我正在尝试为 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,这意味着:

尝试将端口设置为新值无效,因为该端口不存在或该端口已预先配置为输入端口。

我真的不明白文档的描述。有人可以解释为什么返回此状态以及应该做什么?

谢谢你。

4

1 回答 1

1

我认为您需要在 WFSExecute 之前初始化 WFSSIUENABLE 结构。您只是设置 Operator Switch 和 Open/close 的值,但其他的呢?尝试做一个 memset 将所有其他设置为零(WFS_SIU_NO_CHANGE):

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

要做的另一件事是了解此 ATM 中可用的哪些端口,首先询问 SIU 功能。如果您尝试启用 ATM 中不可用的端口,则会出现此错误。并非所有 AMT 都具有相同的可用端口。

于 2019-07-08T08:36:47.613 回答