OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4813|回复: 9

(首发)UOL测试版之如何制作API(第一节)

[复制链接]

45

主题

115

帖子

1

精华

版主

Rank: 7Rank: 7Rank: 7

积分
679
金钱
679
注册时间
2013-9-23
在线时间
95 小时
发表于 2013-11-4 18:05:27 | 显示全部楼层 |阅读模式

API称作应用程序接口,在UOL中又称之为native方法。Native方法是不需要定义就可以直接调用的方法。Native方法通常是跟直接硬件相关的方法,在设计完之后可以将native方法封装到类(class)中以便其他人安全的使用。

 

UOL中制作native时,首先要在native.xml中声明native方法,声明格式如下:

<native>

<function name = "doSysPrintChar" id = "0::0" length = "1" type = "char" return = "void"/>

。。。。

</native>

1.      name 后面用双引号声明方法的名称

2.      id是方法所在二位数组中的地址

3.      length是指方法参数的个数

4.      type后面声明每个参数的类型,用空格来区分每个声明。仅支持如下声明格式:

voidcharshortintlongfloatdoublecharArrayshortArrayintArrayfloatArraydoubleArray

(注明: 数组的声明 类型+Array

5.  return 是指返回值,声明格式如上

 

 

在移植到单片机时需设计native函数,设计方法如下:

 

例如:

//int doLcdReadPoint (int x,int y);

CELL doLcdReadPoint(MicroVM* vm, CELL* params)

{

     CELL res;

     //参数的映射

int32_t  x = params[0].ival;

     int32_t  y = params[1].ival;

     //函数的映射

res.ival = LCD_ReadPoint(x,y);

//如果返回值是voidzeroCell.ival = 0,否则zeroCell.ival = 1

     zeroCell.ival = 1;

     //返回值

     return res;

}

定义完API之后,在nativetable.c中申请id就可以完成,申请如下:

 

APIid格式: id = id1::id2

 

//设定id2

NativeMethod Natives2[] =

{

     doLcdInit,

     doLcdOnOff,

     doLcdClrScr,

     doLcdReadPoint,//添加设计的native函数

     doLcdWritePoint,

     doLcdWriteChar,

};

//设定id1

NativeMethod* nativeTable[] =

{

  Natives0,

  Natives1,  

Natives2,

};

 

//不要忘记增加一个case来检查id的范围

int isNativeValid(int id1, int id2)

{

  switch(id1)

  {

    case 0:

      if (id2 >= 3) return 0;

      else return Natives0[id2] != NULL;

         case 1:

      if (id2 >= 5) return 0;

      else return Natives1[id2] != NULL;

         case 2:

      if (id2 >= 6) return 0;

      else return Natives2[id2] != NULL;

    default:

       return 0;

  }

}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

7

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
393
金钱
393
注册时间
2012-3-4
在线时间
69 小时
发表于 2013-11-4 20:02:36 | 显示全部楼层
回复 支持 反对

使用道具 举报

45

主题

115

帖子

1

精华

版主

Rank: 7Rank: 7Rank: 7

积分
679
金钱
679
注册时间
2013-9-23
在线时间
95 小时
 楼主| 发表于 2013-11-4 20:30:45 | 显示全部楼层
回复【2楼】sun:
---------------------------------
你下载了那个UOL么
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-11-4
在线时间
0 小时
发表于 2013-11-4 20:40:27 | 显示全部楼层
顶起!顶起!哥威武霸气
回复 支持 反对

使用道具 举报

7

主题

98

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
393
金钱
393
注册时间
2012-3-4
在线时间
69 小时
发表于 2013-11-4 21:04:39 | 显示全部楼层
回复【3楼】edmund:
---------------------------------没时间研究啊 不过对新事物必须要顶的。楼主加油
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-11-4 21:05:14 | 显示全部楼层
不错,谢谢分享.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

45

主题

115

帖子

1

精华

版主

Rank: 7Rank: 7Rank: 7

积分
679
金钱
679
注册时间
2013-9-23
在线时间
95 小时
 楼主| 发表于 2013-11-4 21:23:03 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
可能还有没写详细的地方,现在编译器还处于测试中,希望大家能尽量反馈问题。。。谢谢。。
回复 支持 反对

使用道具 举报

3

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2013-10-18
在线时间
30 小时
发表于 2013-11-4 21:44:37 | 显示全部楼层
不错 学习学习
回复 支持 反对

使用道具 举报

45

主题

115

帖子

1

精华

版主

Rank: 7Rank: 7Rank: 7

积分
679
金钱
679
注册时间
2013-9-23
在线时间
95 小时
 楼主| 发表于 2013-11-4 21:51:30 | 显示全部楼层
回复【8楼】Gold_Br:
---------------------------------
谢谢支持。。。
回复 支持 反对

使用道具 举报

3

主题

40

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
246
金钱
246
注册时间
2013-10-18
在线时间
30 小时
发表于 2013-11-5 12:04:53 | 显示全部楼层
回复【9楼】edmund:
---------------------------------
共勉吧
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-9 15:21

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表