引用
using HslCommunication;
using HslCommunication.WebSocket;
public class WebSktClientHelper
{
private string webSocketUrl = "ws://IP地址:端口號";
private WebSocketClient client = null;
public Action<string> ActMsgReceived = null;
public WebSktClientHelper(string ipAddr, string port)
{
this.webSocketUrl = $"ws://{ipAddr}:{port}";
}
public void TurnOn()
{
TurnOff();
client = new WebSocketClient(webSocketUrl);
client.OnClientApplicationMessageReceive += client_MessageReceived;
OperateResult connect = client.ConnectServer();
}
private void client_MessageReceived(WebSocketMessage message)
{
string msg = Encoding.UTF8.GetString(message.Payload);
logMessage("接收到消息:"+ msg);
if (!string.IsNullOrEmpty(msg))
ActMsgReceived?.Invoke(msg);
}
public void SendData(string msg)
{
try
{
if (client != null)
{
logMessage("發(fā)送消息:" + msg);
client.SendServer(true, msg);
}
}
catch (Exception ex)
{
logMessage($"發(fā)送消息異常,{ex.Message}");
}
}
public void TurnOff()
{
try
{
if (client != null)
{
client.ConnectClose();
client.Dispose();
}
}
catch (Exception)
{
}
}
}
二、服務端
public class WebSktSvrHelper
{
private WebSocketServer server = null;
private int serverPort = 8080;
public Action<string, string> ActMsgReceived = null;
public WebSktSvrHelper(string port)
{
serverPort = int.Parse(port);
}
public void TurnOn()
{
TurnOff();
server = new WebSocketServer();
server.ServerStart(serverPort);
server.OnClientApplicationMessageReceive += (session, message) =>
{
string receivedMsg = Encoding.UTF8.GetString(message.Payload);
logMessage($"收到客戶端消息: {receivedMsg}");
ActMsgReceived?.Invoke(session.Remote.ToString(), receivedMsg);
server.SendClientPayload(session, $"服務器已收到: {receivedMsg}");
};
}
public void TurnOff()
{
try
{
if (server != null)
{
server.ServerClose();
server.Dispose();
}
}
catch (Exception)
{
}
}
}
HslCommunication 全面解析
一、基本定義與用途
HslCommunication 是一個功能強大的通信庫,最初設計目的是作為三菱PLC的通訊庫,但在長期開發(fā)過程中功能不斷豐富,定位也逐漸擴展。它不僅僅用于工廠設備(如PLC設備、機器人設備、儀器儀表等)的通信,還支持以下多種通信場景:
對于制造企業(yè),HslCommunication可用于快速開發(fā)工廠小軟件,如設備數(shù)據(jù)監(jiān)視系統(tǒng)、工藝數(shù)據(jù)記錄系統(tǒng)、倉儲系統(tǒng)或遠程PLC數(shù)據(jù)讀寫系統(tǒng)。對于系統(tǒng)集成商,它可以配套上位機軟件系統(tǒng),增加項目附加值,實現(xiàn)高質(zhì)量、低成本的工廠軟件交付?。
二、主要功能特點
1. 多協(xié)議支持
HslCommunication 支持多種工業(yè)通信協(xié)議,包括但不限于:
2. 跨平臺能力
基于 .NET Core/5/6/7,HslCommunication 能夠在 Windows 和 Linux 平臺上運行,實現(xiàn)了真正的跨平臺能力?。
3. 高性能與穩(wěn)定性
- 經(jīng)過大量實際項目驗證,保證了通信的穩(wěn)定性和可靠性
- 完善的異常處理機制,確保應用程序在遇到通信問題時能夠穩(wěn)定運行?
4. 易于集成與使用
- 提供簡潔的API,開發(fā)者無需深入了解每種協(xié)議的復雜細節(jié)
- 豐富的示例代碼和文檔,使開發(fā)者可以快速上手?
三、開發(fā)環(huán)境與平臺支持
1. 開發(fā)語言
HslCommunication 主要基于 C# 開發(fā),支持 .NET 平臺?。
2. 支持平臺
- 可在 Windows 和 Linux 平臺上運行?
3. 開發(fā)工具
支持多種開發(fā)環(huán)境,包括:
四、官方資源與開源信息
1. 官方文檔
- 官網(wǎng)API文檔:http://api.hslcommunication.cn/
- 更完整的文檔介紹:http://www.hsltechnology.cn/Doc/HslCommunication?
2. GitHub資源
GitHub上有多個與HslCommunication相關的項目和示例代碼,包括:
- 工業(yè)物聯(lián)網(wǎng)控件庫HslControls的使用demo
- PLC讀取示例項目,支持Web端和安卓端數(shù)據(jù)顯示?
3. NuGet包
可通過NuGet包管理器安裝:
Install-Package HslCommunication
NuGet頁面:https://www.nuget.org/packages/HslCommunication/?
五、應用案例與使用場景
1. 典型應用場景
- ?工廠自動化?:生產(chǎn)線上與PLC通訊,實現(xiàn)設備間數(shù)據(jù)交互
- ?智能監(jiān)控?:采集PLC數(shù)據(jù),實現(xiàn)實時監(jiān)控和故障預警
- ?系統(tǒng)集成?:在大型項目中與其他系統(tǒng)進行集成?
- ?設備調(diào)試?:實時監(jiān)控PLC運行狀態(tài),快速發(fā)現(xiàn)并解決問題
- ?故障診斷?:分析PLC數(shù)據(jù),找出故障原因,減少停機時間
- ?系統(tǒng)優(yōu)化?:分析PLC運行數(shù)據(jù),對控制系統(tǒng)進行優(yōu)化?
2. 具體實現(xiàn)案例
- ?數(shù)據(jù)服務器?:定時更新數(shù)據(jù),客戶端訂閱獲取最新數(shù)據(jù)
- ?發(fā)布-訂閱機制?:類似MQTT協(xié)議,支持客戶端界面實時數(shù)據(jù)顯示
- ?跨程序通信?:實現(xiàn)異步、同步、一對多、WebAPI等網(wǎng)絡框架?
六、優(yōu)勢與價值
- ?簡化開發(fā)?:封裝網(wǎng)絡通信細節(jié),減少開發(fā)代碼量,讓開發(fā)者專注于業(yè)務邏輯
- ?靈活性?:支持C#基礎數(shù)據(jù)類型,提供跨平臺部署能力
- ?成本效益?:開源免費,降低開發(fā)者使用成本
- ?社區(qū)支持?:擁有活躍的開發(fā)者社區(qū),提供及時技術支持
- ?企業(yè)采用?:已有近百家企業(yè)和大學在使用,NuGet下載量超過20萬?
HslCommunication作為工業(yè)數(shù)據(jù)通信的全能助手,為工業(yè)4.0和智能制造提供了強大的基礎通信支持,是工業(yè)軟件開發(fā)的重要工具之一。
閱讀原文:原文鏈接
該文章在 2025/7/21 10:44:39 編輯過