[发明专利]一种CAN总线环境下实现服务化的方法在审
申请号: | 202011187919.8 | 申请日: | 2020-10-30 |
公开(公告)号: | CN112532583A | 公开(公告)日: | 2021-03-19 |
发明(设计)人: | 叶蕾;李鑫;王垒;解子阳;陈康东 | 申请(专利权)人: | 浙江工业大学 |
主分类号: | H04L29/06 | 分类号: | H04L29/06;H04L29/12;H04L12/40;G06F9/54 |
代理公司: | 杭州斯可睿专利事务所有限公司 33241 | 代理人: | 王利强 |
地址: | 310014 浙江省*** | 国省代码: | 浙江;33 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 can 总线 环境 实现 服务 方法 | ||
1.一种CAN总线环境下实现服务化的方法,其特征在于,所述方法包括以下步骤:
步骤100,客户端从空闲链表中申请CAN_OBJ对象,设置对象属性,将对象状态设为“使用”,创建接收缓存队列,通过接收地址指向缓存队列,将服务查询调用帧置入发送缓存队列,进入等待状态;
步骤200,客户端发送缓存队列等待接收发送任务,当有数据置入后,将数据发送;
步骤300,服务端接收缓存队列挂起等待查询或调用信息,若接收到的信息为查询报文,就通过服务ID和服务的映射表查询服务在本服务端是否存在,如果服务不存在,则丢弃该消息,如果服务存在,则根据服务ID调用对应函数处理,然后将结果打包至调用返回帧,置于发送缓存队列发送;
步骤400,客户端接收到调用帧后,根据查询返回帧中的positionID定位CAN_OBJ对象,再根据CAN_OBJ对象中的接收地址将消息发送到接收缓存队列中,唤醒该调用线程;
步骤500,将CAN_OBJ对象释放,放回空闲链表的尾部,删除接收缓存队列。
2.如权利要求1所述的一种CAN总线环境下实现服务化的方法,其特征在于,描述的数据结构如下:
CAN_OBJ对象包括收端标识符、发端标识符、客户端进程标志、帧类型标志位、服务ID、数据包长度、数据包数据内容、状态、接收地址、下一个CAN_OBJ对象属性;
收端标识符和发端标识符为CAN总线特有标识,表示CAN总线地址信息;
帧类型标志位用于区分该数据帧是查询调用帧还是调用返回帧;
服务ID与具体服务的哈希表:通过服务ID查询获取服务端的服务;
状态表示该CAN_OBJ对象是空闲还是使用中;
CAN_OBJ对象数组:数组下标为每一个CAN_OBJ对象的ID,即positionID,中文名称为客户端进程标志,通过positionID可快速定位到CAN_OBJ对象;
空闲CAN_OBJ对象链表:使用链表的方式将CAN_OBJ对象串联,头指针指向第一个空闲的CAN_OBJ对象,尾指针指向空闲的CAN_OBJ对象尾部,当客户端申请空闲CAN_OBJ对象时,头指针后移动,当客户端释放CAN_OBJ对象时,尾指针后移;
客户端发送缓存队列:存放即将从客户端发送的数据帧;
客户端接收缓存队列:存放特定远程服务调用请求的查询返回结果和调用返回结果,CAN_OBJ对象中receiveID指向接收缓存队列,客户端收到信息以后,将信息解析后,根据CAN_OBJ对象中receiveID将信息发送至接收缓存队列;
服务端发送缓存队列:存放即将从服务端发送的数据帧;
服务端接收缓存队列:存放服务查询和服务调用请求。
3.如权利要求1或2所述的一种CAN总线环境下实现服务化的方法,其特征在于,所述步骤100中,查询调用帧设计如下:
CAN总线协议数据帧分为CAN总线标准数据帧和CAN总线扩展数据帧,两者主要区别为CAN总线扩展数据帧包含一个18位的扩展标识符;为了更好地表示服务请求,提高单条协议的数据量,本发明选择CAN总线扩展数据帧;
在查询调用帧的标识符中记录发端地址、客户端进程标志、帧类型标志位、数据包长度、服务ID,在查询调用帧的数据域中记录数据包数据内容。
4.如权利要求1或2所述的一种CAN总线环境下实现服务化的方法,其特征在于,所述步骤300中,调用返回帧设计如下:
在调用返回帧的标识符中记录发端地址、收端地址、客户进程标志、帧类型标志位、数据包长度,在调用返回帧的数据域中记录返回结果。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于浙江工业大学,未经浙江工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202011187919.8/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种磁性碳量子点的制备方法
- 下一篇:一种多角度液压弯管机及弯管控制方法