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