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(日志记录)
最佳实践
异常处理: 始终包装串口操作在 try-catch 中
try { lcdApi.OpenLight("COM1", 12, 0); } catch (LCDTagException ex) { // 记录日志并处理错误 }资源释放: 使用完毕后关闭串口
lcdApi.CloseAllPort();广播模式: 对多个设备同时操作时使用广播模式
lcdApi.IsBroadCast = true;错误重试: 实现重试机制处理通信失败
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
- log4net (>= 3.3.2)
| Version | Downloads | Last updated |
|---|---|---|
| 2.0.9 | 0 | 08/19/2026 |