当前位置: 首页> 科技> IT业 > 运营推广的工作内容_吉林省人民政府官方网站_百度视频排名优化_免费外网加速器

运营推广的工作内容_吉林省人民政府官方网站_百度视频排名优化_免费外网加速器

时间:2025/7/11 8:32:52来源:https://blog.csdn.net/weixin_51368082/article/details/146325059 浏览次数:0次
运营推广的工作内容_吉林省人民政府官方网站_百度视频排名优化_免费外网加速器

好的,我们正式进入:


第二讲:深入 SECS4NET 项目结构——主机程序是怎么搭起来的?

关键词:项目结构、类图、通信类、事件处理、连接生命周期、异步机制


本讲目的

我们从源码入手,一步步搞懂:

  1. SECS4NET 主机(Host)是如何设计通信逻辑的
  2. 有哪些关键类,类之间的关系是什么
  3. 通信的生命周期怎么管理
  4. 怎么实现“接收消息”和“主动发送”的功能
  5. 如何集成到你自己的 EAP 或测试程序中

你将不再只是“调 Sample”,而是可以掌控它的主干脉络,甚至模仿它写出你自己的通信程序。


一、SECS4NET 项目的基本结构

这个项目结构很清晰,大致可以分成三大块:

1. 核心库部分

主要是以下几个类和命名空间:

类名 / 接口功能描述
SecsGem主控类,负责建立连接、发送接收消息,是你最常用的接口
SecsMessage表示一条 SECS 报文
SecsItem表示报文内部的数据结构(Item Tree)
SecsGemBuilder构建 SecsGem 的工厂类,负责配置通信参数
HSMSConnectMode枚举,指明是主机模式还是设备模式

这些类都在 Sec4net 命名空间中,是整个通信流程的核心。


2. 样例程序(SampleHost)

这是个完整的 WPF Demo,它通过 UI 来驱动 Host 端的连接、发命令、注册事件等。

你可以从 SampleHost 入手,理解 SECS4NET 是如何实际运作的:

  • 按钮绑定命令(Command)
  • App.xaml.cs 中初始化 Host
  • 有个 GemService 类作为核心逻辑封装

3. 工具与日志

比如:

  • MessageLogViewModel.cs:将 SECS 报文日志格式化输出
  • App.xaml:注册依赖注入,绑定服务层
  • Config 配置项:定义设备地址、端口、模式等参数

二、核心类分析:SecsGem

这是你最常打交道的类,我们来详细拆解一下它的几个核心接口和机制。


1. 初始化过程

var gem = new SecsGemBuilder().UseHsms().ConnectMode(HSMSConnectMode.Active) // 主机模式.DeviceId(0).Host("127.0.0.1")  // 设备 IP.Port(5000)         // 设备端口.Build();

解释知识点:

  • .UseHsms() 表示使用 HSMS 协议(TCP 通信)
  • .ConnectMode() 设为 Active 就是主机,Passive 就是设备
  • .DeviceId() 是主机的设备编号
  • .Host().Port() 指的是连接目标设备的地址和端口
  • .Build() 返回一个 SecsGem 实例

2. 启动连接

await gem.ConnectAsync();

连接过程其实包括 TCP 建立、SECS 建链(S1F13/S1F14)、状态机启动等。

3. 监听接收到的报文

gem.MessageReceived += OnSecsMessageReceived;

你只要写一个回调函数:

private void OnSecsMessageReceived(object sender, SecsMessage e)
{if (e.Stream == 6 && e.Function == 11){var ceid = e.SecsItem[0].GetValue<ushort>();Console.WriteLine($"收到事件:CEID = {ceid}");}
}

报文进来后你可以按 SML 结构解析,把报文打印出来或入库。


4. 发送消息

发送很简单,你只需要构造一个 SecsMessage,比如:

var msg = new SecsMessage(2, 41, true,Item.L(Item.A("START_PROCESS"),Item.L(Item.A("Lot123"), Item.A("Recipe1")))
);
await gem.SendAsync(msg);

这里 2 是 Stream,41 是 Function,true 表示需要对方回应(W bit)。


5. 异步机制

整个 SECS4NET 框架基于 async/await 实现异步通信,这样你就不会阻塞主线程。

比如你在 WPF 程序中接收报文、发送命令,UI 不会卡顿。


6. 生命周期管理

在 SampleHost 项目中,一般是在 App.xaml.cs 启动时初始化 Gem 服务:

GemService.Instance.Init();

关闭时调用 DisconnectAsync(),并释放资源。


总结一句话:

SecsGem 就是你跟设备之间的“翻译官”,你通过它说话(Send),也通过它接收设备的回应(MessageReceived)。

你只需要:

  • 创建实例;
  • 连上设备;
  • 发出命令;
  • 处理回应。

这个封装非常适合你这种以业务逻辑为主的开发者。


我们先到这里告一段落。总结如下:


第二讲 · 小结

你已经掌握了:

  • SECS4NET 项目的整体结构;
  • 如何用 SecsGem 建立连接;
  • 如何发出报文;
  • 如何接收报文;
  • 如何用异步方式处理通信逻辑;
  • 如何把它嵌入你自己的程序框架中。

如果你觉得节奏 OK,就可以告诉我:“继续”,我们就进入《第三讲:如何从零构建一个 Host 主机端程序》
那一讲会更实战,我们会一步步搭一个“小型主机”,来收发真正的事件和指令。

你来决定节奏!

关键字:运营推广的工作内容_吉林省人民政府官方网站_百度视频排名优化_免费外网加速器

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: