时间过得真快,三周的时间就这么一下子就过去了,我的blog又拖更了。这段时间经历了很多,公司开始裁员了。当然,这波裁员没有波及到我,但是作为这个行业的人,也要开始对自己的道路有一些思考了。互联网大厂开始开源节流,ChatGPT横空出世,YQ之后经济复苏缓慢,每一个都牵动着打工人的心。车贷房贷的压力让我们不得不在打工的路上越来越卷,还好我所在的公司是一所外企,但是有人在的地方就有江湖,有中国人在的职场必定就有内卷。吐槽一下心中的郁结,明天还是阳光灿烂,毕竟还有那么多人在等着跟我们伸手。就像呼兰脱口秀里说的,早上要干翻这个世界,晚上回来被这个世界干的服服帖帖。但第二天依然得有干翻这个世界的尽头,不然怎么办呢!希望大家都能保持高昂的斗志,去探索技术的宇宙吧!
言归正传,还是要说技术的。在写技术之前,我想了半天这个标题叫什么。我觉得英文单词perspective最为贴切吧,但是用中文想了半天才想到“总体陈述”这个词。这个部分就给大家对前面几章的内容做一个总结。我想如果你认真的看了前面几章内容的话,并且再加上BACnet本身协议的阅读,你会很迷糊这是要干什么。反正我当时读完这几章之后,我是云里雾里还不知道BACnet要干什么。今天所讲的这个Object就是应用的开始,但是当你深入的理解应用之后,你就会理解为什么要把之前的内容放在最开始讲了。这是基石,也就是地基。盖房子可能你永远卡不到地基,但是肯定是从地基开始做起。然而,对于各位看官理解这个协议,从地基去讲确实有点不合适。所以我就在这里将应用之前,先把所有的地基先串一串,让大家了解一下地基到底是怎么跟房子连接起来的,然后再详细的去讲房子以及里面的窗户和装修等等。
在前面几篇文章中,大家应该对BACnet协议从应用层到物理层有了一定的了解。物理层用于数据的实际传输,链路层用于管理物理层使所有的设备都能在一个稳定的通信规则中稳定畅通的通信,网络层用于实现多个链路层的情况下数据的路由和分享。通过之前的文章,我想大家都大概对这三个层级有了一个大概的认识,也基本了解了它在各自位置的功能。但是当你再回顾应用层的协议和讲解时,你会很模糊,这个应用层到底是在干什么呢!其实,在我看BACnet协议的时候,我也有这样的感觉,这个应用层到底是在干什么呢?尤其是在你看了BACnet协议之后,里面还有关于BACnet数据的组包规则什么的,你会更加晕头转向。但是当你看到BACnet协议栈之后,再看到BACnet协议中的Object章节,你就会慢慢的清晰起来。因为之前章节所讲的东西都是再BACnet协议栈内部的东西,这些东西大部分对于你来说,大部分都是黑箱,你通过调用API最终都要用到之前的那些知识点。这些知识点只有在你调试遇到问题或者在你看BACnet协议栈理解BACnet协议的时候,有很大的作用。哦,还忘了一点,你一直BACnet协议栈的时候,之前讲过的基础知识,尤其是物理层和数据链路层,也是很有帮助的。那么就言归正传了,Object是什么呢?或者说怎么理解之前所讲的应用层和Object呢?

如上图,这里就不得不引入另一个在BACnet中很重要的名词service。Object、service和application layer的关系如上图所示。Object可以理解为储存数据的数据库。Obejct根据不同的需求又定义不同类型的object,但是本质上将,它们都是用于存储数据的数据库。而service就是application layer或者说客户端等等访问Object的方式。Service最终实现的方式就是通过application layer中的confirmed request/response或者unconfirmed request来实现的。这里来举个例子,比如说,read property是BACnet中的一个service,客户端就可以用这个service告诉服务器,我要读取你的Object中的某个数据了,其过程如下图所示:

所有的Object都是由各种各样的property组成的,所谓的property就是各种各样的用于说明Object或者完善Object功能的的数据。所有的Object里面都有的property是Object id, Object name, Object type, Description等。
因为每个BACnet设备必须至少有一个Object就是Device Object,所以我们就先讲这个最重要的Object。如果你仔细看了前面的章节,你会发现在前面章节中有一些关于网络层和数据链路层的参数都是由device Object来确定的。这也是Device Object重要的原因,因为它不仅定义了自己在全网中的名片,还规定了自己在全网中通信的一些参数,所以它是BACnet通信能够正常运转起来的基石。正因为如此,在BACnet协议栈中,你会发现它肯定是首先被初始化的。
本来想着发布文章看看效果的,结果撤回不了,只能一点一点的编辑更新了,而且更坑人的是即使你写完一部分想保存等写完再发布,它也不是保存,而是直接发布,愁死我了。。。。。
未完待续~~~
上一篇:MYSQL的存储引擎