Ошибка WFS_ERR_SIU_INVALID_PORT (-801) при включении событий для SIU - PullRequest
0 голосов
/ 03 июля 2019

Я пытаюсь включить события для устройства 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);

Это работает как ожидалось (hResult = 0) в одном из тестовых банкоматов. Однако в другом тестовом банкомате возвращается WFS_ERR_SIU_INVALID_PORT (-801).

Согласно документу XFS это означает:

Попытка установить порт на новое значение была недопустимой, поскольку порт не существует или порт предварительно настроен в качестве входного порта.

Я не очень понимаю описание документа. Может кто-нибудь объяснить, почему возвращается этот статус и что нужно делать?

Спасибо.

1 Ответ

1 голос
/ 08 июля 2019

Я думаю, вам нужно инициализировать структуру WFSSIUENABLE перед WFSExecute. Вы устанавливаете только значения для переключателя оператора и открытия / закрытия, но как насчет других? Попробуйте сделать memset, чтобы установить все остальные на ноль (WFS_SIU_NO_CHANGE):

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

Еще одна вещь, которую нужно сделать, это узнать, какие порты доступны в этом банкомате, предварительно спросив о возможностях SIU. Если вы попытаетесь включить порт, недоступный в банкомате, у вас появится эта ошибка. Не все AMT имеют одинаковые доступные порты.

...