首页 正运动技术 正文

回复

【正运动技术】在RTSys中使用C语言编程

正运动技术 浏览:7 回复:0 收藏

正运动技术  2025-12-17 10:19


如何使用C语言与BASIC语言进行配合

2.png

基本使用方法

01
固件版本要求

控制器使用C函数需要使用支持C接口函数的固件版本;固件版本名称里带有“cfunc”的即为支持C函数接口。

02
函数调用限制

同一个C文件内的某一个C函数只能在某一个Basic文件内被声明调用,不可被在多个basic文件内都进行声明调用。

03
多函数声明规则

同一个C文件内的不同C函数可以分别在不同的Basic文件内被声明调用,但再次被声明后的函数名不可一致。

DEFINE_CFUNC -- 关键字

3.png

支持的数据类型定义: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)

4.png


注意事项:


(1)定义的无参数函数,可以在INT_CYCLE中直接使用。

(2)BASIC调用的C函数的参数个数最多支持8个。

(3)C函数注意安全性,注意代码规范性,否则可能导致死机。

(4)C函数要注意实时性,处理必须够快,否则会影响BASIC的实时性。

注:建议调试时都下载RAM运行!




编译平台选择参照

不同型号控制器编译平台有所不同,具体参照下表。目前仅以下型号控制器支持C语言,其他系列型号控制器如有疑问请与技术工程师联系。

5.png

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

6.png



C函数使用步骤

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

7.png

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

8.png

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

9.png

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

10.png

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

11.png

6.编写C函数。编写C程序时需先进行头文件声明步骤,然后再按照C语言编码规范编写C函数。

头文件声明语法:#include “xxxxx.h”。“xxxx.h”为引用内置函数的头文件。如下图所示,“.h”头文件的文件路径需与项目文件路径一致。“zmcbuildin.h”文件可联系正运动工程师获取。

12.png
13.png

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

14.png

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


我知道了