Matlab 2017a -> 2018b. Доступ к .NET сборке разный? - PullRequest
0 голосов
/ 11 января 2019

Используя Matlab 2017a, я написал себе обертку для использования векторного оборудования CAN. Он основан на vxlapi_NET из вектора.

В предыдущей версии я мог сделать так:

xlstatus = obj.fid.XL_OpenDriver();
if xlstatus == vxlapi_NET.XL_Status.XL_SUCCESS   .....

потому что xl_opendriver вернул что-то типа vxlapi_NET.XL_Status. Имеет полный смысл ...

Теперь с 2018b все выглядит совершенно иначе. XL_OpenDriver возвращает что-то типа XLDefine+XL_Status.

Кто-нибудь может объяснить, что здесь означает этот знак "плюс"? Я никогда не видел ничего подобного в Matlab. Кроме того, я не нашел никакого решения для перевода if xlstatus == vxlapi_NET.XL_Status.XL_SUCCESS в нечто, совместимое с 2018b.

vxlapi_NET.XLDefine+XL_Status.XL_STATUS, конечно, не является корректным выражением.

Это ошибка или почему вещи ведут себя так по-разному?

Большое спасибо!

1 Ответ

0 голосов
/ 15 января 2019

Я получил ответ от службы поддержки MathWorks. Они подтвердили, что что-то изменилось:

«+» в имени класса или перечисления указывает, что оно вложено в другой класс. Вы не можете напрямую создать экземпляр вложенного класса или перечисления из сборки .NET. Для этого вы должны использовать отражение. Интерфейс действительно изменился между выпусками.

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