# lasermarking **Repository Path**: warom-org/lasermarking ## Basic Information - **Project Name**: lasermarking - **Description**: 激光打印APP - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2025-11-29 - **Last Updated**: 2026-01-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 激光打标模板设计与打印系统 基于 WPF 的激光打标应用程序,提供可视化的模板设计功能和数据驱动的打印流程。 ## 功能特性 - **可视化模板设计器** - 导入图片,在图片上点击定义字段位置和样式 - **JSON 模板存储** - 轻量级、可读的模板格式 - **动态表单生成** - 根据模板字段自动生成输入界面 - **实时预览** - 所见即所得的打印预览 - **MarkEzd.dll 集成** - 调用 EzCad 激光打标 SDK ## 技术栈 - **框架**: WPF + .NET 6 - **架构**: MVVM 模式 - **UI 库**: MaterialDesignThemes - **数据格式**: JSON (Newtonsoft.Json) - **打印 SDK**: MarkEzd.dll (EzCad 2.7.0) ## 系统要求 - Windows 10/11 (64位) - .NET 6 Runtime 或更高版本 - Visual Studio 2022(开发环境) - MarkEzd.dll 及相关文件 ## 项目结构 ``` LaserMarkingApp/ ├── Models/ # 数据模型 │ ├── Enums.cs # 枚举定义 │ ├── FontStyle.cs # 字体样式 │ ├── TemplateField.cs # 字段模型 │ └── MarkingTemplate.cs # 模板模型 ├── ViewModels/ # 视图模型 │ ├── MainViewModel.cs │ ├── TemplateDesignViewModel.cs │ └── PrintViewModel.cs ├── Views/ # 视图 │ ├── TemplateDesignView.xaml │ └── PrintView.xaml ├── Services/ # 服务层 │ ├── MarkEzdService.cs # 打印服务 │ └── TemplateService.cs # 模板 JSON 服务 ├── NativeInterop/ # DLL 互操作 │ ├── MarkEzdNative.cs # P/Invoke 声明 │ └── MarkEzdErrorCodes.cs ├── Helpers/ # 辅助类 │ ├── ViewModelBase.cs │ ├── RelayCommand.cs │ ├── CoordinateConverter.cs │ └── Converters.cs └── Resources/ # 资源文件 └── Styles/ ``` ## 快速开始 ### 1. 克隆或复制项目 ```bash # 项目已经创建在以下路径: /Users/jackgu/Documents/华荣/内部研发/打印机/sourcecode/printer/ ``` ### 2. 安装依赖 打开 Visual Studio 2022,加载 `LaserMarkingApp.sln`,NuGet 包会自动还原。 ### 3. 准备 MarkEzd.dll **重要:** 确保以下文件在项目根目录(与 .csproj 同级): - `MarkEzd.dll` ✅ 已复制 - `ezcad2.exe` ⚠️ 需要手动添加 - 其他依赖 DLL(如有) 这些文件会在编译时自动复制到输出目录 (`bin/Debug` 或 `bin/Release`)。 ### 4. 编译运行 1. 在 Visual Studio 中打开 `LaserMarkingApp.sln` 2. 选择编译配置(Debug 或 Release) 3. 按 F5 运行 ## 使用说明 ### 模板设计模块 1. **导入底图** - 点击 "导入底图" 按钮 - 选择图片文件(jpg, png, bmp) 2. **添加字段** - 点击 "添加字段" 按钮 - 在画布上点击以放置字段 3. **编辑字段属性** - 在字段列表中选择字段 - 右侧属性面板编辑: - 字段名称 - 坐标位置 - 字体样式(字体、字号、角度、对齐方式等) 4. **保存模板** - 点击 "保存模板" 按钮 - 选择保存位置(.json 文件) ### 打印模块 1. **加载模板** - 点击 "加载模板" 按钮 - 选择 .json 模板文件 2. **填写数据** - 根据模板字段自动生成的输入框 - 填入需要打印的数据 3. **预览** - 右侧预览区域实时显示效果 4. **打印** - **测试打印**:无需真实设备,验证流程 - **开始打印**:连接真实设备进行打印 ## 模板格式示例 ```json { "Name": "产品标签", "BackgroundImagePath": "C:\\Templates\\label.png", "ImageWidth": 800, "ImageHeight": 600, "Fields": [ { "Name": "产品编号", "X": 100.0, "Y": 50.0, "Value": "", "FontStyle": { "FontFamily": "Arial", "FontSize": 24.0, "Color": "#FF000000", "IsBold": true, "RotationAngle": 0.0, "Alignment": "Left" } } ] } ``` ## 开发指南 ### 添加新字段类型 1. 在 `Models/Enums.cs` 中添加枚举值 2. 在 `MarkEzdService.cs` 中实现对应逻辑 ### 自定义坐标转换 修改 `Helpers/CoordinateConverter.cs` 中的转换比例: ```csharp private double _pixelToMmRatio = 0.2645833; // 96 DPI 默认值 ``` ### MarkEzd.dll 函数参考 核心函数列表: - `lmc1_Initial2` - 初始化控制卡 - `lmc1_Close` - 关闭连接 - `lmc1_ClearEntLib` - 清空对象库 - `lmc1_AddTextToLib` - 添加文本 - `lmc1_SetFontParam` - 设置字体 - `lmc1_Mark` - 执行打印 详细参数说明请参考: - [EzCad_Dev_Dome](https://github.com/ospanic/EzCad_Dev_Dome) - [EzCad SDK Manual](https://www.scribd.com/document/642490283/Ezcad2-SDK-Manual) ## 常见问题 ### 1. DllNotFoundException **问题**:运行时提示找不到 MarkEzd.dll **解决**: - 确保 `MarkEzd.dll` 在程序目录中 - 确保 `ezcad2.exe` 及其依赖在同一目录 - 检查 DLL 位数(32位/64位)是否匹配 ### 2. 初始化失败(错误码 1) **问题**:`lmc1_Initial2` 返回错误码 1 **解决**: - 关闭正在运行的 ezcad2.exe - 使用测试模式(testMode = true)进行调试 ### 3. 坐标偏移 **问题**:预览位置与实际打印位置不一致 **解决**: - 调整 `CoordinateConverter` 中的转换比例 - 根据实际设备 DPI 校准 ### 4. 中文显示异常 **问题**:中文字符无法正确显示或打印 **解决**: - 确保所有字符串使用 Unicode 编码 - 检查 P/Invoke 声明中的 `CharSet.Unicode` ## 注意事项 ⚠️ **安全警告**: - 测试模式下请使用 `testMode = true` - 正式打印前务必验证参数,避免损坏设备 - 不要与 ezcad2.exe 同时运行 ## 许可 本项目为内部研发项目,仅供参考学习。 ## 参考资源 - [EzCad_Dev_Dome GitHub](https://github.com/ospanic/EzCad_Dev_Dome) - [EzCad SDK Documentation](https://www.scribd.com/document/642490283/Ezcad2-SDK-Manual) - [MaterialDesignInXAML](https://github.com/MaterialDesignInXAML/MaterialDesignInXamlToolkit) ## 联系方式 如有问题,请联系项目开发团队。 --- **版本**: 1.0.0 **创建日期**: 2025-11-29 **技术栈**: WPF + .NET 6 + MarkEzd.dll