You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#调用爱普生兼容热敏打印机打印图片出现空白行问题求解

可行修改方案

1. 修正指令写法,移除冗余逻辑

把ImagePrint类中所有指令写改为直接字节赋值,避免类型转换风险,同时删除函数内的打印机初始化指令,初始化操作统一放在整个打印任务的最开头,不要在打印图片的逻辑中执行,避免重置全局打印参数。

2. 强制对齐图片高度为24的整数倍

修改GetBitmapData返回的高度参数,向上取整到24的倍数,避免打印过程中出现缺行:

return new BitmapData()
{
    Dots = dots,
    Height = (int)Math.Ceiling((bitmap.Height * scale) / 24.0) * 24, // 对齐24的倍数
    Width = (int)(bitmap.Width * scale)
};

3. 适配打印机指令模式

如果修改后还是有空白,把打印位图的指令参数从33改为32,适配部分国产打印机的单密度打印模式。

4. 校验串口参数

如果用串口连接打印机,确认串口的波特率、数据位、停止位、校验位和打印机出厂设置完全匹配,参数不匹配会导致指令传输丢包,行间距设置不生效。


核心方法修改后完整代码

public static byte[] GetLogo(string LogoPath, int printWidth)
{
    List<byte> byteList = new List<byte>();
    if (!File.Exists(LogoPath))
        return null;
    BitmapData data = GetBitmapData(LogoPath, printWidth);
    BitArray dots = data.Dots;
    byte[] width = BitConverter.GetBytes(data.Width);

    int offset = 0;
    // 初始化指令已移除,统一放到打印任务开头执行
    
    // 行间距设置为24/180英寸,刚好匹配24点位图行高
    byteList.Add(0x1B);
    byteList.Add(0x33);
    byteList.Add(0x18); 
    while (offset < data.Height)
    {
        byteList.Add(0x1B);
        byteList.Add(0x2A);
        byteList.Add(0x21); // 兼容差的话改成0x20(对应十进制32)
        byteList.Add(width[0]);
        byteList.Add(width[1]);

        for (int x = 0; x < data.Width; ++x)
        {
            for (int k = 0; k < 3; ++k)
            {
                byte slice = 0;
                for (int b = 0; b < 8; ++b)
                {
                    int y = (((offset / 8) + k) * 8) + b;
                    int i = (y * data.Width) + x;

                    bool v = false;
                    if (i < dots.Length)
                        v = dots[i];

                    slice |= (byte)((v ? 1 : 0) << (7 - b));
                }
                byteList.Add(slice);
            }
        }
        offset += 24;
        byteList.Add(0x0A);
    }

    // 恢复默认行间距,可根据需求调整数值
    byteList.Add(0x1B);
    byteList.Add(0x33);
    byteList.Add(0x1E);
    return byteList.ToArray();
}

内容的提问来源于stack exchange,提问作者Stephen W. Park

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 03:27:03