WFS_ERR_SIU_INVALID_PORT (-801) 为 SIU 启用事件时出错
WFS_ERR_SIU_INVALID_PORT (-801) error when enabling events for SIU
我正在尝试为 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 上,这个 returns WFS_ERR_SIU_INVALID_PORT (-801).
根据 XFS doc,这意味着:
An attempt to set a port to a new value was invalid because the port does not exist or the port is pre-configured as an input port.
我不是很理解文档的描述。有人可以解释为什么返回此状态以及应该做什么吗?
谢谢。
我认为您需要在 WFSExecute 之前初始化 WFSSIUENABLE 结构。您只设置了 Operator Switch 和 Open/close 的值,但其他值呢?尝试做一个 memset 将所有其他设置为零 (WFS_SIU_NO_CHANGE):
memset( commandData, 0, sizeof( WFSSIUENABLE));
要做的另一件事是先询问 SIU 能力,了解此 ATM 中哪些端口可用。如果您尝试启用 ATM 中不可用的端口,则会出现此错误。并非所有 AMT 都具有相同的可用端口。
我正在尝试为 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 上,这个 returns WFS_ERR_SIU_INVALID_PORT (-801).
根据 XFS doc,这意味着:
An attempt to set a port to a new value was invalid because the port does not exist or the port is pre-configured as an input port.
我不是很理解文档的描述。有人可以解释为什么返回此状态以及应该做什么吗?
谢谢。
我认为您需要在 WFSExecute 之前初始化 WFSSIUENABLE 结构。您只设置了 Operator Switch 和 Open/close 的值,但其他值呢?尝试做一个 memset 将所有其他设置为零 (WFS_SIU_NO_CHANGE):
memset( commandData, 0, sizeof( WFSSIUENABLE));
要做的另一件事是先询问 SIU 能力,了解此 ATM 中哪些端口可用。如果您尝试启用 ATM 中不可用的端口,则会出现此错误。并非所有 AMT 都具有相同的可用端口。