wincc客戶端找不到啟動畫面,被調用的對象已與其客戶端斷開連接 win10_【完整案例】基于Socket開發TCP傳輸客戶端...

 2023-11-19 阅读 21 评论 0

摘要:1 程序界面設計 ??????? TCP客戶端在上位機開發中應用很廣,大多數情況下,上位機軟件都是作為一個TCP客戶端來與PLC或其他服務器進行通信的。TCP客戶端的主要功能就是連接服務器、發送數據、接收數據、斷開連接,而不同場合的區別在于發送數據和接收數據的

1 程序界面設計

??????? TCP客戶端在上位機開發中應用很廣,大多數情況下,上位機軟件都是作為一個TCP客戶端來與PLC或其他服務器進行通信的。TCP客戶端的主要功能就是連接服務器、發送數據、接收數據、斷開連接,而不同場合的區別在于發送數據和接收數據的內容不同。

????????本案例主要是開發一個TCP客戶端軟件,具備基本的連接功能,并可以發送ASCII、UTF8等不同格式的字符串,也支持發送16進制字符串發送,同時支持文件和JSON格式數據發送。根據以上功能,設計程序界面如下圖所示:

615b098a86afd8a3f72cb7240a7f4130.png

2 程序代碼設計

  • 接收信息顯示:首先編寫一個接收信息顯示的方法,這里是通過ListView來展示接收信息的。

ddce6e85caa832be4a6f0ecc7b41d262.png

  • 連接服務器:連接服務器首先實例化Socket對象,然后通過調用Connect的方法來實現,連接成功后,開啟一個線程來接收服務器返回的數據,具體代碼如下:

53f4418aec4b069f7f664b513a492678.png

  • 斷開連接服務器:斷開連接服務器直接調用Socket的相關API方法即可。

6d180708874a4c74b1ace30990d8447b.png

  • 接收數據:對于數據接收及解析,由于本案例的客戶端軟件支持多種不同形式數據發送,那么接收必然也支持多種形式,那么對于不同的形式,我們創建了一個枚舉類型,這樣方便后續擴展,代碼如下所示:

ffeace2ca690bc96256311f2ae87d4d3.png

  • 因此在數據接收處理時,我們用第一個字節作為類型判斷,比如第一個字節如果為0,那么則認為接收的數據為ASCII字符串,也將按照這種形式來進行解析,從第二個字節開始一直到最后,是有效數據部分,所以數據接收及解析方法如下所示:

927648013ea9d08fa90eee644efe6797.png

  • 發送ASCII字符串:對于ASCII字符串,首先要將發送的字符串按照ASCII的編碼格式轉換成字節數組,然后給這個字節數組前面增加一個字節,字節數值為Message.ASCII,代碼如下所示:

cfaa1c2103adf0740c01ce833e92cd9a.png

  • 發送文件:發送文件之前首先要選擇文件,選擇文件主要使用OpenFileDialog組件,代碼如下:

179d3bf22f552f50cb8743ef7bd8e1f7.png

  • 選擇文件之后,發送文件就是將選擇的文件內容轉換成字節數組,然后給這個字節數組前面增加一個字節,字節數值為Message.File,這里會發送兩次,第一次是發送一個字符串,告訴服務器要發送的文件名稱,采用的是UTF8編碼,代碼如下所示:

5efcbd1e970b878b717066a75509ecd5.png

  • 發送JSON數據:JSON數據主要會涉及到實體對象和JSON文件的轉換,這里使用Newtonsoft.Json庫編寫了一個JSONHelper的方法,然后需要創建了一個實體對象集合,然后通過EntityToJSON方法轉換成JSON字符串,再將JSON字符串轉換成字節數組,同樣,前面需要增加一個字節,字節數值為Message.JSON,代碼如下:

61444da3aa128ae5b9f38c944815534a.png

3 程序功能調試

由于TCP服務器軟件還沒有開發,所以這里我們使用網絡調試助手來進行功能調試:

  • 建立連接與斷開連接:
0fed248308e551e870baaa7a4bacfbd6.png
  • 各種數據類型發送與接收
ad940e7fa720a82a920f756d6b384c57.png
360337bc3dabc59f8247cd78f993a6d6.png

95eefe6b42ad3bb636baf800f6869050.gif

課程正在直播,快速掃碼加入吧!

daf06de2e20ffb4c8580dc77b6ac7b84.png

回顧往期內容

【西門子】基于PLCSIM-Advanced搭建西門子PLC環境

【西門子】西門子S7通信協議,你不知道的那些事兒

【OPCUA】C#上位機實現OPCUA通信案例

【OPCUA】OPCUA+MQTT+阿里云,能做哪些事兒

【WinCC】C#/.NET聯合WinCC實現數據通信

【WinCC】手把手教你基于C#開發Wincc語音報警插件【附源碼】

【云APP】基于C#實現手機APP訪問西門子PLC【附源碼】

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/3/182546.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息