导航: 老古网老古论坛XMOS公共讨论区XMOS开源项目区单片机程序设计嵌入式系统广告区域
→发表看法:[liufengzhong]在混合接口. C和.XC实现



No.96501
作者:liufengzhong
邮件:l_fz@sina.com
ID:149522
登陆:12次
文章数:695篇
最后登陆IP:183.13.93.245
最后登陆:2015/6/16 17:02:27
注册:2014/7/29 21:51:15
财富:3671
发帖时间:2014/10/1 10:24:07
发贴者IP:14.125.34.43
标题:liufengzhong:在混合接口. C和.XC实现
摘要:No.96501在混合接口. C和.XC实现 
你好,

我有一个.xc调用的任务。 c函数从我想沟通使用接口(客户端)。 这样的实现将是什么样子? 你能提供一个例子吗?

谢谢


回答:

如果你想做它从客户端然后最好的办法是编写C原型接口函数的包装器。 例如假设我有:

interface my_if {
  void f(int x);
  void g(char y);
};

您可以编写以下文件:

--my_if_c_api.h---
#include   <xccompat.h>  
void my_if_f(CLIENT_INTERFACE(my_if, i), int x);
void my_if_g(CLIENT_INTERFACE(my_if,i), char y); 
--my_if_c_api.xc-- 
#include   <my_if_c_api.h>  
void my_if_f(client interface my_if i, int x) { i.f(x); }
void my_if_g(client interface my_if i, char y) { i.g(y); }
---- 


然后,您可以包括my_if_c_api。 h C程序和使用功能。

目前还没有简单的方法做接口通信的服务器端直接从最简单的事情是顶级的选择在我然后调用C函数

// These are defined in a C file
extern() void my_c_f_handler(int x);
extern void my_c_g_handler(int y);
void my_task(server my_if i) {
  while (1) {
    select {
    case i.f(int x):
      my_c_f_handler(x);
      break;
    case i.g(int y):
      my_c_g_handler(y);
      break;
   }
 }


回复:

好吧,让我们一步一步的做。
1。 我有一个工作代码。 我与一个接口。
我有:
——my_interface.h
接口my_interface
{
int function_a(int x,int y);
空白function_b(int,int,int);
};
 
 
——my_client_application.h
# include“my_interface.h”
 
空白my_client_application(客户端接口my_interface我);
 
 
——my_client_application.xc
# include“my_client_application.h”
# include“some_c_code.h”
 
空白my_client_application(客户端界面my_interface我)
{
int =我。 function_a(1、2);
我。 function_b(3、4、5);
some_c_function();
}
 
构建和运行的应用程序。 但需要的是电话 i.function_a 从内 some_c_function 离开 i.function_b 里面 my_client_application。
 
2。 现在我添加一个c包装头就我理解:
 
--my_interface_c_api.h--
#include   <xccompat.h>  
 
int c_wrapp ......

>>返回讨论的主题



  发表回复
用户名   *您没有注册?
密码   *
验证码   * .
标题   *
心情
随便说说    我回答你    最新发现    得意的笑   
气死我了    真是没劲    坚决同意    表示反对   
大家过来    好奇怪哟    懒得理它    大家小心   
文件上传
内容


字体:      字体大小:    颜色:
粗体 斜体 下划线 居中 超级连接 Email连接 图片 Flash图片 Shockwave文件 realplay视频文件 Media Player视频文件 QuickTime视频文件 引用 飞行字 移动字 发光字 阴影字 查看更多的心情图标 背景音乐
点击加入表情
                         
选项
有回复时用短消息通知您?

   




老古网执行:31毫秒 最大:10922毫秒 查询9次