基于SECS协议开发的简明教程(7)

本文档介绍了如何利用SECSSDK提供的模拟器进行SECS/GEM协议的SnFn数据消息测试。内容包括如何配置模拟器以匹配设备角色(主动或被动),设置连接参数,以及如何通过模拟器发送和接收SnFn消息。同时,文章强调了与后台通信时保持角色相对的原则。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

接着前面6篇SECS/GEM开发教程系列。

 

基于SECS协议开发的简明教程(1)-怎么搭建支持SECS工程

基于SECS协议开发的简明教程(2)-怎么编辑交换数据的ID

基于SECS协议开发的简明教程(3)-怎么收/发控制命令和数据消息

基于SECS协议开发的简明教程(4)-怎么添加处理自定义SnFn消息

 基于SECS协议开发的简明教程(5)-如何重写SnFn,并自己解析收到的数据内容

 基于SECS协议开发的简明教程(6)-怎么触发警报、解除警报、定义Trace、触发Trace数据、触发事件、定义报表/查询报表
 

本文主讲:如何利用SECS SDK提供的simulator进行收/发SnFn数据消息测试。

在SDK Demo示例中,介绍的是CEquipmentTCP(Passive)的设备,实际应用中,我们可以派生的类有两种:

  • CEquipmentTCP
  • CHostTCP 

模式可以是两种:

  • Active
  • Passive

故而有2x2=4种组合形式。可以任意组合的。

但是你需要保证一条原则:你与后台的角色总是相对的,对方如果是Host你就一定是Equipment,对方是Acitive你就一定是Passive。反着来就对了

So,看到这里,你应该很轻松的就可以SDK Demo切换成Host+Active模式了,只需要修改下派生类名和连接模式即可,其他全部不用修改。

如何用SDK里面的simulator与Demo进行测试呢?

SDK里面的simulator是美国AIM Systems公司的基于C#开发的SECS标准协议模拟器,非常好用。下面详细介绍。

同样是配合我们的SDK Demo进行测试讲解。Demo是EQP+Passive模式。

首先运行起来simulator目录下唯一的一个可执行程序:SEComEnabler.SEComSimulator.exe
然后进入菜单:Settings->Configure Connection,如下图:

 修改如下几个关键的几项。如果你的程序是EQP,这里就要选择HOST.,总之要相对。

 然后是连接模式,如果你的程序是Passive那这里就一定是Active了,IP和Port可以在INI里面的secs.ini里面配置,设置你需要的即可,如下图:

 这一步很关键了,就是模拟器的日志,一定要选择存在的目录,如果不存在,则会无法使用。如果你电脑有安装加密的数据防护墙,那么这个模拟器也是无法正常使用的。

前面的都设置好了之后,只要选择:Settings->Open connection即可连接上你的程序了。

而且你也可以选左侧的那些SnFn数据消息,然后鼠标右键菜单,进行发送Primary消息,也可以发送Reply消息了。


如有疑问或咨询,请评论留言或在优快云站内消息联系。

### 基于SECS协议开发教程与示例代码 #### 使用Visual Studio搭建支持SECS协议的工程 通过构建一个支持SECS协议的工程项目,可以实现高效的设备间通信。具体方法已在一篇简明教程中进行了详细介绍[^1]。该教程涵盖了如何配置环境以及编写基础代码来使应用程序能够处理SECS消息。 以下是简单的C++代码框架用于初始化SECS连接: ```cpp #include <iostream> #include "SecsConnection.h" int main() { SecsConnection connection; if (connection.initialize()) { std::cout << "SECS Connection Initialized Successfully!" << std::endl; } else { std::cerr << "Failed to Initialize SECS Connection." << std::endl; } return 0; } ``` #### Python中的SECS协议实现——secsgem开源项目 对于Python开发者而言,`secsgem`是一个强大的工具包,提供了完整的SECS/GEM协议实现方案[^2]。该项目不仅简化了SECS消息的发送和接收过程,还允许用户轻松扩展其功能以适应特定需求。 下面展示了一个基本的例子,演示如何利用`secsgem`建立客户端并发送一条测试消息: ```python from secsgem.secs import SecsStreamFunction, HsmsMdlmCommunication def on_message_received(message): print(f"Message received: {message}") comm = HsmsMdlmCommunication("192.168.1.1", 5000, True) comm.events.message_received.subscribe(on_message_received) # Send a test message S1F1 W test_message = SecsStreamFunction(1, 1).set([]) response = comm.send_and_wait_for_response(test_message) print(response.to_string()) ``` #### C#下的SECS/GEM SDK应用实例 针对.NET平台上的开发者,金南瓜SECS/GEM C# SDK提供了一种便捷的方式来创建符合标准的应用程序[^3]。仅需几个步骤即可完成设置,并开始收发SECS数据流函数。 这里给出一段典型的C#代码片段作为参考: ```csharp using System; using GoldenPumpkin.SecsGems; class Program { static void Main(string[] args) { var secsClient = new SecsHsmsClient(); secsClient.ConnectAsync("localhost", 5000).Wait(); var response = secsClient.SendSmlCommandAndWaitForResponseAsync("<S1F1 W>")?.Result; Console.WriteLine($"Received Response: {response}"); } } ``` #### .NET环境下使用SECS4Net库入门指南 最后提到的是SECS4Net这一面向.NET生态系统的解决方案[^4]。它为希望集成SEMI标准到自己产品里的工程师们带来了极大的便利性。安装完成后可通过NuGet管理器引入必要的命名空间从而开启进一步操作。 例如,在控制台项目里添加如下依赖声明后便可着手实践: ```xml <PackageReference Include="SECS4Net" Version="latest_version_number_here"/> ``` 随后按照官方文档指示逐步完善业务逻辑部分直至达成预期目标为止。 ---
评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

凌志辉

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值