程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#入門知識 >> 《連載 | 物聯網框架ServerSuperIO教程》1.4種通訊模式機制。附小文:招.NET開發,結果他轉JAVA了,一切都是為了生活,連載小說

《連載 | 物聯網框架ServerSuperIO教程》1.4種通訊模式機制。附小文:招.NET開發,結果他轉JAVA了,一切都是為了生活,連載小說

編輯:C#入門知識

《連載 | 物聯網框架ServerSuperIO教程》1.4種通訊模式機制。附小文:招.NET開發,結果他轉JAVA了,一切都是為了生活,連載小說


參考文章:

1.SuperIO通訊框架介紹,含通信本質

 

一、感慨

      上大學的時候,沒有學過C#,花了5塊錢在地壇書市買了一本教程,也就算是正式入行了。後來深造,學過JAVA,後來迫於生計,打算轉JAVA了。後來考慮考慮,自己寫的框架還是有很大發展余地,後來還是在C#的陣地上堅持了下來。從一開始的雛形,到SuperIO的產品化,再到服務器端的ServerSuperIO,也是慢慢演化而來。後期打算把ServerSuperIO移植到嵌入式設備上,以及完善開發文檔。本來不想提這些,但是今天打算招一個C#開發人員(B/S方面),是群友,可是人家要轉JAVA開發了,也只能說緣分不到,無法在一起做事,後面附一些聊天記錄,供大家職業發展參考。

 

二、答疑

        有人問,你這個框架和SuperSocket、netty......有什麼區別?ServerSuperIO是通訊框架不?是;ServerSuperIO支持高並發不?理論上支持;ServerSuperIO支持跨平台不?在Ubuntu上跑過。但是這些並不是ServerSuperIO起初設計的初發點,它繼承了SuperIO的設計思想,後期才逐步的向服務端發展,加強通訊能力、跨平台等等。

        ServerSuperIO是一個物聯網框架,首先是以設備(傳感器)為核心構建的框架,設備(傳感器)的協議無關性,可以隨意掛載設備驅動在框架下運行。所以ServerSuperIO本質上協調設備驅動(協議)、IO通道(COM和NET)、運行機制(模式)之間的關系,使之無縫結合、運行。

        一直在工業領域混,做集成系統、遠程監測監控等等,所以ServerSuperIO不僅僅是一個通訊框架,更多的是結合了工作實踐經驗,本著能夠解決實質問題。

 

三、運行控制模式

1、輪詢模式

    這是框架最早的運行模式,串口和網絡通訊時都可以使用這種控制模式。當有多個設備 連接到通訊平台時,通訊平台會輪詢調度設備進行通訊任務。某一時刻只能有一個設備發送請求命令、等待接收返回數據,這個設備完成發送、接收(如果遇到超時 情況,則自動返回)後,下一個設備才進行通訊任務,依次輪詢設備。

    應用場景是這樣的,服務端與設備進行通訊遵循呼叫應答的方式,也就是IO可用的情況下,服務端先發起通訊命令請求,設備根據命令信息,檢驗通過後返回數據給服務端。這種通訊模式很好理解,每個設備的通訊都遵循排隊的原則。但是如果某個設備的命令需要及時發送,怎麼辦?ServerSuperIO框架是支持設備優先級別調度的,例如:對某個設備要進行實時的檢測,需要連續發送命令,那麼就需要對設備進行高級別設置,發送請求數據命令。

    通訊結構如下圖:

 

2、並發模式

    網絡通訊的情況下,輪詢模式顯然效率比較低,那麼可以采用並發模式。並發通訊模式是集中發送給所有設備請求指令,框架是采用循環同步方式發送請求命令給每個IO通道對應的設備,當然也可以采用並行異步方式集中發送請求命令。硬件設備接收到指令後進行校驗,校驗成功後返回對應指令的數據,通訊平台異步監聽到數據信息後,進行接收操作,然後再進行數據的分發、處理等。

    那麼這裡就涉及到IO通道接收到的數據是異步接收的,如何才能和設備驅動匹配上(把數據分發到設備驅動上),這是能過DeviceCode和DeviceIP兩種方式來實現的。DeviceCode可以是設備地址或是設備編碼,DeviceIP是預先設置好的參數,要求終端設備的IP地址是固定的。

    通訊結構如下圖:

 

3、自控模式

    只有網絡通訊時可以使用這種控制模式。自控通訊模式與並發通訊模式類似,區別在於發送指令操作交給設備驅動本身進行控制,或者說交給二次開發者,二次開發者可以通過時鐘定時用事件驅動的方式發送指令數據。硬件設 備接收到指令後進行校驗,校驗成功後返回對應指令的數據,通訊平台異步監聽到數據信息後,進行接收操作,然後再進行數據的分發、處理等。

    自控通訊模式可以為二次開發者提供精確的定時請求實時數據機制,使通訊機制更靈活、自主,如果多個設備驅動使用同一個IO通道的話,時間控制會有偏差。

    同樣涉及到數據的分發,和並發模式一樣。

    通訊結構如下圖:

 

4、單例模式

    只有網絡通訊時可以使用這種控制模式。在一個服務實例內只能有一個設備驅動,相當於一個設備驅動對應著N多個硬件設備終端。更適合通訊的數據協議有固定的標准,以命令關鍵字處理不同的數據。適用於高並發的硬件終端設備主動上傳數據,服務器端根據數據信息進行處理和返回相應的數據。

    通訊結構如下圖:

 

四、招.NET開發,結果他轉JAVA了,一切都是為了生活

     最近工作比較忙,開發、解決問題、招聘......,連看手機的時間都沒有了,吃飯也是匆匆了事。為了更好的推進平台化建設,確實需要人,也為將來儲備人才,在群裡和網友聊聊,本來小伙前期還是挺感興趣的。今天問問他的想法,結果打算轉JAVA了,也是我文章前頭感慨的原因。我為了生存,他也為了生存,都是可以理解的。

     聊天記錄如下,請參考:

 

  1. 上一頁:
  2. 下一頁: