如何使用C语言与BASIC语言进行配合
基本使用方法 控制器使用C函数需要使用支持C接口函数的固件版本;固件版本名称里带有“cfunc”的即为支持C函数接口。 同一个C文件内的某一个C函数只能在某一个Basic文件内被声明调用,不可被在多个basic文件内都进行声明调用。 同一个C文件内的不同C函数可以分别在不同的Basic文件内被声明调用,但再次被声明后的函数名不可一致。
DEFINE_CFUNC -- 关键字

支持的数据类型定义:int、float、double、TYPE_TABLE。如果与TABLE数组交互,建议使用TYPE_TABLE类型。在4系列以上的控制器,TYPE_TABLE是double类型。
C语言编程部分:
int userc_init(void)
{
int* p=(int *)malloc(sizeof(int));
p[0]=88;
printf("p[0]=%d\n",p[0]);
free(p);
return 0;
}
float divf(float a,float b)
{
return (a/b);
}
TYPE_TABLE divd(TYPE_TABLE a,TYPE_TABLE b)
{
return (a/b);
}
BASIC编程部分:
define_cfunc userc_init int userc_init(void)
define_cfunc userc_divf float divf(float a,float b)
define_cfunc userc_divd double divd(double a,double b)
?userc_init()
?userc_divf(23.1,1)
?userc_divd(23.3,1)

注意事项: (1)定义的无参数函数,可以在INT_CYCLE中直接使用。 (2)BASIC调用的C函数的参数个数最多支持8个。 (3)C函数注意安全性,注意代码规范性,否则可能导致死机。 (4)C函数要注意实时性,处理必须够快,否则会影响BASIC的实时性。 注:建议调试时都下载RAM运行!
编译平台选择参照
不同型号控制器编译平台有所不同,具体参照下表。目前仅以下型号控制器支持C语言,其他系列型号控制器如有疑问请与技术工程师联系。

右键单击“文件视图”中空白区域,点击弹出窗口中“设置”一栏,进行编译平台设置操作。在弹出窗口“编译平台”一栏中点击下拉列表,在下拉列表中选择相应的编译平台后单击“确定”,即可完成编译平台设置操作。

C函数使用步骤
1.在RTSys软件中单击菜单栏“文件”,在下拉窗口中选择“新建项目”。选择项目文件存入的路径并且自定义命名项目名称。

2.新建项目成功后,在新建的项目下新建新的Basic文件,并且自定义相关Basic文件名。点击确定Basic文件创建成功。

3.新建.C文件。步骤可参照第二步,新建文件类型时需选择“C”。

4.右键单击“文件视图”中空白区域,点击弹出窗口中“设置”一栏,进行编译平台设置操作。

5.在弹出窗口“编译平台”一栏中点击下拉列表,在下拉列表中选择相应的编译平台后单击“确定”,即可完成编译平台设置操作,编译平台的选择可参照上一述内容“编译平台选择参考”。

6.编写C函数。编写C程序时需先进行头文件声明步骤,然后再按照C语言编码规范编写C函数。
头文件声明语法:#include “xxxxx.h”。“xxxx.h”为引用内置函数的头文件。如下图所示,“.h”头文件的文件路径需与项目文件路径一致。“zmcbuildin.h”文件可联系正运动工程师获取。


7.在BASIC程序中使用C函数时需要使用关键字“DEFINE_CFUNC”对被使用C函数进行引用定义,定义后在Basic文件中使用重新赋予的函数名即可调用该C函数。

注:C函数代码在RTSys中直接编辑即可,在其他软件中编辑复制到RTSys中时可能会导致乱码或格式错误等问题。