在驱动已正确安装的前提下,应用层如何自定义硬件并调用底层API函数?

时间:2022-05-30 20:35:41
需求有点绕,标题可能没表达清楚:
1.产品是一个平台,硬件平台,允许用户连接任何种类的硬件设备,甚至这个硬件是全新的预期范围以外的,但是它有可用的驱动
2.允许用户自定义硬件类型,即用户添加新硬件时,如果是超出预设范围之外的类型,那么允许用户按照模板自定义一个硬件类型,并将该新硬件按照自定义的类型来识别和使用
3.那么问题来了,自定义硬件是用户层的,而驱动是底层的,当用户定义完硬件类型之后,如何识别和调用硬件的功能?

10 个解决方案

#1


如果是这样,世界就简单了。

请现在ROS机器人设计系统,请下载NI labview,看看这些世界级产品为了兼容硬件加了多少东西。

#2


引用 1 楼 wanghui0380 的回复:
如果是这样,世界就简单了。

请现在ROS机器人设计系统,请下载NI labview,看看这些世界级产品为了兼容硬件加了多少东西。


啊我知道这个需求可能比较刁钻和苛刻但是确实是当下客户的需求,不用具体细节大概提供一点解题思路也很感激不尽了

#3


没有接口概念,只想搞文字游戏,这没办法设计出来东西。

#4


任何设计都基于基础,才能抽象。但凡是基于接口并且靠谱地设计开发,都是循序渐进的。

#5


“刁钻和苛刻”是谈不上的,客户的这种需求其实就是“走一步看一步、骗取资料”而已。

#6


在出差,本子上没装Ros,labview这类东西。
如果你找Ros的资料,你就会发现,开发Ros第一步就是选取机器人模型---然后从一堆硬件配件列表里选取已兼容硬件
在看labview的Daq系统,Daq数据采集插件,同样是一个模式给你一堆列表,然后自己选兼容硬件

别以为人家是很简单的就完成了,这些东西后面可花了大功夫的。
(Ros是新东西,没人给他适配,他自己做的兼容适配。NI labview是大公司,他自己的标准,别人得自己兼容他的)


在看“百度的天工”系统,百度的天工,号称万物互联。---------当然前提是你先使用百度给你的api,把硬件控制改写成百度规定的方式


好了,这些东西都是口说的。我机子上有个远程管理集成工具,你可以看看别人花了多大功夫自己做的兼容集成。(你别想不做兼容适配就直接玩,除非这些硬件本身是按国际通行协议做的,比如摄像头都控制基本遵照ONVIF协议,所以他基本可以即插即用)
在驱动已正确安装的前提下,应用层如何自定义硬件并调用底层API函数?

#7


通常你的想法可以这样实现
你需要给驱动写个代理类,也就是你说的模板。

这个模板可以代理访问你的硬件驱动,同时这个模板对外提供异构的交互模型,比如类似webService中以xml文档做中介说明的,我们可以根据wsdl文档生成另外一个代理去访问。
当然这也仅仅是解决了访问问题,如果需要接入通常还需要采用规范协议。比如前面提到的Onvif协议对摄像头操作的协议大家都一样,才有可能统一接入,如果你也是onvif但你提供的是私有的,对不起还是无法正常接入

这点在一些比较通用的协议上都比较明显,比如SNMP协议--------这个协议依赖一个MIB库,如果你使用公开统一的MIB库,那么谁都可以接入。如果你使用的是自己私有的MIB库,对不起。虽然我能接进去,但是我不知道具体含义是啥。对我来说,这种提供跟没提供没啥区别(除非我愿意花精力去分析)

#8


楼上都说完了,
接口。

#9





引用 7 楼 wanghui0380 的回复:
通常你的想法可以这样实现
你需要给驱动写个代理类,也就是你说的模板。

这个模板可以代理访问你的硬件驱动,同时这个模板对外提供异构的交互模型,比如类似webService中以xml文档做中介说明的,我们可以根据wsdl文档生成另外一个代理去访问。
当然这也仅仅是解决了访问问题,如果需要接入通常还需要采用规范协议。比如前面提到的Onvif协议对摄像头操作的协议大家都一样,才有可能统一接入,如果你也是onvif但你提供的是私有的,对不起还是无法正常接入

这点在一些比较通用的协议上都比较明显,比如SNMP协议--------这个协议依赖一个MIB库,如果你使用公开统一的MIB库,那么谁都可以接入。如果你使用的是自己私有的MIB库,对不起。虽然我能接进去,但是我不知道具体含义是啥。对我来说,这种提供跟没提供没啥区别(除非我愿意花精力去分析)

感谢您的认真答复,我个人水平有限不是能完全理解您的思路。意思是不是,新接入的硬件必须是按已知范围内的国际标准协议来驱动的,而且平台内得有一个准备好的协议库来供识别模块调用,才有可能实现这个需求?

#1


如果是这样,世界就简单了。

请现在ROS机器人设计系统,请下载NI labview,看看这些世界级产品为了兼容硬件加了多少东西。

#2


引用 1 楼 wanghui0380 的回复:
如果是这样,世界就简单了。

请现在ROS机器人设计系统,请下载NI labview,看看这些世界级产品为了兼容硬件加了多少东西。


啊我知道这个需求可能比较刁钻和苛刻但是确实是当下客户的需求,不用具体细节大概提供一点解题思路也很感激不尽了

#3


没有接口概念,只想搞文字游戏,这没办法设计出来东西。

#4


任何设计都基于基础,才能抽象。但凡是基于接口并且靠谱地设计开发,都是循序渐进的。

#5


“刁钻和苛刻”是谈不上的,客户的这种需求其实就是“走一步看一步、骗取资料”而已。

#6


在出差,本子上没装Ros,labview这类东西。
如果你找Ros的资料,你就会发现,开发Ros第一步就是选取机器人模型---然后从一堆硬件配件列表里选取已兼容硬件
在看labview的Daq系统,Daq数据采集插件,同样是一个模式给你一堆列表,然后自己选兼容硬件

别以为人家是很简单的就完成了,这些东西后面可花了大功夫的。
(Ros是新东西,没人给他适配,他自己做的兼容适配。NI labview是大公司,他自己的标准,别人得自己兼容他的)


在看“百度的天工”系统,百度的天工,号称万物互联。---------当然前提是你先使用百度给你的api,把硬件控制改写成百度规定的方式


好了,这些东西都是口说的。我机子上有个远程管理集成工具,你可以看看别人花了多大功夫自己做的兼容集成。(你别想不做兼容适配就直接玩,除非这些硬件本身是按国际通行协议做的,比如摄像头都控制基本遵照ONVIF协议,所以他基本可以即插即用)
在驱动已正确安装的前提下,应用层如何自定义硬件并调用底层API函数?

#7


通常你的想法可以这样实现
你需要给驱动写个代理类,也就是你说的模板。

这个模板可以代理访问你的硬件驱动,同时这个模板对外提供异构的交互模型,比如类似webService中以xml文档做中介说明的,我们可以根据wsdl文档生成另外一个代理去访问。
当然这也仅仅是解决了访问问题,如果需要接入通常还需要采用规范协议。比如前面提到的Onvif协议对摄像头操作的协议大家都一样,才有可能统一接入,如果你也是onvif但你提供的是私有的,对不起还是无法正常接入

这点在一些比较通用的协议上都比较明显,比如SNMP协议--------这个协议依赖一个MIB库,如果你使用公开统一的MIB库,那么谁都可以接入。如果你使用的是自己私有的MIB库,对不起。虽然我能接进去,但是我不知道具体含义是啥。对我来说,这种提供跟没提供没啥区别(除非我愿意花精力去分析)

#8


楼上都说完了,
接口。

#9





引用 7 楼 wanghui0380 的回复:
通常你的想法可以这样实现
你需要给驱动写个代理类,也就是你说的模板。

这个模板可以代理访问你的硬件驱动,同时这个模板对外提供异构的交互模型,比如类似webService中以xml文档做中介说明的,我们可以根据wsdl文档生成另外一个代理去访问。
当然这也仅仅是解决了访问问题,如果需要接入通常还需要采用规范协议。比如前面提到的Onvif协议对摄像头操作的协议大家都一样,才有可能统一接入,如果你也是onvif但你提供的是私有的,对不起还是无法正常接入

这点在一些比较通用的协议上都比较明显,比如SNMP协议--------这个协议依赖一个MIB库,如果你使用公开统一的MIB库,那么谁都可以接入。如果你使用的是自己私有的MIB库,对不起。虽然我能接进去,但是我不知道具体含义是啥。对我来说,这种提供跟没提供没啥区别(除非我愿意花精力去分析)

感谢您的认真答复,我个人水平有限不是能完全理解您的思路。意思是不是,新接入的硬件必须是按已知范围内的国际标准协议来驱动的,而且平台内得有一个准备好的协议库来供识别模块调用,才有可能实现这个需求?