• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 關 閉

    新聞中心

    EEPW首頁 > 工控自動化 > 設計應用 > 基于SOCK盯編程實現的組態軟件與控制器的網絡通訊

    基于SOCK盯編程實現的組態軟件與控制器的網絡通訊

    作者: 時間:2010-09-01 來源:網絡 收藏

    3 通信模塊的

    3.1 思路

    為了之間的異步通訊,通訊模塊的總體設計如圖4所示。

    首先,由主線程調用外部接口函數以建立連接,同時,創建發送和接收線程,以分別用于數據的發送和接收。

    當要發送數據時,主線程調用外部接口函數來發送數據。該函數先將待發送的數據填充到通訊模塊的發送緩沖區中,然后通知發送線程,并由發送線程負責將發送緩沖區中的數據發送出去。

    當數據發送成功后,可由發送線程發送消息,通知接收線程準備接收數據。

    當有應答數據到來時,接收線程將接收數據并將數據放入通訊模塊的接收緩沖區。接收完后,接收線程將發送消息以通知主線程讀取應答數據。

    主線程接到通知后,將調用外部接口函數接收數據。該函數可將通訊模塊的接收緩沖區中的應答數據復制到應用程序指定的緩沖區中。

    數據的發送和接收交替進行,就可以完成特定的操作。

    3.2 模塊封裝

    通過動態鏈接庫技術可以提供一種方便、快捷的資源共享途徑。這實質上是一些函數、數據和類集合成的可執行模塊。通信模塊采用動態鏈接庫形式,可以在實現同一臺機器上的多個工程師站進程的同時與多個進行通訊。

    將通信模塊中套接字的建立、端口的綁定、數據的接收和發送封裝到動態鏈接庫中,同時屏蔽一些操作細節,這樣的方法可以方便地被其它程序所調用,更易于程序維護和移值,也方便將來程序的升級。

    根據窗口句柄發送消息至該窗口,然后通知應用程序有數據到達。最后,還需要在函數前面使用extern“C”_declspec(dllexport)關鍵字,以使該PEI數能夠被其它程序所調用。函數的參數分別為端口號和應用程序的句柄。在應用程序中,只需要調用該函數,就可以開啟TCP/IP服務。按照同樣的方法,也可以封裝連接服務函數和發送數據函數。的在線等模塊通過調用這些導出函數,就可以完成與的通訊,而不用考慮具體的通訊細節。具體的通訊細節可在這些導出函數中實現。

    4 結束語

    TCP/IP協議的基礎上,針對狀態監測中數據傳輸的間歇這一特殊性,提出了一種事件驅動的模塊的設計方法,并將這種方法封裝到動態鏈接庫中,然后通過函數接口與應用程序交互。由于該通訊模塊是以動態鏈接庫形式給出的,者可以不需要深入了解TCP/IP協議以及Socket高級,而中需簡單地調用通訊模塊中的函數,即可實現局域網中數據的傳輸。本文所介紹的通信模塊的設計方法目前已經實現,其可行性也得到了驗證,并已應用在實際的開發項目中。


    上一頁 1 2 3 下一頁

    評論


    相關推薦

    技術專區

    關閉
    主站蜘蛛池模板: 句容市| 保山市| 汶上县| 社旗县| 永春县| 顺平县| 通山县| 浠水县| 偏关县| 青河县| 灵璧县| 门源| 翼城县| 滁州市| 赤城县| 永宁县| 隆安县| 奉节县| 亳州市| 聂拉木县| 阳谷县| 仪征市| 洪泽县| 冷水江市| 河西区| 大城县| 海晏县| 孟州市| 绥滨县| 承德市| 乌鲁木齐市| 将乐县| 互助| 京山县| 通渭县| 新巴尔虎左旗| 黄大仙区| 林口县| 慈溪市| 岳阳市| 岑溪市|