У меня есть векторные данные (переменная массива, например float32 mydata[5];
). для передачи одиночных примитивных/базовых данных по шине это довольно просто.
inside_data=Simulink.BusElement;
inside_data.Name='somename';
inside_data.SampleTime = -1;
inside_data.datatype='single';
этот элемент можно поместить внутрь использования
Bus=Simulink.Bus;
Bus.Elements=inside_data;
Но это работает, когда вход является примитивом. Но что, если мои данные являются вектором. как float32 a[5];
, тогда как я могу отправить этот элемент данных в шину.
ОБНОВЛЕНИЕ Поэтому я попытался использовать постоянный блок с именем a с типом данных single, в котором входная часть была изменена на [1 2 3], которая является векторным вводом. другой элемент — b с типом данных uint8.
я использовал построитель s-функций только для проверки работы этой модели. я уже все установил (bus_mode включен, тип данных должен быть типом шины и т. д.). в выходной части я использовал что-то вроде:
y0[0]=u0->a[0];
y0[1]=u0->a[1];
y0[2]=u0->a[2];
y1[0]=u0->b;
Но выдает ошибку как
c:\program files (x86)\matlab_v7111_r10bsp1\extern\include\matrix.h(313) : error C2061: syntax error : identifier 'mxLogical'
c:\program files (x86)\matlab_v7111_r10bsp1\extern\include\matrix.h(313) : error C2059: syntax error : ';'
моя конечная цель - использовать его для s_function
поэтому, если я объявлю переменную в s_func как
real32_T *a_output[5]=(real32_T *)ssGetOutputPortRealSignal(S,0);
а затем у меня есть структура (потому что я передаю данные по шине, поэтому файл заголовка шины имеет эту структуру) и как мне объявить и назначить ввод для вывода.
a_output[0]=my_struct->a_input[0];
a_output[1]=my_struct->a_input[1];
a_output[2]=my_struct->a_input[2];
a_output[3]=my_struct->a_input[3];
a_output[4]=my_struct->a_input[4];
но проблема с декларацией. это дает мне ошибку, не может преобразовать из real32_T в real32_T *.