HL.LCDTag 2.0.9

HL.LCDTag

补货液晶标签控制库,通过串口(RS232/RS485)通信控制液晶显示标签。

功能特性

  • 串口通信控制(RS232/RS485)
  • 背光开关控制
  • 文本和数字显示
  • 中文字体支持(宋体等)
  • 广播和应答两种工作模式
  • CRC16 校验
  • 自动串口管理
  • 日志记录(log4net)

安装

dotnet add package HL.LCDTag

使用方法

基本使用

HL.LCDTag 提供两种使用方式:

方式一:由 API 自动管理串口

API 自动负责打开和关闭串口:

using HL.LCDTag;

var lcdApi = new LCDTagAPI();

// 打开背光
lcdApi.OpenLight("COM1", 12, 0);

// 显示文本
lcdApi.DisplayText("COM1", 12, 0, "欢迎光临", 0, 0);

// 关闭背光
lcdApi.CloseLight("COM1", 12, 0);

方式二:由外部程序管理串口

外部程序负责打开和关闭串口:

using System.IO.Ports;
using HL.LCDTag;

var lcdApi = new LCDTagAPI();
SerialPort port = new SerialPort("COM1");
port.Open();

try
{
    // 使用已打开的串口
    lcdApi.OpenLight(port, 12, 0);
    lcdApi.DisplayText(port, 12, 0, "正在补货", 0, 0);
    lcdApi.CloseLight(port, 12, 0);
}
finally
{
    port.Close();
}

工作模式

应答模式(默认)

发送报文并接收响应码,如果响应非法则抛出异常:

var lcdApi = new LCDTagAPI();
lcdApi.IsBroadCast = false; // 应答模式(默认)

广播模式

只发送报文,不接收和判断响应码:

var lcdApi = new LCDTagAPI();
lcdApi.IsBroadCast = true; // 广播模式

字体设置

支持多种中文字体(默认为宋体):

var lcdApi = new LCDTagAPI();
lcdApi.Font = HZKFont.SongTi; // 宋体(默认)
// 或其他字体...

常用操作

背光控制

// 打开背光
lcdApi.OpenLight("COM1", pickAddr: 12, lcdAddr: 0);

// 关闭背光
lcdApi.CloseLight("COM1", pickAddr: 12, lcdAddr: 0);

// 闪烁背光
lcdApi.FlashLight("COM1", pickAddr: 12, lcdAddr: 0);

文本显示

// 在指定位置显示文本
lcdApi.DisplayText(
    portName: "COM1",
    pickAddr: 12,
    lcdAddr: 0,
    text: "货位:A-01",
    x: 0,
    y: 0
);

// 显示多行文本
lcdApi.DisplayText("COM1", 12, 0, "第一行", 0, 0);
lcdApi.DisplayText("COM1", 12, 0, "第二行", 0, 16);

数字显示

// 显示数量
lcdApi.DisplayNumber(
    portName: "COM1",
    pickAddr: 12,
    lcdAddr: 0,
    number: 100,
    x: 0,
    y: 0
);

清屏

// 清除屏幕内容
lcdApi.ClearScreen("COM1", pickAddr: 12, lcdAddr: 0);

参数说明

  • portName: 串口名称(如 "COM1", "COM2" 等)
  • pickAddr: 拣货位地址(设备地址)
  • lcdAddr: LCD 地址(同一设备可能有多个 LCD)
  • x, y: 显示位置的坐标(像素)

异常处理

库使用 LCDTagException 异常类:

try
{
    lcdApi.OpenLight("COM1", 12, 0);
}
catch (LCDTagException ex)
{
    Console.WriteLine($"LCD 标签操作失败: {ex.Message}");
}

常见异常原因:

  • 串口打开失败
  • 设备无响应
  • 通信超时
  • CRC 校验失败
  • 设备地址错误

应用场景

仓储拣货系统

public class PickingSystem
{
    private LCDTagAPI lcdApi = new LCDTagAPI();
    
    public void StartPicking(string portName, int pickAddr, int quantity)
    {
        // 显示拣货数量
        lcdApi.DisplayNumber(portName, pickAddr, 0, quantity, 10, 10);
        
        // 打开背光提示
        lcdApi.OpenLight(portName, pickAddr, 0);
    }
    
    public void FinishPicking(string portName, int pickAddr)
    {
        // 清除显示
        lcdApi.ClearScreen(portName, pickAddr, 0);
        
        // 关闭背光
        lcdApi.CloseLight(portName, pickAddr, 0);
    }
}

补货提示系统

public class ReplenishmentSystem
{
    private LCDTagAPI lcdApi = new LCDTagAPI();
    
    public void AlertReplenishment(string portName, int pickAddr, string location)
    {
        // 闪烁背光引起注意
        lcdApi.FlashLight(portName, pickAddr, 0);
        
        // 显示补货位置
        lcdApi.DisplayText(portName, pickAddr, 0, $"补货: {location}", 0, 0);
        
        // 显示时间
        lcdApi.DisplayText(portName, pickAddr, 0, DateTime.Now.ToString("HH:mm"), 0, 20);
    }
}

通信协议

库内部使用自定义数据包协议:

  • CRC16 校验确保数据完整性
  • 支持广播和点对点通信
  • 自动处理数据包封装和解析

技术细节

串口配置

默认串口参数(可根据设备要求调整):

  • 波特率:9600
  • 数据位:8
  • 停止位:1
  • 奇偶校验:无

中文显示

使用 HZK 字库支持中文字符显示:

  • 自动转换中文字符为点阵数据
  • 支持混合中英文显示
  • 可选多种字体

资源管理

  • 自动管理打开的串口连接
  • 析构时自动关闭所有串口
  • 支持显式关闭:lcdApi.CloseAllPort()

依赖项

  • .NET Framework 4.0 或更高版本
  • System.IO.Ports(串口通信)
  • log4net 2.0.13(日志记录)

最佳实践

  1. 异常处理: 始终包装串口操作在 try-catch 中

    try
    {
        lcdApi.OpenLight("COM1", 12, 0);
    }
    catch (LCDTagException ex)
    {
        // 记录日志并处理错误
    }
    
  2. 资源释放: 使用完毕后关闭串口

    lcdApi.CloseAllPort();
    
  3. 广播模式: 对多个设备同时操作时使用广播模式

    lcdApi.IsBroadCast = true;
    
  4. 错误重试: 实现重试机制处理通信失败

    int retries = 3;
    while (retries > 0)
    {
        try
        {
            lcdApi.OpenLight("COM1", 12, 0);
            break;
        }
        catch
        {
            retries--;
            Thread.Sleep(100);
        }
    }
    

故障排查

串口打开失败

  • 检查串口名称是否正确
  • 确认串口未被其他程序占用
  • 验证用户有串口访问权限

设备无响应

  • 检查串口连接和波特率
  • 验证设备地址是否正确
  • 确认设备供电正常

显示异常

  • 检查坐标是否超出屏幕范围
  • 验证字体设置是否正确
  • 确认文本编码为 UTF-8 或 GB2312

许可证

MIT License

相关库

  • HL.Common.LED: LED 显示屏控制库
  • HL.PickTag: 电子标签通信库
  • HL.MCP: 制造控制平台框架

No packages depend on HL.LCDTag.

.NET Framework 4.6.2

Version Downloads Last updated
2.0.9 0 08/19/2026