Используя 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, конечно, не является допустимым выражением.
Это ошибка или почему все так по-другому?
Большое тебе спасибо!
Я считаю себя сильным пользователем. Полностью согласен: никогда не сталкивался с проблемой обратной совместимости. Вот почему это моя первая публикация здесь, и я действительно сомневаюсь в себе. Нет идеи, как разместить здесь снимок экрана, но рабочая область показывает: Имя: xlstatus, Значение: 1x1 XLDefine + XL_STATUS. Также, если я посмотрю на методы, использующие libfunctionsview: «Плюс» везде. Наверное, это мингв сломан? Установка полностью новая.
xl_opendriver является частью оболочки .NET, предоставляемой вектором. Тем временем я получил ответ от службы поддержки Mathworks. Они подтвердили, что что-то изменилось: «+» в имени класса или перечисления указывает, что он вложен в другой класс. Вы не можете напрямую создать экземпляр вложенного класса или перечисления из .NET Assembly. Для этого вы должен использовать отражение. Интерфейс действительно изменился между выпусками ".





Я получил ответ от службы поддержки MathWorks. Они подтвердили, что что-то изменилось:
The '+' in the name of the class or enumeration indicates that it is nested within another class. You cannot directly instantiate a nested class or enumeration from a .NET Assembly. In order to do so, you must use reflection. The interface has indeed change between the releases.
Уверены ли вы?
XLDefine+XL_Statusне является допустимым именем типа. И MATLAB довольно хорош в обратной совместимости. У них обычно есть много версий, которые генерируют предупреждения перед удалением функции, и они обычно меняют имя функции, если хотят изменить ее возвращаемые значения. Вы просмотрели примечания к выпуску? Это изменение должно быть упомянуто там с инструкциями по совместимости.