code:
#include <string.h>
__declspec(dllexport) int FBD_DLL( float*, float*, int*, int* );
__declspec(dllexport) void zFBD_DLL_info( void* );
__declspec(dllexport) void zFBD_DLL_varname( char* );
typedef struct
{
int q_in; // Количество входов
int q_out; // Количество выходов
int q_int; // Зарезервировано
int type; // Номер в списке функциональных разделов.
// Должно быть равно 17
char name[8]; // Короткое имя для вывода на экран
char fname[8]; // Полное имя
} DO_DEFAULT;
int FBD_DLL( float *in, // Указатель на массив входов
float *out, // Указатель на массив выходов
int *l, int *rl ) // Зарезервировано
{
int i;
float s;
static float w[1000][30];
s=1000/in[2];
for(i=0;i<1000;i++)
w[i][(int)in[3]]=w[i+1][(int)in[3]];
w[1000][(int)in[3]]=in[0];
out[0]=w[(int)(1000-in[1]*s)][(int)in[3]];
return 0;
}
void zFBD_DLL_info( void *buf )
{
DO_DEFAULT *dd;
dd=(DO_DEFAULT *)buf;
strcpy( dd->name, "late_n" );
strcpy( dd->fname, "late_n" );
dd->q_in = 5;
dd->q_out = 1;
dd->type = 17;
dd->q_int = 0;
}
void zFBD_DLL_varname( char *varname )
{
strcpy( varname+0, "RUN" );
strcpy( varname+8, "In" );
strcpy( varname+16, "Tm" );
strcpy( varname+24, "Cycl" );
strcpy( varname+32, "Nj" );
strcpy( varname+40, "Out" );
}