2 manbuyuji manbuyuji 于 2014.07.03 14:50 提问

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
shuizhibai14   2015.04.23 14:02

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!