HL.MCP.Service.Sick 2.0.9

HL.MCP.Service.Sick

MCP 框架的 Sick 条码扫描服务实现。

功能特性

  • ✅ 串口通信支持
  • ✅ Sick 扫码枪数据接收
  • ✅ 自定义协议解析
  • ✅ 十六进制和文本模式
  • ✅ 自动重连机制
  • ✅ 线程安全设计

快速开始

配置文件

<Configuration>
  <PortName>COM1</PortName>
  <BaudRate>9600</BaudRate>
  <Parity>None</Parity>
  <DataBits>8</DataBits>
  <StopBits>One</StopBits>
  <IsHex>false</IsHex>
  <Separator>,</Separator>
  <Type>HL.MCP.Service.Sick.BarcodeParse</Type>
</Configuration>

使用示例

using HL.MCP.Service.Sick;

// 创建服务实例
var sickService = new SickService
{
    Name = "SickScanner",
    HeadString = (char)0x02,  // STX
    TailString = (char)0x03   // ETX
};

// 初始化
sickService.Initialize("config.xml");

// 启动服务
sickService.Start();

// 监听扫码事件
// 通过 MCP 框架的状态分发机制接收条码数据

// 停止服务
sickService.Stop();

配置说明

参数 类型 说明 默认值
PortName string 串口名称 COM1
BaudRate int 波特率 9600
Parity Parity 奇偶校验 None
DataBits int 数据位 8
StopBits StopBits 停止位 One
IsHex bool 十六进制模式 false
Separator string 分隔符 ,
Type string 协议解析器类型 BarcodeParse

协议解析

内置解析器

BarcodeParse:默认条码解析器

  • 支持自定义分隔符
  • 自动解析条码数据
  • 可扩展协议格式

自定义解析器

实现 IProtocolParse 接口:

public interface IProtocolParse
{
    Message Parse(string data);
}

示例:

public class CustomBarcodeParse : IProtocolParse
{
    public Message Parse(string data)
    {
        // 自定义解析逻辑
        var message = new Message(data);
        // 设置命令和参数
        message.Command = "BARCODE";
        message.Parameters = new object[] { data };
        message.Parsed = true;
        return message;
    }
}

工作原理

  1. 串口初始化:配置串口参数(波特率、数据位等)
  2. 数据接收:通过串口接收 Sick 扫码枪发送的数据
  3. 协议解析:使用指定的解析器解析接收到的数据
  4. 状态分发:通过 MCP 框架的 DispatchState 方法分发解析后的数据
  5. 事件处理:应用程序通过 MCP 框架订阅并处理条码数据

特性说明

开始和结束字符

sickService.HeadString = (char)0x02;  // STX (Start of Text)
sickService.TailString = (char)0x03;  // ETX (End of Text)

十六进制模式

<IsHex>true</IsHex>

启用后,数据将以十六进制字符串形式读取(如 "01-02-03-04")。

连接状态

bool isConnected = sickService.IsConnected;

注意事项

  • ⚠️ 确保串口未被其他程序占用
  • ⚠️ 配置正确的串口参数以匹配扫码枪设置
  • ⚠️ ReadWrite 方法未实现(此服务为单向接收)
  • ⚠️ 服务使用后台线程运行,确保正确调用 Stop 方法

依赖项

  • HL.MCP
  • System.IO.Ports
  • .NET Framework 4.6.2

许可证

参见 LICENSE.txt

相关链接

No packages depend on HL.MCP.Service.Sick.

.NET Framework 4.6.2

Version Downloads Last updated
2.0.9 0 08/19/2026