serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

這篇文章主要為大家展示了“serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析”這篇文章吧。

成都創(chuàng)新互聯(lián)公司是專業(yè)的靖西網(wǎng)站建設(shè)公司,靖西接單;提供成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行靖西網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

21.1     概述

ServerSuperIO以前所做的工作逐步為形成回路控制或級(jí)聯(lián)控制打下基礎(chǔ),例如:服務(wù)連接器和設(shè)備驅(qū)動(dòng)連接器的開發(fā)與應(yīng)用??傊?,是通過多種形式下發(fā)命令控制設(shè)備(驅(qū)動(dòng))或傳感器,云端控制站點(diǎn)或監(jiān)測(cè)點(diǎn)的傳感器、App或者其他終端控制傳感器、根據(jù)傳感器的采集數(shù)據(jù)控制另一個(gè)傳感器等。

下面介紹云端、App或者其他終端如何控制傳感器設(shè)備(傳感器控制傳感器類似,請(qǐng)參見:12.服務(wù)接口的開發(fā),以及與云端雙向交互)。根據(jù)通訊協(xié)議,結(jié)構(gòu)化方案、不需要太多代碼即可完成相應(yīng)的功能。效果如下圖:

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

21.2     結(jié)構(gòu)示意圖

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

控制端發(fā)起控制命令,用ServerSuperIO服務(wù)接口開發(fā)一個(gè)簡(jiǎn)單的代理服務(wù),通過服務(wù)連接器IServiceConnector接口與設(shè)備驅(qū)動(dòng)進(jìn)行交互,設(shè)備驅(qū)動(dòng)接收到控制命令后下發(fā)給設(shè)備或傳感器,等待控制返回的確認(rèn)消息,再原路返回給控制端。

21.3     通訊協(xié)議

有人問為什么不使用MQTT協(xié)議,那如何兼容不同設(shè)備和傳感器的協(xié)議?以于中國(guó)現(xiàn)實(shí)情況,顯然還不能達(dá)到統(tǒng)一標(biāo)準(zhǔn)的水平,在經(jīng)濟(jì)不好的情況下,企業(yè)也不可能投資替換掉原來的硬件設(shè)備。也不符合ServerSuperIO設(shè)計(jì)的原則,就是要搞協(xié)議無關(guān)性,任何標(biāo)準(zhǔn)或非標(biāo)準(zhǔn)的協(xié)議都可以集成進(jìn)來。如果想過一條河,把橋修好、把索道搭好、把船擺好…具體怎么過河由你自己決定。

有人問ServerSuperIO都集成了什么協(xié)議?上面已經(jīng)給出了答案,另外我想說的是沒有任何一個(gè)框架可以包治百病。從相反的角度來考慮,如果像組態(tài)一樣把任何協(xié)議都加進(jìn)來,企業(yè)又想拿出來多少的價(jià)值來對(duì)等交換呢,所以協(xié)議驅(qū)動(dòng)還是交給大家來自己寫吧。

我們演示的協(xié)議如下圖:

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

21.4     控制端

控制端包括很多種:云端向下級(jí)發(fā)送控制命令、App或Pc機(jī)軟件連接服務(wù)發(fā)送控制命令等等。發(fā)送控制命令如下圖:

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

21.5     代理服務(wù)(SSIO服務(wù)接口)

代理服務(wù)是通過ServerSuperIO的IService接口實(shí)現(xiàn),在繼承類中使用ServerSuperIO框架本身的單例模式開發(fā)代理服務(wù),代碼如下:

public override void StartService()
        {
            string devId = "ControlDeviceService";
            Driver dev = new Driver();
            dev.ReceiveRequestInfos += Dev_ReceiveRequestInfos;
            dev.DeviceParameter.DeviceName = "控制設(shè)備驅(qū)動(dòng)器";
            dev.DeviceParameter.DeviceAddr = 0;
            dev.DeviceParameter.DeviceID = devId;
            dev.DeviceParameter.DeviceCode = "";
            dev.DeviceDynamic.DeviceID = devId;
            dev.DeviceParameter.NET.RemoteIP = "127.0.0.1";
            dev.DeviceParameter.NET.RemotePort = 9600;
            dev.DeviceParameter.NET.ControllerGroup = "LocalGroup";
            dev.CommunicateType = CommunicateType.NET;
            dev.Initialize(devId);

            IServer server = new ServerManager().CreateServer(new ServerConfig()
            {
                ServerName = "控制設(shè)備服務(wù)",
                ListenPort=6670,
                ComReadTimeout = 1000,
                ComWriteTimeout = 1000,
                NetReceiveTimeout = 1000,
                NetSendTimeout = 1000,
                ControlMode = ControlMode.Singleton,
                SocketMode = SocketMode.Tcp,
                StartReceiveDataFliter = false,
                ClearSocketSession = false,
                StartCheckPackageLength = false,
                CheckSameSocketSession = false,
            });

            server.AddDeviceCompleted += server_AddDeviceCompleted;
            server.DeleteDeviceCompleted += server_DeleteDeviceCompleted;
            server.SocketConnected += server_SocketConnected;
            server.SocketClosed += server_SocketClosed;
            server.Start();

            server.AddDevice(dev);
        }

dev.ReceiveRequestInfos事件是控制驅(qū)動(dòng)繼承ServerSuperIO框架中RunDevice驅(qū)動(dòng)類擴(kuò)展的事件接口,ServerSuperIO單例模式接收到數(shù)據(jù)信息,如果符合協(xié)議標(biāo)準(zhǔn)會(huì)把數(shù)據(jù)信息反饋給驅(qū)動(dòng)程序的Communicate接口,ReceiveRequestInfos事件把數(shù)據(jù)信息傳遞給代理服務(wù)訂閱該事件的Dev_ReceiveRequestInfos函數(shù)。代碼如下圖:

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

代理服務(wù)中的Dev_ReceiveRequestInfos函數(shù),通過服務(wù)連接器接口IServiceConnector,根據(jù)DeviceCode(addr)把信息傳遞給相應(yīng)的設(shè)備驅(qū)動(dòng)。代碼如下圖:

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

代理服務(wù)通過ServiceConnectorCallback和ServiceConnectorCallbackError函數(shù)接口接收設(shè)備驅(qū)動(dòng)反饋的結(jié)果信息,如果中間出現(xiàn)異常會(huì)調(diào)用ServiceConnectorCallbackError,如果正常會(huì)調(diào)用ServiceConnectorCallback函數(shù),ServiceConnectorCallback函數(shù)接口根據(jù)記錄的命令與IO通道的對(duì)應(yīng)關(guān)系,再把結(jié)果發(fā)送給控制端。ServiceConnectorCallback代碼如下圖:

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

在這里邊有一個(gè)注意的地方,就是設(shè)備驅(qū)動(dòng)在規(guī)定的時(shí)間內(nèi)沒有反饋控制命令的確認(rèn)信息,也就是傳感器沒有反饋相應(yīng)的信息。這種情況要增加一個(gè)定時(shí)檢測(cè)服務(wù),如果超時(shí)沒有反饋信息,發(fā)送給控制端相應(yīng)的消息。代碼如下圖:

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

21.6     設(shè)備驅(qū)動(dòng)

這個(gè)設(shè)備驅(qū)動(dòng)與傳感器相對(duì)應(yīng),之間相互過行數(shù)據(jù)交互。設(shè)備驅(qū)動(dòng)的RunServiceConnector接口負(fù)責(zé)接收代理服務(wù)Dev_ReceiveRequestInfos(OnServiceConnector)函數(shù)傳遞過來的命令信息。代碼如下圖:

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

有兩點(diǎn)說明:1.接收到命令數(shù)據(jù)后可以通過OnSendData函數(shù)立即下發(fā)數(shù)據(jù)信息,以設(shè)置的IP查找相應(yīng)的IO通道,適用于自控模式。2. 接收到命令數(shù)據(jù)后放到this.Protocol.SendCache協(xié)議緩存中,等待下發(fā)命令,適用于輪詢、并發(fā)模式。

針對(duì)于返回的結(jié)果對(duì)象ServiceConnectorCallbackResult的isAsyn參數(shù),如果為true,說明通過AsyncServiceConnectorCallback callback返回結(jié)果信息,也就是說要等待傳感器返回確認(rèn)信息,并且設(shè)備驅(qū)動(dòng)接收后再反饋到代理服務(wù);如果為false,說明會(huì)立即反饋到代理服務(wù),適用于傳遞數(shù)據(jù)信息而不管與傳感器是否交互成功。

可以在這個(gè)函數(shù)中把callback參數(shù)進(jìn)行臨時(shí)保存,等待傳感器返回確認(rèn)信息后在Communicate函數(shù)中觸發(fā)異步回調(diào)到代理服務(wù)。代碼如下圖:

serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析

以上是“serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

網(wǎng)站欄目:serversuperio分享終端控制傳感器或設(shè)備形成回路控制的示例分析
URL標(biāo)題:http://muchs.cn/article12/ihesdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供外貿(mào)網(wǎng)站建設(shè)動(dòng)態(tài)網(wǎng)站、關(guān)鍵詞優(yōu)化電子商務(wù)、定制網(wǎng)站、手機(jī)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)