如何使用C语言与BASIC语言进行配合
基本使用方法
(1)固件版本要求:控制器使用C函数需要使用支持C接口函数的固件版本;固件版本名称里带有“cfunc”的即为支持C函数接口。
(2)函数调用限制:同一个C文件内的某一个C函数只能在某一个Basic文件内被声明调用,不可被在多个basic文件内都进行声明调用。
(3)多函数声明规则:同一个C文件内的不同C函数可以分别在不同的Basic文件内被声明调用,但再次被声明后的函数名不可一致。
DEFINE_CFUNC -- 关键字
支持的数据类型定义:int、float、double、TYPE_TABLE。如果与TABLE数组交互,建议使用TYPE_TABLE类型。在4系列以上的控制器,TYPE_TABLE是double类型。
举例一
(1)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);
}
(2)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函数使用步骤
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中时可能会导致乱码或格式错误等问题。












