manbuyuji 2014-07-03 06:50 采纳率: 0%
浏览 4870

C# 热敏打印机打印二维码

问题是这样,最近在用热敏打印机做东西,其中一向可能要涉及到热敏打印机打印二维码的问题:
 并口打印(USB映射为并口):
 当次打印二维码的的时候图片总有很多白线。
 热敏打印机不放纸张的时候选择打印二维码提示完成后,再把纸张放进去,一次性来的码就没有(基本没有)白线。
当我打开并口一次性执行完再关闭并口的时候就不打印了,热敏打印机跟据接收指令一样。
 请问该怎么解决.

 if (!SetLineSpace(0))
        {
            return false;
        }

        if (!Alignment("left"))
        {
            return false;
        }

        Bitmap bmp = new Bitmap(path);
        int width = bmp.Width;
        if (0 != width % 4)
        {
            int extra = 4 - width % 4;
            width += extra;
        }
        int height = bmp.Height;
        byte[] data = new byte[3];
        //byte[] data = {0x00};
        byte[] bmpModel = {0x1B, 0x2A, (byte)'\x21',(byte)(width % 256), (byte)(width / 256)};

        Color pixel;

        //if (!OpenPrinter())
        //{
        //    return false;
        //}

        for (int i = 0; i != (height / 24 + 1); ++i)
        {
            if (!SetBitmapMode(24, width))
            {
                return false;
            }
            //if (!PrinterCmd(bmpModel))
            //{
            //    return false;
            //}

            for (int j = 0; j != width; ++j)
            {
                for (int k = 0; k != 24; ++k)
                {
                    if (((i * 24) + k) < bmp.Height)
                    {
                        pixel = bmp.GetPixel(j, (i * 24) + k);
                        if (pixel.R == 0)
                        {
                            data[k / 8] += (byte)(128 >> (k % 8));
                        }
                    }
                }

                if (!WritePixel(data))
                {
                    return false;
                }
                //if (!PrinterCmd(data))
                //{
                //    return false;
                //}

                data[0] = 0x00;
                data[1] = 0x00;
                data[2] = 0x00;
            }

            //byte[] cmd = { 0x0A };
            //if (!PrinterCmd(cmd))
            //{
            //    return false;
            //}

            if (!PrintNull())
            {
                return false;
            }
        }

        //if (!ClosePrinter())
        //{
        //    return false;
        //}

        if (!PrintNull())
        {
            return false;
        }

        bmp.Dispose();

        return true;
  • 写回答

1条回答

  • shuizhibai14 2015-04-23 06:02
    关注

    楼主,您这使用的打印方法是POS_S_DownloadAndPrintBmp吗?

    评论

报告相同问题?

悬赏问题

  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大