关于contiki中进程间沟通时使用到的data参数
来源:互联网 发布:淘宝如何找货源 编辑:程序博客网 时间:2024/06/09 16:23
介绍
首先我们知道,下面这一句代码是用来实现一个进程的
PROCESS_THREAD(udp_client_process, ev, data)
他的原型是:
#define PROCESS_THREAD(name, ev, data) \static PT_THREAD(process_thread_##name(struct pt *process_pt, \ process_event_t ev, \ process_data_t data))
本文要谈的是process_data_t data 这个参数,他的类型process_data_t 其实就是void *。也就表明它是可以指向任何对象的,在进程间通信时便可以使用data携带各种各样的信息。
应用举例1
当我们有一个具备一定功能的进程,他时常被各种其他进程来请求处理一些事情。而我们如何知道是谁发来的事件请求呢,有一种方式是使用定义各种不同的事件,用事件来区分。还有一种方式是统一使用一种事件,用data来携带发送事件的进程名。
首先我们定义一个进程指针来保存待接收的进程
static struct process *sensor_usr_p=NULL;
然后在事件接收判断里面保存起来,便能够知道谁发送来的请求,之后要返还给谁了
PROCESS_YIELD(); if(ev == sensor_event){ sensor_usr_p=(struct process *)data; }
例如处理完了之后要告诉请求进程
process_post(sensor_usr_p,sensor_event,buffer_sensor);
请求的进程:
process_post(&sensor_process, sensor_event, (void *)&udp_client_process);
应用举例2
另外一种就是经常使用到的数据传输了
首先发送放先包装一个buffer
struct order_data{ uint8_t len; uint8_t data[20]; };static struct order_data order_rcv_data;
然后就将定义的结构体随事件发送过去
process_post(&udp_process, sensor_event,&order_rcv_data);
接收方得到事件后再把数据读出来
for(int i =0;i<(*((uint8_t*)(data)));i++){ order[i] =*((uint8_t*)(data+i+1)); //读取命令 }
阅读全文
0 0
- 关于contiki中进程间沟通时使用到的data参数
- contiki中关于进程的开始与挂起等相关函数的说明与小结
- 关于Contiki中Rime代码的一些分析记录
- 关于VB中Data控件的使用
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- 关于Jquery中ajax方法data参数用法的总结
- 获取子窗口中使用jQuery.data()设置的参数
- 在jquery.ajax()的回调函数中使用发送请求时的data中的参数
- 关于沟通的问题
- 关于沟通的思考
- 页面获取Spring Security登录用户
- asp.net mvc ToList 转换为非委托类型错误
- xxx
- iOS 关于sim卡
- Android 知识点记录
- 关于contiki中进程间沟通时使用到的data参数
- FFmpeg日志相关
- 三种排序算法
- Gradle命令和配置 标签: AndroidGradle命令配置 2016-03-11 09:32 17174人阅读 评论(5) 收藏 举报 分类: 开发工具(9) 版权声明:本文为博主原创文
- ADB Shell Command
- R内置常数(Built-in Constants)
- 删除无效服务
- WPF InkCanvas MouseDown触发 MouseUp不触发问题
- 分布式订单号一