??????? TCP客戶端在上位機開發中應用很廣,大多數情況下,上位機軟件都是作為一個TCP客戶端來與PLC或其他服務器進行通信的。TCP客戶端的主要功能就是連接服務器、發送數據、接收數據、斷開連接,而不同場合的區別在于發送數據和接收數據的內容不同。
????????本案例主要是開發一個TCP客戶端軟件,具備基本的連接功能,并可以發送ASCII、UTF8等不同格式的字符串,也支持發送16進制字符串發送,同時支持文件和JSON格式數據發送。根據以上功能,設計程序界面如下圖所示:
接收信息顯示:首先編寫一個接收信息顯示的方法,這里是通過ListView來展示接收信息的。
連接服務器:連接服務器首先實例化Socket對象,然后通過調用Connect的方法來實現,連接成功后,開啟一個線程來接收服務器返回的數據,具體代碼如下:
斷開連接服務器:斷開連接服務器直接調用Socket的相關API方法即可。
接收數據:對于數據接收及解析,由于本案例的客戶端軟件支持多種不同形式數據發送,那么接收必然也支持多種形式,那么對于不同的形式,我們創建了一個枚舉類型,這樣方便后續擴展,代碼如下所示:
因此在數據接收處理時,我們用第一個字節作為類型判斷,比如第一個字節如果為0,那么則認為接收的數據為ASCII字符串,也將按照這種形式來進行解析,從第二個字節開始一直到最后,是有效數據部分,所以數據接收及解析方法如下所示:
發送ASCII字符串:對于ASCII字符串,首先要將發送的字符串按照ASCII的編碼格式轉換成字節數組,然后給這個字節數組前面增加一個字節,字節數值為Message.ASCII,代碼如下所示:
發送文件:發送文件之前首先要選擇文件,選擇文件主要使用OpenFileDialog組件,代碼如下:
選擇文件之后,發送文件就是將選擇的文件內容轉換成字節數組,然后給這個字節數組前面增加一個字節,字節數值為Message.File,這里會發送兩次,第一次是發送一個字符串,告訴服務器要發送的文件名稱,采用的是UTF8編碼,代碼如下所示:
發送JSON數據:JSON數據主要會涉及到實體對象和JSON文件的轉換,這里使用Newtonsoft.Json庫編寫了一個JSONHelper的方法,然后需要創建了一個實體對象集合,然后通過EntityToJSON方法轉換成JSON字符串,再將JSON字符串轉換成字節數組,同樣,前面需要增加一個字節,字節數值為Message.JSON,代碼如下:
由于TCP服務器軟件還沒有開發,所以這里我們使用網絡調試助手來進行功能調試:
課程正在直播,快速掃碼加入吧!
回顧往期內容
【西門子】基于PLCSIM-Advanced搭建西門子PLC環境
【西門子】西門子S7通信協議,你不知道的那些事兒
【OPCUA】C#上位機實現OPCUA通信案例
【OPCUA】OPCUA+MQTT+阿里云,能做哪些事兒
【WinCC】C#/.NET聯合WinCC實現數據通信
【WinCC】手把手教你基于C#開發Wincc語音報警插件【附源碼】
【云APP】基于C#實現手機APP訪問西門子PLC【附源碼】
版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。
工作时间:8:00-18:00
客服电话
电子邮件
admin@qq.com
扫码二维码
获取最新动态